規(guī)則圖形繪制系統(tǒng)畢業(yè)論文_第1頁
已閱讀1頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  規(guī)則圖形繪制系統(tǒng)</b></p><p>  Rule drawing system</p><p>  專 業(yè):應用電子技術</p><p><b>  二零壹二年六月</b></p><p>  畢業(yè)設計(論文)評語</p><p> 

2、 畢業(yè)設計(論文)答辯記錄成績及評語</p><p><b>  電子工程系</b></p><p>  畢 業(yè) 設 計 任 務 書</p><p>  專業(yè):應用電子技術        年級:</p><p><b>  電子工程系</b></p><p>  畢 業(yè) 設

3、計 開 題 報 告</p><p><b>  摘 要</b></p><p>  目前單片機滲透到我們生活的各個領域,幾科很難找哪個領域沒有單片機的蹤跡。導彈的導航裝置,飛機上各種儀表的控制,計算機的網(wǎng)絡通訊與數(shù)據(jù)傳輸,工業(yè)自動過程的實時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車折安全保障系統(tǒng),錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物

4、等等,這些都離不開單片機。</p><p>  LCD低壓微功耗平板型結構,被動顯示(無眩光,不刺人眼,不會引起眼睛疲勞),顯示信息量大(因為像素可以做得很少),晚于彩色化(在色譜上可以非常準確的復現(xiàn)),無電磁輻射(對人體安全,利于信息保密),長壽命。</p><p>  大部分的數(shù)字便攜式設備是基于單片機系統(tǒng)開發(fā)的,在單片機系統(tǒng)中,除了需要特定的功能算法和傳感器等器件外,還需要輸入,輸出

5、裝置,在便攜式設備中,輸入裝置一般是鍵盤,而輸出裝置一般是液晶顯示模塊。主要完成工作有實現(xiàn)按鍵內容的液晶顯示,實現(xiàn)按鍵功能的液晶顯示,實現(xiàn)便攜式設備的結果輸出。</p><p>  關鍵詞: 鍵盤 ;LCD12864;單片機; </p><p><b>  Abstract</b></p><p>  MCU to infiltrate a

6、ll areas of life, a few subjects is difficult to find which areas of the traces of the microcontroller. Navigation device of the missile, aircraft, various instrument control, computer network communications and data tra

7、nsmission, industrial automation, process real-time control and data processing, widely used in a variety of smart card IC, civil limousine fold security system, VCR, cameras, the control of automatic washing machines, a

8、nd program-controlled toys, electronic pe</p><p><b>  目 錄</b></p><p>  第一章 有關液晶12864的一般介紹9</p><p>  1.1 12864 特性9</p><p>  1.2 12864模塊電路圖10</p>

9、<p>  1.3 極限參數(shù)10</p><p>  1.4 電參數(shù)10</p><p>  1.5 LCD 的驅動方式………………………………………………………10</p><p>  1.5.1 靜 態(tài)驅動方法……………………………………………………10</p><p>  1.5.2動態(tài)驅動方法……………………

10、…………………………………10</p><p>  1.6 液晶模塊指令系統(tǒng)11</p><p>  1.6.1 顯示開關控制(DISPLAY ON/OFF)11</p><p>  1.6.2 設置顯示起始行11</p><p>  1.6.3 設置頁地址11</p><p>  1.6.4 設置Y 地址(S

11、ET Y ADDRESS)12</p><p>  1.6.5 讀狀態(tài)(STATUS READ)12</p><p>  1.6.6 寫顯示數(shù)據(jù)(WRITE DISPLAY DATE)12</p><p>  1.6.7 讀顯示數(shù)據(jù)(READ DISPLAY DATE)13</p><p>  1.7 讀寫操作時序13</p&

12、gt;<p>  1.8.1 寫操作時序13</p><p>  1.8.2 讀操作時序13</p><p>  1.8.3 讀寫時序參數(shù)表13</p><p>  第二章 STC89C52芯片介紹15</p><p>  2.1時鐘電路16</p><p>  2.2復位及復位電路16&l

13、t;/p><p>  2.3 STC89C52具體介紹18</p><p>  第三章按鍵模塊20</p><p>  第四章電路框圖設計22</p><p>  4.1 系統(tǒng)框圖22</p><p>  4.2 工作原理22</p><p>  4.2.1 硬件工作原理22<

14、;/p><p>  4.2.2 軟件工作原理22</p><p>  第五章第硬件原理分析及設計24</p><p>  5.1 單片機時鐘電路24</p><p>  5.2 單片機復位電路24</p><p>  5.3 鍵盤電路25</p><p>  5.4 顯示電路25<

15、;/p><p>  第六章軟件設計27</p><p>  6.1 寄存器寫入………………………………………………………………27</p><p>  6.2 清屏………………………………………………………………………27</p><p>  6.3 光標參數(shù)設置……………………………………………………………27</p>

16、<p>  6.4 R A M寫入…………………………………………………………………27</p><p>  6.5圖形顯示27</p><p>  第七章電路調試29</p><p>  7.1 硬件調試29</p><p>  7.2 軟件調試29</p><p><b>  第八章

17、小結30</b></p><p><b>  參考文獻31</b></p><p><b>  附錄32</b></p><p>  第一章 有關液晶12864的一般介紹</p><p>  液晶顯示器按其功能可分為筆段式和點矩陣式兩種。后者又可以分成字符點陣式和圖形點陣式,圖形

18、點陣式液晶顯示器不僅可顯示數(shù)字、字符等內容,還能顯示漢字和任意圖形。在中規(guī)模圖形式液晶顯示模塊中,內置T6963C 控制器的液晶顯示模塊是目前較為常用的一種。T6963C 是點陣式液晶圖形顯示器,可以圖形方式、字符方式、圖形和字符合成方式顯示,以及實現(xiàn)字符方式下的特征方式顯示,還可以像CAD 一樣進行屏拷貝操作。本設計由于需要顯示西文、漢字還有圖形,所以采用的就是T6963C 是點陣式液晶圖形顯示器。</p><p&

