用DS1302與1602LCD設(shè)計(jì)的可調(diào)式電子日歷時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第1頁(yè)
用DS1302與1602LCD設(shè)計(jì)的可調(diào)式電子日歷時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第2頁(yè)
用DS1302與1602LCD設(shè)計(jì)的可調(diào)式電子日歷時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第3頁(yè)
用DS1302與1602LCD設(shè)計(jì)的可調(diào)式電子日歷時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第4頁(yè)
用DS1302與1602LCD設(shè)計(jì)的可調(diào)式電子日歷時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、核準(zhǔn)通過(guò),歸檔資料。未經(jīng)允許,請(qǐng)勿外傳!9JWKffwvG#tYM*Jg&6a*CZ7H$dq8KqqfHVZFedswSyXTy#&QA9wkxFyeQ!djs#XuyUP2kNXpRWXmA&UE9aQGn8xp$R# DS1302提供時(shí)鐘;1602液晶作為顯示。第二章、系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)2.1 電路設(shè)計(jì)框圖 SKIPIF 1 0 2.2 系統(tǒng)硬件概述本電路是由STC89C52單片機(jī)為控制核心,具有在線(xiàn)編程功能,低功耗,能在3V超低壓工作;時(shí)鐘電路由DS1302提供,它是一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為

2、2.5V5.5V。采用三線(xiàn)接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31*8的用于臨時(shí)性存放數(shù)據(jù)的RAM存放器。可產(chǎn)生年、月、日、周日、時(shí)、分、秒,具有使用壽命長(zhǎng),精度高和低功耗等特點(diǎn),同時(shí)具有掉電自動(dòng)保存功能,本電路采用DS1302單字節(jié)傳送方式實(shí)現(xiàn)與主控機(jī)之間數(shù)據(jù)的傳送;顯示部份由1602構(gòu)成。2.3 主要單元電路的設(shè)計(jì).1單片機(jī)主控制模塊的設(shè)計(jì)STC89C52單片機(jī)為40引腳雙列直插芯片,有四個(gè)I/O口P0,P1,P2,P3, MCS-51單片機(jī)共有4個(gè)8位的I/O口P0、P1、P2、P3,每一條I/O線(xiàn)都能獨(dú)立地作輸出或輸入

3、。單片機(jī)的最小系統(tǒng)如下列圖所示,18引腳和19引腳接時(shí)鐘電路,XTAL1接外部晶振和微調(diào)電容的一端,在片內(nèi)它是振蕩器倒相放大器的輸入,XTAL2接外部晶振和微調(diào)電容的另一端,在片內(nèi)它是振蕩器倒相放大器的輸出.第9引腳為復(fù)位輸入端,接上電容,電阻及開(kāi)關(guān)后夠上電復(fù)位電路,20引腳為接地端,40引腳為電源端. 如圖-1 圖-1 主控制系統(tǒng)時(shí)鐘電路DS13021. DS1302的性能特性圖-2示出DS1302的引腳排列,其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2

4、給DS1302供電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.KHz晶振。RST是復(fù)位/片選線(xiàn),通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位存放器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過(guò)程中RSTS置為低電平,那么會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電動(dòng)行時(shí),在Vcc大于等于2.5V之前,RST必須保持低電平。中有在SCLK 為低電平時(shí),才能將RST置為高電平,I/O為串

5、行數(shù)據(jù)輸入端雙向。SCLK始終是輸入端。圖-2 DS1302的引腳圖2. DS1302數(shù)據(jù)操作原理(1) 時(shí)鐘芯片DS1302的工作原理: DS1302在每次進(jìn)行讀、寫(xiě)程序前都必須初始化,先把SCLK端置 “0”,接著把RST端置“1”,最后才給予SCLK脈沖;讀/寫(xiě)時(shí)序如下列圖3所示。表1為DS1302的控制字,此控制字的位7必須置1,假設(shè)為0那么不能把對(duì)DS1302進(jìn)行讀寫(xiě)數(shù)據(jù)。對(duì)于位6,假設(shè)對(duì)程序進(jìn)行讀/寫(xiě)時(shí)RAM=1,對(duì)時(shí)間進(jìn)行讀/寫(xiě)時(shí),CK=0。位1至位5指操作單元的地址。位0是讀/寫(xiě)操作位,進(jìn)行讀操作時(shí),該位為1;該位為0那么表示進(jìn)行的是寫(xiě)操作。控制字節(jié)總是從最低位開(kāi)始輸入/輸出的

