陜西科技大學(xué) 顯示器驅(qū)動課程設(shè)計任務(wù)書 電信 學(xué)院 電子 專業(yè) 141 班級 學(xué)生: 曹 帥
題目: 點陣字符LCD靜態(tài)數(shù)字顯示
課程設(shè)計從 2017 年 12月 25 日起到 2018 年 1 月 7 日
1、課程設(shè)計的內(nèi)容和要求(包括原始數(shù)據(jù)、技術(shù)要求、工作要求等):
熟悉51系列(兼容)單片機軟件開發(fā)系統(tǒng)Keil C51集成開發(fā)環(huán)境(u Vison系列編譯器)和Proteus電路分析與實物仿真軟件。
了解點陣字符LCD模塊的內(nèi)部結(jié)構(gòu)及字符字模,熟悉點陣字符LCD顯示器驅(qū)動的基本原理。設(shè)計點陣字符LCD顯示器的驅(qū)動電路,編寫程序?qū)崿F(xiàn)在點陣字符LCD顯示器上的靜態(tài)數(shù)字顯示。
電路方面主要包括以下3部分。(a)設(shè)計單片機的最小系統(tǒng)(包括復(fù)位電路和外接的晶振電路),并確定相關(guān)元器件參數(shù)。(b)設(shè)計單片機與點陣字符LCD模塊間的控制線,主要包括控制字符LCD顯示器的數(shù)據(jù)/指令寄存器選擇、讀/寫選擇、使能信號和I/O數(shù)據(jù)傳輸線等連線。(c)采用直接訪問時單片機P0口的上拉電阻; LCD模塊的電源及偏壓電路。
編寫點陣字符LCD顯示器靜態(tài)數(shù)字顯示程序,實現(xiàn)數(shù)字(0—9)的信息顯示。顯示內(nèi)容自定,如顯示學(xué)號。
2、對課程設(shè)計成果的要求〔包括圖表、實物等硬件要求〕:
(1)利用電路設(shè)計軟件(Proteus 軟件)繪制陣字符LCD模塊驅(qū)動電路的原理圖,并列出元器件清單。原理圖應(yīng)包括標題欄。
(2)編寫陣字符LCD顯示器靜態(tài)數(shù)字顯示的匯編語言或C語言源程序,并給出程序流程圖。
(3)在Keil C51與Proteus的聯(lián)機調(diào)試下完成的陣字符LCD顯示器靜態(tài)數(shù)字顯示的仿真結(jié)果或制作實物。
(4)在課程設(shè)計報告中對上述內(nèi)容作適當說明。
3、課程設(shè)計工作進度計劃:
時間 | 設(shè)計任務(wù)及要求 | 12.25-12.26
| 查閱資料,確定設(shè)計方案
| 12.27-12.28
| 熟悉點陣字符LCD模塊的結(jié)構(gòu)及工作原理
| 12.29-12.30
| 熟悉設(shè)計軟件(Keil C51和Proteus)
| 12.31
| 設(shè)計點陣字符LCD模塊的驅(qū)動電路
| 1.1-1.2
| 編寫點陣字符LCD顯示器的靜態(tài)數(shù)字顯示程序
| 1.3-1.4
| 硬件電路與驅(qū)動程序的調(diào)試、仿真/實物制作(選作)
| 1.5-1.6
| 撰寫課程設(shè)計報告
| 1.7
| 驗收設(shè)計成果,交課程設(shè)計報告
|
指導(dǎo)教師: 日期:
教研室主任: 日期:
目 錄
1 選題背景
2 方案論證
2.1設(shè)計原理
2.2硬件方案
2.3軟件方案
2.4方案特點
3 點陣字符LCD靜態(tài)數(shù)字顯示設(shè)計過程論述
3.1系統(tǒng)硬件框圖設(shè)計
3.2系統(tǒng)原理圖設(shè)計
3.3系統(tǒng)軟件設(shè)計
3.3.1程序流程圖
3.3.2軟件代碼
4 結(jié)果分析
5 總結(jié)
6 設(shè)計體會
參考文獻
1 選題背景本課程設(shè)計命題為點陣字符LCD靜態(tài)數(shù)字顯示,涉及顯示技術(shù)、電子技術(shù)、單片微型計算機、程序設(shè)計等相關(guān)課程內(nèi)容,針對LCD顯示器設(shè)計驅(qū)動電路,編寫驅(qū)動程序。要求學(xué)生熟悉51系列(兼容)單片機軟件開發(fā)系統(tǒng)Keil C51集成開發(fā)環(huán)境(u Vison系列編譯器)和Proteus電路分析與實物仿真軟件。了解點陣字符LCD模塊的內(nèi)部結(jié)構(gòu)及字符字模,熟悉點陣字符LCD顯示器驅(qū)動的基本原理。設(shè)計點陣字符LCD顯示器的驅(qū)動電路,編寫程序?qū)崿F(xiàn)在點陣字符LCD顯示器上的靜態(tài)數(shù)字顯示。通過本次課設(shè),使學(xué)生運用上述專業(yè)知識,進行一次綜合性訓(xùn)練。既有助于鞏固學(xué)生所學(xué)專業(yè)知識、培養(yǎng)獨立設(shè)計能力、工程繪圖能力、編寫技術(shù)報告,提高綜合運用知識的能力,也能為畢業(yè)設(shè)計以及未來工作打下基礎(chǔ)。 2 方案論證2.1設(shè)計原理 以AT89C51單片機為核心,編寫相應(yīng)的軟件程序,設(shè)計復(fù)位電路以及外界晶振電路、上拉電阻、偏壓電路等使單片機與點陣字符LCD模塊(LM016L)相連接最終實現(xiàn)靜態(tài)數(shù)字(201412040112)的顯示。 2.2硬件方案硬件電路由三部分組成,即單片機復(fù)位電路、外接的晶振電路、LCD顯示電路。各部分實現(xiàn)功能及設(shè)計概要如下。 - 單片機復(fù)位電路、外接的晶振電路:單片機正常工作需要
- LCD顯示電路:顯示數(shù)字字符信息
- 復(fù)位電路設(shè)計概要:采用手動按鈕復(fù)位采用方法是在RST端和正電源Vcc之間 接一個按鍵開關(guān)而本設(shè)計晶振采用的是1MHz因此起振時間為10ms,由于人的動作再快也會使按鈕保持接通達數(shù)十毫秒,所以完全滿足復(fù)位的時間要求。
- LCD顯示電路設(shè)計概要:本次課設(shè)任務(wù)是點陣字符靜態(tài)數(shù)字顯示,因此選擇LM016L具備字符發(fā)生器的顯示器件。
表2-1 LM016L引腳功能 編 號 | 符 號 | 引腳說明 | 編 號 | 符 號 | 引腳說明 | 1 | VSS | 電源地 | 9 | D2 | 數(shù)據(jù) | 2 | VDD | 電源正極 | 10 | D3 | 數(shù)據(jù) | 3 | VEE | 負電壓供電 | 11 | D4 | 數(shù)據(jù) | 4 | RS | 數(shù)據(jù)/命令 | 12 | D5 | 數(shù)據(jù) | 5 | R/ W | 讀/寫選擇 | 13 | D6 | 數(shù)據(jù) | 6 | E | 使能信號 | 14 | D7 | 數(shù)據(jù) | 7 | D0 | 數(shù)據(jù) |
|
|
| 8 | D1 | 數(shù)據(jù) |
|
|
|
2.3軟件方案本設(shè)計軟件部分的主要完成功能是定義1602控制引腳、確定要顯示的數(shù)字字符內(nèi)容即學(xué)號、讀指令數(shù)據(jù)操作、寫指令數(shù)據(jù)操作、LCD初始化。根據(jù)軟件的功能劃分軟件設(shè)計模塊結(jié)構(gòu),如圖2-1所示。
圖2-1 軟件功能模塊結(jié)構(gòu)(見附件)
各個模塊具體任務(wù)如下: - LCD初始化模塊:設(shè)置顯示模式,開光標和光標閃爍,清屏。
- 讀指令數(shù)據(jù)操作:判斷是否忙碌
- 寫指令數(shù)據(jù)操作:完成寫指令和寫數(shù)據(jù)操作,實現(xiàn)字符的顯示
2.4方案特點該方案軟件方面采用C語言進行編譯,相對于匯編語言其具有更加靈活,可移植性強,庫函數(shù)多等特點。硬件方面選用LM016L作為LCD顯示屏是因為,用LCD顯示一個字符時比較復(fù)雜,但LM016L內(nèi)帶字符發(fā)生器,顯示字符就變得簡單,讓控制器工作在文本方式,根據(jù)在LCD上開始顯示的行列號及每行的列數(shù)找出顯示RAM對應(yīng)的地址,設(shè)立光標,在此送上該字符對應(yīng)的代碼即可。 3 點陣字符LCD靜態(tài)數(shù)字顯示設(shè)計過程論述3.1系統(tǒng)硬件框圖設(shè)計根據(jù)確定的硬件方案設(shè)計系統(tǒng)硬件框圖,包含晶振電路為單片機提供時鐘信號,復(fù)位電路保證可以進行復(fù)位操作以及LCD顯示電路進行數(shù)字顯示。如圖3-1所示。 圖3-1系統(tǒng)硬件框圖(見附件)
3.2系統(tǒng)原理圖設(shè)計根據(jù)設(shè)計要求和硬件框圖設(shè)計系統(tǒng)原理圖,如圖3-2所示。 
圖3-2 系統(tǒng)原理圖 單片機的管腳資源分配:其中P0口為作為LCD數(shù)據(jù)信號口,P3.4口作為使能信號端 P3.5口作為數(shù)據(jù)/命令選擇端,P3.6口作為讀/寫選擇端,硬件系統(tǒng)元器件清單如下表3-1所示。 表3-1硬件系統(tǒng)元器件清單 編 號 | 符 號 | 屬性 | 1 | R1 | 10K | 2 | R2 | 10K | 3 | C1 | 10uf | 4 | C2 | 30pf | 5 | C3 | 30pf | 6 | U1 | AT89C51 | 7 | LCD1 | LM016L | 8 | RP1 | 10K | 9 | X1 | 4pf |
|
|
| 3.3系統(tǒng)軟件設(shè)計3.3.1程序流程圖 該設(shè)計流程大致包括液晶屏初始化、清屏、確定顯示字符地址、定位光標位置、字符顯示等具體流程如下圖3-3所示。
      
 
   圖3-3 程序流程圖 3.3.2軟件代碼 1) LCD頭文件功能2) LCD顯示子程序文件功能- 保證LCD處于空閑狀態(tài)