19、gt;  1.1 12864 特性</p><p>  顯示內容:128 x 64點</p><p>  驅動方式:1/64D</p><p><b>  可供型號:</b></p><p>  STN(黃綠模、灰模、黑白模)</p><p>  反射型, 帶EL或LED背光源&

20、lt;/p><p>  EL/100VAC,400HZ</p><p>  LED/4.2VDC</p><p>  1.2 12864模塊電路圖</p><p>  內部電路見圖1-1。</p><p>  圖1-1 12864模塊內部電路</p><p><b>  1.3 極限

21、參數(shù)</b></p><p>  極限電壓見表1-1。</p><p><b>  表1-1 極限電壓</b></p><p><b>  1.4 電參數(shù)</b></p><p>  表1-2 12864電參數(shù)</p><p>  1.5 LCD 的驅動方式&

22、lt;/p><p>  液晶的顯示是由于在顯示像素上施加了電場的緣故,而這個電場則由顯示像素前后兩電極上的電位信號合成產生,在顯示像素上建立直流電場是非常容易的事,但直流電場將導致液晶材料的化學反應和電極老化,從而迅速降低液晶的顯示壽命,因此必須建立交流驅動電場,并且要求這個交流電場中的直流分量越小越好,通常要求直流分量小于50mV。在實際應用中,由于采用了數(shù)字電路驅動,所以這種交流電場是通過脈沖電壓信號來建立的。

23、</p><p>  顯示像素上交流電場的強弱用交流電壓的有效值表示,當有效值大于液晶的閾值電壓時,像素呈顯示態(tài);當有效值小于閾值電壓時,像素不產生電光效應;當有效值在閾值電壓附近時,液晶將呈現(xiàn)較弱的電光效應,此時將會影響液晶顯示器件的對比度。 </p><p>  液晶顯示的驅動就是用來調整施加在液晶顯示器件電極上的電位信號的相位、峰值、頻率等,建立驅動電場,以實現(xiàn)液晶顯示器件的顯示效果

24、。液晶顯示的驅動方式有許多種,常用的驅動方法有:靜態(tài)驅動法和動態(tài)驅動法。對于TN及STN-LCD一般采用靜態(tài)驅動或多路驅動方式。這兩種方式相比較各有優(yōu)缺點。靜態(tài)驅動響應速度快、耗電少、驅動電壓低,但驅動電極度數(shù)必須與顯示筆段數(shù)相同,因而用途不如多路驅動廣。 </p><p>  1.5.1靜態(tài)驅動法</p><p>  靜態(tài)驅動法是獲得最佳顯示質量的最基本的方法。它適用于筆段型液晶顯示器件

25、的驅動。表2.3示出此類液晶顯示器件的電極結構,當多位數(shù)字組合時,各位的背電極BP是連接在一起的。振蕩器的脈沖信號經分頻后直接施加在液晶顯示器件的背電極BP上,而段電極的脈沖信號是由顯示選擇信號A與時序脈沖通過邏輯異或合成產生,當某位顯示像素被顯示選擇時,A=1,該顯示像素上兩電極的脈沖電壓相位相差180,在顯示像素上產生2V的電壓脈沖序列,使該顯示像素呈現(xiàn)顯示特性;當某位顯示像素為非顯示選擇時,A=0,該顯示像素上兩電極的脈沖電壓相位

