标题:
单片机多功能秒表2位共阴数码管Proteus仿真程序 减时间 加时间按钮
[打印本页]
作者:
梦不虚存
时间:
2022-12-29 22:03
标题:
单片机多功能秒表2位共阴数码管Proteus仿真程序 减时间 加时间按钮
多功能秒表仿真和程序
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.gif
(103.25 KB, 下载次数: 32)
下载附件
2023-1-2 17:19 上传
单片机源程序如下:
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^5;
sbit w1=P2^0;
sbit w2=P2^1;
sbit s2=P3^3;
sbit s3=P3^4;
sbit s4=P3^5;
sbit s5=P3^6;
sbit s6=P3^7;
sbit buzz=P1^0;
uchar N=00; //定义时间,可自由更改为0-99;
uchar miao;
bit flag=0;
unsigned int pp;
uchar j,k;
uchar nn=0;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
void delay(unsigned char i)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
void display(uchar n)
{
uchar c,d;
c=n/10;
d=n%10;
P0=0x00;
dula=0;
P0=table[c];
dula=1;
w1=0,w2=1;
delay(5);
P0=0x00;
dula=0;
P0=table[d];
dula=1;
w2=0,w1=1;
delay(5);
}
void scankeys()
{
if(s2==0 && TR0==0) //--
{
delay(5);
if(s2==0)
{
if(N>0)
N--;
miao=N;
}
while(!s2);
}
if(s3==0&& TR0==0) //++
{
delay(5);
if(s3==0)
{
if(N<100)
N++;
miao=N;
}
while(!s3);
}
if(s4==0)
{
TR0=1; //启动
}
if(s5==0)
{
TR0=0; //暂停
}
if(s6==0)
{
TR0=1,miao=N=0,pp=0; //清零
}
}
void main()
{
TMOD=0x01;
TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。
TL0=(65536-46080)%256;//46080的来历,为50000*11.0592/12
ET0=1; // 开定时器0中断
TR0=0;
EA=1;
miao=N;
while(1)
{
display(miao);
scankeys();
if(miao==99)
{
buzz=0;
}
else
{
buzz=1;
}
}
}
void time0() interrupt 1
{ TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。
TL0=(65536-46080)%256;//46080的来历,为50000*11.0592/12
pp++;
if(pp==20)
{
pp=0;
if(miao<99)
miao++;
}
}
复制代码
Keil代码与Proteus仿真下载:
秒表2位共阴数码管.zip
(96.77 KB, 下载次数: 30)
2022-12-29 22:01 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
35456
时间:
2023-1-3 21:25
向大佬致敬,向大佬学习
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1