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
- 20141016 【Arduino + C51单片机】 八段数码管--数字循环显示
- 80C51 单片机 数码管显示循环数字
- C51单片机数码管的显示代码
- 20141109 【 单片机——串口通讯——中断 】 八段数码管显示通信内容
- 20141119 【 Arduino - DHT11 - 单片机 】 利用单片机数码管 显示 DHT11温湿度
- 凌阳61单片机使用7段数码管显示数字时钟的程序
- C51单片机学习(一):LED和数码管静态显示
- C51单片机学习(三):数码管动态显示和键盘
- 52单片机控制数码管显示数字
- Arduino学习(八) 数码管
- (4)51单片机入门案列-8个数码管中循环显示数字0-9
- ds1302 数码管显示 C51
- c51 单片机实验_2 数码管
- 单片机数码管码段
- arduino 8段数码管,arduino 8段数码管
- CPLD 八段数码管时钟显示的VHDL实现
- 单片机编程:让led数码管显示数字0到9
- C51单片机实现六位数码管时钟
- CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)
- Android中下拉框Spinner使用
- UVA409
- 共享池调整
- java的修饰符
- 20141016 【Arduino + C51单片机】 八段数码管--数字循环显示
- HTTP头信息
- 自己SQL的总结
- Fisher线性判别与感知器算法Matlab实现
- MTLAB中的legend和xlabel,ylabel设置
- Find Minimum in Rotated Sorted Array
- EM算法学习资料备忘
- poj3176--Cow Bowling(dp:数塔问题)
- hdu4612——Warm up