26、相同,在顯示像素上合成電壓脈沖為0V,從而實現(xiàn)不顯示的效果。這就是靜態(tài)驅動法。為了提高顯示的對比度,適當?shù)卣{整脈沖的電壓即可。</p><p>  表1-3 液晶顯示器件電機結構</p><p><b>  1.動態(tài)驅動法</b></p><p>  當液晶顯示器件上顯示像素眾多時,如點陣型液晶顯示器件,為了節(jié)省龐大的硬件驅 動電路,在液晶顯示

27、器件電極的制作與排列上作了加工,實施了矩陣型的結構,即把水平一組顯示像素的背電極都連在一起引出,稱之為行電極,把縱向一組顯示像素的段電極都連接起來一起引出,稱之為列電極。在液晶顯示器上每一個顯示像素都由其所在的列與行的位置唯一確定。在驅動方式上相應地采用了類同于CRT的光柵掃描方法。液晶顯示的動態(tài)驅動法是循環(huán)地給行電極施加選擇脈沖,同時所有為顯示數(shù)據(jù)的列電極給出相應的選擇或非選擇的驅動脈沖,從而實現(xiàn)某行所有顯示像素的顯示功能,這種行掃描

28、是逐行順序進行的,循環(huán)周期很短,使得液晶顯示屏上呈現(xiàn)出穩(wěn)定的圖象。我們把液晶顯示的掃描驅動方式稱為動態(tài)驅動法。</p><p>  1.6 液晶模塊指令系統(tǒng)</p><p>  1.6.1 顯示開關控制(DISPLAY ON/OFF) </p><p>  代碼 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 &l

29、t;/p><p>  形式 0 0 0 0 1 1 1 1 1 D </p><p>  D=1:開顯示(DISPLAY ON)意即顯示器可以進行各種顯示操作 </p><p>  D=0:關顯示(DISPLAY OFF)意即不能對顯示器可以進行各種顯示操作 </p><p>  1.6.

30、2 設置顯示起始行 </p><p>  代碼 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 </p><p>  形式 0 0 1 1 A5 A4 A3 A2 A1 A0 </p><p>  前面在Z 地址計數(shù)器一節(jié)已經描述了顯示起始行是由Z 地址計數(shù)器控制的。A

31、5∽ A0 的6位地址自動送入Z地址計數(shù)器,起始行的地址可以是0∽ 63 的任意一行。 </p><p><b>  例如: </b></p><p>  選擇A5∽ A0 是62, 則起始行與DDRAM 行的對應關系如下: </p><p>  DDRAM 行: 62 63 0 1 2 3?????????????????????

32、28 29 </p><p>  屏幕顯示行: 1 2 3 4 5 6????????????????????? 31 32 </p><p>  1.6.3 設置頁地址 </p><p>  代碼 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 </p><p>  形式 0

33、0 1 0 1 1 1 A2 A1 A0 </p><p>  所謂頁地址就是DDRAM的行地址,8 行為一頁,模塊共64 行即8 頁, A2 ∽ A0 表示0∽ 7 頁。讀寫數(shù)據(jù)對地址沒有影響, 頁地址由本指令或RST 信號 改變復位后頁地址為0。頁地址與DDRAM 的對應關系見DDRAM 地址表。 </p><p>  1.6.

34、4 設置Y 地址(SET Y ADDRESS) </p><p>  代碼 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 </p><p>  形式 0 0 0 1 A5 A4 A3 A2 A1 A0 </p><p>  此指令的作用是將A5∽ A0 送入Y 地址計

35、數(shù)器,作為DDRAM 的Y 地址指針。在對DDRAM 進行讀寫操作后, Y 地址指針自動加1, 指向下一個DDRAM 單元。 </p><p>  DDRAM 地址表: </p><p>  1.6.5 讀狀態(tài)(STATUS READ) </p><p>  代碼 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 &

36、lt;/p><p>  形式 1 0 BUSY 0 ON/OFF RET 0 0 0 0 </p><p>  當R/W=1 D/I=0 時, 在E 信號為“ H” 的作用下, 狀態(tài)分別輸出到數(shù)據(jù)總線( DB7∽ DB0) 的相應位。 </p><p>  BF: 前面已敘述過( 見BF標志位一節(jié))。 </p><

37、p>  ON/OFF: 表示DFF觸發(fā)器的狀態(tài)( 見DFF觸發(fā)器一節(jié))。 </p><p>  RST: RST=1 表示內部正在初始化, 此時組件不接受任何指令和數(shù)據(jù)。 </p><p>  1.6.6 寫顯示數(shù)據(jù)(WRITE DISPLAY DATE) </p><p>  代碼 R/W D/I DB7 DB6 DB5 DB4 DB3 DB

38、2 DB1 DB0 </p><p>  形式 0 1 D7 D6 D5 D4 D3 D2 D1 D0 </p><p>  D7∽ D0 為顯示數(shù)據(jù),此指令把D7∽ D0 寫入相應的DDRAM 單元,Y地指針自動加1。 </p><p>  1.6.7 讀顯示數(shù)據(jù)(READ DISPLAY DATE) </p><p&g

39、t;  代碼 R/W D/I DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 </p><p>  形式 1 1 D7 D6 D5 D4 D3 D2 D1 D0 </p><p>  此指令把DDRAM 的內容D7∽ D0 讀到數(shù)據(jù)總線DB7∽ DB0, Y 地址指針自動加1。 </p><p>  1.8 讀

40、寫操作時序 </p><p>  1.8.1 寫操作時序 </p><p>  圖1-2 寫操作時序</p><p>  1.8.2 讀操作時序 </p><p>  圖1-3 讀操作時序</p><p>  1.7.3 讀寫時序參數(shù)表 </p><p>  表1-3讀寫時序參數(shù)表<

41、/p><p>  第二章 STC89C52芯片介紹</p><p>  STC89C52是一種帶8K字節(jié)閃爍可編程可檫除只讀存儲器(FPEROM-Flash Programable and Erasable Read Only Memory )的低電壓,高性能COMOS8的微處理器,俗稱單片機。該器件采用ATMEL搞密度非易失存儲器制造技術制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容

42、。</p><p>  單片機總控制電路如下圖2-1:</p><p>  圖2-1單片機總控制電路</p><p><b>  2.1時鐘電路</b></p><p>  STC89C52內部有一個用于構成振蕩器的高增益反相放大器,引腳RXD和TXD分別是此放大器的輸入端和輸出端。時鐘可以由內部方式產生或外部方式產生。

43、內部方式的時鐘電路如圖2—2(a) 所示,在RXD和TXD引腳上外接定時元件,內部振蕩器就產生自激振蕩。定時元件通常采用石英晶體和電容組成的并聯(lián)諧振回路。晶體振蕩頻率可以在1.2~12MHz之間選擇,電容值在5~30pF之間選擇,電容值的大小可對頻率起微調的作用。</p><p>  外部方式的時鐘電路如圖2—2(b)所示,RXD接地,TXD接外部振蕩器。對外部振蕩信號無特殊要求,只要求保證脈沖寬度,一般采用頻率

44、低于12MHz的方波信號。片內時鐘發(fā)生器把振蕩頻率兩分頻,產生一個兩相時鐘P1和P2,供單片機使用。</p><p>  RXD接地,TXD接外部振蕩器。對外部振蕩信號無特殊要求,只要求保證脈沖寬度,一般采用頻率低于12MHz的方波信號。片內時鐘發(fā)生器把振蕩頻率兩分頻,產生一個兩相時鐘P1和P2,供單片機使用。</p><p>  (a)內部方式時鐘電路 (b)外部方式時鐘電

45、路</p><p><b>  圖2—2時鐘電路</b></p><p>  2.2復位及復位電路</p><p><b> ?。?)復位操作</b></p><p>  復位是單片機的初始化操作。其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之

46、外,當由于程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需按復位鍵重新啟動。</p><p>  除PC之外,復位操作還對其他一些寄存器有影響,它們的復位狀態(tài)如表一所示。</p><p>  表2-1 一些寄存器的復位狀態(tài)</p><p> ?。?)復位信號及其產生</p><p>  RST引腳是復位信號的輸入端。復位信號是高電

