電子信息科學與技術畢業(yè)設計_第1頁
電子信息科學與技術畢業(yè)設計_第2頁
電子信息科學與技術畢業(yè)設計_第3頁
電子信息科學與技術畢業(yè)設計_第4頁
電子信息科學與技術畢業(yè)設計_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于單片機的時鐘電路的設計the design of clock circuit based on mcu 專 業(yè):電子信息科學與技術學 號:04111103姓 名:喬波臻指導教師:孫南?;趩纹瑱C的時鐘電路的設計摘 要:文章主要采用at89c51單片機最小化應用設計,led顯示采用動態(tài)掃描方式實現(xiàn),p0口輸出段碼數(shù)據(jù),p1.0-p1.2口作掃描輸出,p0.1p0.4口接按鈕開關s1,s2,s3,s4,s5,rest 接s6復位按鍵。p0.0控制秒的調整,每按一次加1秒;p0.1控制分的調整,每按一次加1分;p0.2控制時的調整,每按一次加1個小時。為了提供led數(shù)碼管的驅動電流,用74ls5

2、95作電源驅動輸出。實際設計按情況采用11.0592mhz的晶振。電子時鐘電路采用12h記時方式,時間用8位數(shù)碼管顯示。該電路采用at89c51單片機,使用5v電池供電。關鍵詞: 單片機;抖動;數(shù)碼管;中斷;低功耗;時鐘the design of clock circuit based on mcuabstract:this article mainly uses at98c51 monolithic integrated circuit minimum application design, led demonstrated that selects the dynamic scanning

3、 method to realize, the p0 mouth output section code data, the p1.0-p1.2 mouth makes the scan out, the p0.1-p0.4 mouth meets push-button switch s1, s2, s3, s4, s5, rest. p0.0 control of the second adjustment, and each time one second; p0.1 control points of adjustment, each time at 1 pm; p0.2 contro

4、l of the adjustment, and each time one hour.in order to provide the led nixietube the drive current, 9012 makes the power source with the triode to actuate the output. the actual design uses 11.0592mhz according to the situation the crystal oscillator. the electron clock circuit selects the 24h time

5、 method, the time demonstrated with 8 nixietubes. this electric circuit uses at98c51 monolithic integrated circuit, uses the 5v battery power supply.key words: scm; jitter;digital control; interrupt; low power consumption; the clockii目 錄1 引 言12 以at89c51單片機為核心的時鐘電路結構和工作原理22.1 at89c51的結構組成及引腳功能22.1.1

6、at89c51的結構組成22.1.2 at89c51的引腳功能32.2 時鐘電路工作原理及原理圖62.4 時鐘電路的消除震蕩設計92.5 時鐘電路的誤差分析及功耗103 以at89c51單片機為核心的時鐘電路的程序設計123.1主程序設計及系統(tǒng)主流程圖123.2 時鐘電路的時鐘和鬧鈴程序設計及流程圖133.3 時鐘電路的顯示程序設計及流程圖143.4 時鐘電路的鍵盤程序設計及流程圖154 keil 與proteus軟件的聯(lián)調仿真164.1 keil  software及proteus 簡介164.2 時鐘電路的仿真圖如下175 結束語19參考文獻20附 錄21致 謝33 1 引 言單

7、片機模塊中最常見的是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的準確性和直觀性,且無機械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。 數(shù)字鐘是采用數(shù)字電路實現(xiàn)對.時,分,秒.數(shù)字顯示的計時裝置,廣泛用于個人家庭,車站, 碼頭辦公室等公共場所,成為人們日常生活中不可少的必需品,由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應用,使得數(shù)字鐘的精度,遠遠超過老式鐘表, 鐘表的數(shù)字化給人們生產生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸如定時自動報警、按時自動打鈴、時間程序自動控制、定時廣播、自動起閉路燈、定時開關烘箱、通斷動力設備、甚至各

