20141016 【Arduino + C51单片机】 八段数码管--数字循环显示
2014-10-16 19:46
531 查看
作为 物联网工程系 的学生,
硬件是必须要会的。。。
今天写了个循环显示(0~9)的八段数码管
就不应该按说明书来,卡了老半天。
而且又长又臭。。。
型号:LED5011
为了方便接线并检错。
我按顺序数码管(a~g,还有点dp)接在3~9号数字端。
【不好贴图,就不上图片了】
对每个数字的显示状态压缩。。。
代码如下:
C51单片机的代码【单片机型号:STC89C52RC (板子为HC6800-ES V2.0)】
以下,所谓标程:
硬件是必须要会的。。。
今天写了个循环显示(0~9)的八段数码管
就不应该按说明书来,卡了老半天。
而且又长又臭。。。
型号:LED5011
为了方便接线并检错。
我按顺序数码管(a~g,还有点dp)接在3~9号数字端。
【不好贴图,就不上图片了】
对每个数字的显示状态压缩。。。
代码如下:
int nn[10] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F}; const int dTime = 1000; void number(int no){ int t = nn[no]; for(int i=0; i<=7; i++){ boolean light = t&(1<<i); digitalWrite(i+2, light); } } void setup() { for(int i=0; i<=7; i++) pinMode(i+2, OUTPUT); } void loop() { for(int i=0; i<=9; i++){ number(i); delay( dTime ); } }
C51单片机的代码【单片机型号:STC89C52RC (板子为HC6800-ES V2.0)】
#include <reg52.h> const unsigned int num[11] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x80}; unsigned int i; void delay(int dt){ unsigned int i, j; for(i=0; i<1000; i++) for(j=0; j<dt; j++); } void main(){ while( 1 ){ for(i=0; i<10; i++){ P0 = num[i]; delay( 100 ); } } }
以下,所谓标程:
//设置控制各段的数字IO 脚 int a=7;//定义数字接口7 连接a 段数码管 int b=6;// 定义数字接口6 连接b 段数码管 int c=5;// 定义数字接口5 连接c 段数码管 int d=11;// 定义数字接口11 连接d 段数码管 int e=10;// 定义数字接口10 连接e 段数码管 int f=8;// 定义数字接口8 连接f 段数码管 int g=9;// 定义数字接口9 连接g 段数码管 int dp=4;// 定义数字接口4 连接dp 段数码管 void digital_1(void) //显示数字1 { unsigned char j; digitalWrite(c,HIGH);//给数字接口5 引脚高电平,点亮c 段 digitalWrite(b,HIGH);//点亮b 段 for(j=7;j<=11;j++)//熄灭其余段 digitalWrite(j,LOW); digitalWrite(dp,LOW);//熄灭小数点DP 段 } void digital_2(void) //显示数字2 { unsigned char j; digitalWrite(b,HIGH); digitalWrite(a,HIGH); for(j=9;j<=11;j++) digitalWrite(j,HIGH); digitalWrite(dp,LOW); digitalWrite(c,LOW); digitalWrite(f,LOW); } void digital_3(void) //显示数字3 { unsigned char j; digitalWrite(g,HIGH); digitalWrite(d,HIGH); for(j=5;j<=7;j++) digitalWrite(j,HIGH); digitalWrite(dp,LOW); digitalWrite(f,LOW); digitalWrite(e,LOW); } void digital_4(void) //显示数字4 { digitalWrite(c,HIGH); digitalWrite(b,HIGH); digitalWrite(f,HIGH); digitalWrite(g,HIGH); digitalWrite(dp,LOW); digitalWrite(a,LOW); digitalWrite(e,LOW); digitalWrite(d,LOW); } void digital_5(void) //显示数字5 { unsigned char j; for(j=7;j<=9;j++) digitalWrite(j,HIGH); digitalWrite(c,HIGH); digitalWrite(d,HIGH); digitalWrite(dp,LOW); digitalWrite(b,LOW); digitalWrite(e,LOW); } void digital_6(void) //显示数字6 { unsigned char j; for(j=7;j<=11;j++) digitalWrite(j,HIGH); digitalWrite(c,HIGH); digitalWrite(dp,LOW); digitalWrite(b,LOW); } void digital_7(void) //显示数字7 { unsigned char j; for(j=5;j<=7;j++) digitalWrite(j,HIGH); digitalWrite(dp,LOW); for(j=8;j<=11;j++) digitalWrite(j,LOW); } void digital_8(void) //显示数字8 { unsigned char j; for(j=5;j<=11;j++) digitalWrite(j,HIGH); digitalWrite(dp,LOW); } void setup() { int i;//定义变量 for(i=4;i<=11;i++) pinMode(i,OUTPUT);//设置4~11 引脚为输出模式 } void loop() { while(1) { digital_1();//显示数字1 delay(2000);//延时2s digital_2();//显示数字2 delay(1000); //延时1s digital_3();//显示数字3 delay(1000); //延时1s digital_4();//显示数字4 delay(1000); //延时1s digital_5();//显示数字5 delay(1000); //延时1s digital_6();//显示数字6 delay(1000); //延时1s digital_7();//显示数字7 delay(1000); //延时1s digital_8();//显示数字8 delay(1000); //延时1s } }
相关文章推荐
- 基于Proteus+8051汇编应用实例系列之一--单只数码管循环显示数字
- 80C51 单片机 数码管显示循环数字
- (4)51单片机入门案列-8个数码管中循环显示数字0-9
- 20141115 【 Arduino - LM35 - 4位八段数码管 】 数码管显示温度
- 4位共阳数码管 显示数字,调节亮度,时钟调时,控制LED巧妙编程
- 发光管200ms时间间隔闪烁 数码管实现0~59s循环显示
- 数字时钟(数码管显示)例如:23-59-23
- 数码管循环显示程序
- 4个独立按键实现对数码管数字显示的加减清零等
- 凌阳61单片机使用7段数码管显示数字时钟的程序
- 8位共阴数码管:位码(在那个数码管上显示)与段码(显示什么数字)
- 学习笔记 从零开始学单片机(2) 全八段数码管显示
- 两位数码管循环显示00~99的实验
- 数码管显示数字1
- 数码管显示数字12345678
- 20141109 【 单片机——串口通讯——中断 】 八段数码管显示通信内容
- 52单片机控制数码管显示数字
- CPLD 八段数码管时钟显示的VHDL实现
- 键盘输入的数字在串口调试助手显示,然后再到数码管(汇编语言版本)
- 并行口实现数字0~9、A~F、L、U、P、n总共19个键盘,将按键的结果用7段数码管(例如:7SEG-MPX-CA-BLUE)显示(可选——按键控制移位)出来