47、平有效,其有效時間應持續(xù)24個振蕩周期(即二個機器周期)以上。若使用頗率為6MHz的晶振,則復位信號持續(xù)時間應超過4us才能完成復位操作。</p><p>  產生復位信號的電路邏輯如圖4—3所示:</p><p>  圖2—3復位信號的電路邏輯圖</p><p>  整個復位電路包括芯片內、外兩部分。外部電路產生的復位信號(RST)送至施密特觸發(fā)器,再由片內復位電

48、路在每個機器周期的S5P2時刻對施密特觸發(fā)器的輸出進行采樣,然后才得到內部復位操作所需要的信號。</p><p>  復位操作有上電自動復位相按鍵手動復位兩種方式。</p><p>  上電自動復位是通過外部復位電路的電容充電來實現(xiàn)的,其電路如圖2—4(a)所示。這佯,只要電源Vcc的上升時間不超過1ms,就可以實現(xiàn)自動上電復位,即接通電源就成了系統(tǒng)的復位初始化。</p>&

49、lt;p>  按鍵手動復位有電平方式和脈沖方式兩種。其中,按鍵電平復位是通過使復位端經電阻與Vcc電源接通而實現(xiàn)的,其電路如圖2—4(b)所示;而按鍵脈沖復位則是利用RC微分電路產生的正脈沖來實現(xiàn)的,</p><p>  其電路如圖2—4(c)所示:</p><p>  (a)上電復位 (b)按鍵電平復位 (c)按鍵脈沖復位</p><p&g

50、t;<b>  圖2—4復位電路</b></p><p>  上述電路圖中的電阻、電容參數(shù)適用于6MHz晶振,能保證復位信號高電平持續(xù)時間大于2個機器周期。</p><p>  本系統(tǒng)的復位電路采用圖2—4(b)上電復位方式。</p><p>  2.3 STC89C52具體介紹</p><p>  ① 主電源引腳(2

51、根)</p><p>  VCC(Pin40):電源輸入,接+5V電源</p><p>  GND(Pin20):接地線</p><p> ?、谕饨泳д褚_(2根)</p><p>  XTAL1(Pin19):片內振蕩電路的輸入端</p><p>  XTAL2(Pin20):片內振蕩電路的輸出端</p>

52、<p><b> ?、劭刂埔_(4根)</b></p><p>  RST/VPP(Pin9):復位引腳,引腳上出現(xiàn)2個機器周期的高電平將使單片機復位。</p><p>  ALE/PROG(Pin30):地址鎖存允許信號</p><p>  PSEN(Pin29):外部存儲器讀選通信號</p><p> 

53、 EA/VPP(Pin31):程序存儲器的內外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內部程序存儲器讀指令。</p><p>  ④可編程輸入/輸出引腳(32根)</p><p>  STC89C52單片機有4組8位的可編程I/O口,分別位P0、P1、P2、P3口,每個口有8位(8根引腳),共32根。</p><p>  PO口(Pin39~Pin3

54、2):8位雙向I/O口線,名稱為P0.0~P0.7</p><p>  P1口(Pin1~Pin8):8位準雙向I/O口線,名稱為P1.0~P1.7 </p><p>  P2口(Pin21~Pin28):8位準雙向I/O口線,名稱為P2.0~P2.7 </p><p>  P3口(Pin10~Pin17):8位準雙向I/O口線,名稱為P3.0~P3.7</p

55、><p>  STC89C52主要功能如表2-2所示。</p><p>  表2-2 STC89C52主要功能</p><p><b>  按鍵模塊</b></p><p>  圖3-1是按鍵輸入電路。</p><p><b>  圖3-1 按鍵電路</b></p>

56、<p>  由于本次設計用到的I/O口較少,有足夠的多余I/O口用于按鍵設計。故采用比較簡單的獨立式鍵盤的接口設計。</p><p>  這種按鍵形式電路簡單,配置靈活,但是因為每一個按鍵需要占用一個I/O</p><p>  口,所以,I/O口占用量很大,它只適合于按鍵數(shù)量少的情況下使用。獨立式鍵盤按鍵的數(shù)量較少,并且各個按鍵相互獨立,每一個按鍵由一個獨立的I/O口控制,一

57、個按鍵改變的是一個相應I/O口的輸入電平,而不會對其他I/O口電平產生影響。這樣,通過檢測各I/O口的電平變化,即可很容易地確定是否有按鍵按下及是何鍵按下。</p><p>  如上圖所示按鍵電路,一開始P1.0口是高電平,按鍵按下時即轉變?yōu)榻拥氐牡碗娖?,單片機檢測到該變化即可按程序規(guī)定的情況進行運轉。</p><p>  按鍵掃描的程序流程如圖3-2。該流程考慮了去抖動。</p&g

58、t;<p>  圖3-2 按鍵掃描程序流程圖</p><p><b>  電路框圖設計</b></p><p><b>  4.1 系統(tǒng)框圖</b></p><p><b>  圖4.1 系統(tǒng)框圖</b></p><p><b>  4.2 工作原理&l

59、t;/b></p><p>  4.2.1 硬件工作原理</p><p>  硬件控制電路主要用了4*4 矩陣鍵盤、AT89S52 芯片處理器、LCD。由AT89S52 處理器處理從4*4 鍵盤發(fā)出的指令,通過LCD繪制出相應按鍵的內容。</p><p>  4.2.2 軟件工作原理</p><p>  軟件控制程序主要有主控程序、時間