8、種定時電氣的自動啟用等,所有這些,都是以鐘表數(shù)字化為基礎的。因此,研究數(shù)字鐘及擴大其應用,有著非?,F(xiàn)實的意義?,F(xiàn)在流行的串行時鐘電路很多,如ds1302、ds1307、pcf8485等。這些電路的接口簡單、價格低廉、使用方便,被廣泛地采用。本文主要采用at98c51單片機最小化應用設計,led顯示采用動態(tài)掃描方式實現(xiàn),p0口輸出段碼數(shù)據(jù),p1.0-p1.2口作掃描輸出,p0.1p0.4口接按鈕開關s1,s2,s3,s4,s5,rest 接s6復位按鍵。下面我主要從硬件、程序、軟件聯(lián)調3方面來設計。2 以at89c51單片機為核心的時鐘電路結構和工作原理2.1 at89c51的結構組成及引腳功能

9、2.1.1 at89c51的結構組成at89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器(fperomfalsh programmable and erasable read only memory)的低電壓,高性能cmos8位微處理器,俗稱單片機。at89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除1000次。該器件采用atmel高密度非易失存儲器制造技術制造,與工業(yè)標準的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲器組合在單個芯片中,atmel的at89c51是一種高效微控制器。at89c51單片機為很多嵌入式控

10、制系統(tǒng)提供了一種靈活性高且價廉的方案。外形及引腳排列如圖所示。 圖1 89c51管腳圖2.1.2 at89c51的引腳功能· 兼容mcs51指令系統(tǒng)· 32可編程i/o線· 兩個16位可編程定時/計數(shù)器· 全靜態(tài)工作:0-24mhz· 兩個外部中斷源· 數(shù)據(jù)保留時間:10年· 低功耗睡眠功能· 可編程串行通道· 低功耗的閑置和掉電模式· 壽命:1000寫/擦循環(huán)· 三級程序存儲器鎖定· 片內振蕩器和時鐘電路· 128x8bit內部ram· 2.7-6.v的

11、寬工作電壓范圍· 6個中斷源· 4k字節(jié)可編程閃爍存儲器表2.1 89c51功能列表at89c51芯片的管腳說明:1.  vcc:供電電壓。2.  gnd:接地。3.  p0口:p0口為一個8位漏級開路雙向i/o口,每腳可吸收8ttl門電流。當p1口的管腳第一次寫1時,被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時,p0 口作為原碼輸入口,當fiash進行校驗時,p0輸出原碼,此時p0外部必須被拉高。4.  p1口:p1口是一個內部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接

12、收輸出4ttl門電流。p1口管腳寫入1后,被內部上拉為高,可用作輸入,p1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在flash編程和校驗時,p1口作為第八位地址接收。 5.   p2口:p2口為一個內部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個ttl門電流,當p2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,p2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。p2口當用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,p2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優(yōu)勢,當對外部八位地址數(shù)據(jù)存儲器進行讀

13、寫時,p2口輸出其特殊功能寄存器的內容。p2口在flash編程和校驗時接收高八位地址信號和控制信號。6.   p3口:p3口管腳是8個帶內部上拉電阻的雙向i/o口,可接收輸出4個ttl門電流。當p3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。p3引腳兼用功能p3.0串行通訊輸入(rxd)p3.1串行通訊輸出(txd)p3.2外部中斷0( int0)p3.3外部中斷1(int1)p3.4定時器0輸入(t0)p3.5定時器1輸入(t1)p3.6外部數(shù)據(jù)存儲器寫選通wrp3.7外部數(shù)據(jù)存儲器寫選通rdp3

14、口同時為閃爍編程和編程校驗接收一些控制信號。表2.2 p3功能列表lebiao7.rst:復位輸入。當振蕩器復位器件時,要保持rst腳兩個機器周期的高電平時間。圖3 復位電路 8. ale/prog:當訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當用作外部數(shù)據(jù)存儲器時,將跳過一個ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時, ale只有在執(zhí)行movx,movc指令是ale才