6、。表6為DS1302的日歷、時(shí)間存放器內(nèi)容:“CH是時(shí)鐘暫停標(biāo)志位,當(dāng)該位為1時(shí),時(shí)鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位為0時(shí),時(shí)鐘開(kāi)始運(yùn)行?!癢P是寫(xiě)保護(hù)位,在任何的對(duì)時(shí)鐘和RAM的寫(xiě)操作之前,WP必須為0。當(dāng)“WP為1時(shí),寫(xiě)保護(hù)位防止對(duì)任一存放器的寫(xiě)操作。(2) DS1302的控制字節(jié)DS1302的控制字如表-1所示??刂谱止?jié)的高有效位位7必須是邏輯1,如果它為0,那么不能把數(shù)據(jù)寫(xiě)入DS1302中,位6如果0,那么表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位位0如為0表示要進(jìn)行寫(xiě)操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開(kāi)始輸出 R

7、AM RD 1 A4 A3 A2 A1 A0 / CK /WR 表-1 DS1302的控制字格式(3) 數(shù)據(jù)輸入輸出I/O在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí),數(shù)據(jù)被寫(xiě)入DS1302,數(shù)據(jù)輸入從低位即位0開(kāi)始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位到高位7。如下列圖-3所示圖-3 DS1302單字節(jié)讀/寫(xiě)時(shí)序圖(4) DS1302的存放器DS1302有12個(gè)存放器,其中有7個(gè)存放器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時(shí)間存放器及其控制字見(jiàn)表-2。表-2 DS1302的日歷、時(shí)間存放器此外,DS1302

8、 還有年份存放器、控制存放器、充電存放器、時(shí)鐘突發(fā)存放器及與RAM相關(guān)的存放器等。時(shí)鐘突發(fā)存放器可一次性順序讀寫(xiě)除充電存放器外的所有存放器內(nèi)容。 DS1302與RAM相關(guān)的存放器分為兩類(lèi):一類(lèi)是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0HFDH,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作;另一類(lèi)為突發(fā)方式下的RAM存放器,此方式下可一次性讀寫(xiě)所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫(xiě))、FFH(讀)。顯示模塊的設(shè)計(jì)1. 1602介紹 字符型液晶顯示模塊是一種專(zhuān)門(mén)用于顯示字母、數(shù)字、符號(hào)等點(diǎn)陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。下面以長(zhǎng)沙

9、太陽(yáng)人電子的1602字符型液晶顯示器為例,介紹其用法。一般1602字符型液晶顯示器實(shí)物如圖- 4:圖- 4 1602字符型液晶顯示器實(shí)物圖2. 1602LCD的根本參數(shù)及引腳功能 1602LCD分為帶背光和不帶背光兩種,基控制器大局部為HD44780,帶背光的比不帶背光的厚,是否帶背光在應(yīng)用中并無(wú)差異,兩者尺寸差異如下列圖-5所示:圖-5 1602LCD尺寸圖1602LCD主要技術(shù)參數(shù):顯示容量:162個(gè)字符工作電流:2.0mA(5.0V)字符尺寸:2.954.35(WH)mm引腳功能說(shuō)明1602LCD采用標(biāo)準(zhǔn)的14腳無(wú)背光或16腳帶背光接口,各引腳接口說(shuō)明如表-3所示:編號(hào)符號(hào)引腳說(shuō)明編號(hào)符

10、號(hào)引腳說(shuō)明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫(xiě)選擇13D6數(shù)據(jù)6E使能信號(hào)14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極表-3:引腳接口說(shuō)明表第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器比照度調(diào)整端,接正電源時(shí)比照度最弱,接地時(shí)比照度最高,比照度過(guò)高時(shí)會(huì)產(chǎn)生“鬼影,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整比照度。第4腳:RS為存放器選擇,高電平時(shí)選擇數(shù)據(jù)存放器、低電平時(shí)選擇指令存放器。第5腳:R/W為讀寫(xiě)信號(hào)線(xiàn),高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫(xiě)操作

11、。當(dāng)RS和R/W共同為低電平時(shí)可以寫(xiě)入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時(shí)可以讀忙信號(hào),當(dāng)RS為高電平R/W為低電平時(shí)可以寫(xiě)入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線(xiàn)。第15腳:背光源正極。第16腳:背光源負(fù)極。3. 1602LCD的指令說(shuō)明及時(shí)序1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表-4所示:序號(hào)指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開(kāi)/關(guān)控制0000001DCB5光標(biāo)或字符移位00000