60、程序、LCD 控制程序、時間及日期顯示程序、鍵盤掃描程序等組成。主控程序中對整個程序進行控制,進行了時間和LCD 初始化、LCD等控制。</p><p>  LCD 顯示程序是整個顯示部分中的重要部分,包括寫入命令、初始化、寫入數(shù)據(jù)、數(shù)據(jù)顯示、自定義GDRAM 顯示、繪圖顯示、反白顯示等。當LCD 的RS=RW= 0,同時EN由1 變0 時,可以對LCD 寫入基本指令和擴充指令;當RS=1,RW=0,同時EN 由

61、1 變0時,可以對LCD 寫入數(shù)據(jù)。對LCD 端口寫入不同的命令可以寫入和顯示不同的數(shù)據(jù),具體命令請參考LCD12864 和數(shù)據(jù)手冊。</p><p>  LCD 時間控制程序是時間程序重要的部分,時間控制程序體現(xiàn)了年、月、日、時、分、秒的計算方法。此設計采用AT89S52 自帶的T0 計時器進行計時,中斷程序每隔50ms 中斷一次當作一個計數(shù),每中斷一次則計數(shù)加1,當計數(shù)20 次時,則表示1 秒到了,秒變量加1

62、,同理再判斷是否1 分鐘到了,再判斷是否1 小時到了,再判斷是否1 天到了,再判斷是否1 月到了,再判斷是否1 年到了,若計數(shù)到了則相關變量清除0。先給出一般年份的每月天數(shù)。如果是閏年,第2 月天數(shù)為29 天,非閏年則有28 天。在我們的這個設計中只設有100 年的范圍,判斷是否閏年就只需要用該年份除以4 來判斷就行了。</p><p>  鍵盤掃描程序是整個設計的輸入控制程序,4*4 鍵盤占用單片機的8 個I/

63、O 口。本設計的鍵盤掃描程序采用行列反轉掃描法讀取按鍵鍵值。單片機先讓鍵盤行線輸出全為0,然后讀入列線值,再檢測有無按鍵按下,去抖,再讀入列線值,輸出當前列線值,線值,最后組合行、列線值,得到鍵盤的碼值供調用。</p><p>  第硬件原理分析及設計</p><p>  5.1 單片機時鐘電路</p><p>  內部時鐘電路如圖所示,在XTAL1 和XTAL2

64、引腳上外接定時元件,內部振蕩電路就產生自激振蕩。定時元件通常石英晶體和電容組成的并聯(lián)諧振回路,晶體振蕩器選擇12MHZ,電容采用30PF。</p><p><b>  圖5.1 時鐘電路</b></p><p>  5.2 單片機復位電路</p><p>  影響單片機系統(tǒng)運行穩(wěn)定性的因素可大體分為外因和內因兩部分:</p>&l

65、t;p><b>  (1)外因</b></p><p>  射頻干擾,它是以空間電磁場的形式傳遞在機器內部的導體(引線或零件引腳)感生出相應的干擾,可通過電磁屏蔽和合理的布線/器件布局衰減該類干擾;</p><p>  電源線或電源內部產生的干擾,它是通過電源線或電源內的部件耦合或直接傳導,可通過電源濾波、隔離等措施來衰減該類干擾。</p><

66、;p><b> ?。?)內因</b></p><p>  振蕩源的穩(wěn)定性,主要由起振時間頻率穩(wěn)定度和占空比穩(wěn)定度決定 起振時間可由電路參數(shù)整定穩(wěn)定度受振蕩器類型溫度和電壓等參數(shù)影響復位電路的可靠性。</p><p><b>  5.3 鍵盤電路</b></p><p>  4*4 鍵盤電路由4*4=16 個按鍵組成,

67、其中4 列經過4 個10K 電阻接入VCC 上拉,接入單片機的P3 口的高4 位口,4 行直接接入單片機低4 位,當有按鍵按下時,由單片機控制8 個I/O 口讀取出當前鍵值。</p><p><b>  圖5.3 鍵盤電路</b></p><p><b>  5.4 顯示電路</b></p><p><b>  

68、LCD 顯示電路</b></p><p>  LCD12864 一共有20 個引腳,其中4-15、17 腳接入單片機的P0 全部I/O 口和P2 的三個I/O 口,是LCD 與單片機通訊的橋梁。16 號腳是空腳,1 和20 腳接地,2 和19 腳接VCC,其中3、18、19 三個腳接可調電位器和電阻,組成調節(jié)LCD 對比度電路。如圖5.4所示。</p><p><b>

69、;  圖5.3 顯示電路</b></p><p><b>  軟件設計</b></p><p>  此設計名為儀器儀表的鍵盤繪制模擬系統(tǒng),顧名思義軟件占很大比例。整個設計硬件比較簡單,主要就是程序的寫法,而軟件的調試也是此設計的重點和難點。整個軟件結構分為主控程序、顯示部分程序、鍵盤掃描部分程序、時鐘部分程序和延時程序。</p><p&

70、gt;<b>  6.1寄存器寫入</b></p><p>  寫入液晶寄存器地址,根據(jù)寫入電平時序可以得到,先使CS和RS置低電平,然后在送上寄存器的地址,再將寫信號WR送一低電平脈沖,這樣P3口上的寄存器地址被液晶寫入,最后再恢復CS高電平,這樣寄存器地址就寫入了。</p><p>  寫入寄存器數(shù)據(jù),根據(jù)寫入脈沖時序可以得到,先使CS低電平先中芯片,使我RS置高

71、電平選中寄存器,然后在送上寄存器的數(shù)據(jù),再將寫信號WR上送一低電平脈沖,這樣P3口送出低8位數(shù)據(jù),P4口送入高位數(shù)據(jù),最后再恢復CS的高電平,這樣寄存器數(shù)據(jù)就寫入了。</p><p><b>  6.2清屏</b></p><p>  清屏程序,將光標值(0,0)位置,先使CS置低電平選中芯片,使RS置高電平選中寄存器,然后在送上寄存器的數(shù)據(jù),然后調用LCD12864