15、起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。9.  /psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen信號將不出現(xiàn)。10.  /ea/vpp:當/ea保持低電平時,則在此期間外部程序存儲器(0000h-ffffh),不管是否有內部程序存儲器。注意加密方式1時,/ea將內部鎖定為reset;當/ea端保持高電平時,此間內部程序存儲器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。11.  xtal1:反向振蕩放大器的輸

16、入及內部時鐘工作電路的輸入。12.  xtal2:來自反向振蕩器的輸出。圖4 時鐘源驅動電路振蕩器特性:    xtal1和xtal2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時鐘源驅動器件,xtal2應不接。有余輸入至內部時鐘信號要通過一個二分頻觸發(fā)器,因此對外部時鐘信號的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。2.2 時鐘電路工作原理及原理圖電路特點 :這里介紹的電子鐘,電路可稱得上極簡,它僅使用單片很少引腳完成電子鐘的全部功能。一片40引腳的單片機at89c51為電子鐘主體,其

17、顯示筆畫數(shù)據(jù)從p0口分時輸出,p1口則輸出對應的3位選通信號.由于led數(shù)碼管點亮時耗電較大,故使用89c51單片機來完成 。本電子鐘程序設計時只使用了一個定時數(shù)t0,其它的中斷全部關斷,定時器工作在兩個8位自動加載初始值狀態(tài).這是保證走時精確穩(wěn)定的重要方法.很多書本教材上都讓大家用定時器中斷來執(zhí)行動態(tài)顯示程序和按鍵掃描程序,我自己認為這是一種很不好的方法(但是這種方法是初學者必須掌握的基礎),除了浪費硬件資源以外,還會增加程序復雜性,還會影響其它程序運行。系統(tǒng)框圖:圖5 系統(tǒng)框圖校時定時電路整點報時顯示電路實時控制單片機 一、 電子時鐘的技術指標顯示范圍:時間采用12/24小時制顯示格式:時

18、間按時分秒排列,顯示如00點01分22秒顯示為000122顯示位數(shù):8位8段led數(shù)碼管作正常、調時和節(jié)電顯示時鐘誤差:24小時誤差35秒二、 硬件電路的選擇1、單片機的選擇   選用at89c51單片機,配備11.0592mhz晶振,復位電路采用上電復位。2、顯示電路選擇  采用軟件譯碼動態(tài)顯示。3、電源選擇  采用直流5v電源供電。電路圖如下:圖6 時鐘電路原理圖2.3時鐘電路的顯示單元動態(tài)顯示技術:在多位led顯示時,由一個8位口控制,由另一個端口進行顯示位的控制。但是,由于段選是公用的,要讓各位數(shù)碼管顯示不同的字符,就必須采用掃描方式,即動態(tài)掃描顯示方式。

19、首先從段選線上送出字段碼,再控制位選線,字符就顯示在指定位置上,持續(xù)15ms時間,然后關閉所有顯示;接下來又送出新的字段碼,按照上述過程又顯示在新的位置上,直到每一位數(shù)碼管都掃描完為止,即為一個掃描周期。由于人的視覺停留效應,因此當掃描周期小到一定程度時,人就感覺不出字符的移動或閃爍,覺得每位數(shù)碼管到一直在顯示,達到一種穩(wěn)定的視覺效果。 動態(tài)掃描顯示的掃描方式有程序控制和定時中斷掃描兩種。程序控制掃描方式要占用許多cpu時間,在計算機的任務較重時,難以得到好的效果,所以在實際中常采用定時中斷掃描方式,這種方式是每隔一定時間(如1ms)顯示一位數(shù)碼管,假設有8位數(shù)碼管,顯示掃描周期為2ms,顯示

