
unsigned char code SEG7[] = {
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
unsigned char DISP_BUFF[] = {
0, 0, 0, 0, 0, 0, 0, 0}
void DelayMS(unsigned int x)
{
unsigned char i;
while(x--) for(i = 200; i > 0; i--);
}
void display(unsigned char x)
{
unsigned char i, w = 128;
for(i = 0; i < 8; i++) { //显示八位数码
P0 = SEG7[DISP_BUFF[i]];
P2 = w; DelayMS(1); P2 = 0;
w = _cror_(w, 1);
}
}
试试看:
while(1) {
P3=Tab[1]; //输出共阳段码
LED1=1; delay(); //给LED1的位送高电平,LED1才发光
LED1=0; //停止发光
P3=Tab[2];
LED2=1; delay(); LED2=0;
P3=Tab[3];
LED3=1; delay(); LED3=0;
P3=Tab[4];
LED4=1; delay(); LED4=0;
}
如果你的硬件已连接完善,那编程需:
1、动态扫描:在已个 t 时间内(可以是几个ms)选中 1 位数码管,以亮点该位数码管对应的码段,其他关断(不亮);而下一个 t 时间需点亮下一位数码管以此类推,循环起来。这个 t 可以用定时器准确控制。当然,如果你只是为了实现单纯的3个数码管显示,可以不精确时间,循环起来就是了(只要保证耽搁的显示时间少于肉眼识别时间,就是看起来不会一闪一闪的就行);
2、显示内容:多数情况下,待显示的字符/数字先按数码定义编码,存放在表格中。按自己的编程需要,在显示的时候从表格中提取。当然,如果只是简单实验,显示的内容是固定的,也可以程序里用立即数。
多试一试吧。
以上就是关于下面是单片机数码管原理图,用汇编语言根据下面的原理图写一个动态显示数码管的程序全部的内容,包括:下面是单片机数码管原理图,用汇编语言根据下面的原理图写一个动态显示数码管的程序、哪位老大帮我看看这个动态数码管程序,怎么仿真出来总是一堆残念的数字、本人在用C语言编一段三位一体数码管动态显示程序,求高手指点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)