❶ 用單片機做一個電子時鍾
這個很簡單啊,兩種思路:1,用單片機定時器來做,優點是外圍電路簡單,只需要一個單片機最小系統,和一個顯示模塊(1602液晶比較好);缺點是:定時不是很准,跑的時間長了會有誤差,而且主要是程序,要寫很多,不過程序不是很難。2,用時鍾晶元,一般都用ds1302,還需要單片機最小系統和顯示模塊,優點是:定時准確,誤差很小,在有備用電池的情況下,即使單片機掉電,也可以維持很長時間,程序相對簡單。缺點是:外圍電路比前者相對復雜一點。如果想做個實際的東西拿來用,建議使用第二種方法,如果是想鍛煉自己的編程能力的話,選第一種吧。祝成功!
❷ 基於單片機的電子鍾的工作原理
簡單一點就用單片機加數碼管。定時器實現秒,60秒進1分,60分進1小時,24小時歸零,演算法。
❸ 求用單片機c語言做一個電子時鍾,實現調時、顯示、整點報時等功能。
(1)用數字邏輯集成塊實現;
(2)時間以24小時為一個周期,顯示時、分、秒;
(3)計時過程具有報時功能,當時間到達整點前5秒進行蜂鳴報時;
(4)為了保證計時的穩定及准確須由晶體振盪器提供表針時間基準信號。
c51單片機 晶振為11.0592MHz
#include<reg52.h>
#define HOUR1 1
#define HOUR0 0
#define MIN1 2
#define MIN0 8
#define SEC1 2
#define SEC0 0
#define uint unsigned int
#define ulint unsigned long int
#define uchar unsigned char
sbit la=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
int i;
ulint
sharp,second,count=0,sec0=SEC0,sec1=SEC1,min0=MIN0,min1=MIN1,hour0=HOUR0,hour1=HOUR1;//秒計數全局變數
uchar code segment[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};
uchar code time[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
void delay(uint);//程序毫秒延時
void beeper(uchar);//開蜂鳴器毫秒
void init();//初始化函數
void display();//從數碼管上顯示
void counter();//計算進行過程中的時、分、秒值
void scan();//掃描鍵盤
void main()
{
init();
while(1)
{
scan();//掃描鍵盤看是否有鍵按下
for(i=6;i>0;i--)//動態掃描6位數碼管
{
display();//顯示時、分、秒
}
}
}
void init()
{
second=hour1*36000+hour0*3600+min1*600+min0*60+sec1*10+sec0;
TMOD=0x01;
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
EA=1;
ET0=1;
TR0=1;
}
void delay(uint z)//程序毫秒延時
{
uint x=0,y=0;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void timer0() interrupt 1
{
TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
count++;
if(count==20)//判斷是否到1秒
{
counter();//計算進行過程中的時、分、秒值
if(sharp!=hour0) beeper(1000);//判斷小時的值是否改變,變則啟動蜂鳴器
}
}
void beeper(uchar tt)
{
uchar t=tt;
count=0;
beep=0;//開蜂鳴器
delay(t);
beep=1;//關蜂鳴器
}
void display()
{
P0=0xff;//位消影(低電平選擇位)
//送位選信號
wela=1;
P0=segment[i-1];
wela=0;
P0=0x00;//段消影(高電平選擇段)
//送段選信號
la=1;
switch(i)
{
case 6 : P0=time[sec0]; break;
case 5 : P0=time[sec1]; break;
case 4 : P0=time[min0]; break;
case 3 : P0=time[min1]; break;
case 2 : P0=time[hour0]; break;
case 1 : P0=time[hour1]; break;
}
delay(1);
P0=0x00; //配合上面用於消隱
la=0;
}
void counter()
{
second++;
if(second==86400) second=0;
count=0;
sharp=hour0;//設置報時檢測KEY
sec0=second%10;
sec1=(second%60-sec0)/10;
min0=((second%3600-sec1*10-sec0)/60)%10;
min1=((second%3600-sec1*10-sec0)/60-min0)/10;
hour0=(second%36000-min1*600-min0*60-sec1*10-sec0)/3600;
hour1=second/36000;
}
void scan()
{
}
❹ 51單片機設計一個電子鍾,如何實現鬧鍾功能
用C語言If條件語句實現循環,當達到某一條件時給某一I/O埠傳遞信號,該I/O埠接蜂鳴器即可。電子技術中的計數器也可對此有幫助,設置60.60.24的程序,即可實現報時。
❺ 51單片機做數字電子鍾
這么復雜的東西給這么少分 暈死了 你也太小氣了吧,分多的話還可能幫你動動腦
❻ 51單片機做電子時鍾
使用單片機的定時器中斷可實現。例如定時器中斷方式2,8位自動初值重裝,初值設置為0,晶振為11.0592M的情況下,中斷3600次為1秒鍾..多做幾個變數,比如秒、分、小時等...60秒時,分++,秒清零...60分時,小時++,分清零...外加一個顯示或串口功能..就完成了一個簡單的電子時鍾
❼ 單片機電子鍾原理圖,幫我大概解釋一下這個圖的工作原理就可以了,謝謝。帶圖!5分
本電子鍾採用PIC16C55單片機控制,適於溫室的定時恆溫或自來水的定時定壓控制等。PIC16C55單片機工作電壓為2.5~6.25V,功耗低、驅動能力強。本電子鍾可以控制一路負載在24小時內的3次開/關;一個雙限觸發的定時輸出口,既可接傳統的功率保持型繼電器,也可接脈沖繼電器。本機用四位LED數碼管掃描式顯示,還有消隱(省電)工作方式,使用起來非常靈活、方便。
一、 電子鍾工作原理
電子鍾電路見圖1。RB7口是定時指示端,在定時開期間輸出高電平,驅動V1發光,該口也可經緩沖作定時輸出口;RB6是雙限觸發控制的定時輸出口,其工作方式是:在RB7高電平期間,若RB1為高電平,則RB6輸出高電平;若RB0為高電平,RB6輸出低電平;若RB1、RB0同為低電平,RB6保持原態; 同為高電平時,RB6輸出低電平。RB5、RB4用於驅動脈沖繼電器,RB6上升沿觸發RB5輸出高電平開脈沖;在RB6下降沿觸發RB4時,RB4端輸出高電平關脈沖,開/關脈沖的持續時間均為125ms。
圖 1
RB3是消隱控制器,接高電平(即SK1閉合)時,顯示屏及秒閃正常;否則,顯示消隱。顯示消隱時,時鍾及各控制邏輯都正常運行,如忽略RB4至RB7各口的驅動電流,則在3V供電時,整機電流不足20μA,即兩節5號電池可用數月!RB2選擇數碼管極性,RB2為低電平,使用共陰LED;RB2為高電平,則用共陽LED。數碼管的極性是在上電初始化時,根據 RB2口狀態確定的,工作過程中改變RB2的電平則不起作用。
本機設S1~S4四個按鍵,S1是功能選擇鍵,S2是小時增量調整,S3是分鍾增量,S4用於分鍾減量調節,其使用方法為:
上電時,RB5至RB7均為低電平,RB4端送出一個關脈沖,使SK1閉合,整機正常顯示、工作,RC7口送出秒閃脈沖,RC6~RC0送欄位碼。RA3~RA0分別為10時、時、10分、分位的位碼輸出。這時,按一下S2或S3(時增量/ 分增量鍵),可使RB7端置位或復位。
在正常走時期間,秒閃正常;在校對或設置定時時,秒停閃。例如:在正常走時期間,按一下S1鍵,秒閃停止,屏幕顯示J-,表示可以校對時間。這時再按S2~S4中任一鍵,屏幕顯示現在時間,但秒不閃,此刻可按S2~S4校對時鍾。再次按S1,屏幕顯示 1∪,表示可以設定第一次開時間,此時按S2~S4對時間進行查看及設置。繼續按S1,系統顯示1∩,表示可設置第一次關時間……依次進行。設置好系統及 3次開關時間後,整機回到正常顯示狀態,秒閃恢復。
如欲取消某次開/關定時,只需把該次的開與關時間設置成相同值即可。
筆者曾把該時鍾用於定時定壓供水控制系統,RB6端用於驅動繼電器(也可用RB5與RB4兩端驅動脈沖繼電器),RB1端接水壓(水位)的低限輸入,RB0 端接高限輸入,設置好定時,一個簡易的定時定壓自動供水系統即告完成。
二、 編程技巧
PIC16C55單片機程序存儲器只有512位元組,加上採用外接32768Hz晶體振盪方式,時鍾速度較低,因此,統籌好系統的工作時序與人機界面之間的關系是軟體設計成敗的關鍵。本機編程採用如下方案:軟體工作流程見附圖2。
圖 2
PIC16C55單片機的一個機器周期是4個時鍾周期,不難算出,本系統中每秒有8192個機器周期。在編制軟體時,先設定單片機內部定時計數器F1的計數方式為機器周期的64分頻。這樣,每當F1溢出時,系統遞加2秒。平時,系統每128個機器周期內用RC口與RA口驅動掃描一次顯示屏,可保證每秒內掃描64次顯示屏,基本上無閃爍感。而 128個機器周期正是F1的第0位(為便於敘述以下簡記為F1?0)每次下降沿的間隔時間,我們可以編一段程序,當F1?0的下降沿到來時,掃描一次顯示屏,每當F1的低4位為全0時(125ms一次)使系統檢測一次RB口與按鍵狀態,並進行相關處理,部分相關程序如下:
WAIT BTFSC 1,0 ;等待F1?0的下降沿,編程時
GOTO WAIT ;要保證每次下降沿前到此
MOVFW 1
SKPNZ
GOTO CLOCK ;F1=0,滿2秒,轉時鍾處理
ANDLW 0FH ;屏蔽F1高4位
SKPZ
GOTO DISPLAY;F1低4位不為0,轉顯示
MOVLW 0C0H ;滿125mS,使RB口脈沖復位
ANDWF 6,1
MOVLW 0FH ;檢測按鍵
TRIS 7
MOVFW 7
ANDLW 0FH ;保留按鍵數據
SKPZ
GOTO AN;有鍵值,轉按鍵處理
DISPLAY …… ;顯示掃描,定時管理RB口
CLOCK …… ;時鍾,定時處理程序
AN …… ;按鍵管理程序
❽ 嵌入式單片機開發的「時鍾」是如何實現的
一般有兩種方法,通過定時器來作,另一種通過軟體實現,還有一種常見的時間晶元方式
第一種,通過內部時鍾或者外部時鍾,一般使用外部晶振更准確。通過設置定時器,用IO引腳驅動數碼管。
第二種,通過軟體延時來,設計時分秒函數。由於代碼在執行過程中產生延時,會產生比較大的誤差。獲得時鍾顯示在屏幕上就行了。
第三重,通單片機讀取時間晶元的方式,比較多。時間准確,使用方便。網上有很多資料。
❾ 如何做一個單片機電子時鍾
這個很簡單啊,兩種思路:1,用單片機定時器來做,優點是外圍電路簡單,只需要一個單片機最小系統,和一個顯示模塊(1602液晶比較好);缺點是:定時不是很准,跑的時間長了會有誤差,而且主要是程序,要寫很多,不過程序不是很難。2,用時鍾晶元,一般都用DS1302,還需要單片機最小系統和顯示模塊,優點是:定時准確,誤差很小,在有備用電池的情況下,即使單片機掉電,也可以維持很長時間,程序相對簡單。缺點是:外圍電路比前者相對復雜一點。如果想做個實際的東西拿來用,建議使用第二種方法,如果是想鍛煉自己的編程能力的話,選第一種吧。祝成功!
❿ 單片機電子時鍾詳細流程圖怎麼畫
利用實驗平台上的4個LED數碼管,設計帶有鬧鈴功能的數字時鍾。
1、 在4位數碼管上顯示當前時間,計時格式為「時時分分」
2、 由LED閃爍做秒顯示
3、 利用按鍵可以對時間及鬧鍾進行設置,並可顯示鬧鈴時間。當鬧鈴時間到蜂鳴器發出聲響,按停止鍵可使鬧鈴聲停止。