20、效果十分良好。本次設計采用這種方法。圖7 顯示電路主要采用595來驅動,74hc595的管教如下:圖8 595管腳圖 【1】74595的數(shù)據(jù)端:1. q0q7: 八位并行輸出端,可以直接控制數(shù)碼管的8個段。2. q7': 級聯(lián)輸出端。我將它接下一個595的si端。3. si: 串行數(shù)據(jù)輸入端?!?】74595的控制端說明:1. /sclr(10腳): 低點平時將移位寄存器的數(shù)據(jù)清零。通常我將它接vcc。2. sck(11腳):上升沿時數(shù)據(jù)寄存器的數(shù)據(jù)移位。qa->qb->qc->.->qh;下降沿移位寄存器數(shù)據(jù)不變。(脈沖寬度:5v時,大于幾十納秒就行了。我通常

21、都選微秒級)3. rck(12腳):上升沿時移位寄存器的數(shù)據(jù)進入數(shù)據(jù)存儲寄存器,下降沿時存儲寄存器數(shù)據(jù)不變。通常我將rck置為低電平,當移位結束后,在rck端產生一個正脈沖(5v時,大于幾十納秒就行了。我通常都選微秒級),更新顯示數(shù)據(jù)。4. /g(13腳): 高電平時禁止輸出(高阻態(tài))。如果單片機的引腳不緊張,用一個引腳控制它,可以方便地產生閃爍和熄滅效果。比通過數(shù)據(jù)端移位控制要省時省力。2.4 時鐘電路的消除震蕩設計 在單片機應用系統(tǒng)中,消除抖動有硬件和軟件兩種方法。硬件去抖動方法主要有利用r-s觸發(fā)器和濾波器電路,,由于按鍵消除抖動時,按下與釋放是通過機械觸點的閉合與斷開來實現(xiàn)的,因機械觸

22、點的彈性作用,在閉合與斷開的瞬間均有一個抖動過程,所以鍵閉合與斷開會產生如附圖所示的電壓波形,抖動時間一般在510ms。這個抖動對判斷鍵是否按下或釋放有較大影響,因此必需消除鍵的抖動,只有這樣,才能可靠地判斷鍵的狀態(tài)。軟件去抖動通常是程序檢測到鍵被按下時,延時10ms后再檢測鍵是否仍然閉合,若是則確認是一次真正的閉合,否則就忽略次此按鍵。 本次設計時采用的軟件消抖程序。2.5 時鐘電路的誤差分析及功耗【1】主要誤差來源及補償 :1、硬件電路在線路手工焊接時可能存在虛焊,或者有接觸不良的情況,以及外界環(huán)境的影響,通過使用印刷電路板機器焊接,可以減少硬件誤差影響。 2、采用11.0592mhz晶振

23、計算定時計數(shù)初值時存在小數(shù)舍入誤差公式: ,定時器/計數(shù)器采用工作方式1,定時器t0、t1溢出周期為50ms,計算得到n=19456=4c00h,th0=4ch,tl0=00h.若仍采用理論上的12mhz計算初值,則有:n1=3cb0h,那么用11.0592mhz,n1不變,益出周期約為54.25ms,每次溢出比實際的要慢4.3ms,那么一秒鐘要慢85ms,從而影響24h比實際的要慢122min。修正后誤差處理通過軟件實現(xiàn),最終的時鐘誤差測得值3-5s。功耗問題:【2】許多實時時鐘都采用電池供電,典型應用是利用一塊小的鋰電池在主電源掉電時直接驅動振蕩器和時鐘電路。為有效延長電池的使用壽命,振蕩

24、器必需消耗盡可能少的能量。為了保證這一點,應謹慎考慮振蕩器的設計。典型的高頻振蕩電路esr較低,但設計中一般會留出5倍、甚至10倍的esr裕量,而低頻晶振則具有較高的esr。對于一個rtc振蕩器,或許留出2倍的負阻裕量即可,振蕩器的負阻裕量越小、耗電越低,但是,這種電路對寄生參數(shù)、噪聲非常敏感。此外,振蕩電路的負載電容對功耗也有一定影響,雖然125pf內部負載的rtc的耗電要比6pf負載的rtc大,但是,它通常具有更高的抗干擾能力。在有些應用中(如vcr),時鐘和日期信息在系統(tǒng)掉電時將會丟失,而在大多數(shù)應用中要求系統(tǒng)主電源斷電時仍保持時鐘和日期有效。為保持時鐘振蕩器持續(xù)運轉,可采用主輔電池結構