12、1S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址10寫(xiě)數(shù)到CGRAM或DDRAM10要寫(xiě)的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容表-4:控制命令表1602液晶模塊的讀寫(xiě)操作、屏幕和光標(biāo)的操作都是通過(guò)指令編程來(lái)實(shí)現(xiàn)的。說(shuō)明:1為高電平、0為低電平指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移 屏幕上所有文字是否左移或者右移。高電平表示有效

13、,低電平那么無(wú)效。指令4:顯示開(kāi)關(guān)控制。 D:控制整體顯示的開(kāi)與關(guān),高電平表示開(kāi)顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開(kāi)與關(guān),高電平表示有光標(biāo),低電平表示無(wú)光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線(xiàn),低電平時(shí)為8位總線(xiàn) N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號(hào)和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收

14、命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫(xiě)數(shù)據(jù)。指令11:讀數(shù)據(jù)。與HD44780相兼容的芯片時(shí)序表如下:讀狀態(tài)輸入RS=L,R/W=H,E=H輸出D0D7=狀態(tài)字寫(xiě)指令輸入RS=L,R/W=L,D0D7=指令碼,E=高脈沖輸出無(wú)讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0D7=數(shù)據(jù)寫(xiě)數(shù)據(jù)輸入RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖輸出無(wú)表-5:根本操作時(shí)序表讀寫(xiě)操作時(shí)序如圖- 6和圖-7所示:圖-6 讀操作時(shí)序圖-7 寫(xiě)操作時(shí)序4 .1602LCD的RAM地址映射及標(biāo)準(zhǔn)字庫(kù)表 液晶顯示模塊是一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模 塊的忙標(biāo)志為低電平,表示不忙,否那

15、么此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖-8是1602的內(nèi)部顯示地址。圖-8 1602LCD內(nèi)部顯示地址例如第二行第一個(gè)字符的地址是40H,那么是否直接寫(xiě)入40H就可以將光標(biāo)定位在第二行第一個(gè)字符的位置呢?這樣不行,因?yàn)閷?xiě)入顯示地址時(shí)要求最高位D7恒定為高電平1所以實(shí)際寫(xiě)入的數(shù)據(jù)應(yīng)該是01000000B40H+10000000B(80H)=11000000B(C0H)。在對(duì)液晶模塊的初始化中要先設(shè)置其顯示模式,在液晶模塊顯示字符時(shí)光標(biāo)是自動(dòng)右移的,無(wú)需人工干預(yù)。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態(tài)。1602液晶模塊內(nèi)部的字符發(fā)生存儲(chǔ)器CGROM

16、已經(jīng)存儲(chǔ)了160個(gè)不同的點(diǎn)陣字符圖形,如圖10-58所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫(xiě)、常用的符號(hào)、和日文假名等,每一個(gè)字符都有一個(gè)固定的代碼,比方大寫(xiě)的英文字母“A的代碼是01000001B41H,顯示時(shí)模塊把地址41H中的點(diǎn)陣字符圖形顯示出來(lái),我們就能看到字母“A圖-9字符代碼與圖形對(duì)應(yīng)圖5. 1602LCD的一般初始化復(fù)位過(guò)程延時(shí)15mS寫(xiě)指令38H不檢測(cè)忙信號(hào)延時(shí)5mS寫(xiě)指令38H不檢測(cè)忙信號(hào)延時(shí)5mS寫(xiě)指令38H不檢測(cè)忙信號(hào)以后每次寫(xiě)指令、讀/寫(xiě)數(shù)據(jù)操作均需要檢測(cè)忙信號(hào)寫(xiě)指令38H:顯示模式設(shè)置寫(xiě)指令08H:顯示關(guān)閉寫(xiě)指令01H:顯示清屏寫(xiě)指令06H:顯示光標(biāo)移動(dòng)設(shè)置寫(xiě)指