72、函數(shù)送入RGB數(shù)據(jù),然后WR送出76800個脈沖,將128*64的液晶所有像點全部設置成一個顏色,這樣達到了清屏的目的。</p><p><b>  6.3光標參數(shù)設置</b></p><p>  設置液晶的光標,根據(jù)輸入的X和Y的坐標數(shù)據(jù),會調用到寫入寄存器的函數(shù),將X和Y的數(shù)據(jù)寫入控制光標寄存器,將光標設置在所要的地方,這樣光標設置好了。</p>&

73、lt;p><b>  6.4 RAM寫入</b></p><p>  寫入液晶RAM的RGB數(shù)據(jù),先使CS置低電平選中芯片,使RS置高電平選中寄存,然后在送上寄存器的數(shù)據(jù),然后調用LCD12864函數(shù)送入RGB數(shù)據(jù),再向WR寫信號送一低電平脈沖,最后恢復CS的高電平,這樣寫入液晶的一次RGB數(shù)據(jù)就完成了。</p><p><b>  6.5圖形顯示&l

74、t;/b></p><p>  顯示圖形程序,接到光標的位置(xaddress,yaddress)和圖形的長寬還有整個圖形的數(shù)據(jù)data,然后開始從第一個光標的位置開始掃描整張圖形,長度從0到picture_long,寬度從0到picture_wide,這些都是在主程序中輸入的,然后先引用LcD-setcursor()函數(shù)設置光標設置,然后引用LCD-writeram-prepare()函數(shù)使RAM準備好,

75、在每次寫入RAM前需要先調用這個函數(shù)。由于Image2lcd軟件的出來的是8位的2位進制數(shù)據(jù),12864液晶用的是16位的數(shù)據(jù),所以要有2個8位合成1個16位的數(shù)據(jù)的運算,然后再調用LcD_write-ram()送入RGB數(shù)據(jù),讓液晶顯示所要圖形,這樣的整個圖形就完成了</p><p><b>  程序見附錄</b></p><p>  圖6.1主程序流程圖</

76、p><p><b>  電路調試</b></p><p>  本設計的調試涉及到硬件和軟件的調試,硬件調試是建立在軟件調試的基礎上,只有保證硬件正常工作后才能對軟件進行調試。</p><p><b>  7.1 硬件調試</b></p><p>  一塊電路板做好后,并不能保證不會出錯,在調試與檢測過程

77、中,利用萬能表檢測供電是否正常;線路是否有短路、斷路等現(xiàn)象。</p><p>  我們在硬件調試的時候發(fā)現(xiàn)單片機和液晶12864一切正常,比較順利。</p><p><b>  7.2 軟件調試</b></p><p>  我們做這個設計的時候碰到的最大的問題就是軟件的調試,編寫程序需要非常細心,邏輯思維要強,頭腦要靈活,第一次接觸LCD128

78、64電路,而且單片機編程理解得不是很透,在一開始沒有一點眉目,在反復仔細翻閱了它的數(shù)據(jù)手冊,并參考網(wǎng)上別人的思路,在老師的幫助下,能實現(xiàn)了它的大部分功能。</p><p>  當程序寫好后用ASP 下載線和AVR_fighter 軟件把寫好的程序燒錄進單片機測試其工作情況和查找漏洞,并逐步完善整個設計功能。 </p><p><b>  小結</b></p&g

79、t;<p>  從設計題目下來到現(xiàn)在歷時兩個多星期,克服了硬件和軟件上各種問題,實現(xiàn)大部分的功能。因為本設計硬件比較簡單,在硬件上比較順利,其他功能都正常。而主要的難題是在軟件設計上,在軟件上碰到以下幾點問題:</p><p>  (1) 對LCD 寫入命令和數(shù)據(jù)的格式、時序弄亂。</p><p> ?。?) 對LCD 基本指令集、擴充指令集比較模糊,在繪制圖形部分時滯留了很

80、久。</p><p> ?。?) 對圖形的改變位置大小抓不住頭緒,圖形實心虛心理解不透。</p><p> ?。?) 在設計時鐘部分時,單片機的定時器/計數(shù)器、中斷部分出錯。</p><p>  而這些問題都是跟自己對單片機的掌握不夠深有關,這也提醒了我們要抓好基礎功,基礎好了,對付起這些問題才會得心應手。</p><p><b>

81、  參考文獻</b></p><p>  [1] 李維諟、郭強等, 液晶顯示應用手冊, 電子工業(yè)出版社, 北京,2002</p><p>  [2] 劉永智、楊開愚等, 液晶顯示技術,電子科技大學出版社,成都,2000</p><p>  [3] 郭強,液晶顯示應用技術,電子工業(yè)出版社,北京,2000</p><p>  [4]

82、 范志新,液晶器件工藝基礎,北京郵電大學出版社,北京,2000</p><p>  [5] 施善定等,液晶與顯示應用,華東化工學院出版社,上海,1993</p><p>  [6] 李宏、張家田等,液晶顯示器件應用技術,機械工業(yè)出版社,北京,2004</p><p>  [7] 趙秀珍、單永磊,單片微型計算機原理及其應用,中國水力出版社,北京,2001</p&

83、gt;<p>  [8] 楊光友、朱宏輝,單片微型計算機原理及接口技術,中國水利水電出版社,北京,2002</p><p>  [9] 蘇偉斌,8051系列單片機應用手冊,科學出版社,北京,1997</p><p>  [10] 胡漢才,單片機原理及其接口技術,清華大學出版社,北京,1999</p><p>  [11] 王承發(fā) 劉巖,微機接口技術,高

84、等教育出版社,北京,1996</p><p>  [12] 耿長清,單片機應用技術,化學工業(yè)出版社,北京,1996</p><p>  [13] 徐愛卿等,單片微型計算機及其應用,北京航空學院出版社,北京,1986</p><p>  [14] 余永權,F(xiàn)LASH單片機原理及應用,電子工業(yè)出版社,北京,1997</p><p><b&g

