利用Keil uVision4编程程序,在Proteus 8 Professional中创建仿真电路
仿真电路
![](https://i-blog.csdnimg.cn/blog_migrate/e34168896585c06deb414347465e237b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ad812f6c3d63b5c9d16ba8b9f947d16c.png)
![](https://i-blog.csdnimg.cn/blog_migrate/15517d1996ddd23e087c37fc3fbada61.png)
![](https://i-blog.csdnimg.cn/blog_migrate/09fb447dfd8455b7ad25324a01e34ae0.png)
延迟代码
void delay(unsigned int x)
{
while(x--);
}
C语言代码
数码管显示从0000开始,0310结束
#include<reg51.h>
//unsigned 第一个是符号位
//char 8字节 0-255
//int 16字节 0-2的16次方-1
unsigned char seven_seg[] = {
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int M = 5000;
void delay(unsigned int x)
{
while(x--);
}
void main(void)
{
unsigned char i;
unsigned int a,b,c,d;
for(a = 0;a <= 310;a++)
{
if(a >= 0&&a <= 9)
{
P1 = seven_seg[i];
P0 = P2 = P3 = 0xc0;
delay(M);
i++;
if(i >= 10) i = 0;
}else if(a >= 10&&a <= 99)
{
c = a/10;
d = a%10;
P3 = seven_seg[c];
P1 = seven_seg[d];
P0 = P2 = 0xc0;
delay(M);
}else if(a >= 100&&a <= 310)
{
b = a/100;
c = a/10%10;
d = a%10;
P2 = seven_seg[b];
P3 = seven_seg[c];
P1 = seven_seg[d];
P0 = 0xc0;
delay(M);
}else
{
P2 = 0xf9;
P1 = 0xb0;
P0 = P3 = 0xc0;
}
}
while(1)
{
P2 = 0xb0;
P3 = 0xf9;
P0 = P1 = 0xc0;
}
}
仿真电路和代码
链接:https://pan.baidu.com/s/1xm_wUnh_jmiFjctTLdByAw
提取码:5151