標題: 51單片計電子時鐘 [打印本頁]
作者: 發的啥地方 時間: 2017-5-23 21:41
標題: 51單片計電子時鐘
第一章 系統設計要求1.1 基本功能(1)能夠顯示時分秒
(2)能夠調整時分秒
1.2 擴展功能
(1)能夠任意設置定時時間
(2)定時時間到鬧鈴能夠報警
(3)實現了秒表功能
第二章 硬件總體設計方案本次設計時鐘電路,使用了AT89C51單片機芯片控制電路,單片機控制電路簡單且省去了很多復雜的線路,使得電路簡明易懂,使用鍵盤鍵上的按鍵來調整時鐘的時、分、秒,用一揚聲器來進行定時提醒,同時使用C語言程序來控制整個時鐘顯示,使得編程變得更容易,這樣通過四個模塊:鍵盤、芯片、揚聲器、顯示屏即可滿足設計要求。
2.1系統功能實現總體設計思路此設計原理框圖如圖2-1所示,此電路包括以下四個部分:單片機,鍵盤,鬧鈴電路及顯示電路。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps42C7.tmp.pngfile:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps42C8.tmp.png
圖2-1 設計原理框圖
詳細元器件列表下表所示:
詳細元器件列表:
AT89c51 1片
74SED八位共陽極數碼管 1片
NPN三極管 1個
104p電容 6個
30p電容 2個
10K電阻 6個
560歐姆電阻 8個
200歐姆電阻 1個
100歐姆電阻 6個
2.2各部分功能實現(1) 單片機發送的信號通過程序控制最終在數碼管上顯示出來。
(2) 單片機通過輸出各種電脈沖信號來驅動控制各部分正常工作。
(3) 為使時鐘走時與標準時間一致,校時電路是必不可少的,鍵盤用來校正數碼管上顯示的時間。
(4) 單片機通過控制鬧鈴電路來完成 定時鬧鐘的功能。
2.3系統工作原理設計的電路主要由四模塊構成:單片機控制電路,顯示電路、鬧鈴電路以及校正電路。
詳細電路功能圖下圖所示:
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml\wps42C9.tmp.png
詳細電路功能圖
本設計采用C語言程序設計,使單片機控制數碼管顯示時、分、秒,當秒計數計滿60時就向分進位,分計數器計滿60后向時計數器進位,小時計數器按“23翻0”規律計數。時、分、秒的計數結果經過數據處理可直接送顯示器顯示。當計時發生誤差的時候可以用校時電路進行校正。設計采用的是時、分、秒顯示,單片機對數據進行處理同時在數碼管上顯示。
2.4電路功能使用說明(1) 各個控制鍵的功能:可對時間進行校準調節(只能加1);按下設置鍵數字時鐘進入鬧鐘設置狀態,設置鬧鐘的時間;時加1、分加1鍵是在校準時間時或設置鬧鐘時間對小時數或分鐘數調節而設置的;按下秒切換鍵就可以進入秒表模式,同時秒表也開始計時,按下秒表暫停、復位鍵就暫停、歸零,如果要重新對秒計時則可以按秒表開始、復位;清零鍵可以對鬧鐘清零。
(2) AT89C51單片機,通過編寫程序對數碼顯示進行控制。
(3) 八個7段數碼管顯示時鐘和秒表信號。
第三章軟件總體設計方案控制電路的C語言源程序根據流程圖,經過認真分析得出控制電路的源程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define delay_time 3/*宏定義*/
uchar k,dat[]={0,0,0,0,0,0,0,0};
uint tcount,t,u;
uchar dat1[]={0,0,0,0,0,0,2,1};
uchar dat2[]={0,0,0,0,0,0,0,0};
uchar alarms[]={0,0,0,0,0,0,0,0};
uchar dis_bit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
unsigned char code SEG7[11]={0xC0,/*0*/ 0xF9,/*1*/ 0xA4,/*2*/ 0xB0,/*3*/ 0x99,/*4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/ 0xBF,/*-*/
};/*數字顯示數組*/
sbit miaobiao1=P1^0;
sbit tminute=P1^1;
sbit thour=P1^2;
sbit miaobiao2=P1^3;
sbit alarm=P1^4;
sbit P0_0=P0^0;
sbit P1_5=P1^5;
sbit P1_6=P1^6;
sbit P1_7=P1^7;/*端口定義*/
uchar ms=0;
uchar flag=0;
uchar sec=0;
uchar minit=0;
struct time{uchar second;uchar minute;uchar hour;}time1;
uchar n,i;
void delay(n)
{while(n--)
{
for(i=120;i>0;i--);
}
}
/*延時子程序*/
void modify(void)
{
EA=0;
if(thour==0)
{
if(flag==0)
{
dat1[6]++;delay(280);
if(dat1[6]>9)
{
dat1[6]=0;
dat1[7]++;
}
else if((dat1[7]>1)&&(dat1[6]>3))
{dat1[7]=0; dat1[6]=0; }
}
if(flag==1)
{
alarms[6]++;delay(300);
if(alarms[6]>9)
{
alarms[6]=0;alarms[7]++;
if(alarms[7]>2)
{
alarms[7]=0;
}
}
dat[6]=alarms[6];
dat[7]=alarms[7];
}
}
if(tminute==0)
{
if(flag==0)
{
dat1[3]++;delay(280);
if(dat[3]>=9)
{
dat1[4]++;dat1[3]=0;
if(dat1[4]>5)
{
dat1[4]=0;
}
}
}
if(flag==1)
{
alarms[3]++; delay(300);
if(alarms[3]>9)
{
alarms[4]++;alarms[3]=0;
if(alarms[4]>5)
{
alarms[4]=0;
}
}
dat[3]=alarms[3];
dat[4]=alarms[4];
}
}
if(miaobiao1==0)
{TR0=0;ET0=0;TR1=1;ET1=1;
}
if(miaobiao2==0)
{
TR0=1;ET0=1;TR1=0;ET1=0;
dat2[0]=0;
dat2[1]=0;
dat2[3]=0;
dat2[4]=0;
dat2[6]=0;
dat2[7]=0;
ms=0;
sec=0;
minit=0;
}
if(P1_5==0)
{
TR0=0;ET0=0;TR1=0;ET1=0;
}
if(alarm==0)
{
TR0=0;ET0=0;TR1=0;ET1=0;flag=1;
dat[0]=0;
dat[1]=0;
dat[2]=10;
dat[3]=0;
dat[4]=0;
dat[5]=10;
dat[6]=0;
dat[7]=0;
}
EA=1;
}/*按鍵掃描*/
void init(void)
{
TMOD = 0x11;
TH0 = 0xDB;
TL0 =0xFF;
TH1=0xDB;
TL1=0xFF;
ET0 = 1; //10ms
ET1=1;
// TR1=1;
TR0=1;
tcount=0;
ms=0;
sec=0;
minit=0;
EA = 1;
}/*初始化*/
void test(void){
for(k=0;k<8;k++)
{
P3=dis_bit[k];
P2=SEG7[dat[k]]; delay(1);
P3=0X00;
}
}/*數字顯示*/
void main()
{init();
delay(10);
while(1)
{
modify();
test();
}
}/*主函數*/
Void diplay() interrupt 1
{
ET0=0;
TR0=0;
TH0 = 0xDB;
TL0 = 0xff;
TR0=1;
tcount++;
if(tcount==100)
{
time1.second++;
tcount=0;
dat1[0]=(time1.second)%10;
dat1[1]=(time1.second)/10;
}
if(time1.second==60)
{ dat1[0]=0; dat1[1]=0;
time1.second=0;
time1.minute++;
dat1[3]=(time1.minute)%10;
dat1[4]=(time1.minute)/10;
}
if(time1.minute==60)
{
time1.minute=0;
time1.hour++;
dat1[6]=time1.hour%10;
dat1[7]=time1.hour/10;
}
if(time1.hour>23)
{
time1.hour=0;
}
dat[5]=10;
dat[2]=10;
dat[0]=dat1[0];
dat[1]=dat1[1];
dat[3]=dat1[3];
dat[4]=dat1[4];
dat[6]=dat1[6];
dat[7]=dat1[7];
flag=0;
P0=0x01;
if((alarms[7]==dat1[7])&&(alarms[6]==dat1[6])&&(alarms[4]==dat1[4])&&(alarms[3]==dat1[3])&&(dat1[1]<1))
{
P0=0x00;
}
ET0=1;
}
void time_2(void)interrupt 3
{
EA=0;
TR0=0;
TH1=0xDB;
TL1=0xFF;
TR1=1;
ms++;
dat2[0]=ms%10;
dat2[1]=ms/10;
if(ms>=100)
{
ms=0;
sec++;
dat2[3]=sec%10;
dat2[4]=sec/10;
if(sec>=60)
{
sec=0;
minit++;
dat2[6]=minit%10;
dat2[7]=minit/10;
}
}
dat[5]=10;
dat[2]=10;
dat[0]=dat2[0];
dat[1]=dat2[1];
dat[3]=dat2[3];
dat[4]=dat2[4];
dat[6]=dat2[6];
dat[7]=dat2[7];
EA=1;
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
一区在线观看
|
久久激情视频
|
欧美一区二区三区在线看
|
精品日韩
|
久久噜噜噜精品国产亚洲综合
|
色噜噜狠狠色综合中国
|
国产精品美女www爽爽爽视频
|
日韩在线一区二区三区
|
亚洲 精品 综合 精品 自拍
|
日韩精品专区在线影院重磅
|
一区二区三区四区av
|
久久久高清
|
日韩精品在线一区
|
99久久婷婷国产综合精品
|
亚洲精品视频一区二区三区
|
亚洲91视频
|
99久久精品国产一区二区三区
|
久久99精品国产
|
日本一二三区在线观看
|
欧美精品在线一区二区三区
|
亚洲高清在线免费观看
|
性色av网站|
欧美中国少妇xxx性高请视频
|
免费在线观看一区二区
|
国产精品亚洲一区二区三区在线
|
欧美国产精品一区二区
|
福利视频一区二区
|
精品欧美久久
|
精品免费|
国产精品久久久久久吹潮
|
国产精品视频一区二区三区四区国
|
色精品视频|
欧美a∨
|
国产欧美日韩精品一区
|
精品国产乱码久久久久久丨区2区
|
成人精品国产免费网站
|
xxx国产精品视频
|
久久久久久国产一区二区三区
|
国产精品精品久久久
|
91影片
|
超碰在线97国产
|