- 实验目的
- 学习单片机程序开发软件Keil uVision的使用方法
- 学习单片机控制数码管动态显示的方法
- 学习模块化程序设计的方法
- 实验仪器
硬件:X86型兼容计算机,单片机开发板;软件:Keil uVision和烧录软件
实验内容
设计程序控制数码管动态显示需要的数值;
硬件方案:数码管为共阴极连接,段码端通过锁存器74HC245与IO口(自选)连接,位选端通过译码器74LS138与IO口(自选)连接;
软件原理:根据锁存器、译码器原理和数码管动态显示原理依次循环送段码和位选信号,通过调整延时时间来进行动态显示。
要求: 1)在单个数码管上循环显示0-9;
2)在左起4个数码管上滚动显示数字“2022”;
3)在右起4个数码管上稳定显示数字“HELP”。
循环显示0-9
#include<reg52.h> #include <intrins.h> 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 <reg52.h> 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的相应的段码段,显示的时候不要循环就可以了。