25、或大電容配合主電源為時鐘電路供電,這樣,rtc芯片內部還必須提供兩組電源的切換電路。如果用電池(如li電池)作為備份電源,rtc設計還應該注重低功耗指標,以使其在電池供電時具有盡可能低的功耗。電源切換控制電路通常由主電源供電,需要時可切換到電池供電,并將rtc置為低功耗模式,電池供電時,可禁止微處理器與rtc之間的通信(通常被稱為寫保護),以使電池電流降至最小,同時避免數(shù)據(jù) 被破壞。在采用電池為電路系統(tǒng)供電時,時鐘電路耗電最大的部件是振蕩器,對于那些嵌入了晶振和電池的時鐘模塊(如ds12c887),由于振蕩器在出廠時處于禁止狀態(tài),因此電池的損耗電流主要是電池的自放電,室溫下,電池自放電每年的消

26、耗能量大約占電池容量的05。有些時間保持nvram模塊利用時鐘來控制ic和sram,出廠時,振蕩器處于禁止狀態(tài)、sram與電池斷開,只有模塊在主電源供電并第一次與時鐘電路斷開時,電池才與sram接通。這一功能常被稱作電池保鮮。dallas semiconductor的絕大多數(shù)rtc都提供有一個電池輸入引腳和一個內部反向充電保護電路。由于li電池的額定溫度是4085,因此,使用時應確保環(huán)境溫度不要超出85。圖9 晶振與溫度關系3 以at89c51單片機為核心的時鐘電路的程序設計3.1主程序設計及系統(tǒng)主流程圖初始化led主程序中斷初始化時間顯示在led上打開定時器主程序  :設計中采用定

27、時器t0中斷完成,其余狀態(tài)循環(huán)調用顯示子程序。系統(tǒng)主流程圖如圖所示: 圖10 主程序流程圖3.2 時鐘電路的時鐘和鬧鈴程序設計及流程圖 時鐘采用11.0256mhz的脈沖控制, 鬧鈴采用整點報時功能。開定時器開始初始化時鐘顯示1s定時器計數(shù)判斷是否達到整點報時圖11 時鐘鬧鈴程序流程圖3.3 時鐘電路的顯示程序設計及流程圖顯示子程序:數(shù)碼管顯示的數(shù)據(jù)存放在內存單元70h-75h中,其中70h71h存放秒數(shù)據(jù),72h73h存放分數(shù)據(jù),74h75h存放時數(shù)據(jù),每一地址單元內均為十進制bcd碼。由于采用軟件動態(tài)掃描實現(xiàn)數(shù)據(jù)顯示功能,顯示用十進制bcd碼數(shù)據(jù)的對應段碼存放在rom表中。顯示時,先取出7

28、0h75h某一地址中的數(shù)據(jù),然后查的對應的顯示段碼從p1口輸出。p3口將對應的數(shù)碼管選中,就是顯示該地址單元的數(shù)據(jù)值,每個led數(shù)碼管亮1ms時間再逐位循環(huán)。給595傳送位碼進入中斷讀取存儲區(qū)內數(shù)據(jù)判斷8位數(shù)據(jù)是否傳送完畢給595傳送斷碼開顯示返回中斷圖12 顯示程序流程圖3.4 時鐘電路的鍵盤程序設計及流程圖p0口輸出段碼數(shù)據(jù),p1.0-p1.2口作掃描輸出,p0.1p0.4口接按鈕開關s1,s2,s3,s4,s5,rest 接s6復位按鍵。p0.0控制秒的調整,每按一次加1秒;p0.1控制分的調整,每按一次加1分;p0.2控制時的調整,每按一次加1個小時。判斷鍵盤序號進入中斷掃描鍵盤調節(jié)分

