标题:
51单片机0到9999数码管显示的Proteus仿真+代码
[打印本页]
作者:
zhang1314hong
时间:
2018-12-13 09:39
标题:
51单片机0到9999数码管显示的Proteus仿真+代码
1.png
(24.33 KB, 下载次数: 55)
下载附件
2018-12-13 09:35 上传
2.png
(25.17 KB, 下载次数: 53)
下载附件
2018-12-13 09:35 上传
单片机源程序如下:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
#define wei=P2;
#define duan=P0;
sbit led=P1^0;
sbit S2=P3^0;
sbit S3=P3^1;
sbit S4=P3^2;
uchar sec,num;
uint cnt=0; //全局变量,控制数码管显示的数字的变化
uint ge,shi,qian,bai;
uchar code arry[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void delay(uint i);//软件延时函数
void display(); //数码管显示函数
void delay(uint i)//软件延时函数
{
uint a,c;
for(a =i;a>0;a--)
{
for(c=114;c>0;c--);
}
}
void display()
{
qian=cnt/1000;
bai=(cnt%1000)/100;
shi=((cnt%1000)%100)/10;
ge= ((cnt%1000)%100)%10;
P2=0xf7;
P0=arry[ge];
delay(5); //防止重影
P2=0xfb;
P0=arry[shi];
delay(5);
P2=0xfd;
P0=arry[bai];
delay(5);
P2=0xfe;
P0=arry[qian];
delay(5);
}
void Timer0Init()
{
TMOD|=0X11;//选择为定时器0模式,工作方式1,仅用TR0打开启动。
TH0=0X3c; //给定时器赋初值,定时1ms
TL0=0Xb0;
TH1=0X3C;
TL1=0XB0;
ET1=1;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
}
void Timer0() interrupt 1
{
TH0=0X3c; //
TL0=0Xb0;
sec++;
if(sec==20)
{
TF0=0;
sec=0;
cnt++;
}
if(cnt==9999)
{
cnt=9999;
TR0=0;
TF0=0;
}
}
void Timer1() interrupt 3
{
TH1=0X3c; //
TL1=0Xb0;
num++;
if(num==10)
{
num=0;
TF1=0;
led=~led;
}
}
void main()//主函数
{
Timer0Init();
while(1)
{
display();
if(S2==0)//开始/复位
{
delay(10);
if(S2==0)
{
sec = 0;
num=0;
cnt=0;
TR0=1;
TR1=1;
}
}
if(S3==0)//暂停
{
delay(10);
if(S3==0)
{
TR0 = 0; //关闭定时器
TF0 = 0;
TR1=0;
TF1=0;
}
}
if(S4==0)//继续开始
{
delay(10);
if(S4==0)
{
sec = 0;
num=0;
TR0=1;
TR1=1;
}
}
}
}
复制代码
所有资料51hei提供下载:
51单片机0到9999数码管显示的Proteus仿真 代码.dsn.zip
(77.43 KB, 下载次数: 82)
2018-12-13 09:38 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
panwentao
时间:
2020-5-23 11:56
谢谢,非常厉害
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1