- 根據(jù)MODE類型執(zhí)行寫數(shù)據(jù)或?qū)懼噶畈僮?/font>
- 執(zhí)行清屏、光標顯示設(shè)置等操作
- 確定光標位置,寫字符串數(shù)據(jù)
最后通過使用keil uvison4軟件將編輯好的程序文件錄入protues軟件中的硬件原理圖的AT89C51單片機中進行仿真,并成功得到學(xué)號的顯示,完成設(shè)計任務(wù)。 4 結(jié)果分析該設(shè)計最終將軟件程序錄入單片機后進行仿真測試,成功的在液晶顯示屏上進行持續(xù)穩(wěn)定的靜態(tài)數(shù)字即201412040112學(xué)號的顯示。因此可以得出該設(shè)計的硬件方案與軟件方案的正確性,更進一步論證了硬件電路原理圖的合理性,包括其中的電容、電阻、晶振等基本元器件參數(shù)確定是完全符合設(shè)計要求的。同時也驗證了軟件程序的功能性是滿足要求的,可以成功實現(xiàn)所定義的數(shù)字顯示功能并且不會出現(xiàn)其他內(nèi)容的顯示,沒有出現(xiàn)花屏等其他錯誤的顯示效果,足以看出該軟件程序的正確性。進而更加驗證了以AT89C51單片機為核心,編寫相應(yīng)的軟件程序,設(shè)計復(fù)位電路以及外界晶振電路、上拉電阻、偏壓電路等使單片機與點陣字符LCD模塊(LM016L)相連接最終實現(xiàn)靜態(tài)數(shù)字(201412040112)的顯示設(shè)計原理的正確性。仿真結(jié)果圖如圖4-1所示。 圖4-1 仿真結(jié)果圖 5 總結(jié)此次課設(shè)雖然已經(jīng)成功完成仿真要求,但其中的關(guān)鍵步驟的正確性是該設(shè)計能夠成功實現(xiàn)的基礎(chǔ),最重要的兩點就是,單片機與液晶的接口要滿足液晶的時序要求,軟件編程中是要進行正確的初始化、操作及寫入顯示內(nèi)容的代碼。因此將這兩個關(guān)鍵步驟的設(shè)計內(nèi)容成功確定是本次課設(shè)的工作重點,在完成了大體的方案步驟后,接下來便是對硬件方案中的一些細節(jié)進行優(yōu)化,參數(shù)進行確定,對軟件程序進行功能性測試等工作,最終成功完成課設(shè)設(shè)計任務(wù)。 6 設(shè)計體會本次課設(shè)從 2017 年 12月 25 日起到 2018 年 1 月 7 日歷時兩周,從開始的查閱資料,初步確定設(shè)計方案,然后學(xué)習(xí)protues以及keil uvison4軟件的基本功能操作,在具備了一定的軟件使用能力后便開始進行硬件電路的設(shè)計以及軟件程序的編寫,最后進行電路與驅(qū)動程序的調(diào)試與仿真并成功得出結(jié)果,整個設(shè)計過程中遇到過一些問題,但在老師的兩次課設(shè)指導(dǎo),并且查閱資料以及與同學(xué)的交流下都得以解決,而我認為課設(shè)得出結(jié)果是重要的,但是在這個查閱、學(xué)習(xí)、交流、集各方面知識為自己所用的這個過程才是我最大的收獲,因為這個過程不單單是學(xué)習(xí)一定的書本知識那樣簡單,其對于我們以后的生活和工作的是具有巨大的幫助的,此次課設(shè)雖然已經(jīng)完成,但是它所帶給我的啟發(fā)與解決問題的思路和方法將會在我以后的工作和生活中一直幫助著我.
參考文獻
[1]作者袁東 周新國.51單片機典型應(yīng)用30例.清華大學(xué)出版社.出版時間2016年7月1日 [2]作者徐愛鈞 徐陽 Keil C51單片機高級語言應(yīng)用編程與實踐.電子工業(yè)出版社.出版時間2013年12月1日
- #include <reg52.h>
- typedef unsigned char uchar;
- typedef unsigned int uint;
-
- sbit En = P3^4;
- sbit Rs = P3^5;
- sbit Wr = P3^6; //定義1602控制引腳
- uchar code D[]={"2014120404112"};
-
- /*===========================================================
- 1602需要的函數(shù)
- ========================================================== */
- void Read_Busy() //讀1602指令,判斷是否忙碌
- {
- uchar busy;
- P0 = 0xff;
- Rs = 0;
- Wr = 1;
- do
- {
- En = 1;
- busy = P0;
- En = 0;
- }while(busy & 0x80);
- }
-
- void WrOrder_1602(uchar order) //1602寫指令
- {
- Read_Busy();
- Rs = 0;
- Wr = 0;
- P0 = order;
- En = 1;
- En = 0;
- }
- void Init_1602() //液晶初始化
- {
- WrOrder_1602(0x38); //設(shè)置顯示模式
- WrOrder_1602(0x0f); // 開光標和光標閃爍
- WrOrder_1602(0x01); //清屏
-
- WrOrder_1602(0x06); //寫一數(shù)據(jù)后光標自動加一
- }
-
- void WrData_1602(uchar Data) //寫一個數(shù)據(jù)
- {
- Read_Busy();
- Rs = 1;
- Wr = 0;
- P0 = Data;
- En = 1;
- En = 0;
- }
-
- void WrD_1602(uchar x, uchar n, uchar *D) //第x行第n(取0~15)個位置開始寫一個字符串
- {
- uchar i=0;
- if(x==1)
- {
- WrOrder_1602(0x80|n);//第一行第n個位置開始
- }
- else
- {
- WrOrder_1602(0x80|0x40|n);//第二行第n個位置開始
- }
- while(D[i]!='\0')
- {
- Read_Busy();
- Rs = 1;
- Wr = 0;
- P0 = D[i];
- En = 1;
- En = 0;
- i++;
- }
- }
-
-
- void main(void)
- {
- Init_1602(); //液晶初始化
- WrOrder_1602(0x38); //設(shè)置顯示模式
- WrOrder_1602(0x0f); // 開光標和光標閃爍
- WrOrder_1602(0x01); //清屏
- WrOrder_1602(0x06); //寫一數(shù)據(jù)后光標自動加一
-
-
- …………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
0.png (54.06 KB, 下載次數(shù): 41)
下載附件
2018-1-16 23:16 上傳
0.jpg (26.61 KB, 下載次數(shù): 49)
下載附件
2018-1-16 23:15 上傳
全部資料51hei下載地址:
點陣字符LCD靜態(tài)數(shù)字顯示.rar
(2.55 MB, 下載次數(shù): 57)
2018-1-16 10:12 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|