29、鐘執(zhí)行相關按鍵程序調節(jié)小時返回中斷12/24小時切換調節(jié)星期輔助功能標識圖13 鍵盤程序流程圖4 keil 與proteus軟件的聯(lián)調仿真4.1 keil  software及proteus 簡介在這里我們對keil和proteus簡單介紹下:1 keil c51是美國keil software公司出品的51系列兼容單片機c語言軟件開發(fā)系統(tǒng),與匯編相比,c語言在功能上、結構性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學易用。用過匯編語言后再使用c來開發(fā),體會更加深刻。 keil c51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調試工具,全windows界面。另外重要的一點,只要看一下編譯

30、后生成的匯編代碼,就能體會到keil c51生成的目標代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。keil c51單片機軟件開發(fā)系統(tǒng)的整體結構 :c51工具包的整體結構中uvision與ishell分別是c51 for windows和for dos的集成開發(fā)環(huán)境(ide),可以完成編輯、編譯、連接、調試、仿真等整個開發(fā)流程。開發(fā)人員可用ide本身或其它編輯器編輯c或匯編源文件。然后分別由c51及a51編譯器編譯生成目標文件(.obj)。目標文件可由lib51創(chuàng)建生成庫文件,也可以與庫文件一起經l51連接定位生成絕對目標文件(.abs)。a

31、bs文件由oh51轉換成標準的hex文件,以供調試器dscope51或tscope51使用進行源代碼級調試,也可由仿真器使用直接對目標板進行調試,也可以直接寫入程序存貯器如eprom中。2 proteus軟件是來自英國labcenter electronics公司的eda工具軟件。proteus軟件有十多年的歷史,在全球廣泛使用,除了其具有和其它eda工具一樣的原理布圖、pcb自動或人工布線及電路仿真的功能外,其革命性的功能是,他的電路仿真是互動的,針對微處理器的應用,還可以直接在基于原理圖的虛擬原型上編程,并實現(xiàn)軟件源碼級的實時調試,如有顯示及輸出,還能看到運行后輸入輸出的效果,配合系統(tǒng)配置

32、的虛擬儀器如示波器、邏輯分析儀等,您不需要別的,proteus為您建立了完備的電子設計開發(fā)環(huán)境!尤其重要的是proteus lite可以完全免費,也可以花微不足道的費用注冊達到更好的效果;功能最強的proteus專業(yè)版也非常便宜,人人用得起,對高校還有更多優(yōu)惠。 proteus組合了高級原理布圖、混合模式spice仿真,pcb設計以及自動布線來實現(xiàn)一個完整的電子設計系統(tǒng)。此系統(tǒng)受益于15年來的持續(xù)開發(fā),被電子世界在其對pcb設計系統(tǒng)的比較文章中評為最好產品“the route to pcb cad”。proteus 產品系列也包含了我們革命性的vsm技術,用戶可以對基于微控制器的設計連同所有的

33、周圍電子器件一起仿真。用戶甚至可以實時采用諸如led/lcd、鍵盤、rs232終端等動態(tài)外設模型來對設計進行交互仿真。 其功能模塊:個易用而又功能強大的isis原理布圖工具;prospice混合模型spice仿真; ares pcb設計。prospice 仿真器的一個擴展proteus vsm:便于包括所有相關的器件的基于微處理器設計的協(xié)同仿真。此外,還可以結合微控制器軟件使用動態(tài)的鍵盤,開關,按鈕,leds甚至lcd顯示cpu模型。4.2 時鐘電路的仿真圖如下用proteus仿真的電路圖14 時鐘仿真電路在keil編寫的時鐘程序:圖15 時鐘仿真程序5 結束語本次設計采用單片機作為核心控制器