85、t;  附錄</b></p><p><b>  附錄A 軟件程序</b></p><p>  //獨立按鍵檢測驅動</p><p>  //說明:按鍵必須在同一組IOA或IOB口,按一次產生一個有效按鍵值</p><p>  #include "_my51.h"</p>&

86、lt;p>  //%%%%%%%%%%%%%%移植修改該區(qū)域內參數(shù)%%%%%%%%%%%%%%%%%%%//</p><p>  #define SCANTTIME 1000//按鍵延時檢測時間</p><p>  #define KEYWORD 0x0f</p><p>  extern bit Muen;</p><p>  ex

87、tern bit Slect;</p><p>  extern bit Adjadd;</p><p>  extern bit Adjsub;</p><p>  //功能:鍵盤檢測程序</p><p><b>  //輸入?yún)?shù):無</b></p><p>  //輸出參數(shù):輸出鍵盤檢測結果;

88、1表示對應按鍵按下</p><p>  char scankey()</p><p><b>  {int key;</b></p><p>  P3|=KEYWORD;</p><p>  key=P3&KEYWORD;</p><p>  if(key!=KEYWORD)</p&

89、gt;<p>  {int i=SCANTTIME;</p><p>  while(i--);</p><p>  while((P3&KEYWORD)!=KEYWORD);</p><p><b>  }</b></p><p>  return key^=KEYWORD;</p>

90、<p><b>  }</b></p><p>  void getkey()</p><p>  {switch(scankey())</p><p>  {case 0x01:</p><p><b>  Muen=1;</b></p><p><b&g

91、t;  break;</b></p><p>  case 0x02:</p><p><b>  Slect=1;</b></p><p><b>  break;</b></p><p>  case 0x04:</p><p><b>  Adja

92、dd=1;</b></p><p><b>  break;</b></p><p>  case 0x08:</p><p><b>  Adjsub=1;</b></p><p><b>  break;</b></p><p><

93、b>  default:</b></p><p><b>  break;</b></p><p><b>  }}</b></p><p><b>  My51</b></p><p>  STC89C52頭文件</p><p>  

94、#ifndef __MY51_H__</p><p>  #define __MY51_H__</p><p>  /* BYTE Registers */</p><p>  sfr P0 = 0x80; //P0口寄存器</p><p>  sfr P1 = 0x90; //P1口寄存器</p><

95、p>  sfr P2 = 0xA0; //P2口寄存器</p><p>  sfr P3 = 0xB0; //P3口寄存器</p><p>  /* P3 */</p><p>  sbit RD = P3^7;</p><p>  sbit WR = P3^6;</p><p>

96、  sbit T1 = P3^5;</p><p>  sbit T0 = P3^4;</p><p>  sbit INT1 = P3^3;</p><p>  sbit INT0 = P3^2;</p><p>  sbit TXD = P3^1;</p><p>  sbit RXD =

97、P3^0;</p><p>  sfr PSW = 0xD0; //處理器的狀態(tài)寄存器</p><p>  /* PSW */</p><p>  sbit CY = PSW^7;//進位標志位</p><p>  sbit AC = PSW^6;//輔助進位標志位</p><p>  sbi

98、t F0 = PSW^5;//通用標志位</p><p>  sbit RS1 = PSW^4;//寄存器組選擇位高位</p><p>  sbit RS0 = PSW^3;//寄存器組選擇位低位</p><p>  sbit OV = PSW^2;//溢出標志位</p><p>  sbit P = PS

99、W^0; //奇偶標志位;8052 only</p><p>  sfr ACC = 0xE0; //A寄存器</p><p>  sfr B = 0xF0; //B寄存器</p><p>  sfr SP = 0x81; //堆棧指針寄存器</p><p>  sfr DPL = 0x82; //數(shù)據(jù)地址寄存器

100、低字節(jié)</p><p>  sfr DPH = 0x83; //數(shù)據(jù)地址寄存器高字節(jié)</p><p>  sfr PCON = 0x87; //電源控制寄存器,不可位尋址,</p><p>  //bit7:SMOD,串行口通信波特率控制位置位使波特率翻倍;</p><p>  //bit3:GF1通用標志位;</p>

101、<p>  //bit2:GF0通用標志位;</p><p>  //bit1:PDWN低功耗標志位置位進入低功耗模式;</p><p>  //bit0:空閑標志位置位進入空閑模式;</p><p>  sfr TCON = 0x88; //定時器控制寄存器</p><p>  /* TCON */</p>

102、<p>  sbit TF1 = TCON^7; //定時器1溢出中斷標志,響應中斷后由處理器清零</p><p>  sbit TR1 = TCON^6; //定時器1控制位,置位時定時器1工作,復位時定時器1停止工作</p><p>  sbit TF0 = TCON^5; //定時器0溢出標志位,定時器0溢出時置位。處理器響應中斷后清除該位</p>

103、<p>  sbit TR0 = TCON^4; //定時器0控制位,置位時定時器0工作。復位時定時器0停止工作</p><p>  sbit IE1 = TCON^3; //外部中斷1觸發(fā)標志位,當檢測到P3.3有從高到低的跳變電平時置位,處理器響應中斷后,由硬件清除該位。</p><p>  sbit IT1 = TCON^2; //中斷1觸發(fā)方式控制位,置位

104、時為跳變觸發(fā),復位時為低電平觸發(fā)</p><p>  sbit IE0 = TCON^1; //外部中斷0觸發(fā)標志位,當檢測到P3.2有從高到低的跳變電平時置位,處理器響應中斷后,由硬件清除該位。</p><p>  sbit IT0 = TCON^0; //中斷0觸發(fā)方式控制位,置位時為跳變觸發(fā),復位時為低電平觸發(fā)</p><p>  sfr TMOD

