版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> LED旋轉(zhuǎn)顯示器的設(shè)計</p><p><b> 摘要</b></p><p> 基于視覺暫留原理,開發(fā)出了一種旋轉(zhuǎn)式LED顯示屏。在穩(wěn)定旋轉(zhuǎn)地載體上安裝16個LED發(fā)光器件,靜止時,各列發(fā)光管等間距分列排開,隨著掃描速度的加快,在計算機軟件精確的時序控制下,不斷掃描出預(yù)設(shè)的文字,圖案等。磁鋼用來完成同步的。當霍爾傳感器旋轉(zhuǎn)到磁鋼處,感應(yīng)到它
2、的存在就會恢復(fù)到最初狀態(tài),即使前一個過程沒有顯示完成。裝在電機上的電路始終在高速旋轉(zhuǎn),我們就無法使用通常的方法來給電機供電,但可以通過對220V電壓降壓來完成。交流電壓通過變壓器降為9V,再通過橋式整流和7806降為6V,供直流電機使用。采用時鐘芯片DS1302以及電池能準確顯示時、分、秒。</p><p> 關(guān)鍵字:視覺暫留,直流電機,橋式整流。</p><p> LED Rotat
3、ing Display</p><p><b> Abstract</b></p><p> Based on the persistence of vision principle, developed a rotating LED display. Vector rotation in a stable way to install a LED light-e
4、mitting device, static when glibenclamide LED rows equally spaced points, with the scan rate speeds up, the computer software under the control of precise timing, and constantly scan the default text, patterns and so on.
5、 Magnet is used to complete the synchronization. When the Hall sensor to a rotating magnet Division, induction into its existence will be restor</p><p> Key words: persistence vision, DC motor, Bridge recti
6、fier.</p><p><b> 目 錄</b></p><p><b> 摘要I</b></p><p> AbstractII</p><p><b> 目 錄III</b></p><p><b> 引言1<
7、;/b></p><p> 1 系統(tǒng)硬件電路的設(shè)計1</p><p> 1.1 系統(tǒng)硬件框圖1</p><p> 1.2 主控單元2</p><p> 1.3 驅(qū)動模塊5</p><p> 1.4 霍爾傳感器模塊6</p><p> 1.5 顯示模塊8</p&
8、gt;<p> 1.6 電源模塊110</p><p> 1.7 電源模塊211</p><p> 2 系統(tǒng)程序的設(shè)計12</p><p> 2.1 程序的分步完成12</p><p> 2.2 程序流程圖12</p><p> 3 性能調(diào)試與分析13</p><
9、;p> 3.1 程序的檢查與修改13</p><p> 3.2 硬件的焊接與檢查14</p><p><b> 總結(jié)15</b></p><p> 參考文獻- 1 -</p><p><b> 致謝- 2 -</b></p><p><b>
10、; 附錄- 3 -</b></p><p> 附錄一 元器件清單- 3 -</p><p> 附錄二 硬件原理- 4 -</p><p> 附錄三 程序- 5 -</p><p><b> 引言</b></p><p> 目前,單片機技術(shù)如火如荼,蓬勃發(fā)展,
11、其電子產(chǎn)品如雨后春筍地出現(xiàn),正潮水般的涌入各個領(lǐng)域。其電子產(chǎn)品以靈敏、結(jié)構(gòu)簡單易制、成本低、可靠性強等優(yōu)點迅速占領(lǐng)電子市場,給人們生活帶來了極大的方便,深受人們的青睞。</p><p> 此次作品以宏晶科技STC89C52RC單片機為主控單元,還有DS1302時鐘芯片,利用視覺暫留效應(yīng),精確的顯示北京時間。</p><p> 論文共分為7個部分,主要內(nèi)容包括:系統(tǒng)硬件電路的設(shè)計、系統(tǒng)程
12、序的設(shè)計、性能調(diào)試與分析、結(jié)束語、參考文獻、致謝、附錄。</p><p> 1 系統(tǒng)硬件電路的設(shè)計</p><p> 1.1 系統(tǒng)硬件框圖</p><p> 系統(tǒng)硬件框圖如圖1.1所示。</p><p> 圖1.1 系統(tǒng)硬件框圖</p><p><b> 1.2 主控單元</b><
13、/p><p> 單片機以其集成度高、功能強、可靠性高、體積小、功耗低、價格廉、使用靈活等一系列優(yōu)點得到迅速的發(fā)展,滲透到我們生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片機的蹤跡。導彈的導航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng)等,這些都離不開單片機。</p><p> 此次設(shè)計主要采用
14、宏晶科技的STC89C52RC單片機為主控單元。</p><p> STC89C52RC的芯片管腳圖如圖1.2所示。</p><p> 圖1.2 STC89C52RC的芯片管腳圖</p><p> 1 一個8位的微處理器;</p><p> 2 片內(nèi)數(shù)據(jù)存儲器RAM,用以存放可以讀/寫的數(shù)據(jù),如運算的中間結(jié)果、最終結(jié)果以顯示的數(shù)據(jù)等;
15、</p><p> 3 片內(nèi)程序存儲器ROM/EPROM,用以存放程序、一些原始數(shù)據(jù)和表格;</p><p> 4 四個8位并行I/O接口P0~P3,每個口可以用作輸入,也可以用作輸出;</p><p> 5 兩個(或三個)定時器/計數(shù)器,每個定時器/計數(shù)器都可以設(shè)置成計數(shù)方式,用以對外部事件進行計數(shù),也可以設(shè)置成定時方式,并可以根據(jù)計數(shù)或定時的結(jié)果實現(xiàn)計算機
16、控制;</p><p> 6 五(或六)個中斷源的中斷控制系統(tǒng);</p><p> 7 一個全雙工UART接口(通用異步接收發(fā)送器)的串行I/O,用于實現(xiàn)單片機之間或單片機與微機之間的串行通信;</p><p> 8 片內(nèi)振蕩器和時鐘產(chǎn)生電路,但石英晶體和微調(diào)電容須要外接??梢钥闯鯯TC89C52RC系列單片機也是一款功能強大的單片機。</p>
17、<p><b> 特點:</b></p><p> 1.增強型6時鐘/機器周期,12時鐘/機器周期8051CPU。</p><p> 2.工作電壓:5.5V-3.4V(5V單片機)/3.8V-2.0V(3V單片機)。</p><p> 3.工作頻率范圍:0-40MHz,相當于普通8051的0-80MHz,實際工作頻率可達48M
18、Hz。</p><p> 4.用戶應(yīng)用程序空間4K/8K/13K/16K/20K/32K/64K字節(jié)。</p><p> 5.片上集成1280字節(jié)/512字節(jié)RAM。</p><p> 6.通用I/O口(32/36個),復(fù)位后為:P1/P2/P3/P4是準雙向口/弱上拉,P0口是開路輸出,作為總線擴展用時,不加上拉電阻,作為I/O口用時,需加上拉電阻。<
19、/p><p> 7.ISP(在系統(tǒng)可編程)/IAP(在應(yīng)用可編程),無需專用編程器/仿真器,可通過串口(P3.0/P3.1)直接下載用戶程序,8K程序3秒即可完成一片。</p><p> 8.EEPROM功能。</p><p><b> 9.看門狗。</b></p><p> 10.內(nèi)部集成MAX810專用復(fù)位電路(
20、D版才有),外部晶體20M以下時,可省外部復(fù)位電路。</p><p> 11.共3個16位定時器/計數(shù)器,其中定時器0還可以當成2個8位定時器使用。</p><p> 12.外部中斷4路:下降沿中斷或低電平觸發(fā)中斷,Power Down模式可由外部中斷低電平觸發(fā)中斷方式喚醒。</p><p> 13.通用異步串行口(UART),還可用定時器軟件實現(xiàn)多個UART
21、。</p><p> 14.封裝:LQFP-44,PDIP-40,PLCC-44,PQFP-44。</p><p><b> 引腳功能說明:</b></p><p><b> VCC——電源電壓</b></p><p><b> GND——地</b></p>
22、<p> P0口——P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能吸收電流的方式驅(qū)動8個TTL邏輯門電路,對端口P0寫“1”時,可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在FLASH編程時,P0口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求外接“上拉電阻”。</p>
23、<p> P1口——P1口是一個內(nèi)部帶上拉電阻的8位雙向I/O口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸出口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。</p><p> P1.0和P1.1的第二功能:</p><p> P1.0 T2(定時/計數(shù)器2
24、外部計數(shù)脈沖輸入),時鐘輸出</p><p> P1.1 T2EX(定時/計數(shù)2捕獲/重裝載觸發(fā)和方向控制)</p><p> P2口——P2是一個內(nèi)部帶上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅(qū)動(吸收或輸出電流)4個TTL邏輯門電路。對端口P2寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個
25、電流。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX@DPTR指令)時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX@RI指令)時,P2口輸出P2鎖存器的內(nèi)容。</p><p> FLASH編程或校驗時,P2亦接收高位地址和一些控制信號。</p><p> P3口——P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅(qū)動(
26、吸收或輸出電流)4個TTL邏輯門電路。對P3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的P3口將用上拉電阻輸出電流。</p><p> P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下所示:</p><p> P3.0 RXD(串行輸入口) </p><p> P3.1 TXD(串行輸出口) </p>
27、<p> P3.2 INTO(外中斷0)</p><p> P3.3 INT1(外中斷1)</p><p> P3.4 TO(定時/計數(shù)器0)</p><p> P3.5 T1(定時/計數(shù)器1)</p><p> P3.6 WR(外部數(shù)據(jù)存儲器寫選通信號)</p><p> P3.7 RD(外
28、部數(shù)據(jù)存儲器讀選通信號)</p><p> 此外,P3口還接收一些用于FLASH閃存編程和程序校驗的控制信號。</p><p> RST——復(fù)位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將是單片機復(fù)位。</p><p> ALE/PROG——當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,
29、ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。對FLASH存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。D0置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置ALE禁止位無效。<
30、/p><p> PSEN——程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當STC89C52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。</p><p> EA/VPP——外部訪問允許,欲使CPU訪問外部程序存儲器(地址0000H-FFFFH),EA端必需保持低電平(接地)。需注意的是
31、:如果加密位LB1被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。如EA端為高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲器的指令。 FLASH存儲器編程時,該引腳加上+12V的編程允許電源VPP,當然這必須是該器件是使用12V編程電壓VPP。</p><p> STC89C52RC/RD+系列單片機是STC mirco推出的新一代超強抗干擾/高速/低功耗的單片機,指令代碼完全兼容傳統(tǒng) 8051 單片機,12 時鐘/機器周
32、期和6時鐘/機器周期可任意選擇,最新的D版本內(nèi)部集成MAX810專用復(fù)位電路。</p><p><b> 1.3 驅(qū)動模塊</b></p><p> 單片機的時鐘有一個11.0592MHz的晶振和兩個30PF的小電容阻成,它們決定了單片機的工作時間精度為1Us。單片機內(nèi)各部件之間有條不紊地協(xié)調(diào)工作,其控制信號是在基本節(jié)拍的指揮下按一定時間順序發(fā)出的,這些控制信號在
33、時間上的相互關(guān)系就是CPU時序,而產(chǎn)生這種基本節(jié)拍的電路就是振蕩器和時鐘電路。</p><p> STC89C52單片機內(nèi)部有一個用于構(gòu)成振蕩器的單級反相放大器。</p><p> 引腳XTAL1為反相器輸入端,XTAL2為反相器輸出端。當在放大器兩個引腳上外接一個晶體(或陶瓷振蕩器)和電容組成的并聯(lián)諧振電路作為反饋元件時,夠成一個自激振蕩器。</p><p>
34、 內(nèi)部振蕩器等效電路圖如圖1.3所示。</p><p> 圖1.3 內(nèi)部振蕩器等效電路圖</p><p> 此振蕩器由XTAL1端向內(nèi)部時鐘電路提供一定頻率的時鐘源信號。另外振蕩器的工作還可以由軟件控制,當對單片機內(nèi)電源控制寄存器PCON中的PD位置1時,可停止振蕩器的工作,使單片機進入省電工作狀態(tài),此振蕩器稱為內(nèi)部振蕩器。</p><p> 單片機也可以通
35、過外部振蕩器向內(nèi)部時鐘電路輸入固定頻率的時鐘源信號。此時,外部信號接至XTAL1端,輸入給內(nèi)部時鐘電路,而XTAL2端浮空即可。</p><p> 片內(nèi)振蕩器頻率是由外接石英晶體的頻率決定的,其頻率值可在0~24MHz之間。當頻率穩(wěn)定性要求不高時,可選用陶瓷振蕩器。</p><p> 片內(nèi)振蕩器對構(gòu)成并聯(lián)諧振電路的外接電容C1和C2要求并不嚴格。外接晶體時,C1和C2的典型值為30PF
36、左右;外接陶瓷振蕩器時,C1和C2的典型值為47PF左右。而且在設(shè)計印刷電路板時,晶體(或陶瓷)振蕩器和電容應(yīng)盡可能安裝得靠近單片機,以減少寄生電容,保證振蕩器的穩(wěn)定性和可靠性。</p><p> 1.4 霍爾傳感器模塊</p><p> 霍爾傳感器處于工作狀態(tài)時,輸出總是處于高電平狀態(tài),當磁鋼N極接近傳感器正面的有效距離,輸出端變?yōu)榈碗娖?。當磁鋼撤離傳感器有效距離,輸出端又顯示低電平
37、,從而產(chǎn)生下降邊沿,使單片機中斷口接收到下降沿,從而發(fā)出中斷,使得電路能夠同步。當霍爾傳感器感應(yīng)到N極時會回到原始狀態(tài),達到復(fù)位的功能。</p><p> 霍爾傳感器是一種磁傳感器。它可以檢測磁場及其變化,可在各種與磁場有關(guān)的場合中使用?;魻杺鞲衅饕曰魻栃?yīng)為其工作基礎(chǔ),是由霍爾元件和它的附屬電路組成的集成傳感器?;魻杺鞲衅髟诠I(yè)生產(chǎn)、交通運輸和日常生活中有著廣泛的應(yīng)用。此次實驗中運用了AH3144單極性霍爾開
38、關(guān)電路。</p><p> AH3144E、AH3144L是由電壓調(diào)整器,霍爾電壓發(fā)生器,差分放大器,施密特觸發(fā)器和集電極開路的輸出級組成的磁敏感電路,其輸入是磁感應(yīng)強度,輸出是一個數(shù)字電壓訊號。它是一種單磁極工作的磁敏感電路,適合于矩形或者柱形磁體下的工作。AH3144L的工作溫度范圍為-40~150℃,可用于汽車工業(yè)和軍事工程中。它們有兩種封裝形式:TO-92UA和TO-92T。</p>&l
39、t;p> 霍爾傳感器功能方框圖如圖1.4所示。</p><p> 圖1.4傳感器功能方框圖</p><p> 霍爾傳感器引腳解析圖如圖1.5所示。</p><p><b> 圖1.5引腳解析</b></p><p> 如圖1.6所示,其中Bnp為工作點“開”的磁感應(yīng)強度,Bnp為釋放點“關(guān)”的磁感應(yīng)強度。
40、</p><p> 圖1.6 霍爾傳感器特性曲線</p><p> 當外加的磁感應(yīng)強度超過動作點Brp時,傳感器輸出為低電平,當磁感應(yīng)強度超過動作點Brp時,傳感器輸出高電平,當磁感應(yīng)強度降到動作點Bnp以下時,傳感器輸出電平不變,一直要降到釋放點時,傳感器才由低電平躍變?yōu)楦唠娖?。Brp與Bnp之間的滯后使開關(guān)動作更為可靠。</p><p> 另外還有一種“鎖
41、鍵型”(或稱“鎖存型”)開關(guān)霍爾傳感器,其特性如圖1.7所示。</p><p> 圖1.7 鎖存型霍爾傳感器特性</p><p><b> 特點:</b></p><p><b> 電源電壓范圍寬。</b></p><p> 開關(guān)速度快,無瞬間抖動。</p><p>
42、 工作頻率寬(DC~100KHz)。</p><p> 壽命長,體積小,安裝方便。</p><p> 能直接和晶體管及TTL、MOS等邏輯電路接口。</p><p><b> 1.5 顯示模塊</b></p><p> LED顯示器具有功耗低,接口控制方便等優(yōu)點,而且模塊的接口信號和操作指令具有廣泛的兼容性,并
43、能直接與單片機接口,可方便地實現(xiàn)各種不同的操作,在各類測量及控制儀表中被廣泛的應(yīng)用。當在LED上顯示漢字時,應(yīng)先取得漢字的點陣構(gòu)成數(shù)據(jù),然后將其寫入顯示存儲器中進行顯示。</p><p> 旋轉(zhuǎn)LED顯示器是一種通過同步控制發(fā)光二極位置和點亮狀態(tài)來實現(xiàn)圖文顯示的新型顯示器,其結(jié)構(gòu)新穎,成本低廉,可視角度達360°。</p><p> 本設(shè)計采用16個并排發(fā)光二極管,利用人眼的
44、“視覺暫留效應(yīng)”顯示文字及圖案。</p><p> 顯示模塊如圖1.8所示。</p><p> 圖 1.8 顯示模塊框圖</p><p> 由于采用時鐘芯片DS1302,可以準確的顯示北京時間。</p><p> DS1302是DALLAS公司推出的涓流充電時鐘芯片,內(nèi)含有一個實時時鐘/日歷和31字節(jié)靜態(tài)RAM。通過簡單的串行接口與
45、單片機進行通信:實時時鐘/ 日歷電路提供秒、分、時、日、日期、月、的信息,每月的天數(shù)和閏年的天數(shù)可自動調(diào)整:時鐘操作可通過AM/PM指示決定采用24或者12小時格式。DS1302與單片機之間能簡單地采用同步串行的方式進行通信,僅需用到三個口線:(1)RES(復(fù)位);(2)I/O(數(shù)據(jù)線);(3)SCLK(串行時鐘)。時鐘/RAM的讀/寫數(shù)據(jù)以一個字節(jié)或多達31字節(jié)的字符組方式通信:DS1302工作時功耗很低,保持數(shù)據(jù)和時鐘信息時功率小于
46、1mW。</p><p><b> 主要性能指標:</b></p><p> 實時時鐘具有能計算2100年之前的秒、分、時、日、日期、星期、月、年的能力,還有閏年調(diào)整的能力。</p><p> 31×8位暫存數(shù)據(jù)存儲RAM。</p><p> I/O串行口方式使得管腳數(shù)量最少。</p>&
47、lt;p> 工作電壓范圍:2.0~5.5V。</p><p> 工作電流:2.0V時,小于300mA。</p><p> 讀/寫時鐘或RAM數(shù)據(jù)時,有兩種傳送方式:單字節(jié)傳送和多字節(jié)傳送(字符組方式)。</p><p> 8腳DIP封裝或可選的8腳SOIC封裝(根據(jù)表面裝配)。</p><p><b> 簡單3線接口
48、。</b></p><p> 與TTL兼容:(Vcc=5V)。</p><p> 可選工業(yè)級溫度范圍:-40℃~+85℃。</p><p> 與DS1202兼容。</p><p> 在DS1202基礎(chǔ)上增加的特性:</p><p> —對Vcc1有可選的涓流充電能力。</p><
49、;p> —雙電源管用于主電源和備份電源供應(yīng)。</p><p> —備份電源管腳可由電池或大容量電容輸入。</p><p> —附加的7字節(jié)暫存存儲器。</p><p> DS1302的管腳排列及描述如圖1.9所示。</p><p> 圖1.9 DS1302引腳圖</p><p> DS1302引腳描述
50、如表1.1所示。</p><p><b> 表1.1 管腳描述</b></p><p><b> 2 系統(tǒng)程序的設(shè)計</b></p><p> 2.1 程序的分步完成</p><p> 1.對于程序的編寫有些茫然,所以上網(wǎng)搜了些資料經(jīng)過仔細研究后大致知道程序可以分為幾個模塊,對于以后的編寫有
51、了一定的啟發(fā)。</p><p> 2.編寫了程序顯示了一個字,觀察二極管是否能有規(guī)律的閃爍,從而確定硬件電路的準確性。</p><p> 3.編寫程序測試一次最多能顯示多少字,以及測試霍爾傳感器的轉(zhuǎn)速。</p><p> 4.對一些基本性能了解后開始程序的編寫。</p><p><b> 2.2 程序流程圖</b>
52、;</p><p> 首先對所要編寫的程序作一個系統(tǒng)的了解。</p><p> 程序流程圖如下圖2.1所示。</p><p><b> Y</b></p><p><b> N</b></p><p><b> 2.1 程序流圖</b><
53、/p><p><b> 3 性能調(diào)試與分析</b></p><p> 3.1 程序的檢查與修改</p><p> 一個工程的完成不可能一步達成,正如俗話說“不積跬步,無以至千里”。所以整個程序的編寫也是一步一個腳印,最后攀登上勝利的高峰。</p><p> 程序是在Keil51讓軟件上編寫的,它具有仿真、編譯及檢錯的
54、功能。</p><p> 從一開始顯示的亂碼到一步一步的修改直至最后程序的出來我們付出了很多心血,終于皇天不負有心人。</p><p> 在編寫程序的時候遇到了兩個比較大的問題:一個是送數(shù),另一個是時間。</p><p> 1.直流電機的轉(zhuǎn)速決定了最多能顯示多少個字,而且只有在霍爾傳感器感應(yīng)到N極的時候才能送數(shù),否則就無效。</p><p&
55、gt; 2.這次設(shè)計對于時間的控制很嚴格,時間決定我們是否能正確的顯示漢字。因為是基于視覺暫留效應(yīng),如果延時太長就不能看清楚字,所以要控制顯示的字的數(shù)目。</p><p> 3.2 硬件的焊接與檢查</p><p><b> 1.晶振短路</b></p><p> 萬用板上插孔之間有的已經(jīng)通過錫導通,在焊接時沒有用電烙鐵把錫挑掉,造成晶
56、振短路,還好發(fā)現(xiàn)及時,并沒有造成嚴重后果。</p><p> 2.發(fā)光二極管共陰、共陽發(fā)生錯誤</p><p> 原理圖中二極管共陰連接。焊接完成后,芯片引腳出來的是低電平,二極管又共陰連接,導致二極管不亮,后來把二極管改成共陽的。</p><p> 3.P0口未接上拉電阻</p><p> 畫原理圖時沒有考慮周全,P0口未接上拉電阻
57、,焊接完成后,編寫小程序時發(fā)光二極管不能正常顯示。</p><p><b> 4.霍爾傳感器反接</b></p><p> 由于網(wǎng)上下載的資料錯誤,外加對霍爾傳感器知識的不扎實,導致霍爾傳感器反接。多次檢查之后,終于發(fā)現(xiàn)并改正了這個錯誤。</p><p> 5.發(fā)光二極管順序錯誤</p><p> 芯片上P0口從
58、上到下順序為0~7,而P2口從上到下的順序為7~0,由于焊接時的疏忽,只參照了原理圖上芯片的引腳排布,沒有注意到實際的,導致程序編寫進去后,顯示的是亂碼,不是正常的漢字。</p><p><b> 6.重新制作</b></p><p> 整個作品完成后,基本功能都已完成,唯一的缺點是顯示的字不好看。因為采用大的發(fā)光二極管,直徑太靠近轉(zhuǎn)軸,字體變形。電路布線合理且經(jīng)
59、過調(diào)試了,如果把大的二極管換成小的會影響整個布線,這樣就比較麻煩了,為了追求更美觀、完美,所以決定重新焊一個。</p><p> 7.發(fā)光二極管亮度不夠</p><p> 重新焊接完成后,字形顯示改觀了,但又遇到一個新問題,發(fā)光二極管亮度不夠,只有在黑暗條件下才能看清。所以最后換成了貼片的,現(xiàn)在效果明顯好轉(zhuǎn),亮度均勻。</p><p><b> 附錄
60、</b></p><p> 附錄一 元器件清單</p><p><b> 附錄二 硬件原理</b></p><p><b> 附錄三 程序</b></p><p> #include<reg51.h></p><p> #includ
61、e"time.h"</p><p> #define uchar unsigned char</p><p> #define uint unsigned int</p><p> uchar a,b,c,g,e,f;</p><p> uchar code shu[10][32]={{0x00,0x00
62、,0x00,0x00,0x00,0xFC,0x02,0x02,0x02,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00},//0{0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xFE,0x00,0x00,0x00,0x00,0x
63、00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00},//1</p><p> {0x00,0x00,0x00,0x00,0x00,0x0C,0x82,0x42,0x22,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0
64、0,0x00,0x00,0x03,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00},//2</p><p> {0x00,0x00,0x00,0x00,0x00,0x0C,0x02,0x22,0x22,0x52,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x04,0x04
65、,0x04,0x03,0x00,0x00,0x00,0x00,0x00},//3</p><p> {0x00,0x00,0x00,0x00,0x00,0xE0,0x90,0x88,0xFE,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x07,0x04,0x04,0x00,0x00,0x00,0x00,
66、0x00},//4</p><p> {0x00,0x00,0x00,0x00,0x00,0x3E,0x22,0x12,0x12,0x12,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x04,0x04,0x04,0x03,0x00,0x00,0x00,0x00,0x00},//5</p><p>
67、 {0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x44,0x22,0x22,0x22,0xC4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x04,0x04,0x04,0x03,0x00,0x00,0x00,0x00},//6</p><p> {0x00,0x00,0x00,0x00,0x00,0x0
68、0,0x0E,0x02,0xC2,0x32,0x0E,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, //7{0x00,0x00,0x00,0x00,0x00,0x98,0x64,0x44,0x44,0x64,0x98,0x00,0x00,0x00,0x0
69、0,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x04,0x04,0x04,0x04,0x03,0x00,0x00,0x00,0x00,0x00}, //8{0x00,0x00,0x00,0x00,0x00,0x78,0x84,0x84,0x84,0x44,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x04,0x04,0x04
70、,0x02,0x01,0x00,0x00,0x00,0x00,</p><p> uchar code zi[]={ 0x00,0x00,0x10,0x10,0x10,0xFE,0x00,0x00,0xFE,0x40,0x20,0x10,0x08,0x00,0x00,0x00, 0x00,0x00,0x02,0x02,0x7A,0xCA,0x4A,0xCB,0x4A,0xCA,0x7A,0x02,0x
71、02,0x00,0x00,0x00 0x00,0x00,0x00,0xFC,0x44,0x44,0xFC,0x08,0x28,0x48,0x08,0xFE,0x08,0x08,0x00,0x00, 0x00,0x00,0x00,0xF8,0x02,0x04,0xF0,0x52,0x52,0x52,0xF2,0x02,0xFE,0x00,0x00,0x00, 0x00,0x00,0x02,0x02,0x02,0x0F
72、,0x00,0x00,0x0F,0x08,0x08,0x08,0x0F,0x00,0x00,0x00, 0x00,0x00,0x04,0x02,0x01,0x04,0x04,0x07,0x00,0x00,0x01,</p><p> uchar code shi[]={ 0x00,0x00,0x00,0xFC,0x44,0x44,0xFC,0x08,0x28,0x48,0x08,0xF
73、E,0x08,0x08,0x00,0x00, 0x00,0x00,0x00,0x03,0x02,0x02,0x03,0x00,0x00,0x02,0x04,0x07,0x00,0x00,0x00,0x00};</p><p> uchar code fen[]={0x00,0x00,0x20,0x10,0x2C,0x23,0xE0,0x20,0x20,0
74、x23,0xEC,0x10,0x20,0x00,0x00,0x00, 0x00,0x00,0x00,0x04,0x02,0x01,0x00,0x00,0x02,0x04,0x03,0x00,0x00,0x00,0x00,0x00};</p><p> uchar code miao[]={0x00,0x00,0x80,0x4A,0x2A,0xFF,0x2
75、9,0x48,0xBC,0x00,0x7F,0x00,0xC4,0x18,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x04,0x04,0x02,0x01,0x00,0x00,0x00,0x00};</p><p><b> bit s;</b></p><p&g
76、t; uchar dat,m=0;</p><p> void delay(void) //誤差 -0.868055555556us</p><p><b> {</b></p><p> unsigned char a,b;</p><p> for(b=1;b>0;b--)</p>
77、<p> for(a=227;a>0;a--);</p><p><b> }</b></p><p> void init(void)</p><p><b> {</b></p><p><b> s=0;</b></p><
78、p><b> EA = 1;</b></p><p><b> EX0 = 1;</b></p><p><b> IT0=1;</b></p><p><b> }</b></p><p> void zhongduan(void) i
79、nterrupt 0</p><p><b> {</b></p><p><b> s=1;</b></p><p><b> }</b></p><p> void main(void)</p><p><b> {</b
80、></p><p><b> init();</b></p><p> ds1302_write_time();</p><p><b> while(1)</b></p><p><b> {</b></p><p><b>
81、 P0=0XFF;</b></p><p><b> P1=0XFF;</b></p><p> ds1302_read_time();</p><p> a= time_buf1[6];</p><p> b= time_buf1[7];</p><p> c= time_
82、buf1[8];</p><p> g= time_buf1[9];</p><p> e= time_buf1[10];</p><p> f= time_buf1[11];</p><p> while(s==1)</p><p><b> {</b></p><
83、p> uchar j=64;</p><p> uchar d,h;</p><p> for(h=0;h<64;h++)</p><p><b> {</b></p><p> P0=~zi[h];</p><p> P1=~zi[j];</p><
84、;p><b> j++;</b></p><p><b> delay();</b></p><p><b> }</b></p><p><b> j=16;</b></p><p> for(d=0;d<16;d++)</p
85、><p><b> {</b></p><p> P0=~shu[a][d];</p><p> P1=~shu[a][j];</p><p><b> delay();</b></p><p><b> j++;</b></p>&
86、lt;p><b> }</b></p><p><b> j=16;</b></p><p> for(d=0;d<16;d++)</p><p><b> {</b></p><p> P0=~shu[b][d];</p><p>
87、; P1=~shu[b][j];</p><p><b> delay();</b></p><p><b> j++;</b></p><p><b> }</b></p><p><b> j=16;</b></p><p
88、> for(d=0;d<16;d++)</p><p><b> {</b></p><p> P0=~shi[d];</p><p> P1=~shi[j];</p><p><b> j++;</b></p><p><b> delay
89、();</b></p><p><b> }</b></p><p><b> j=16;</b></p><p> for(d=0;d<16;d++)</p><p><b> {</b></p><p> P0=~shu[
90、c][d];</p><p> P1=~shu[c][j];</p><p><b> delay();</b></p><p><b> j++;</b></p><p><b> }</b></p><p><b> j=16;&
91、lt;/b></p><p> for(d=0;d<16;d++)</p><p><b> {</b></p><p> P0=~shu[g][d];</p><p> P1=~shu[g][j];</p><p><b> delay();</b>&
92、lt;/p><p><b> j++;</b></p><p><b> }</b></p><p><b> j=16;</b></p><p> for(d=0;d<16;d++)</p><p><b> {</b>
93、;</p><p> P0=~fen[d];</p><p> P1=~fen[j];</p><p><b> j++;</b></p><p><b> delay();</b></p><p><b> }</b></p>
94、<p><b> j=16;</b></p><p> for(d=0;d<16;d++)</p><p><b> {</b></p><p> P0=~shu[e][d];</p><p> P1=~shu[e][j];</p><p><
95、b> delay();</b></p><p><b> j++;</b></p><p><b> }</b></p><p><b> j=16;</b></p><p> for(d=0;d<16;d++)</p><
96、p><b> {</b></p><p> P0=~shu[f][d];</p><p> P1=~shu[f][j];</p><p><b> delay();</b></p><p><b> j++;</b></p><p>&l
97、t;b> }</b></p><p><b> j=16;</b></p><p> for(d=0;d<16;d++)</p><p><b> {</b></p><p> P0=~miao[d];</p><p> P1=~miao[
98、j];</p><p><b> j++;</b></p><p><b> delay();</b></p><p><b> }</b></p><p><b> s=0;</b></p><p><b>
99、}</b></p><p><b> }</b></p><p><b> }</b></p><p> #include <reg51.h></p><p> #include<intrins.h></p><p> sbit
100、SCK=P2^0;</p><p> sbit SDA=P2^1;</p><p> sbit RST=P2^2;</p><p><b> /*復(fù)位腳*/</b></p><p> #define RST_CLRRST=0/*電平置低*/</p><p> #define R
101、ST_SETRST=1/*電平置高*/</p><p><b> /*雙向數(shù)據(jù)*/</b></p><p> #define IO_CLRSDA=0/*電平置低*/</p><p> #define IO_SETSDA=1/*電平置高*/</p><p> #define IO_RSDA/*電平讀取*/&
102、lt;/p><p><b> /*時鐘信號*/</b></p><p> #define SCK_CLRSCK=0/*時鐘信號*/</p><p> #define SCK_SETSCK=1/*電平置高*/</p><p> #define ds1302_sec_add0x80//秒數(shù)據(jù)地址</p
103、><p> #define ds1302_min_add0x82//分數(shù)據(jù)地址</p><p> #define ds1302_hr_add0x84//時數(shù)據(jù)地址</p><p> #define ds1302_date_add0x86//日數(shù)據(jù)地址</p><p> #define ds1302_month
104、_add0x88//月數(shù)據(jù)地址</p><p> #define ds1302_day_add0x8a//星期數(shù)據(jù)地址</p><p> #define ds1302_year_add0x8c//年數(shù)據(jù)地址</p><p> #define ds1302_control_add0x8e//控制數(shù)據(jù)地址</p>
105、<p> #define ds1302_charger_add0x90 #define ds1302_clkburst_add0xbe</p><p> unsigned char time_buf1[16] = {0,9,1,1,1,5,1,8,1,5,0,0,0,3};//空年月日時分秒周</p><p> unsigned char time_buf[8
106、] ;//空年月日時分秒周</p><p> /*向DS1302寫入一字節(jié)數(shù)據(jù)*/</p><p> void ds1302_write_byte(unsigned char addr, unsigned char d) {</p><p> unsigned char i;</p><p> RST_SET;/*啟動DS1
107、302總線*/</p><p> /*寫入目標地址:addr*/</p><p> addr = addr & 0xFE;/*最低位置零*/</p><p> for (i = 0; i < 8; i ++) {</p><p> if (addr & 0x01) {</p><p>&l
108、t;b> IO_SET;</b></p><p><b> }</b></p><p><b> else {</b></p><p><b> IO_CLR;</b></p><p><b> }</b></p>
109、<p><b> SCK_SET;</b></p><p><b> SCK_CLR;</b></p><p> addr = addr >> 1;</p><p><b> }</b></p><p> /*寫入數(shù)據(jù):d*/</p>
110、;<p> for (i = 0; i < 8; i ++) {</p><p> if (d & 0x01) {</p><p><b> IO_SET;</b></p><p><b> }</b></p><p><b> else {</
111、b></p><p><b> IO_CLR;</b></p><p><b> }</b></p><p><b> SCK_SET;</b></p><p><b> SCK_CLR;</b></p><p>
112、d = d >> 1;</p><p><b> }</b></p><p> RST_CLR;/*停止DS1302總線*/</p><p><b> }</b></p><p> /*從DS1302讀出一字節(jié)數(shù)據(jù)*/</p><p> uns
113、igned char ds1302_read_byte(unsigned char addr) {</p><p> unsigned char i;</p><p> unsigned char temp;</p><p> RST_SET;/*啟動DS1302總線*/</p><p> /*寫入目標地址:addr*/&l
114、t;/p><p> addr = addr | 0x01;/*最低位置高*/</p><p> for (i = 0; i < 8; i ++) {</p><p> if (addr & 0x01) {</p><p><b> IO_SET;</b></p><p><
115、b> }</b></p><p><b> else {</b></p><p><b> IO_CLR;</b></p><p><b> }</b></p><p><b> SCK_SET;</b></p>
116、<p><b> SCK_CLR;</b></p><p> addr = addr >> 1;</p><p><b> }</b></p><p> /*輸出數(shù)據(jù):temp*/</p><p> for (i = 0; i < 8; i ++) {</
117、p><p> temp = temp >> 1;</p><p> if (IO_R) {</p><p> temp |= 0x80;</p><p><b> }</b></p><p><b> else {</b></p><p&
118、gt; temp &= 0x7F;</p><p><b> }</b></p><p><b> SCK_SET;</b></p><p><b> SCK_CLR;</b></p><p><b> }</b></p>
119、<p> RST_CLR;/*停止DS1302總線*/</p><p> return temp;</p><p><b> }</b></p><p> /*向DS302寫入時鐘數(shù)據(jù)*/</p><p> void ds1302_write_time(void) {</p>
120、<p> unsigned char i,tem;</p><p><b> tem=0;</b></p><p> for(i=1;i<9;i++){ //BCD處理</p><p> time_buf1[tem]=time_buf1[tem]<<4;</p><p
121、> time_buf[i]=time_buf1[tem]|time_buf1[tem+1];</p><p> tem=tem+2;</p><p><b> }</b></p><p> ds1302_write_byte(ds1302_control_add,0x00);//關(guān)閉寫保護 </p><p
122、> ds1302_write_byte(ds1302_sec_add,0x80);//暫停 </p><p> ds1302_write_byte(ds1302_charger_add,0xa9);//涓流充電 </p><p> ds1302_write_byte(ds1302_year_add,time_buf[1]);//年 </p>&l
123、t;p> ds1302_write_byte(ds1302_month_add,time_buf[2]);//月 </p><p> ds1302_write_byte(ds1302_date_add,time_buf[3]);//日 </p><p> ds1302_write_byte(ds1302_day_add,time_buf[7]);//周 </p&
124、gt;<p> ds1302_write_byte(ds1302_hr_add,time_buf[4]);//時 </p><p> ds1302_write_byte(ds1302_min_add,time_buf[5]);//分</p><p> ds1302_write_byte(ds1302_sec_add,time_buf[6]);//秒</
125、p><p> ds1302_write_byte(ds1302_day_add,time_buf[7]);//周 </p><p> ds1302_write_byte(ds1302_control_add,0x80);//打開寫保護 </p><p><b> }</b></p><p> /*從DS30
126、2讀出時鐘數(shù)據(jù)*/</p><p> void ds1302_read_time(void) { </p><p> unsigned char i,tmp;</p><p><b> tmp=0;</b></p><p> time_buf[1]=ds1302_read_byte(ds1302_year_ad
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)設(shè)計---led旋轉(zhuǎn)顯示器的設(shè)計
- 畢業(yè)設(shè)計--led旋轉(zhuǎn)顯示器的設(shè)計
- 旋轉(zhuǎn)led顯示器的設(shè)計畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---led旋轉(zhuǎn)顯示器的設(shè)計
- led顯示器畢業(yè)設(shè)計論文
- 畢業(yè)設(shè)計----led字符顯示器
- led立方體顯示器設(shè)計【畢業(yè)設(shè)計】
- 用vhdl設(shè)計led+漢字滾動顯示器畢業(yè)設(shè)計
- 用vhdl設(shè)計led+漢字滾動顯示器畢業(yè)設(shè)計
- 用vhdl設(shè)計led+漢字滾動顯示器畢業(yè)設(shè)計
- 畢業(yè)設(shè)計--旋轉(zhuǎn)led顯示屏
- 畢業(yè)設(shè)計---基于單片機的led點陣字符顯示器的設(shè)計
- 畢業(yè)設(shè)計---旋轉(zhuǎn)led動態(tài)顯示屏的設(shè)計
- 顯示器支架沖壓模畢業(yè)設(shè)計
- 顯示器支架沖壓模畢業(yè)設(shè)計
- 顯示器支架沖壓模畢業(yè)設(shè)計
- 畢業(yè)設(shè)計----顯示器支架沖壓模
- led點陣顯示器
- 直下式LED顯示器的優(yōu)化設(shè)計.pdf
- 模具畢業(yè)設(shè)計95顯示器支架沖壓模畢業(yè)設(shè)計
評論
0/150
提交評論