34、,實現(xiàn)具有定時、校時功能的數(shù)字鐘。隨著人們生活水平的提高,人們對數(shù)字鐘的要求越來越高,有單一的計時功能到發(fā)展到現(xiàn)在有溫度檢測、濕度檢測等多功能數(shù)字鐘。這些多功能數(shù)字鐘多用在工業(yè)里作為檢測元件,因此需要能夠在惡劣的環(huán)境下工作。利用單片機作為數(shù)字鐘的控制核心可以做到硬件電路簡單穩(wěn)定,減小電磁干擾和其他環(huán)境干擾,充分發(fā)揮軟件編程的優(yōu)點,減少因元器件精度不夠引起的誤差。設計中了解到數(shù)字鐘的迅猛發(fā)展,它已經普遍應用到人們日常生產和生活之中了。數(shù)字鐘有很強的發(fā)展空間,因此我們有理由相信將來數(shù)字鐘會與我們的生產和生活更加緊密相連。參考文獻1汪德彪.mcs-51單片機原理及接口技術m.北京:電子工業(yè)出版社,2

35、003.8.2丁元杰.單片微機原理及應用m.北京:機械工業(yè)出版社,2005.1.3聶毅.單片機定時器中斷時間誤差的分析及補償j. 微計算機信息,2002.18 (4):3738.4樓然苗,李光飛.51系列單片機設計實例m.北京:航空航天大學出版社,2003.3.5謝自美.電子線路設計、實驗、測試 m.武漢:華中理工大學出版社,2000.6何書森,何華斌.實用數(shù)字電路原理與設計速成m.福州:福建科學技術出版社,2000.6.7白駒衍.單片計算機及應用m.北京:電子工業(yè)出版社, 1999.2.8譚浩強 .c語言程序設計教程m .北京:清化大學出版,2000.1.9周潤景,張麗娜,劉印群.keil

36、與proteus聯(lián)調教程m.北京:機械工業(yè),2007.9.1.10付家才.單片機控制工程實踐技術m. 北京:化學工業(yè)出版社,2004.11孫育才,王榮興等.新型at89s52系列單片機及其應用m. 北京:清華大學出版社,2005.12朱定華.單片機原理及接口技術實驗m.北京:北方交通大學出版社,2002.13胡漢才. 單片機原理及其接口技術(第2版)m. 北京:清華大學出版社,2003.14蔣延彪.單片機原理及應用(mcs-51)m.重慶:重慶大學出版社,2003.15yang. y., yi. j., woo, y.y. optimum design

37、for linearity and efficiency of microwave doherty amplifier using a new load matching technique, microw. j., 2001, 44, (12), pp. 2036.16 r. dye, “visual object-orientated programming,” dr. dobbs macintosh journal j, sept. 1st ( 1991).17intel corporation.mcs-51 microcontroller family uers manualm.199

38、4.附 錄a:以單片機為系統(tǒng)的總體設計方案開始確定任務、功能和技術指標選擇機型,軟硬件功能劃分硬件邏輯框圖設計選擇器件、完成邏輯設計確定算法,程序流程設計軟件結構設計編寫程序程序編寫部分軟件功能調試硬件仿真調試軟件聯(lián)調仿真調試排除硬件錯誤完善軟件功能系統(tǒng)設計完成圖16系統(tǒng)設計總流程圖b: 時鐘電路的時鐘程序void wr_595(unsigned char data num2 ) unsigned char data count1; for(count1=0;count1<=7;count1+) if(num2&0x80)=0x80) /最高位為1,則向sdata_595發(fā)送1

39、sdata_595=1; /發(fā)出數(shù)據(jù)的最高位else sdata_595=0; num2<<=1; /右移位 sclk_595=0; /產生上生沿 _nop_(); _nop_(); sclk_595=1; void out_595(void) rck_595=0; _nop_(); _nop_(); rck_595=1; /*上升沿鎖存數(shù)據(jù)*/ /*void led_init(void) wr_595(0xff); wr_595(0xff); out_595(); */c: 時鐘電路的顯示程序/*-07.6.30共陽數(shù)碼管接法見資料本,暫為整理添加-*/ #include <

