20141016 【Arduino + C51单片机】 八段数码管--数字循环显示

来源:互联网 发布:太平洋电脑软件下载 编辑:程序博客网 时间:2024/05/01 02:37

作为 物联网工程系 的学生,

硬件是必须要会的。。。


今天写了个循环显示(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();//显示数字1delay(2000);//延时2sdigital_2();//显示数字2delay(1000); //延时1sdigital_3();//显示数字3delay(1000); //延时1sdigital_4();//显示数字4delay(1000); //延时1sdigital_5();//显示数字5delay(1000); //延时1sdigital_6();//显示数字6delay(1000); //延时1sdigital_7();//显示数字7delay(1000); //延时1sdigital_8();//显示数字8delay(1000); //延时1s}}


0 0
原创粉丝点击