17、令0CH:顯示開(kāi)及光標(biāo)設(shè)置硬件圖:圖-10 LCD液晶驅(qū)動(dòng)電路第三章、系統(tǒng)的軟件設(shè)計(jì) SKIPIF 1 0 圖-A 主程序流程圖主程序:void main() init(); write_setds(0 x80,0 x50); write_setds(0 x82,0 x59); write_setds(0 x84,0 x10); write_setds(0 x86,0 x17); write_setds(0 x88,0 x03);write_setds(0 x8a,0 x03); write_setds(0 x8c,0 x10);write_setds(0 x90,0 xa4);while(1

18、) keyscan(); display(); 3.2 按鍵掃描子程序調(diào)整時(shí)間用3個(gè)調(diào)整按鈕,1個(gè)作為移位、控制用,另外2個(gè)分別作為加調(diào)整和減調(diào)整用。在調(diào)整時(shí)間過(guò)程中,要調(diào)整的位與其他位應(yīng)該有區(qū)別,所以增加了閃爍功能,即調(diào)整的位一直在閃爍,直到調(diào)整下一位示值給該位。時(shí)間調(diào)整程序流程圖如圖-B所示。判斷是否有鍵按下Y計(jì)時(shí)停止N判斷功能鍵按下次數(shù)對(duì)應(yīng)位閃爍加鍵按下減鍵按下對(duì)應(yīng)位時(shí)間加1對(duì)應(yīng)位時(shí)間減1顯示子程序返回,進(jìn)入主循環(huán)8次7次圖-B 時(shí)間調(diào)整程序流程圖調(diào)時(shí)程序如下: void keyscan( ) uchar aa,bb; if(set=0) delay(3); if(set=0) aa+;

19、 while(!set); if(aa=1) flag=1; write_ds(0 x8e,0 x80); write_com(0 x80+0 x40+10); write_com(0 x0f); write_ds(0 x8e,0 x00); bb=read_ds(0 x81); miao=(bb/16)*10+bb%16; bb=read_ds(0 x83); fen=(bb/16)*10+bb%16; bb=read_ds(0 x85); shi=(bb/16)*10+bb%16; bb=read_ds(0 x87); ri=(bb/16)*10+bb%16; bb=read_ds(0 x

20、89); yue=(bb/16)*10+bb%16; bb=read_ds(0 x8b); zhou=(bb/16)*10+bb%16; bb=read_ds(0 x8d); nian=(bb/16)*10+bb%16; if(aa=2) write_com(0 x80+0 x40+7); if(aa=3) write_com(0 x80+0 x40+4); if(aa=4) write_com(0 x80+0 x0d); if(aa=5) write_com(0 x80+0 x09); if(aa=6) write_com(0 x80+6); if(aa=7) write_com(0 x80

21、+3); if(aa=8) aa=0; write_com(0 x0c); write_ds(0 x8e,0 x80); flag=0; if(aa!=0) if(up=0) delay(5) ; if(up=0) while(!up); if(aa=1) miao+; if(miao=61) miao=1 ; write_sfm(8,miao); write_com(0 x80+0 x4a); if(aa=2) fen+; if(fen=60) fen=0; write_sfm(5,fen); write_com(0 x80+0 x48); if(aa=3) shi+; if(shi=24)

22、 shi=0; write_sfm(2,shi); write_com(0 x80+0 x40+5); if(aa=4) zhou+; if(zhou=8) zhou=1; write_nyr(12,zhou); write_com(0 x80+0 x0d); if(aa=5) ri+; if(ri=32) ri=1; write_nyr(8,ri); write_com(0 x80+0 x0a); if(aa=6) yue+; if(yue=13) yue=1; write_nyr(5,yue); write_com(0 x80+7); if(aa=7) nian+; write_nyr(2

23、,nian); write_com(0 x80+4); if(down=0) delay(5) ; if(down=0) while(!down); if(aa=1) miao-; if(miao=-1) miao=59; write_sfm(8,miao); write_com(0 x80+0 x4a); if(aa=2) fen-; if(fen=-1) fen=59; write_sfm(5,fen); write_com(0 x80+0 x48); if(aa=3) shi-; if(shi=-1) shi=23; write_sfm(2,shi); write_com(0 x80+0

24、 x45); if(aa=4) zhou-; if(zhou=0) zhou=7; write_nyr(12,zhou); write_com(0 x80+0 x0d); if(aa=5) ri-; if(ri=-1) ri=1; write_nyr(8,ri); write_com(0 x80+0 x0a); if(aa=6) yue-; if(yue=0) yue=12; write_nyr(5,yue); write_com(0 x87); if(aa=7) nian-; write_nyr(2,nian); write_com(0 x84); write_ds(0 x80,(miao/

25、10)*16+miao%10); write_ds(0 x82,(fen/10)*16+fen%10); write_ds(0 x84,(shi/10)*16+shi%10); write_ds(0 x86,(ri/10)*16+ri%10); write_ds(0 x88,(yue/10)*16+yue%10);write_ds(0 x8a,(zhou/10)*16+zhou%10); write_ds(0 x8c,(nian/10)*16+nian%10); display(); 液晶初始化子程序 /*初始化*/ void init() /uchar i; lcden=0; write_c