40、;reg51.h>#include <intrins.h>/ 數(shù)碼管驅動相關接口 sbit sdata_595 = p10 ; /*串行數(shù)據(jù)輸入*/ sbit sclk_595 = p11; /*移位時鐘脈沖*/ sbit rck_595 = p12; /*輸出鎖存器控制脈沖*/ unsigned char code led_tab9=0xff, /滅燈 0xfd,0xbf,0xfb,0x7f,0xf7,0xef,0xfe,0xdf; /從低到高指示1-8級 /共陰數(shù)碼管段碼表,連線如上所注釋 unsigned char code duan_tab11=0x3f,0x06,0

41、x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00;/0-9/待顯示內容的位碼表 unsigned char code wei_tab8=0x08,0x04,0x02,0x01,0x80,0x40,0x20,0x10; /*- 向74595輸出一字節(jié)數(shù)據(jù)子程序-*/ void wr_595(unsigned char data num2 ) unsigned char data count1; for(count1=0;count1<=7;count1+) if(num2&0x80)=0x80) /最高位為1,則向sdata_595發(fā)送1 sd

42、ata_595=1; /發(fā)出數(shù)據(jù)的最高位 else sdata_595=0; num2<<=1; /右移位 sclk_595=0; /產生上生沿 _nop_(); _nop_(); sclk_595=1; /*- 打開鎖存,更新74595輸出子程序-*/ void out_595(void) rck_595=0; _nop_(); _nop_(); rck_595=1; /*上升沿鎖存數(shù)據(jù)*/ /*void led_init(void) wr_595(0xff); wr_595(0xff); out_595(); */*- 顯示函數(shù) -*/void led_display(unsi

43、gned char data buffer) static unsigned char count=0; wr_595(wei_tabcount); if(count=3|count=5) wr_595(duan_tabbuffercount)&0x7f); else wr_595(duan_tabbuffercount); out_595(); count+; if(count>=8)count=0; d: 時鐘電路的鍵盤程序#include <reg51.h>sbit minute_temper= p00 ; /*串行數(shù)據(jù)輸入*/ sbit hour_temper

44、= p01; /*移位時鐘脈沖*/sbit week_temper= p02; /*輸出鎖存器控制脈沖*/sbit de_flog= p03; sbit key_flog_time12= p04;extern unsigned char week;extern unsigned char hour;extern unsigned char minute;extern bit flog_time12;void scan_key(void) static bit pre_state_key1=1; /按鍵的上一次狀態(tài) static bit last_state_key1=1; /按鍵的當前狀態(tài) s

45、tatic bit pre_state_key2=1; static bit last_state_key2=1; static bit pre_state_key3=1; static bit last_state_key3=1; static bit pre_state_key4=1; static bit last_state_key4=1; pre_state_key1=last_state_key1; /保存上次按鍵狀態(tài) last_state_key1=minute_temper; /讀入當前按鍵狀態(tài) pre_state_key2=last_state_key2; last_stat

46、e_key2=hour_temper; pre_state_key3=last_state_key3; last_state_key3=week_temper; pre_state_key4=last_state_key4; last_state_key4=key_flog_time12; if(pre_state_key1=1&&last_state_key1=0) if(de_flog=0) minute-; if(minute>65)minute=59; else minute+; if(minute>59)minute=0; if(pre_state_key

47、2=1&&last_state_key2=0) if(de_flog=0) hour-; if(hour>65)hour=23; else hour+; if(hour>23)hour=0; if(pre_state_key3=1&&last_state_key3=0) if(de_flog=0) week-; if(week<1)week=7; else week+; if(week>7)week=1; if(pre_state_key4=1&&last_state_key4=0) flog_time12=!flog_time12; e: 時鐘電路的總程序/*/*/*說明*/*電子時鐘 *#include <reg51.h>#include <intrins.h>#include <led.h>#include <key.h>sbit speker=p15;sbit am=p20;sbit pm=p21;unsigned char ledbuffer8;unsigned char week;unsigned char hour;uns

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論