




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、成績評定表學生姓名鹿蕾班級學號1303020207專業(yè)測控技術與儀器課程設計題目點陣式液晶上滾屏設計評語組長簽字:成績日期201 年 月 日課程設計任務書學 院自動化與電氣工程學院專 業(yè)測控技術與儀器學生姓名鹿蕾班級學號1303020207課程設計題目點陣式液晶上滾屏設計實踐教學要求與任務:1、熟悉所確定的題目,從問題需求、程序結構、難點及關鍵技術等方面進行分析,形成系統(tǒng)的設計方案; 2、根據(jù)方案設計硬件電路; 3、軟件編程并調試;4、完成課程設計報告,打印程序,給出運行結果。工作計劃與進度安排:第18周(12月28日-12月31日):根據(jù)設計要求和內容查閱參考文獻或資料,提出設計方案,進行原
2、理設計。第20周(1月11日-1月15日):根據(jù)設計方案,完善設計,并進行硬件及軟件調試,測試,撰寫課程設計報告,答辯。指導教師: 201 年 月 日專業(yè)負責人:201 年 月 日學院教學副院長:2015年 月 日目錄一 設計要求11.1設計要求11.1.1 功能及技術指標要求11.1.2設計內容.11.2 設計目的.1二 系統(tǒng)整體設計方案.22.1總體方案.22.2系統(tǒng)方框圖22.3 設計元器件連接說明.2三 點陣式液晶下滾屏的設計.3四 系統(tǒng)運行結果及分析.74.1 程序調試及運行結果.74.2 結果分析.94.3 心得體會.9五 參考文獻.9六 附錄106.1 程序代碼.106.2 相應
3、漢字的顯示代碼.18一 設計要求1.1設計要求1.1.1 功能及技術指標要求利用51單片機+12864點陣液晶顯示器設計漢字滾屏(上滾)系統(tǒng),滾動周期小于5秒。1.1.2 設計內容完成以下設計環(huán)節(jié):1)(可選)使用Altium Desinger開發(fā)工具,設計電路原理圖與PCB制板圖。2)使用Uvision2開發(fā)平臺,采用C語言或匯編語言設計軟件程序。3)使用PROTEUS仿真軟件,設計仿真原理圖并運行軟件程序,完成系統(tǒng)仿真。1.2設計目的(1)利用51單片機+12864點陣液晶顯示器設計漢字滾屏(上滾)系統(tǒng),滾動周期小于5秒;(2)熟悉51單片機的內部結構和功能,合理使用其內部寄存器,能夠完成
4、相關軟件編程設計工作;(3)對軟件編程、排錯調試、相關軟件的使用技能等方面得到較全面的鍛煉和提高;(4)本次課程設計從硬件和軟件兩個方面入手,全面具體地掌握設計思路、方法和過程,使理論與實際相結合,充分地鍛煉了動手能力和思維擴展能力。二 系統(tǒng)整體設計方案2.1總體方案點陣式LCD液晶顯示,即在了解122*32A的內部結構,工作原理,編程方法,SED1250的特性,內部結構,時序特性,各個管教的功能,以及獲取字模的方法后,編寫一個完整的程序用HK-51仿真系統(tǒng)運行后確保無誤,并要在122*32A液晶顯示屏上顯示所要求顯示的內容。2.2系統(tǒng)方框圖圖12.3設計元器件連接說明:點陣式液晶顯示屏與80
5、51單片機管腳連接如下:第1腳:GND接地;第2腳:VCC接5v電源;第3腳:DB7DB0接8051芯片的P0.7P0.0口;第4腳:CS1接8051芯片的P2.3;CS3接8051芯片的P2.4口;第5腳:E端為使能端,當 E 端由高電平跳變成低電平時,液晶模塊執(zhí)行令(接8051芯片的P2.0口)第6腳:RS 為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。(接8051芯片的P2.1口)第7腳:R/W 為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當 RS和 R/W共同為低電平時可以寫入指令或者顯示地址,當 RS 為低電平 R/W 為高電平時可以讀忙信號,當 RS 為高
6、電平 R/W為低電平時可以寫入數(shù)據(jù)。接8051芯片的P2.2口;第8腳:/PES為復位信號,V0為可調;三 點陣式液晶下滾屏的設計如下圖2所示即為判斷當前LCD的狀態(tài),RS=0, 數(shù)據(jù)指令選擇,D/I(RS)="L" ,表示 DB7DB0 為顯示指令數(shù)據(jù),RW=1; R/W="H" ,E="H"數(shù)據(jù)被讀到DB7DB0。EN=1;EN下降源,_nop_(); /一個短延時。一直進行 while循環(huán),直到dat=0x00 。 圖2 判斷當前狀態(tài)的LCD 如圖3 所示即為液晶顯示屏幕的選擇函數(shù),若CSI=0 CS2=0則顯示全部,若CSI=
7、0 CS2=1則顯示左部,若CSI=1 CS2=0則顯示右部,若CSI=1 CS2=1則液晶不顯示。圖3 液晶顯示屏幕的選擇如圖4所示為延遲函數(shù)的顯示過程,外層i<50,內層j<110,否則一直循環(huán)。圖4 延遲函數(shù)主函數(shù)的實現(xiàn)過程如下圖5所示,先判斷LCD的當前狀態(tài),進行清屏操作,執(zhí)行循環(huán),每行128列,每個漢字占有32個字節(jié),通過全屏顯示,將字模上輸入的漢字在液晶屏上顯示出來并實現(xiàn)上滾的效果。開始輸入i;LCD()=12864Clear Screen(0)i=0 Ni<128? Yi+SetStartLine(i);Display(2,0,0*16,0);Display(2
8、,0,0*16,1);Display(2,0,0*16,2); Display(2,0,0*16,3);Display(2,0,0*16,4);Display(2,0,0*16,5)delay(50);圖4.4 主函數(shù)四 系統(tǒng)運行結果及分析4.1程序調試及運行結果1打開Keil C51集成開發(fā)環(huán)境,新建工程,文件,輸入代碼保存名為“text1.c”圖6編譯調試結果2.右鍵單擊source group1選中add file to group,選中“text1.c”文件單擊add如圖:圖7添加文件到組3.選中文件夾target1右鍵單擊 options for target,選中output勾選c
9、reat hex如圖:圖8生成text1.hex文件4.打開Proteus仿真系統(tǒng),單擊89c51選中program file選擇“text1.hex”文件,單擊ok圖9添加文件 5.單擊運行,結果如下圖:圖10運行結果4.2結果分析經(jīng)過字模提取漢字后,得到各個漢字,將其輸入到代碼中,結果如圖5.1所示如上圖可看出輸出結果出現(xiàn)了亂碼現(xiàn)象,可能原因是在運用字模時可能設置的參數(shù)有問題。經(jīng)過認真檢驗及調試,發(fā)現(xiàn)字模參數(shù)設置中字節(jié)倒序沒有選中。經(jīng)過重新設置字模參數(shù),縱向取模,字節(jié)倒序,保留,任何時候都取0,設置完成后再進行一次運行,則出現(xiàn)了正確結果。4.3 心得體會通過這次課程設計,不僅讓我了解了單片
10、機的仿真設計和單片機程序設計,也讓我真正的明白了LCD屏的顯示功能的強大。從剛開始對實驗不知所措,到老師上課認真講解和同學的熱情解答疑問讓我有了大概的了解,當自己動手做的時候碰到很多問題,在老師的和同學的幫助下慢慢的接近答案,最后終于完成這個課設,我感到一種成就感油然而生。這次給我留下了很深刻的印象,因為課設給我的不單單是編程上的進步,還提升我處理實際問題的能力以及溝通交流能力,總之十分感謝這次課設。五 參考文獻1謝維成 楊加國主編單片機原理與應用及C51程序設計,清華大學出版社,六 附錄6.1程序代碼#include <reg51.h>#include <intrins.h
11、>#define uint unsigned int#define uchar unsigned char#define DATA P0 /LCD12864數(shù)據(jù)線 sbit RS=P22; / 數(shù)據(jù)指令 選擇 sbit RW=P21; / 讀寫 選擇 sbit EN=P20; / 讀寫使能 sbit cs1=P24; / 片選1 sbit cs2=P23; / 片選2 /*定義中文字庫*/字體取模時的選項設置為:點陣格式為陰碼,取模方式為列行式,取模走向為逆向,文字大小為寬x高=16x16 uchar code Hzk=/*- 文字: 你 -*/*- 宋體12; 此字體下對應的點陣為:寬
12、x高=16x16 -*/0x04,0x04,0x04,0x04,0x04,0xFC,0x44,0x44,0x44,0x44,0x44,0xC4,0x04,0x04,0x04,0x00,0x80,0x40,0x20,0x18,0x06,0x01,0x00,0x00,0x40,0x80,0x40,0x3F,0x00,0x00,0x00,0x00,/*- 文字: 若-*/*- 宋體12; 此字體下對應的點陣為:寬x高=16x16 -*/0x04,0x04,0x74,0x54,0x54,0x54,0x54,0xFF,0x54,0x54,0x54,0x54,0x74,0x04,0x04,0x00,0x0
13、4,0x04,0x15,0x15,0x15,0x55,0x95,0x7F,0x15,0x05,0x15,0x15,0x1F,0x04,0x04,0x00,/*- 文字: 安 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=16x16 -*/0x10,0x10,0xF0,0x1F,0x10,0x10,0xF0,0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,0x80,0x41,0x22,0x14,0x08,0x16,0x61,0x00,0x00,0x7F,0x20,0x20,0x20,0x7F,0x00,0x00,/*- 文字: 好 -*/*- 宋
14、體12; 此字體下對應的點陣為:寬x高=16x16 -*/0x10,0x10,0x12,0xD2,0x56,0x5A,0x52,0x53,0x52,0x5A,0x56,0xD2,0x12,0x10,0x10,0x00,0x40,0x30,0x00,0x77,0x85,0x85,0x8D,0xB5,0x85,0x85,0x85,0xE7,0x00,0x10,0x60,0x00,/*- 文字: 便 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=16x16 -*/0x40,0x44,0x54,0x65,0xC6,0x64,0x54,0x44,0x00,0xFC,0x44,0x44,0xC4,
15、0x42,0x40,0x00,0x20,0x12,0x4A,0x82,0x7F,0x02,0x0A,0x92,0x60,0x1F,0x00,0x00,0xFF,0x00,0x00,0x00,/*- 文字: 是 - */*- 宋體12; 此字體下對應的點陣為:寬x高=16x16 -*/0x00,0x20,0x18,0xC7,0x44,0x44,0x44,0x44,0xFC,0x44,0x44,0x44,0x44,0x04,0x00,0x00,0x04,0x04,0x04,0x07,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x0
16、0,/*- 文字: 晴 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=16x16 -*/0x00,0xE0,0x00,0xFF,0x10,0x20,0x08,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0x00,0x00,0x01,0x00,0x00,0xFF,0x00,0x81,0x41,0x31,0x0D,0x03,0x0D,0x31,0x41,0x81,0x81,0x00,/*- 文字: 天 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=16x16 -*/0x00,0x00,0xE0,0x9C,0x84,0x84,0x84,0xF4,0x82,0
17、x82,0x83,0x82,0x80,0x80,0x00,0x00,0x00,0x20,0x10,0x08,0x06,0x40,0x80,0x7F,0x00,0x00,0x02,0x04,0x08,0x30,0x00,0x00,;/*狀態(tài)檢查,LCD是否忙*/voidCheckState()Uchar dat;/狀態(tài)信息(判斷是否忙) RS=0; / 數(shù)據(jù)指令選擇,D/I(RS)="L" ,表示 DB7DB0 為顯示指令數(shù)據(jù) RW=1; /R/W="H" ,E="H"數(shù)據(jù)被讀到DB7DB0 do DATA=0x00; EN=1;/EN
18、下降源 _nop_(); /一個短延時 dat=DATA; EN=0;dat=0x80 &dat; /僅當?shù)?位為0時才可操作(判別busy信號) while(!(dat=0x00); /*寫命令到LCD中*/SendCommandToLCD(uchar com)CheckState();/狀態(tài)檢查,LCD是否忙 RS=0; /向LCD發(fā)送命令。RS=0寫指令,RS=1寫數(shù)據(jù) RW=0;/R/W="L" ,E="HL"數(shù)據(jù)被寫到 IR 或 DR DATA=com; /com :命令 EN=1; _nop_(); _nop_(); EN=0; /E
19、N下降源 /*設置頁 0xb8是頁的首地址*/Void SetLine(uchar page)page=0xb8|page; /1011 1xxx 0<=page<=7 設定頁地址-X 0-7,8行為一頁64/8=8,共8頁 SendCommandToLCD(page); /*設定顯示開始行,0xc0是行的首地址*/ Void SetStartLine(uchar startline) startline=0xc0|startline; /1100 0000 SendCommandToLCD(startline); /設置從哪行開始:0-63,一般從0 行開始顯示 /*設定列地址-
20、Y 0-63 ,0x40是列的首地址*/ Void SetColumn(uchar column) column=column &0x3f; /column最大值為64,越出 0=<column<=63 column= 0x40|column; /01xx xxxxSendCommandToLCD(column); /*開關顯示,0x3f是開顯示,0x3e是關顯示*/Void SetOnOff(ucharonoff)onoff=0x3e|onoff; /0011 111x,onoff只能為0或者1 SendCommandToLCD(onoff);/*寫顯示數(shù)據(jù) */Void
21、 WriteByte(uchardat)CheckState();/狀態(tài)檢查,LCD是否忙 RS=1; /RS=0寫指令,RS=1寫數(shù)據(jù) RW=0;/R/W="L" ,E="HL"數(shù)據(jù)被寫到 IR 或 DR DATA=dat;/dat:顯示數(shù)據(jù) EN=1; _nop_(); _nop_(); EN=0;/EN下降源/*選擇屏幕screen: 0-全屏,1-左屏,2-右屏*/Void SelectScreen(uchar screen) switch(screen) case 0: cs1=0;/全屏顯示 _nop_(); _nop_(); _nop_()
22、; cs2=0; _nop_(); _nop_(); _nop_(); break; case 1: cs1=0;/左顯示屏 _nop_(); _nop_(); _nop_(); cs2=1; _nop_(); _nop_(); _nop_(); break; case 2: cs1=1;/右顯示屏 _nop_(); _nop_(); _nop_(); cs2=0; _nop_(); _nop_(); _nop_(); break; /*清屏screen: 0-全屏,1-左屏,2-右*/ Void ClearScreen(uchar screen) uchari,j;SelectScreen(
23、screen); for SetLine(i);SetColumn(0); for(j=0;j<64;j+) /控制列數(shù)0-63,共64列 WriteByte(0x00); /寫點內容,列地址自動加1 /*延時程序*/voiddelay(uint z)uinti,j;for(i=0; i<z; i+)for(j = 0; j < 110; j+);/*初始化LCD*/Void InitLCD() CheckState();SelectScreen(0);SetOnOff(0); /關顯示 SelectScreen(0);SetOnOff(1); /開顯示 SelectScre
24、en(0); ClearScreen(0);/清屏 SetStartLine(0); /開始行:0 /*顯示全角漢字*/ void Display(ucharss,ucharpage,ucharcolumn,uchar number) (i=0;i<16;i+) /控制頁數(shù)0-7,共8頁 int i;/選屏參數(shù),pagr選頁參數(shù),column選列參數(shù),number選第幾漢字輸出 SelectScreen(ss);column=column&0x3f;SetLine(page);/寫上半頁 SetColumn(column); /控制列 for(i=0;i<16;i+) /控
25、制16列的數(shù)據(jù)輸出 WriteByte(Hzki+32*number); /i+32*number漢字的前16個數(shù)據(jù)輸出 SetLine(page+1); /寫下半頁 SetColumn(column); /控制列 for(i=0;i<16;i+) /控制16列的數(shù)據(jù)輸出 WriteByte(Hzki+32*number+16);/i+32*number+16漢字的后16個數(shù)據(jù)輸出 /*主函數(shù)*/void main() uint i;InitLCD();/初始12864 ClearScreen(0);/清屏 while(1) for(i=128;i>1;i-) /12864有128
26、列,顯示開始行從0128切換,因此可以實現(xiàn)循環(huán)顯示 SetStartLine(i);/顯示開始行 Display(2,0,0*16,0);/顯示第一個字Display(2,0,1*16,1);/ 顯示第二個字int i;/選屏參數(shù),pagr選頁參數(shù),column選列參數(shù),number選第幾漢字輸出 SelectScreen(ss);column=column&0x3f;SetLine(page);/寫上半頁 SetColumn(column); /控制列 for(i=0;i<16;i+) /控制16列的數(shù)據(jù)輸出 WriteByte(Hzki+32*number); /i+32*n
27、umber漢字的前16個數(shù)據(jù)輸出 SetLine(page+1); /寫下半頁 SetColumn(column); /控制列 for(i=0;i<16;i+) /控制16列的數(shù)據(jù)輸出 WriteByte(Hzki+32*number+16);/i+32*number+16漢字的后16個數(shù)據(jù)輸出 /*主函數(shù)*/void main() uint i;InitLCD();/初始12864 ClearScreen(0);/清屏 while(1) for(i=128;i>1;i-) /12864有128列,顯示開始行從0128切換,因此可以實現(xiàn)循環(huán)顯示 SetStartLine(i);/顯
28、示開始行 Display(2,0,0*16,0);/顯示第一個字Display(2,0,1*16,1);/ 顯示第二個字Display(2,0,2*16,2);/ 顯示第三個字Display(2,0,3*16,3);/ 顯示第四個字 Display(1,0,4*16,4);/ 顯示第五個字Display(1,0,5*16,5);/ 顯示第六個Display(1,0,6*16,6);/ 顯示第七個Display(1,0,7*16,7);/ 顯示第八個SelectScreen(0);/選擇全屏顯示 delay(50); /延時 .6.2相應漢字的顯示代碼課設的幾個漢字顯示代碼如下:/*- 文字:
29、你 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=16x16 -*/0x04,0x04,0x04,0x04,0x04,0xFC,0x44,0x44,0x44,0x44,0x44,0xC4,0x04,0x04,0x04,0x00,0x80,0x40,0x20,0x18,0x06,0x01,0x00,0x00,0x40,0x80,0x40,0x3F,0x00,0x00,0x00,0x00,/*- 文字: 若 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=16x16 -*/0x04,0x04,0x74,0x54,0x54,0x54,0x54,0xFF,0x54,0x54,0x54,0
30、x54,0x74,0x04,0x04,0x00,0x04,0x04,0x15,0x15,0x15,0x55,0x95,0x7F,0x15,0x05,0x15,0x15,0x1F,0x04,0x04,0x00,/*- 文字: 安 -*/*- 宋體12; 此字體下對應的點陣為:寬x高=16x16 -*/0x10,0x10,0xF0,0x1F,0x10,0x10,0xF0,0x00,0x00,0xF8,0x08,0x08,0x08,0xF8,0x00,0x00,0x80,0x41,0x22,0x14,0x08,0x16,0x61,0x00,0x00,0x7F,0x20,0x20,0x20,0x7F,0x00,0x00,/*- 文字: 好 -*/*- 宋體12; 此字體下對
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)業(yè)科技與農(nóng)村文化創(chuàng)新基地人才培養(yǎng)模式創(chuàng)新考核試卷
- 溝通中的情感智力發(fā)展策略考核試卷
- 游藝設備適老化設計考核試卷
- 中醫(yī)艾灸試題及答案
- 單招考試面試題材及答案
- 寵物驅蟲試題及答案
- 電焊入場考試題及答案
- 泡面餐廳測試題及答案
- javajvm原理面試題及答案
- 社工職業(yè)考試試題及答案
- 2021年縣鄉(xiāng)人大換屆選舉調研報告
- 《計算機網(wǎng)絡基礎》課件-第1章
- 《太原星河灣規(guī)劃》課件
- (磁器口中國歷史文化街區(qū)風貌保護修復提升項目(一標段))招標文件
- 租賃轉購買設備協(xié)議
- 機械制圖-形成性任務4-國開(ZJ)-參考資料
- 第五講鑄牢中華民族共同體意識-2024年形勢與政策
- 2024年輸配電及用電工程職稱評審題庫-單選
- 工廠防汛安全培訓
- 三年級(下冊)西師版數(shù)學全冊重點知識點
- ASTMD638-03中文版塑料拉伸性能測定方法
評論
0/150
提交評論