26、om(0 x38); write_com(0 x0c); write_com(0 x06); write_com(0 x01); delay(5);write_com(0 x80+0 x01);write_date(0 x32); delay(2);write_com(0 x80+0 x02);write_date(0 x30); delay(2);write_com(0 x80+0 x05); write_date(0 x2d); delay(2); write_com(0 x80+0 x08); write_date(0 x2d); delay(2); write_com(0 x80+0

27、x46); write_date(0 x3a); delay(2); write_com(0 x80+0 x49); write_date(0 x3a); delay(2); 4.1 測(cè)試儀器第四章、 指標(biāo)測(cè)試序號(hào)名稱(chēng)型號(hào)1PC機(jī)Hp5412雙路直流穩(wěn)壓電源CA17303D3單片機(jī)仿真軟件Proteus、keil C4數(shù)字萬(wàn)用表DT9205B5ISP在線(xiàn)下載線(xiàn)電子萬(wàn)年歷的電路系統(tǒng)較大,對(duì)于焊接方面更是不可輕視,龐大的電路系統(tǒng)中只要出于一處的錯(cuò)誤,那么會(huì)對(duì)檢測(cè)造成很大的不便,而且電路的交線(xiàn)較多,對(duì)于各種鋒利的引腳要注意處理,否那么會(huì)刺被帶有包皮的導(dǎo)線(xiàn),那么會(huì)對(duì)電路造成短路現(xiàn)象。在本成電子萬(wàn)年歷的

28、設(shè)計(jì)調(diào)試中遇到了很多的問(wèn)題?;叵脒@些問(wèn)題只要認(rèn)真多思考都是可以防止的,以下為主要的問(wèn)題:1串口下載芯片232發(fā)燙,單片機(jī)晶振不起振21602在顯示時(shí)間時(shí)出現(xiàn)黑格子,遮擋了時(shí)間3對(duì)萬(wàn)年歷修改時(shí)間或日期時(shí),有時(shí)時(shí)間改變2次。解決:根據(jù)儀器的測(cè)試,發(fā)現(xiàn)電路引腳有接錯(cuò)的現(xiàn)象,重新焊接后晶振,復(fù)位正常,程序能夠下載。1602出現(xiàn)黑格子是由于在其第三引腳沒(méi)加電阻分壓導(dǎo)致,加上5K電阻后正常。按鍵延時(shí)較短致使按鍵次數(shù)多加。電子成年歷是多功能的數(shù)字型,可以看當(dāng)前日期,時(shí)間。電子成年歷功能很多,所以對(duì)于它的程序也較為復(fù)雜,所以在編寫(xiě)程序和調(diào)試時(shí)出現(xiàn)了相對(duì)較多的問(wèn)題。最后經(jīng)過(guò)屢次的模塊子程序的修改,一步一步的完成

29、,最終解決了軟件。在軟件的調(diào)試過(guò)程中主要遇到的問(wèn)題如下:1:1602顯示的時(shí)間不完整,最后在液晶初始化程序中給加上該顯示的數(shù)字即可。2:在調(diào)整時(shí)間時(shí)光標(biāo)閃爍不規(guī)律,原因的由于錯(cuò)用DS1302停振指令所致,最后加上一個(gè)變量進(jìn)行控制即可。 4.測(cè)試結(jié)果分析與結(jié)論4.4.1 測(cè)試結(jié)果分析1在測(cè)試中遇到單片機(jī)晶振不起振、232芯片發(fā)燙,首先使用試測(cè)儀對(duì)電路進(jìn)行測(cè)試,觀(guān)察是否存在漏焊,虛焊,或者元件損壞.21602液晶有黑色背景出現(xiàn),首先使用試測(cè)儀對(duì)電路進(jìn)行測(cè)試,觀(guān)察電路是否存在短路現(xiàn)象。查看燒寫(xiě)的程序是否正確無(wú)誤,對(duì)程序進(jìn)行認(rèn)真修改。 測(cè)試結(jié)論經(jīng)過(guò)屢次的反復(fù)測(cè)試與分析,可以對(duì)電路的原理及功能更加熟悉,

