標題:
51單片機電子鐘顯示器Proteus仿真程序(新手上路勿噴)
[打印本頁]
作者:
M阿
時間:
2022-5-20 11:01
標題:
51單片機電子鐘顯示器Proteus仿真程序(新手上路勿噴)
電子秒表顯示器C51仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.gif
(184.52 KB, 下載次數(shù): 32)
下載附件
2022-5-20 16:06 上傳
單片機源程序如下:
#include "reg51.h"
#include "stdio.h"
#define uint unsigned int
#define uchar unsigned char
uchar data second=23,minute=10,hour=4;
uchar data disbuf[6]={0};
uchar bdata FLAG=0;
sbit H_M=FLAG^1; //小時 分鐘切換標志位 啟動后默認為分鐘設置狀態(tài)
sbit P1_0=P1^0; //增1鍵
sbit P3_2=P3^2; //小時,分鐘切換鍵
//定義共陰段碼 0-9
uchar code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//計數(shù)變量
uchar data count=0;
//定時器0的中斷服務程序 50ms
void timer0(void) interrupt 1 using 1
{TH0=-50000/256;
TL0=-50000%256;
count++;
if(count==20)
{count=0;
second++;
if(second==60)
{second=0;
minute++;
if(minute==60)
{minute=0;
hour++;
if(hour==24)
{hour=0;}
}
}
}
return;
}
//延時程序
void dlms(void)
{uchar i;
for(i=2000;i>0;i--){}
}
//外部中斷0的中斷服務程序
void int0(void) interrupt 0 using 2
{
while(!P3_2) //等待按鍵彈起
{
dlms();
}
dlms( );
if(P3_2) //按鍵彈起
H_M=!H_M;
}
//顯示程序
void disp(void)
{uchar i,j;
uchar bdata sel;
disbuf[0]=second%10;
disbuf[1]=second/10;
disbuf[2]=minute%10;
disbuf[3]=minute/10;
disbuf[4]=hour%10;
disbuf[5]=hour/10;
P2=0XFF; //關閉所示數(shù)碼管顯示
sel=0x01;
for(i=0;i<6;i++)
{j=disbuf[i];
P2=(sel^0xff); //得到位選
P0=table[j]; //送段碼
dlms();
P2=0XFF;
sel=sel<<1; //位選左移1位
}
}
//加1處理程序
void increa(void)
{if(H_M) //H_M為1 表示小時設置
{hour++;
if(hour==24)
{hour=0;
disbuf[4]=0;
disbuf[5]=0;
}
}
else //H_M為0 表示分鐘設置
{minute++;
if(minute==60)
{minute=0;
disbuf[2]=0;
disbuf[3]=0;
}
}
}
int main( )
{
TCON=0x01;
TMOD=0x01;
TH0=-50000/256;
TL0=-50000%256;
EA=1;
ET0=1;
EX0=1;
TR0=1;
while(1)
{disp();
if(!P1_0)
{while(!P1_0)
dlms();
if(P1_0)
increa();
}
}
}
復制代碼
本人初學,僅供參考,存在錯誤和不足之處,請大家回帖多多指教,切勿照搬,文件下載:
Keil代碼與Proteus8.8仿真下載::
實驗4-電子鐘.7z
(35.15 KB, 下載次數(shù): 29)
2022-5-20 11:00 上傳
點擊文件名下載附件
內(nèi)涵源碼和proteus仿真8.6
下載積分: 黑幣 -5
作者:
ggo468
時間:
2023-1-4 19:57
用四位八段數(shù)碼管,顯示四位,小時和分鐘怎么做
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1