标题:
为什么这个程序延迟减少了数码管会乱码了
[打印本页]
作者:
博门
时间:
2017-5-24 10:38
标题:
为什么这个程序延迟减少了数码管会乱码了
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
typedef unsigned char u8;
typedef unsigned int u16;
u8 code wel[10]={0x06,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,};
void display(unsigned long);
void delay(uint);
void main(void)
{
display(12345678); /*输入8位数*/
}
void display(unsigned long x)
{
uint i;
for(i=0;i<8;i++)
{
switch(i)
{
case 0: P2_2=0;P2_3=0;P2_4=0;P0=wel[x%10]; break;
case 1: P2_2=1;P2_3=0;P2_4=0;P0=wel[(x/10)%10]; break;
case 2: P2_2=0;P2_3=1;P2_4=0;P0=wel[(x/100)%10]; break;
case 3: P2_2=1;P2_3=1;P2_4=0;P0=wel[(x/1000)%10]; break;
case 4: P2_2=0;P2_3=0;P2_4=1;P0=wel[(x/10000)%10]; break;
case 5: P2_2=1;P2_3=0;P2_4=1;P0=wel[(x/100000)%10]; break;
case 6: P2_2=0;P2_3=1;P2_4=1;P0=wel[(x/1000000)%10]; break;
case 7: P2_2=1;P2_3=1;P2_4=1;P0=wel[(x/10000000)]; break;
}
delay(50000);
}
}
void delay(uint y)
{
while(y--);
}
测试项目.rar
2017-5-24 10:37 上传
点击文件名下载附件
294.52 KB, 下载次数: 3
仿真文件
作者:
cjr51
时间:
2017-5-24 15:25
应该与人眼对光的反应速度有关,延时太小,人眼还没反应出数字是多少就到下一个数字了
作者:
esdd
时间:
2017-5-24 15:38
我感觉延迟有问题
作者:
haojie6
时间:
2017-5-24 17:06
刷新速度太快了,数码管还没完全点亮,就闪到下一个了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1