![可調(diào)試數(shù)字電子時鐘電路的設(shè)計(吳丹)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/2/65cb0252-dae5-4be3-863a-f48e81274a16/65cb0252-dae5-4be3-863a-f48e81274a161.gif)
![可調(diào)試數(shù)字電子時鐘電路的設(shè)計(吳丹)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/2/65cb0252-dae5-4be3-863a-f48e81274a16/65cb0252-dae5-4be3-863a-f48e81274a162.gif)
![可調(diào)試數(shù)字電子時鐘電路的設(shè)計(吳丹)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/2/65cb0252-dae5-4be3-863a-f48e81274a16/65cb0252-dae5-4be3-863a-f48e81274a163.gif)
![可調(diào)試數(shù)字電子時鐘電路的設(shè)計(吳丹)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/2/65cb0252-dae5-4be3-863a-f48e81274a16/65cb0252-dae5-4be3-863a-f48e81274a164.gif)
![可調(diào)試數(shù)字電子時鐘電路的設(shè)計(吳丹)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-2/2/65cb0252-dae5-4be3-863a-f48e81274a16/65cb0252-dae5-4be3-863a-f48e81274a165.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、杭州職業(yè)技術(shù)學(xué)院 畢業(yè)設(shè)計(作品) (2010屆)作品名稱 可調(diào)試數(shù)字電子時鐘電路的設(shè)計系 別 信 息 電 子 系 專 業(yè) 應(yīng)用電子技術(shù) 班 級 應(yīng)電0842 學(xué) 號 0803402038姓 名 吳 丹 指導(dǎo)教師 張雪娟 2010年5 月8 日一、作品原理圖 數(shù)字顯示時鐘的主要功能是用24進制顯示一天的時間,在單片機的輔助下能通過對時間進行調(diào)試,在斷電的情況下能準確的計時。電路如圖1所示。在實際電路中主要運用的是ds1320涓流充電時鐘芯片(u2)對時間進行24進制的計時,在通過atmega8l-8pi可編程8位控制器(u1)對在四位數(shù)碼顯示管上顯示出真確的時間,s1 ,s2 ,s3 是分別控
2、制時鐘調(diào)整時間的,在電路中還加入了一個蜂鳴器,當(dāng)s1,s2 ,s3中的任何一個按下的時候就會發(fā)出聲音,這是對以后能更好檢查是哪個按鈕失靈的好方法。u1單片機的10-14的管腳分別于四位數(shù)碼顯示管上的abcdefg、dp相連,2345的管腳分別和四位數(shù)碼顯示管上的1234,這樣的連接就可以在四位數(shù)碼顯示管上真確的顯示數(shù)字0-9十個數(shù)字了,在u2集成塊上我們多加了一個電源vcc,在實際的電路中我們運用了一個3v的紐扣電池,在這種情況下即使單片機沒有通電,集成塊也能精確的記錄沒電時的時間,在下次通電的時候還是和現(xiàn)在的時間是一致的。圖1 電路原理圖二、程序設(shè)計在程序方面我們運用的是c語言的編程,在這個
3、編程里,我們分別實現(xiàn)了對24進制時間的調(diào)整,在正確顯示時鐘的同時還防止了時鐘錯誤顯示的功能。/ Define FPU and device defaults#include "config.h"#include <avr/io.h>#include <avrinterrupt.h>#include <util/delay.h>#include <avr/pgmspace.h>#include "LED47.h"#include "utils.h"#include "keys.h
4、"#include "DS1302.h"#include "buzzer.h"#define UPDATE_INTERVAL 60#define BLINKING_CRYCLE 3#define KEY_REPEAT_LIMIT_SET 1#define KEY_REPEAT_LIMIT_SHIFT 1#define KEY_REPEAT_LIMIT_UP 1#define ALARM_SECONDS 60#define ALARM_STOP 0#define ALARM_IN_ACTION 1int main (void)/byte Init
5、Val7=dec2bcd(00),dec2bcd(00),dec2bcd(17),dec2bcd(8),dec2bcd(3),dec2bcd(6),dec2bcd(9); /初始數(shù) 秒,分,時,日, 月,星期,年 byte ReadVal7=0x00,0x00,0x00,0x00,0x00,0x00,0x00;byte SaveSec, DispDot;word DispNum = 0;byte key;/ 0: initialized status/ 1: pressed in normal mode/ 2: released to enter setting mode/ 3: presse
6、d in setting modebyte SetStatus = 0;boolean AlarmSettingMode = false;byte ShiftStatus = 0, UpStatus = 0;byte TempDEC;byte SetCursor = 3;byte Blinking = 0;byte AlarmHour = 12, AlarmMin = 0;boolean AlarmFlag = false;byte AlarmStatus = ALARM_STOP;init_devices();/v_Set1302(InitVal);InitTube();InitKeys()
7、;/Disp4Digit( 8888, 1000, 3, 0);DispCircle( 2, 60, 1 );DispCircle( 2, 60, 0 );while( true ) / Sound on if alarm reached and alarm is activeif( AlarmFlag )if( (bcd2dec(ReadVal2) = AlarmHour) && (bcd2dec(ReadVal1)=AlarmMin) )/ Stop in odd secondif(bcd2dec(ReadVal0) % 2 )SoundOff();AlarmStatus
8、= ALARM_STOP;/ Sound in even secondelseSoundOn();AlarmStatus = ALARM_IN_ACTION;else if( AlarmStatus = ALARM_IN_ACTION) SoundOff();key = ReadKey();switch( key )/ SET pressedcase K_SET_PIN:/ Toggle pressed state/ Normal mode, pressedif( SetStatus = 0 ) SetStatus = 1;/ Setting mode, pressedelse if( Set
9、Status = 2 )Blinking = 0;SetStatus = 3;break;/ SET pressedcase K_SHIFT_PIN:if( ShiftStatus = 0 ) ShiftStatus = 1;break;case K_UP_PIN:/ Toggle pressed stateif( UpStatus = 0 ) UpStatus = 1;break;default: /- toggle setting and normal status/ Released to enter setting modeif(SetStatus = 1)SetStatus = 2;
10、SetCursor = 3;beep(10);/ Release to enter normal modeelse if(SetStatus = 3)if( !AlarmSettingMode )/ Set second to 0ReadVal0 = 0;/ Adjust the timev_Set1302(ReadVal);beep(20);/ Enter alarm modeAlarmSettingMode = true;/ Set SetStatus to alarm setting modeSetStatus = 1;SetCursor = 1;Blinking = 0;/ Toggl
11、e clock and alarm modeelse/ Enter normal modeAlarmSettingMode = false;SetStatus = 0;SetCursor = 0;Blinking = 0;/ Shift cursorif( ShiftStatus = 1)/ If in setting modeif( SetStatus = 2 ) SetCursor = SetCursor=0 ? 3: SetCursor-1;/ Disp current alarm settingelseDisp4Digit( AlarmHour * 100 + AlarmMin, 10
12、00, 0x03, 0, AlarmFlag);beep(10);/ Set shift key in normal statusShiftStatus = 0;/ Adjust numbersif( UpStatus = 1 )/ If in setting modeif( SetStatus = 2 ) / increse the dightswitch( SetCursor )/ Digit 0case 0:TempDEC = AlarmSettingMode ? AlarmMin : bcd2dec(ReadVal1);TempDEC+;if( TempDEC >= 60 ) T
13、empDEC = 0;if( AlarmSettingMode ) AlarmMin = TempDEC;else ReadVal1 = dec2bcd(TempDEC);break;/ Digit 1case 1:TempDEC = AlarmSettingMode ? AlarmMin : bcd2dec(ReadVal1);TempDEC+=10;if( TempDEC >= 60 ) TempDEC %= 10;if( AlarmSettingMode ) AlarmMin = TempDEC;else ReadVal1 = dec2bcd(TempDEC);break; / D
14、igit 2case 2:TempDEC = AlarmSettingMode ? AlarmHour : bcd2dec(ReadVal2);TempDEC+;if( TempDEC >= 24 ) TempDEC = 0;if( AlarmSettingMode ) AlarmHour = TempDEC;else ReadVal2 = dec2bcd(TempDEC);break;/ Digit 3case 3:TempDEC = AlarmSettingMode ? AlarmHour : bcd2dec(ReadVal2);TempDEC+=10;if( TempDEC >
15、;= 24 ) TempDEC %= 10;if( AlarmSettingMode ) AlarmHour = TempDEC;else ReadVal2 = dec2bcd(TempDEC);break; if( !AlarmSettingMode )/ Set second to 0ReadVal0 = 0;/ Adjust the timev_Set1302(ReadVal);/ Not in setting modeelse/ toggle alarmAlarmFlag = !AlarmFlag;if( AlarmFlag ) beep(20);else SoundOff();/ S
16、et up key to normal statusUpStatus = 0;break;SaveSec = ReadVal0;v_Get1302(ReadVal);if( SaveSec != ReadVal0 ) DispDot = 3;else DispDot = 0;if( !AlarmSettingMode )DispNum = bcd2dec(ReadVal2) * 100 + bcd2dec(ReadVal1);elseDispNum = AlarmHour * 100 + AlarmMin;if( SetStatus = 2 )Blinking+;if( Blinking &g
17、t;= BLINKING_CRYCLE ) Blinking = 0;if( AlarmSettingMode )Disp4Digit( DispNum, UPDATE_INTERVAL, 0x03, (Blinking = BLINKING_CRYCLE-1)?(1<<SetCursor):0, AlarmFlag);else Disp4Digit( DispNum, UPDATE_INTERVAL, DispDot, (Blinking = BLINKING_CRYCLE-1)?(1<<SetCursor):0, AlarmFlag);return(1);void
18、test1()/*DispDigit( 200 );DispHex( 200 );/DispLut( 200 );*/*while( true )for( int i=3; i>=0; i- )for( int j=0; j<10; j+ )DIGIT_PORT = (1<<i) DIGIT_MASK;SEG_PORT = segmentsj;_delay_ms(100);*/*while(1) for( int i=0; i<10000; i+ )Disp4Digit( i, 200, i%4 );*/三、作品展示圖2 作品圖四、作品元器件清單序號元器件符號元器件名稱參數(shù)數(shù)量1Z14位數(shù)碼顯示管SM42056412U1可編程8位控制器ATMEGA8L-8PI13U2涓流充電時鐘芯片DS130214R1,R2,R3電阻5.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車制造行業(yè)顧問工作總結(jié)
- 年產(chǎn)800萬平方米水性超細纖維材料項目可行性研究報告寫作模板-申批備案
- 2025年全球及中國建筑隔熱用氣凝膠行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國有機肥快速測定儀行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國實驗室冷藏柜行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國管路無菌連接器行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球模型實時運維系統(tǒng)行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國2.4GHz 無線通訊芯片行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球金屬加工磨料行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球高效智能無孔包衣機行業(yè)調(diào)研及趨勢分析報告
- 玻璃鋼煙囪方案
- 中國電信應(yīng)急管理整體解決方案
- 中小學(xué)教師師德師風(fēng)法律法規(guī)培訓(xùn)
- 醫(yī)療器械質(zhì)量管理體系文件模板
- 秦始皇嬴政人物生平介紹PPT
- 在馬克思墓前的講話說課稿公開課一等獎市賽課獲獎?wù)n件
- 骨科無痛病房的建立
- 送養(yǎng)收養(yǎng)合同協(xié)議書
- 塑料成型模具設(shè)計(第2版)江昌勇課件0-導(dǎo)論
- 漢語拼音發(fā)音口型及配圖
- 績效考核管理醫(yī)院績效分配方案包括實施細則考核表
評論
0/150
提交評論