数码管显示1234和5678

该代码片段是用C语言编写的,基于reg51.h头文件,用于控制数码管显示数字1234和5678。程序通过二维数组table存储数码管段码,使用延迟函数控制显示速度,通过循环遍历行和列实现数字的逐个显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

#include<reg51.h> //定义头文件
#define uint unsigned int 
#define uchar unsigned char
uchar table[2][4]={{0x06,0x5b,0x4f,0x66,},{0x6d,0x7d,0x07,0x7f,}};//数码管显示1234,5678
uchar weixuan[ ]={0xfe,0xfd,0xfb,0xf7};
void delay(uint z)//延迟函数
{
    uint i,j;
    for(i=z;i>0;i--)
    for(j=120;j>0;j--);
}
void main()//主函数

{  
uchar hang,lie,sudu;
for(hang=0;hang<2;hang++) //表示行
   {
   for(sudu=0;sudu<200;sudu++) //短暂停留一会儿再进行列的显示
   {
       for(lie=0;lie<4;lie++)
         {
          P0=table[hang][lie];
          P2=weixuan[lie];
          delay(2);    //延迟两秒
          P2=0xff;    //清零
          } 
     }
   }
}
 

成果展示,萌新一枚,如有不对的地方还请指正

下面是一个使用8个独立按键控制四位一体数码管的基本程序,你可以根据需要进行修改优化: ``` #include <Arduino.h> const int button1 = 2; // 按钮1连接到数字引脚2 const int button2 = 3; // 按钮2连接到数字引脚3 const int button3 = 4; // 按钮3连接到数字引脚4 const int button4 = 5; // 按钮4连接到数字引脚5 const int button5 = 6; // 按钮5连接到数字引脚6 const int button6 = 7; // 按钮6连接到数字引脚7 const int button7 = 8; // 按钮7连接到数字引脚8 const int button8 = 9; // 按钮8连接到数字引脚9 const int segmentA = A0; // 数码管A段连接到模拟引脚A0 const int segmentB = A1; // 数码管B段连接到模拟引脚A1 const int segmentC = A2; // 数码管C段连接到模拟引脚A2 const int segmentD = A3; // 数码管D段连接到模拟引脚A3 const int segmentE = A4; // 数码管E段连接到模拟引脚A4 const int segmentF = A5; // 数码管F段连接到模拟引脚A5 const int segmentG = 10; // 数码管G段连接到数字引脚10 const int digit1 = 11; // 数码管第一位连接到数字引脚11 const int digit2 = 12; // 数码管第二位连接到数字引脚12 const int digit3 = 13; // 数码管第三位连接到数字引脚13 const int digit4 = A6; // 数码管第四位连接到模拟引脚A6 // 数码管显示数字数组 const byte numbers[10][7] = { {1, 1, 1, 1, 1, 1, 0}, // 0 {0, 1, 1, 0, 0, 0, 0}, // 1 {1, 1, 0, 1, 1, 0, 1}, // 2 {1, 1, 1, 1, 0, 0, 1}, // 3 {0, 1, 1, 0, 0, 1, 1}, // 4 {1, 0, 1, 1, 0, 1, 1}, // 5 {1, 0, 1, 1, 1, 1, 1}, // 6 {1, 1, 1, 0, 0, 0, 0}, // 7 {1, 1, 1, 1, 1, 1, 1}, // 8 {1, 1, 1, 1, 0, 1, 1} // 9 }; // 数码管显示位数组 const int digits[4] = {digit1, digit2, digit3, digit4}; void setup() { pinMode(button1, INPUT_PULLUP); pinMode(button2, INPUT_PULLUP); pinMode(button3, INPUT_PULLUP); pinMode(button4, INPUT_PULLUP); pinMode(button5, INPUT_PULLUP); pinMode(button6, INPUT_PULLUP); pinMode(button7, INPUT_PULLUP); pinMode(button8, INPUT_PULLUP); pinMode(segmentA, OUTPUT); pinMode(segmentB, OUTPUT); pinMode(segmentC, OUTPUT); pinMode(segmentD, OUTPUT); pinMode(segmentE, OUTPUT); pinMode(segmentF, OUTPUT); pinMode(segmentG, OUTPUT); pinMode(digit1, OUTPUT); pinMode(digit2, OUTPUT); pinMode(digit3, OUTPUT); pinMode(digit4, OUTPUT); } void loop() { int number = 0; if (!digitalRead(button1)) { number = 1; } else if (!digitalRead(button2)) { number = 2; } else if (!digitalRead(button3)) { number = 3; } else if (!digitalRead(button4)) { number = 4; } else if (!digitalRead(button5)) { number = 5; } else if (!digitalRead(button6)) { number = 6; } else if (!digitalRead(button7)) { number = 7; } else if (!digitalRead(button8)) { number = 8; } // 显示数字 for (int i = 0; i < 4; i++) { digitalWrite(digits[i], LOW); // 关闭所有位 digitalWrite(segmentA, numbers[number][0]); digitalWrite(segmentB, numbers[number][1]); digitalWrite(segmentC, numbers[number][2]); digitalWrite(segmentD, numbers[number][3]); digitalWrite(segmentE, numbers[number][4]); digitalWrite(segmentF, numbers[number][5]); digitalWrite(segmentG, numbers[number][6]); digitalWrite(digits[i], HIGH); // 打开当前位 delay(10); } } ``` 这个程序使用8个独立的按钮控制数码管显示数字,按下不同的按钮可以显示0到7之间的数字。在程序中,我们使用了一个二维数组来存储每个数字在数码管中的显示方式,然后使用数字位数组来控制数码管的每一位,通过循环依次显示每一位的数字。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值