小奕要努力! 2024-12-23 20:25 采纳率: 0%
浏览 12

51单片机,江协科大,矩阵按键数码管8位密码锁

img

img

img

根据看江协科大51单片机修改的,以上是全部代码(除了delay没有给出),有没有会的解答一下,怎样才能让nixie(1,0),nixie(2,0)能更改数码管的值啊

  • 写回答

1条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2024-12-23 20:32
    关注
    让【道友老李】来帮你解答,本回答参考通义千问大模型编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    根据你的描述,你希望修改代码以使 `nixie(1, 0)` 和 `nixie(2, 0)` 能够更改数码管的值。为了更好地帮助你,我将假设你使用的是一个常见的51单片机开发环境,并且你已经有一些基本的数码管显示代码。

    问题分析

    1. 数码管显示原理:数码管通常通过控制其段选和位选引脚来显示数字。
    2. 函数 nixie 的作用:这个函数可能用于设置数码管的显示内容。你需要确保该函数能够正确地设置数码管的段选和位选。

    代码示例

    假设你有一个基本的数码管显示代码,以下是一个简单的示例:

    #include <reg51.h>
    
    // 定义数码管段选和位选引脚
    sbit SEG_A = P0^0;
    sbit SEG_B = P0^1;
    sbit SEG_C = P0^2;
    sbit SEG_D = P0^3;
    sbit SEG_E = P0^4;
    sbit SEG_F = P0^5;
    sbit SEG_G = P0^6;
    
    sbit DIGIT1 = P2^0; // 第一个数码管位选
    sbit DIGIT2 = P2^1; // 第二个数码管位选
    
    // 数码管段码表
    unsigned char code seg_code[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
    
    // 延时函数
    void delay(unsigned int ms) {
        unsigned int i, j;
        for (i = 0; i < ms; i++)
            for (j = 0; j < 123; j++);
    }
    
    // 显示数码管
    void nixie(unsigned char digit, unsigned char value) {
        switch (digit) {
            case 1:
                DIGIT1 = 0; // 选择第一个数码管
                DIGIT2 = 1;
                P0 = seg_code[value]; // 设置段选
                delay(1); // 延时
                DIGIT1 = 1; // 关闭第一个数码管
                break;
            case 2:
                DIGIT1 = 1; // 选择第二个数码管
                DIGIT2 = 0;
                P0 = seg_code[value]; // 设置段选
                delay(1); // 延时
                DIGIT2 = 1; // 关闭第二个数码管
                break;
            default:
                break;
        }
    }
    
    void main() {
        while (1) {
            nixie(1, 0); // 在第一个数码管显示0
            nixie(2, 0); // 在第二个数码管显示0
        }
    }
    

    代码解释

    1. 定义数码管段选和位选引脚SEG_ASEG_G 是数码管的段选引脚,DIGIT1DIGIT2 是数码管的位选引脚。
    2. 数码管段码表seg_code 数组存储了0到9的段码。
    3. 延时函数delay 函数用于产生延时。
    4. 显示数码管nixie 函数根据传入的 digitvalue 参数,选择相应的数码管并显示相应的数字。

    如何使用

    • 调用 nixie(1, 0) 将在第一个数码管上显示0。
    • 调用 nixie(2, 0) 将在第二个数码管上显示0。

    注意事项

    • 确保你的硬件连接正确,特别是数码管的段选和位选引脚。
    • 如果你有多个数码管,可以扩展 nixie 函数以支持更多的数码管。
    • 根据实际需求调整延时函数的参数,以确保显示效果良好。

    希望这个示例能帮助你解决问题。如果你有更多具体的问题或需要进一步的帮助,请告诉我!

    评论

报告相同问题?

问题事件

  • 创建了问题 12月23日