標(biāo)題:
基于51單片機(jī)的時(shí)鐘靜態(tài)顯示Proteus仿真程序
[打印本頁(yè)]
作者:
黑科技cc.
時(shí)間:
2019-7-19 16:52
標(biāo)題:
基于51單片機(jī)的時(shí)鐘靜態(tài)顯示Proteus仿真程序
要求用定時(shí)器實(shí)現(xiàn)時(shí)鐘的模擬,并用數(shù)碼管顯示當(dāng)前模擬時(shí)鐘,時(shí)鐘的顯示格式位12:01:02,即顯示小時(shí):分:秒。
學(xué)習(xí)了解定時(shí)器的結(jié)構(gòu)特點(diǎn),設(shè)計(jì)并編程實(shí)現(xiàn)模擬時(shí)鐘。
二、實(shí)驗(yàn)要求
1.設(shè)計(jì)出STC89C51的模擬時(shí)鐘電路。
2.編程實(shí)現(xiàn)數(shù)碼管顯示時(shí)鐘,觀察實(shí)驗(yàn)現(xiàn)象。
三、可供選擇實(shí)驗(yàn)儀器
51開發(fā)板、數(shù)碼管、USB轉(zhuǎn)串口下載線、Keil軟件等
四、實(shí)驗(yàn)提示
要求用定時(shí)器實(shí)現(xiàn)時(shí)鐘的模擬,并用數(shù)碼管顯示當(dāng)前模擬時(shí)鐘,時(shí)鐘的顯示格式位12:01:02,即顯示小時(shí):分:秒。
五、實(shí)驗(yàn)電路
學(xué)會(huì)用定時(shí)器實(shí)現(xiàn)時(shí)鐘的模擬,并用數(shù)碼管顯示當(dāng)前模擬時(shí)鐘,時(shí)鐘的顯示到小時(shí):分:秒。
但是篇幅過長(zhǎng),還需要學(xué)習(xí)更簡(jiǎn)單的寫法0
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
1.png
(92.19 KB, 下載次數(shù): 61)
下載附件
2019-7-19 16:49 上傳
源代碼
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
unsigned char SegNo[8]={0};
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//顯示0~F的值
unsigned char Cnt=0;
unsigned char Sec=0;
unsigned char Min=0;
unsigned char Hour=0;
char Sec1=24;
void delay(u16 i)
{
while(i--);
}
void DigDisplay()
{
u8 i;
for(i=0;i<8;i++)
{
switch(i) //位選,選擇點(diǎn)亮的數(shù)碼管,
{
case(0):
LSA=0;LSB=0;LSC=0; break;//顯示第0位
case(1):
LSA=1;LSB=0;LSC=0; break;//顯示第1位
case(2):
LSA=0;LSB=1;LSC=0; break;//顯示第2位
case(3):
LSA=1;LSB=1;LSC=0; break;//顯示第3位
case(4):
LSA=0;LSB=0;LSC=1; break;//顯示第4位
case(5):
LSA=1;LSB=0;LSC=1; break;//顯示第5位
case(6):
LSA=0;LSB=1;LSC=1; break;//顯示第6位
case(7):
LSA=1;LSB=1;LSC=1; break;//顯示第7位
}
P0=SegNo[i];//發(fā)送段碼
delay(100); //間隔一段時(shí)間掃描
P0=0x00;//消隱
}
}
void main()
{
// 1 定時(shí)器初始化
TMOD=0X01;// 0001 0001
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
IE=0X82; //EA=1;ET0=1; ET1=1; //1000 1010
TR0=1;
while(1)
{
//3 秒的顯示
SegNo[0]=smgduan[Hour/10];
SegNo[1]=smgduan[Hour%10];
SegNo[2]=0x40;
SegNo[3]=smgduan[Min/10];
SegNo[4]=smgduan[Min%10];
SegNo[5]=0x40;
SegNo[6]=smgduan[Sec/10];
SegNo[7]=smgduan[Sec%10];
DigDisplay(); //數(shù)碼管顯示函數(shù)
}
}
//2定時(shí)器中斷得到秒
void Timer0_ISR() interrupt 1
{
//重新裝載初始值
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
Cnt++;
if(Cnt==20)
{
Cnt=0;
Sec++;
}
if(Sec==60)
{
Sec=0;
Min++;
}
if(Min==60)
{
Min=0;
Hour++;
}
if(Hour==24)
{
Hour=0;
}
}
復(fù)制代碼
全部資料51hei下載地址:
時(shí)鐘不可調(diào).zip
(364.62 KB, 下載次數(shù): 18)
2019-7-19 16:52 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
poiuasd
時(shí)間:
2019-12-24 10:07
博主很棒 解我之需 希望多發(fā)發(fā)這么好 的內(nèi)容 學(xué)習(xí)到了。!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1