標題:
單片機多功能秒表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微秒發(fā)起一次中斷。
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微秒發(fā)起一次中斷。
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.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1