30、同時(shí)提高了設(shè)計(jì)能力與及對(duì)電路的分析能力.同時(shí)在軟件的編程方面得到更到的提高,對(duì)編程能力得到加強(qiáng).同時(shí)對(duì)所學(xué)的知識(shí)得到很大的提高與穩(wěn)固.作品總結(jié)在整個(gè)設(shè)計(jì)過(guò)程中,發(fā)揮團(tuán)隊(duì)精神,分工合作,充分發(fā)揮人的主觀(guān)能動(dòng)性,自主學(xué)習(xí),學(xué)到了許多沒(méi)學(xué)到的知識(shí)。較好的完成了作品。到達(dá)了預(yù)期的目的。完了最初的設(shè)想。在電路焊接時(shí)雖然沒(méi)什么大問(wèn)題,但從中也知道了焊接在整個(gè)作品中的重要性,電路工程量大,不能心急,一個(gè)個(gè)慢慢來(lái)不能急于求成。反而到達(dá)事半功倍的效果。對(duì)電路的設(shè)計(jì)、布局要先有一個(gè)好的構(gòu)思,才顯得電路板美觀(guān)、大方。程序編寫(xiě)中,由于思路不清晰,開(kāi)始時(shí)遇到了很多的問(wèn)題,經(jīng)過(guò)靜下心來(lái)思考,理清了思路,反而得心應(yīng)手。在此

31、次設(shè)計(jì)中,知道了做凡事要有一顆平常的心,不要想著走捷徑,一步一腳印。也練就了我們的耐心,做什么事都在有耐心。此次電子制作中學(xué)到了很多很多東西,這是最重要的??傊?,參加這次電子制作我的能力得到了全方位的提高。致謝詞感謝學(xué)院給我提供了一個(gè)展現(xiàn)自己的舞臺(tái),給我一次難得煅煉的時(shí)機(jī),使得我的動(dòng)手能力和專(zhuān)業(yè)技能都有了很大的提高。在做作品的日子里得到了指導(dǎo)教師的悉心指導(dǎo),在此向我的指導(dǎo)教師致以誠(chéng)摯的謝意。感謝提供相關(guān)技術(shù)幫助的老師和同學(xué),你們的支持和鼓勵(lì)使我對(duì)這次的作品完成有了信心和動(dòng)力,也給了我很多無(wú)私的幫助和支持,我在此深表謝意。參考文獻(xiàn)1:張毅剛,彭喜元,姜守達(dá),喬立言, ?新編MCS-51單片機(jī)應(yīng)用

32、設(shè)計(jì)?。哈爾濱工業(yè)大學(xué)出版社 ,20212:馬忠梅,?單片機(jī)的C語(yǔ)言應(yīng)用設(shè)計(jì)? 北京航空航天大學(xué)出版社 。20213:王靜霞,?單片機(jī)應(yīng)用技術(shù)?,電子工業(yè)出版社, 2021附錄一:系統(tǒng)電路圖附錄二:生成的PCB板附錄三:系統(tǒng)程序清單 #include#define uchar unsigned char#define uint unsigned intuchar code table1=2021-00-00 sat ; uchar code table2= 20:00:00;sbit lcdrs=P27;sbit lcdrw=P26;sbit lcden=P25;sbit ACC0=ACC0;

33、sbit ACC7=ACC7;sbit dsio=P23; sbit dsclk=P22; sbit dsrst=P24; sbit set=P16; sbit up=P15 ; sbit down=P14; void keyscan();void write_sfm(uchar add,uchar shu);uchar shi,fen,miao,ri,yue,nian,zhou,flag;void delay(uchar z) uchar x,y; for(x=z;x0;x-) for(y=110;y0;y-);/*往DS1302寫(xiě)入一字節(jié)*/void inputbyte(uchar add

34、) uchar i; ACC=add; for(i=8;i0;i-) dsio=ACC0; dsclk=1; dsclk=0; ACC=ACC1; /*ds1302輸出一字節(jié)*/uchar outputbyte(void) uchar i; for(i=8;i0;i-) ACC=ACC1; ACC7=dsio; dsclk=1; dsclk=0; return ACC;/*往ds1302寫(xiě)入數(shù)據(jù)*/void write_ds(uchar add,uchar ucda) dsrst=0; dsclk=0; dsrst=1; inputbyte(add); inputbyte(ucda); dsc

