- 学习单片机程序开发软件Keil uVision的使用方法
- 学习单片机控制数码管动态显示的方法
- 学习模块化程序设计的方法
硬件:X86型兼容计算机,单片机开发板;软件:Keil uVision和烧录软件
- 设计程序控制数码管动态显示需要的数值;
- 硬件方案:数码管为共阴极连接,段码端通过锁存器74HC245与IO口(自选)连接,位选端通过译码器74LS138与IO口(自选)连接;
- 软件原理:根据锁存器、译码器原理和数码管动态显示原理依次循环送段码和位选信号,通过调整延时时间来进行动态显示。
- 要求: 1)在单个数码管上循环显示0-9;
2)在左起4个数码管上滚动显示数字“2022”;
3)在右起4个数码管上稳定显示数字“HELP”。
循环显示0-9
- #include
- #include
- unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
- void delay(unsigned int t)
- {
- unsigned int i;
- while(t--)
- for(i=0;i<125;i++);
- }
- void main()
- {
- unsigned char i;
- for(i=0;i<5;i++)
- {
- P1=tab[i];
- delay(300);
- }
- }
实现数字2022
- #include
- void delay(unsigned int t)
- {
- unsigned int i;
- while(t--)
- for(i=0;i<125;i++);
- }
- void display(unsigned char dat,unsigned char pos)
- {
- unsigned char seg[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- unsigned char poscc[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07};
- P1=seg[dat];
- P0=poscc[pos];
- delay(200);
- }
- void main()
- {
- while(1)
- {
- display(2,0);
- display(0,1);
- display(2,2);
- display(2,3);
- }
- }
实现help的显示就更简单了
我这里就提一下思路,就不放代码了。
在seg里面加入H,L,E,P的相应的段码段,显示的时候不要循环就可以了。