105、= 0x89; //定時器控制寄存器,不可位尋址</p><p>  //bit7:GATE,當GATE置位時,定時器1僅當TR1=1并且INT1=1時才工作,如果GATE=0 置位,TR1定時器1就開始工作</p><p>  //bit6:C/T,定時器1方式選擇,如果C/T=1定時器1以計數(shù)方式工作,C/T=0時以定時方式工作</p><p>  //bit

106、5:M1,定時器1模式選擇位高位</p><p>  //bit4:M0,定時器1模式選擇位低位</p><p>  //bit3:GATE,當GATE置位時,定時器0僅當TR0=1并且INT0=1時才工作,如果GATE=0 置位,TR0定時器0就開始工作</p><p>  //bit2:C/T,定時器0方式選擇,如果C/T=1定時器0以計數(shù)方式工作,C/T=0時

107、以定時方式工作</p><p>  //bit1:M1,定時器0模式選擇位高位</p><p>  //bit0:M0,定時器0模式選擇位低位</p><p>  //方式0:為十三位定時/計數(shù)器方式,定時器溢出時置位TF0或TF1并產生中斷</p><p>  //方式1:將以十六位定時/計數(shù)器方式工作,定時器溢出時置位TF0或TF1并產生

108、中斷</p><p>  //方式2:8位自動重裝工作方式,定時器的低8位TL0或TL1用來計數(shù),高8位TH0或TH1用來存放重裝數(shù)值,</p><p>  //當定時器溢出時,TH中的數(shù)值被裝入TL中定時器0和定時器1在方式2時是同樣的定時器1常用此方式來產生波特率。</p><p>  //方式3:定時器0成為兩個8位定時/計數(shù)器,TH0和TL0 TH0對應于T

109、MOD中定時器0的控制位,而TL0占據(jù)了TMOD中定時器1的控制位,這樣定時器1將不能產生溢出中斷了,</p><p>  //但可用于其它不需產生中斷的場合,如作為波特率發(fā)生器或作為定時計數(shù)器被軟件查詢,當系統(tǒng)需要用定時器1來產生波特率而又同時需要兩個定時/計數(shù)器時這種工作方式十分有用,</p><p>  //當定時器1設置為工作方式3時將停止工作。</p><p&

110、gt;  sfr TL0 = 0x8A; //定時器0低字節(jié)</p><p>  sfr TL1 = 0x8B; //定時器1低字節(jié)</p><p>  sfr TH0 = 0x8C; //定時器0高字節(jié)</p><p>  sfr TH1 = 0x8D; //定時器1高字節(jié)</p><p>  sfr IE =

111、 0xA8; //中斷使能寄存器;</p><p>  /* IE */</p><p>  sbit EA = IE^7; //使能標志位置位則所有中斷使能復位則禁止所有中斷</p><p>  sbit ET2 = IE^5; //定時器2中斷使能;8052 only</p><p>  sbit ES = IE^4

112、; //串行通信中斷使能</p><p>  sbit ET1 = IE^3; //定時器1中斷使能</p><p>  sbit EX1 = IE^2; //外部中斷1使能</p><p>  sbit ET0 = IE^1; //定時器0中斷使能</p><p>  sbit EX0 = IE^0; //外部中斷0使能&l

113、t;/p><p>  sfr IP = 0xB8; //中斷優(yōu)先級寄存器,從低比特到高比特,中斷優(yōu)先級從高到低</p><p>  /* IP */</p><p>  sbit PT2 = IP^5; //定時器2中斷優(yōu)先級;8052 only</p><p>  sbit PS = IP^4; //串行通信中斷優(yōu)先級&l

114、t;/p><p>  sbit PT1 = IP^3; //定時器1中斷優(yōu)先級</p><p>  sbit PX1 = IP^2; //外部中斷1優(yōu)先級</p><p>  sbit PT0 = IP^1; //定時器0中斷優(yōu)先級</p><p>  sbit PX0 = IP^0; //外部中斷0優(yōu)先級</p>

115、<p>  sfr SCON = 0x98; //串行控制寄存器</p><p>  /* SCON */</p><p>  sbit SM0 = SCON^7;//串行模式選擇</p><p>  sbit SM1 = SCON^6;//串行模式選擇</p><p>  sbit SM2 = SCON^5;/

116、/多機通訊允許位,當模式0時此位應該為0模式1時當接收到停止位時該位將置位模式2或模式3時當接收的第9位數(shù)據(jù)為1時將置位</p><p>  sbit REN = SCON^4;//串行接收允許位</p><p>  sbit TB8 = SCON^3;//在模式2和模式3中將被發(fā)送數(shù)據(jù)的第9位</p><p>  sbit RB8 = SCON^2;/

117、/在模式0中該位不起作用,在模式1中該位為接收數(shù)據(jù)的停止位,在模式2和模式3中為接收數(shù)據(jù)的第9位。</p><p>  sbit TI = SCON^1;//發(fā)送中斷標志位,由軟件清零</p><p>  sbit RI = SCON^0;//接收中斷標志位,由軟件清零</p><p>  //SM0SM1工作方式功能波特率</p&

118、gt;<p>  //00方式08位同步移位寄存器fosc/12</p><p>  //01 方式110位UART可變</p><p>  //10 方式211位UARTfosc/64或fosc/32</p><p>  //110 方式311位UART可變</p>&

119、lt;p>  sfr SBUF = 0x99; //串口數(shù)據(jù)緩沖器</p><p>  /* 8052 Extensions */</p><p>  sfr T2CON = 0xC8; //定時器2控制寄存器</p><p>  /* T2CON */</p><p>  sbit TF2 = T2CON^7;//

溫馨提示

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

評論

0/150

提交評論