




已閱讀5頁,還剩31頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
桂林電子科技大學課程設計(論文)報告用紙 第36頁/共36頁 課程設計(論文)說明書題 目: 數(shù)字時鐘設計 院 (系): * 專 業(yè): * 學生姓名: * 學 號: * 指導教師: * 職 稱: 副教授 20*年 * 月 * 日摘 要時鐘的工作原理很簡單,由秒,分,時三位構成。進行六十秒進一分,六十分進一小時,二十四小時為一個大的系統(tǒng)工作周期,即為一天。在進位的問題上可考慮對本位采用反饋清零法,秒,分十位周期為六,作為進位周期。主要問題是秒信號的選擇上,采用晶振分頻的方法得到穩(wěn)定高精度的秒脈沖信號,本系統(tǒng)的門電路全部采用低功耗,穩(wěn)定性好的ttl門電路,從而使整個系統(tǒng)的精度得到提高。校時和報時電路分別由stc89c53和ds1302定時正當系統(tǒng)構成,校時電路采用手動脈沖校時法,報時電路的報時信號由分十位進位信號提供。關鍵詞:ttl;stc89c32;ds1302;lcd1602 。abstract:the working principle of the clock is very simple, by seconds, minutes, when the three pose. carried out in a sub-60 seconds, six very into one hour, round-the-clock system for a large duty cycle, which is one day. in the binary may consider the issue of feedback on the use of zero-based method, seconds, 10 cycles at six, as a binary cycle. the main problem in choosing the second signal, using the method of crystal frequency stable high-precision pulse signal, the gate circuit, so that the accuracy of the entire system be improved. time and stc89c53, respectively, and ds1302 from time to time constitutes a legitimate system, school fast circuit law school, the newspaper of the time signals from the circuit 10 minutes into the digital signal to provide.keywords:ttl,stc89c32,ds1302,lcd1602.引言41 設計方案41.1 數(shù)字時鐘設計分析41.2 設計要求52 硬件電路設計52.1 stc單片機主控電路52.1.1 stc89c52rc單片機介紹52.1.2 stc89c5管腳說明62.1. 主系統(tǒng)電路圖92.2 ds1302時鐘源92.2.1 ds1302的結構及工作原理102.2.2 引腳功能及結構102.2.3 ds1302的控制字節(jié)112.2.4 數(shù)據(jù)輸入輸出(i/o)112.2.5 ds1302的寄存器112.2.6 ds1302與cpu的連接122.2.7 ds1302硬件電路122.3 lcd1602顯示電路132.3.1 管腳功能132.3.2 lcd1602的特性132.3.3 指令集132.3.4 lcd1602特性及應用142.3.5 lcd1602操作控制142.3.6 lcd1602電路142.4 蜂鳴器報時電路152.5 按鍵電路153 整體電路圖154 程序設計164.1 程序設計內容164.2 程序流程圖164.3 c語言源程序175 結論17謝 辭18參考文獻19附 錄 一20附 錄 二20引言時鐘,自從它發(fā)明的那天起,就成為人類的朋友,但隨著時間的推移,科學技術的不斷發(fā)展,人們對時間計量的精度要求越來越高,應用越來越廣。怎樣讓時鐘更好的為人民服務,這就要求人們不斷設計出新型時鐘?,F(xiàn)今,高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術,因此走時精度高,穩(wěn)定性好,使用方便,不需要經常調校,數(shù)字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用led顯示器代替顯示器代替指針顯示進而顯示時間,減小了計時誤差,這種表具有時,分,秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。時鐘電路在計算機系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎。在一個單片機應用系統(tǒng)中,時鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標準定時時鐘,即定時時間,它通常有兩種實現(xiàn)方法:一是用軟件實現(xiàn),即用單片機內部的可編程定時/計數(shù)器來實現(xiàn),但誤差很大,主要用在對時間精度要求不高的場合;二是用專門的時鐘芯片實現(xiàn),在對時間精度要求很高的情況下,通常采用這種方法??紤]到精度所需和上電自動同步時間,設計中用到了專門的時鐘芯片ds1302。stc單片機上電后,不停讀取ds1302,獲得時間信息,控制lcd1602顯示出來。時間設置時,當按下確定的時刻,單片機寫ds1302,修改ds1302的當前時間,完成時間設置。1 設計方案1.1 數(shù)字時鐘設計分析采用stc單片機內部定時器定時產生時分秒,程序簡單,電路結構簡單,但是精度太低,同時,精度會受到環(huán)境的影響嚴重。同時,每次開機時間都會復位,就算加上外部存儲器,時時存儲當前時間,開機后讀到的是關機時的時間,因此,不實用,電路也變得復雜了。因此,選擇專門的時鐘芯片更加合理。時間顯示部分用數(shù)碼管顯示,原理簡單,價格低廉,但是pcb布線復雜,同時顯示內容受到很大限制,用lcd1602液晶顯示,可實現(xiàn)顯示的多樣化和人性化。同時,用lcd1602液晶顯示可以提升電路系統(tǒng)的檔次。1.2 設計要求 設計一個數(shù)字時鐘,能顯示時分秒,并且能夠修改設定時間,同時具有整點報時功能。stc單片機做為系統(tǒng)核心模塊,控制lcd1602液晶顯示、讀寫時鐘源芯片、報警電路,并能支持按鍵。lcd1602液晶能夠清晰準確的顯示時間,不能閃爍,亂碼和出現(xiàn)鬼影。ds1302時鐘源產生的時間必須得準確,讀取時鐘信息時,不能出現(xiàn)亂碼,當然也不能出現(xiàn)錯誤。電調后,時鐘源應該能夠保持時間更新,開機后能自動顯示更新的時間,并且掉電保持時間應該盡可能的長久。整點報時要準確,報時時蜂鳴器聲音要足夠響亮,并且能人工終止報時。按鍵要靈敏,按鍵消抖要做得比較好,不能出現(xiàn)連續(xù)按的情況。程序下載要穩(wěn)定,以便調試程序,同時電路布局要合理大方,元件布局要美觀。對于程序,代碼要簡短,但是容易讀懂,最好標寫好注釋,軟件實現(xiàn)的功能要齊全,同時要模塊化,方便調試和移植。2 硬件電路設計本課題主要分個模塊:stc單片機主控電路、ds1302時鐘源、lcd1602時間顯示、蜂鳴器報時電路、按鍵電路以及串口等電路。下面將依次對各個模塊進行說明。2.1 stc單片機主控電路2.1.1 stc89c52rc單片機介紹stc89c52rc單片機是宏晶科技推出的新一代高速/低功耗/超強抗干擾的單片機,指令代碼完全兼容傳統(tǒng)8051單片機,12時鐘/機器周期和6時鐘/機器周期可以任意選擇。主要特征:1. 增強型8051單片機,6時鐘/機器周期和12時鐘/機器周期可以任意選擇,指令代碼完全兼容傳統(tǒng)8051.2. 工作電壓:5.5v3.3v(5v單片機)/3.8v2.0v(3v單片機)3. 工作頻率范圍:040mhz,相當于普通8051的080mhz,實際工作頻率可達48mhz4. 用戶應用程序空間為8k字節(jié)5. 片上集成512字節(jié)ram6. 通用i/o口(32個),復位后為:p1/p2/p3/p4是準雙向口/弱上拉,p0口是漏極開路輸出,作為總線擴展用時,不用加上拉電阻,作為i/o口用時,需加上拉電阻。7. isp(在系統(tǒng)可編程)/iap(在應用可編程),無需專用編程器,無需專用仿真器,可通過串口(rxd/p3.0,txd/p3.1)直接下載用戶程序,數(shù)秒即可完成一片8. 具有eeprom功能9. 具有看門狗功能10. 共3個16位定時器/計數(shù)器。即定時器t0、t1、t211. 外部中斷4路,下降沿中斷或低電平觸發(fā)電路,power down模式可由外部中斷低電平觸發(fā)中斷方式喚醒12. 通用異步串行口(uart),還可用定時器軟件實現(xiàn)多個uart13. 工作溫度范圍:-40+85(工業(yè)級)/075(商業(yè)級)14. pdip封裝2.1.2 stc89c5管腳說明圖1 stc管腳分布圖vcc(40引腳):電源電壓vss(20引腳):接地p0端口(p0.0p0.7,3932引腳):p0口是一個漏極開路的8位雙向i/o口。作為輸出端口,每個引腳能驅動8個ttl負載,對端口p0寫入“1”時,可以作為高阻抗輸入。在訪問外部程序和數(shù)據(jù)存儲器時,p0口也可以提供低8位地址和8位數(shù)據(jù)的復用總線。此時,p0口內部上拉電阻有效。在flash rom編程時,p0端口接收指令字節(jié);而在校驗程序時,則輸出指令字節(jié)。驗證時,要求外接上拉電阻。p1端口(p1.0p1.7,18引腳):p1口是一個帶內部上拉電阻的8位雙向i/o口。p1的輸出緩沖器可驅動(吸收或者輸出電流方式)4個ttl輸入。對端口寫入1時,通過內部的上拉電阻把端口拉到高電位,這是可用作輸入口。p1口作輸入口使用時,因為有內部上拉電阻,那些被外部拉低的引腳會輸出一個電流(iil)。此外,p1.0和p1.1還可以作為定時器/計數(shù)器2的外部技術輸入(p1.0/t2)和定時器/計數(shù)器2的觸發(fā)輸入(p1.1/t2ex),具體參見下表1。表1 p1.0和p1.1引腳復用功能引腳號功能特性p1.0t2(定時器/計數(shù)器2外部計數(shù)輸入),時鐘輸出p1.1t2ex(定時器/計數(shù)器2捕獲/重裝觸發(fā)和方向控制)在對flash rom編程和程序校驗時,p1接收低8位地址。p2端口(p2.0p2.7,2128引腳):p2口是一個帶內部上拉電阻的8位雙向i/o端口。p2的輸出緩沖器可以驅動(吸收或輸出電流方式)4個ttl輸入。對端口寫入1時,通過內部的上拉電阻把端口拉到高電平,這時可用作輸入口。p2作為輸入口使用時,因為有內部的上拉電阻,那些被外部信號拉低的引腳會輸出一個電流(iil)。在訪問外部程序存儲器和16位地址的外部數(shù)據(jù)存儲器(如執(zhí)行“movx dptr”指令)時,p2送出高8位地址。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行“movx r1”指令)時,p2口引腳上的內容(就是專用寄存器(sfr)區(qū)中的p2寄存器的內容),在整個訪問期間不會改變。在對flash rom編程和程序校驗期間,p2也接收高位地址和一些控制信號。p3端口(p3.0p3.7,1017引腳):p3是一個帶內部上拉電阻的8位雙向i/o端口。p3的輸出緩沖器可驅動(吸收或輸出電流方式)4個ttl輸入。對端口寫入1時,通過內部的上拉電阻把端口拉到高電位,這時可用作輸入口。p3做輸入口使用時,因為有內部的上拉電阻,那些被外部信號拉低的引腳會輸入一個電流(iil)。在對flash rom編程或程序校驗時,p3還接收一些控制信號。p3口除作為一般i/o口外,還有其他一些復用功能,如表2所示:表2 p3口引腳復用功能引腳號復用功能p3.0rxd(串行輸入口)p3.1txd(串行輸出口)p3.2(外部中斷0)p3.3(外部中斷1)p3.4t0(定時器0的外部輸入)p3.5t1(定時器1的外部輸入)p3.6(外部數(shù)據(jù)存儲器寫選通)p3.7(外部數(shù)據(jù)存儲器讀選通)rst(9引腳):復位輸入。當輸入連續(xù)兩個機器周期以上高電平時為有效,用來完成單片機單片機的復位初始化操作??撮T狗計時完成后,rst引腳輸出96個晶振周期的高電平。特殊寄存器auxr(地址8eh)上的disrto位可以使此功能無效。disrto默認狀態(tài)下,復位高電平有效。ale/prog(30引腳):地址鎖存控制信號(ale)是訪問外部程序存儲器時,鎖存低8位地址的輸出脈沖。在flash編程時,此引腳(prog)也用作編程輸入脈沖。在一般情況下,ale以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時器或時鐘使用。然而,特別強調,在每次訪問外部數(shù)據(jù)存儲器時,ale脈沖將會跳過。如果需要,通過將地址位8eh的sfr的第0位置“1”,ale操作將無效。這一位置“1”,ale僅在執(zhí)行movx或mov指令時有效。否則,ale將被微弱拉高。這個ale使能標志位(地址位8eh的sfr的第0位)的設置對微控制器處于外部執(zhí)行模式下無效。(29引腳):外部程序存儲器選通信號()是外部程序存儲器選通信號。當at89c51rc從外部程序存儲器執(zhí)行外部代碼時,在每個機器周期被激活兩次,而訪問外部數(shù)據(jù)存儲器時,將不被激活。/vpp(31引腳):訪問外部程序存儲器控制信號。為使能從0000h到ffffh的外部程序存儲器讀取指令,必須接gnd。注意加密方式1時,將內部鎖定位reset。為了執(zhí)行內部程序指令,應該接vcc。在flash編程期間,也接收12伏vpp電壓。xtal1(19引腳):振蕩器反相放大器和內部時鐘發(fā)生電路的輸入端。xtal2(18引腳):振蕩器反相放大器的輸入端。2.1. 主系統(tǒng)電路圖圖2為單片機主系統(tǒng)電路圖,圖中接口j5為串行下載口。cry1為晶體振蕩器,與c6、c7構成單片機的時鐘電路;r2和c3為單片機的上電復位電路;同時除了單片機電源管腳(40腳和20腳)接上電源以外,第31腳也必須接上正電源,否則單片機不能工作。因此,圖2也稱之為單片機最小系統(tǒng),只有滿足圖2電路條件后,單片機才能工作。圖2主系統(tǒng)電路圖2.2 ds1302時鐘源ds1302時鐘芯片是dallas公司推出的具有涓細電流充電能力的低功耗實時時鐘電路、ds1302的結構、工作原理及其在實時顯示時間中的應用。它可以對年、月、日、周、日、時、分、秒進行計時,且具有閏年補償?shù)榷喾N功能。2.2.1 ds1302的結構及工作原理ds1302 是美國dallas公司推出的一種高性能、低功耗、帶ram的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5v5.5v。采用三線接口與cpu進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或ram數(shù)據(jù)。ds1302內部有一個318的用于臨時性存放數(shù)據(jù)的ram寄存器。ds1302是ds1202的升級產品,與ds1202兼容,但增加了主電源/后備電源雙電源引腳, 同時提供了對后備電源進行涓細電流充電的能力。2.2.2 引腳功能及結構 ds1302的引腳排列,其中vcc1為后備電源,vcc2為主電源。在主電源關閉的情況下,也能保持時鐘的連續(xù)運行。ds1302由vcc1或vcc2兩者中的較大者供電。當vcc2大于vcc1+0.2v時,vcc2給ds1302供電。當vcc2小于vcc1時,ds1302由vcc1供電。x1和x2是振蕩源,外接32.768khz晶振。rst是復位/片選線,通過把rst輸入驅動置高電平來啟動所有的數(shù)據(jù)傳送。rst輸入有兩種功能:首先,rst接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,rst提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當rst為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對ds1302進行操作。如果在傳送過程中rst置為低電平,則會終止此次數(shù)據(jù)傳送,i/o引腳變?yōu)楦咦钁B(tài)。上電運行時,在vcc2.0v之前,rst必須保持低電平。只有在sclk為低電平時,才能將rst置為高電平。i/o為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細說明。sclk為時鐘輸入端。圖3為ds1302的引腳功能圖。圖3 ds1302的引腳圖2.2.3 ds1302的控制字節(jié)ds1302 的控制字如圖4所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入ds1302中,位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取ram數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出。圖4 ds1302控制字節(jié)圖2.2.4 數(shù)據(jù)輸入輸出(i/o)在控制指令字輸入后的下一個sclk時鐘的上升沿時,數(shù)據(jù)被寫入ds1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個sclk脈沖的下降沿讀出ds1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。圖5、圖6分別為ds1302的讀寫控制時序圖。圖5 ds1302讀時序圖6 ds1302寫時序2.2.5 ds1302的寄存器ds1302有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數(shù)據(jù)位為bcd碼形式,其日歷、時間寄存器及其控制。此外,ds1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與ram相關的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內容。 ds1302與ram相關的寄存器分為兩類:一類是單個ram單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為c0hfdh,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的ram寄存器,此方式下可一次性讀寫所有的ram的31個字節(jié),命令控制字為feh(寫)、ffh(讀)。2.2.6 ds1302與cpu的連接實際上,在調試程序時可以不加電容器,只加一個32.768khz 的晶振即可。只是選擇晶振時,不同的晶振,誤差也較大。另外,還可以在上面的電路中加入ds18b20,同時顯示實時溫度。只要占用cpu一個口線即可。 lcd還可以換成led,還可以使用北京衛(wèi)信杰科技發(fā)展有限公司生產的10位多功能8段液晶顯示模塊lcm101,內含看門狗(wdt)/時鐘發(fā)生器及兩種頻率的蜂鳴器驅動電路,并有內置顯示ram,可顯示任意字段筆劃,具有34線串行接口,可與任何單片機、ic接口。功耗低,顯示狀態(tài)時電流為2a (典型值),省電模式時小于1a,工作電壓為2.4v3.3v,顯示清晰。2.2.7 ds1302硬件電路圖7為ds1302工作電路圖,cry2為32.768k的晶體振蕩器。國產ds1302的sclk、i/o、rst管腳與單片機i/o相連接時,必須加上上拉電阻才可以,否則數(shù)據(jù)讀取不穩(wěn)定,接法如圖8所示。 圖7ds1302電 圖8ds1302i/o上拉電阻2.3 lcd1602顯示電路lcd1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5x7或者5x11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形。1602lcd是指顯示的內容為16x2,即可以顯示兩行,每行16個字符液晶模塊。2.3.1 管腳功能 標準16教接口,其中: 第1腳:vss為電源地; 第2腳:vcc接5v電源正極;第3腳:v0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高(對比度過高時會 產生“鬼影”,使用時可以通過一個10k的電位器調整對比度)。第4腳:rs為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器;第5腳:rw為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作;第6腳:e(或en)端為使能(enable)端;第714腳:d0d7為8位雙向數(shù)據(jù)端;第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負極。2.3.2 lcd1602的特性+3.3v電壓,對比度可調;內含復位電路;提供各種控制命令,如:清屏、字符閃爍、光標閃爍、顯示移位等多種功能;有80字節(jié)顯示數(shù)據(jù)存儲器ddram;內建有192個5x7點陣的字型的字符發(fā)生器cgrom;8個可由用戶自定義的5x7的字符發(fā)生器cgram。2.3.3 指令集 1602通過d0d7的8位數(shù)據(jù)端傳輸數(shù)據(jù)和指令。顯示模式設置: 0x38 設置162顯示,57點陣,8位數(shù)據(jù)接口; 顯示開關及光標設置:1dcb d顯示(1有效)、c光標顯示(1有效)、b光標閃爍(1有效);0000 01ns n=1(讀或寫一個字符后地址指針加1 &光標加1),n=0(讀或寫一個字符后地址指針減1 &光標減1),s=1 且 n=1 (當寫一個字符后,整屏顯示左移)s=0 當寫一個字符后,整屏顯示不移動;數(shù)據(jù)指針設置:數(shù)據(jù)首地址為80h,所以數(shù)據(jù)地址為80h+地址碼(0-27h,40-67h)。2.3.4 lcd1602特性及應用微功耗、體積小、顯示內容豐富、超薄輕巧,常用在袖珍式儀表和低功耗應用系統(tǒng)中。在日常生活中,我們對液晶顯示器并不陌生,液晶顯示模塊已作為很多電子產品的通過器件,如在計算器、萬用表、電子表及很多家用電子產品例如在電飯煲、電磁爐、功放、攝像機中都可以看到,顯示的主要是數(shù)字、專用符號和圖形。在單片機的人機交流界面中,一般的輸出方式有以下幾種:發(fā)光管、led數(shù)碼管、液晶顯示器。發(fā)光管和led數(shù)碼管比較常用,軟硬件都比較簡單,在前面章節(jié)已經介紹過,在此不作介紹,本章重點介紹字符型液晶顯示器的應用。2.3.5 lcd1602操作控制1602液晶模塊內部的字符發(fā)生存儲器(cgrom)已經存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數(shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“a”的代碼是01000001b(41h),顯示時模塊把地址41h中的點陣字符圖形顯示出來,我們就能看到字母“a”。因為1602識別的是ascii碼,試驗可以用ascii碼直接賦值,在單片機編程中還可以用字符型常量或變量賦值,如a。圖9 1602的16進制ascii碼表地址2.3.6 lcd1602電路圖10是lcd1602模塊的電路圖,j100是接口,lcd數(shù)據(jù)位為p00至p07,控制腳分別為rs、rw、lcden。圖10 lcd1602電路2.4 蜂鳴器報時電路 蜂鳴器報時電路如圖11,由一個8050npn型三極管和一個蜂鳴器組成。三極管放大電流,驅動蜂鳴器。蜂鳴器為有源蜂鳴器,上電后由其內部震蕩器產生一定頻率,發(fā)出聲音。 圖11 蜂鳴器電路 圖12獨立按鍵2.5 按鍵電路電路有四個獨立按鍵:加、減、確定、退出,用來調節(jié)時間和日期,電路如圖12所示。3 整體電路圖整體電路圖如圖13,u1為stc單片機,j5為單片機下載口,s1為按鍵開關。此系統(tǒng)用5v供電,工作電流不超過10ma.圖13數(shù)字時鐘整體電路圖4 程序設計4.1 程序設計內容程序分三個模塊,分別是:主程序模塊、lcd1026液晶顯示模塊、ds1302時鐘源模塊。結束按鍵檢測寫lcd1602讀取ds1302啟動、初始化4.2 程序流程圖寫ds1302修改時間圖14程序流程圖程序開始時,設置液晶lcd1602顯示模式,進入主循環(huán);讀取ds1302,獲得時間,立即由lcd162顯示出來,同時檢測按鍵,完成一個周期。如果有按鍵按下,則進入時間修改程序,若要修改時間,設置好時間后,按確認鍵即可將新的時間寫入ds1302,完成修改時間。4.3 c語言源程序c語言源程序主要分三個模塊,分別如下:1.#include:主函數(shù)模塊; 2.#include lcd1602.h:lcd1602顯示模塊;3.#include ds1302.h:ds1302時鐘源模塊。詳細程序見附錄二5 結論完成了數(shù)字時鐘的設計,學會了使用ds1302芯片,國產的ds1302時鐘芯片不管用單片機的哪個io口,都需要加上上拉電阻,否則讀到的數(shù)據(jù)是一連串的“85”。同時,學會了查找資料,整個過程使用了altium designer軟件進行畫圖和仿真,并用keilc單片機知識進行編程以完成設計要求的功能。我已經盡了自己的最大努力,也從中學到了很多知識,獲益匪淺。謝 辭感謝學院給我們提供這樣的實踐動手機會,并通過課程設計使我們能夠有機會將書本上學到的知識運用到的實際中去。感謝李老師監(jiān)督我及時完成了本次課程設計,在此特別感謝李老師和給予我?guī)椭耐瑢W。參考文獻1 劉文濤. mcs-51單片機培訓教程(c51)版.電子工業(yè)出版社, 2005.8.2 王宜懷.單片機原理及其嵌入式應用教程.北京希望電子出版社, 2002.8.3 邵貝貝.單片機嵌入式應用的在線開發(fā)方法.清華大學出版社, 2006.3.4 白駒珩,雷曉平編.單片計算機及其應用.電子科技大學出版社,1994.55 jean j.labrosse 著. 嵌入式系統(tǒng)構件.袁勤勇等譯.北京:機械工業(yè)出版社, 2002.6 譚浩強.c程序設計程序設計程序設計程序設計,清華大學出版社,2008.8.27 賈振國:ds18b20 及高精度溫度測量的實現(xiàn),電子技術應用,2000.1,p9-p148 偉 正:單線數(shù)字溫度傳感器的原理與應用,電子技術應用,2000.6,p23-p319 周月霞、孫傳友:ds18b20 硬件連接及軟件編程,傳感器世界,2001.8,p13-p2110 8051系列單片機c程序設計完全手冊,人民郵電出版社,1996.3,p25-p29附 錄 一 pcb版圖附 錄 二c語言源程序:頂層模塊:#include /包含單片機寄存器的頭文件#include lcd1602.h#include ds1302.h/*以下是ds1302芯片的操作程序*/unsigned char code digit10=0123456789; /定義字符數(shù)組顯示數(shù)字char second,minute,hour,day,month,year;bit flag=0; /*sbit set =p02;sbit cancel=p01;sbit left =p03;sbit right =p00;*/sbit left =p34;sbit right =p35;sbit set =p36;sbit cancel=p37;sbit sound =p20;/*函數(shù)功能:延時若干微秒入口參數(shù):n*/ void delaynms(unsigned char n) unsigned char i; for(i=0;in;i+) ;void dlay()unsigned char i,j,k;for(i=0;i30;i+)for(j=0;ji;j+)for(k=0;kj;k+);/*函數(shù)功能:顯示秒入口參數(shù):x*/ void displaysecond(unsigned char x) unsigned char i,j; /j,k,l分別儲存溫度的百位、十位和個位i=x/10;/取十位j=x%10;/取個位 /writeaddress(0x49); /寫顯示地址,將在第行第列開始顯示writedata(digiti); /將百位數(shù)字的字符常量寫入lcdwritedata(digitj); /將十位數(shù)字的字符常量寫入lcddelaynms(50); /延時ms給硬件一點反應時間 /*函數(shù)功能:顯示分鐘入口參數(shù):x*/ void displayminute(unsigned char x) unsigned char i,j; /j,k,l分別儲存溫度的百位、十位和個位i=x/10;/取十位j=x%10;/取個位 /writeaddress(0x46); /寫顯示地址,將在第行第列開始顯示writedata(digiti); /將百位數(shù)字的字符常量寫入lcdwritedata(digitj); /將十位數(shù)字的字符常量寫入lcddelaynms(50); /延時ms給硬件一點反應時間 /*函數(shù)功能:顯示小時入口參數(shù):x*/ void displayhour(unsigned char x) unsigned char i,j; /j,k,l分別儲存溫度的百位、十位和個位i=x/10;/取十位j=x%10;/取個位 /writeaddress(0x43); /寫顯示地址,將在第行第列開始顯示writedata(digiti); /將百位數(shù)字的字符常量寫入lcdwritedata(digitj); /將十位數(shù)字的字符常量寫入lcddelaynms(50); /延時ms給硬件一點反應時間 /*函數(shù)功能:顯示日入口參數(shù):x*/ void displayday(unsigned char x) unsigned char i,j; /j,k,l分別儲存溫度的百位、十位和個位i=x/10;/取十位j=x%10;/取個位 /writeaddress(0x0c); /寫顯示地址,將在第行第列開始顯示writedata(digiti); /將百位數(shù)字的字符常量寫入lcdwritedata(digitj); /將十位數(shù)字的字符常量寫入lcddelaynms(50); /延時ms給硬件一點反應時間 /day_temp=j; /*函數(shù)功能:顯示月入口參數(shù):x*/ void displaymonth(unsigned char x) unsigned char i,j; /j,k,l分別儲存溫度的百位、十位和個位i=x/10;/取十位j=x%10;/取個位 /writeaddress(0x09); /寫顯示地址,將在第行第列開始顯示writedata(digiti); /將百位數(shù)字的字符常量寫入lcdwritedata(digitj); /將十位數(shù)字的字符常量寫入lcddelaynms(50); /延時ms給硬件一點反應時間 /*函數(shù)功能:顯示年入口參數(shù):x*/ void displayyear(unsigned char x) unsigned char i,j; /j,k,l分別儲存溫度的百位、十位和個位i=x/10;/取十位j=x%10;/取個位 /writeaddress(0x06); /寫顯示地址,將在第行第列開始顯示writedata(digiti); /將百位數(shù)字的字符常量寫入lcdwritedata(digitj); /將十位數(shù)字的字符常量寫入lcddelaynms(50); /延時ms給硬件一點反應時間 /時間設定/ 時間設定/void timeset()/char s_year,char s_month,char s_day,char s_hour,char s_minute,char s_secondunsigned char h;h=1;while(flag)if(h=1)writeaddress(0x02);print(_);dlay();writeaddress(0x02);displayhour(hour); /顯示小時dlay();if(!left) delaynms(10); while(!left);hour-;if(hour23)hour=0;if(!set) delaynms(10); while(!set);h+;/if(h7)h=1;if(!cancel) delaynms(10); while(!cancel);flag=0;h=7; if(h=2)writeaddress(0x05);print(_);dlay();writeaddress(0x05);displayminute(minute); /顯示分dlay();if(!left) delaynms(10); while(!left);minute-;if(minute59)minute=0;if(!set) delaynms(10); while(!set);h+;/if(h7)h=1;if(!cancel) delaynms(10); while(!cancel);flag=0;h=7; if(h=3)writeaddress(0x08);print(_);dlay();writeaddress(0x08);displaysecond(second); /顯示秒dlay();if(!left) delaynms(10); while(!left);second-;if(second59)second=0;if(!set) del
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房產管理面試題及答案
- 輕工心理測試題及答案
- 廚房消防安全培訓課件
- 支氣管肺炎的護理查房
- 背部燒傷護理查房
- 2025年 黑龍江公務員考試模擬試卷附答案
- 中外教育簡史考析
- 2025年中國女式外套和夾克行業(yè)市場全景分析及前景機遇研判報告
- 中醫(yī)內科眩暈診療要點解析
- 中級社工師綜合能力培訓
- 浙江省普通高中學業(yè)水平合格性考試歷史試題(解析版)
- 創(chuàng)客中國創(chuàng)業(yè)比賽商業(yè)BP項目計劃書模板(標準邏輯直接套用)
- 人教版音樂一年級下冊《第18課 勤快人和懶惰人》教案
- 院感知識手衛(wèi)生知識培訓
- 2025年廣東省深圳市初中地理中考學業(yè)水平考試模擬卷(二)(含答案)
- 休克診療指南規(guī)范2025
- 2024年遼寧省普通高等學校招生錄取普通類本科批(物理學科類)投檔最低分
- 保安培訓考試內容解析及試題及答案
- 電梯維護保養(yǎng)服務投標文件(技術方案)
- 2025年中國PCR儀市場全面調研及行業(yè)投資潛力預測報告
- 2025年醫(yī)院信息科數(shù)據(jù)安全管理計劃
評論
0/150
提交評論