35、lk=1; dsrst=0;/*從DS1302讀出數(shù)據(jù)*/uchar read_ds(uchar add) uchar ucda; dsrst=0; dsclk=0; dsrst=1; inputbyte(add); ucda=outputbyte(); dsclk=1; dsrst=0; return (ucda);/*往1602液晶寫(xiě)入指令*/void write_com(uchar com) lcdrs=0; lcdrw=0; P0=com; delay(5); lcden=1; delay(5); lcden=0;/*往1602液晶寫(xiě)入數(shù)據(jù)*/void write_date(uchar

36、 date1) lcdrs=1; lcdrw=0; P0=date1; delay(5); lcden=1; delay(5); lcden=0;/*設(shè)置DS1302*/void write_setds(uchar addr,uchar date) write_ds(0 x8e,0 x00); write_ds(addr,date); write_ds(0 x8e,0 x80);/*初始化*/ void init() /uchar i; lcden=0; write_com(0 x38); write_com(0 x0c); write_com(0 x06); write_com(0 x01)

37、; delay(5);write_com(0 x80+0 x01);write_date(0 x32); delay(2);write_com(0 x80+0 x02);write_date(0 x30); delay(2);write_com(0 x80+0 x05); write_date(0 x2d); delay(2); write_com(0 x80+0 x08); write_date(0 x2d); delay(2); write_com(0 x80+0 x46); write_date(0 x3a); delay(2); write_com(0 x80+0 x49); writ

38、e_date(0 x3a); delay(2); /*往1602寫(xiě)入日期*/void write_nyr(uchar add,uchar date) uchar shi,ge ; shi=date/10; ge=date%10; write_com(0 x80+0 x01+add); write_date(0 x30+shi); write_date(0 x30+ge);/*顯示函數(shù)*/void display()if(flag!=1) uchar d; d=read_ds(0 x81); miao=(d/16)*10+(d%16); write_sfm(8,miao); d=read_ds(

39、0 x83); fen=(d/16)*10+(d%16); write_sfm(5,fen); d=read_ds(0 x85); shi=(d/16)*10+(d%16); write_sfm(2,shi); d=read_ds(0 x87); ri=(d/16)*10+(d%16); write_nyr(8,ri); d=read_ds(0 x89); yue=(d/16)*10+(d%16); write_nyr(5,yue); d=read_ds(0 x8b); zhou=d%16; write_nyr(12,zhou); d=read_ds(0 x8d); nian=(d/16)*1

40、0+(d%16); write_nyr(2,nian); /*往1602寫(xiě)入時(shí)間*/ void write_sfm(uchar add,uchar date) uchar shi,ge; shi=date/10; ge=date%10; write_com(0 x80+0 x42+add); write_date(0 x30+shi); write_date(0 x30+ge); void main() init(); write_setds(0 x80,0 x50); write_setds(0 x82,0 x59); write_setds(0 x84,0 x10); write_setd

41、s(0 x86,0 x17); write_setds(0 x88,0 x03);write_setds(0 x8a,0 x03); write_setds(0 x8c,0 x10);write_setds(0 x90,0 xa4);while(1) keyscan(); display(); void keyscan() uchar aa,bb; if(set=0) delay(3); if(set=0) aa+; while(!set); if(aa=1) flag=1; write_ds(0 x8e,0 x80); write_com(0 x80+0 x40+10); write_com

42、(0 x0f); write_ds(0 x8e,0 x00); bb=read_ds(0 x81); miao=(bb/16)*10+bb%16; bb=read_ds(0 x83); fen=(bb/16)*10+bb%16; bb=read_ds(0 x85); shi=(bb/16)*10+bb%16; bb=read_ds(0 x87); ri=(bb/16)*10+bb%16; bb=read_ds(0 x89); yue=(bb/16)*10+bb%16; bb=read_ds(0 x8b); zhou=(bb/16)*10+bb%16; bb=read_ds(0 x8d); nian=(bb/16)*10+bb%16; if(aa=2) write_com(0 x80+0 x40+7); if(aa=3) write_com(0 x80+0 x40+4); if(aa=4) write_com(0 x80+0 x0d); if(aa=5) write_com(0 x80+0 x09); if(aa=6) write_com(0 x80+6); if(aa=7) write_com(0 x80+3); if(aa=8) aa=0;

溫馨提示

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

評(píng)論

0/150

提交評(píng)論