版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 微機原理及應(yīng)用A</b></p><p><b> 課程設(shè)計</b></p><p> 題目: 12864字符圖形LCD顯示</p><p><b> 組別: </b></p><p><b> 班級: </b>
2、;</p><p><b> 目錄</b></p><p><b> 簡介4</b></p><p><b> 目的4</b></p><p><b> 基本功能要求4</b></p><p><b> 實
3、驗情況4</b></p><p><b> 基本原理6</b></p><p><b> 硬件連接圖6</b></p><p><b> IO譯碼7</b></p><p> 8255功能設(shè)定7</p><p><b&
4、gt; LCD功能設(shè)定8</b></p><p><b> 程序流程10</b></p><p><b> 編程實現(xiàn)11</b></p><p><b> 測試方案19</b></p><p><b> 測試結(jié)果19</b>
5、</p><p><b> 課設(shè)總結(jié)19</b></p><p><b> 簡介</b></p><p><b> 目的</b></p><p> 掌握8255并行接口芯片的內(nèi)部結(jié)構(gòu)和引腳,工作方式選擇,端口配置,使用方法和編程</p><p>
6、; 查閱LCD12864圖形顯示液晶芯片資料,掌握其顯示原理,引腳分布,硬件接口,工作方式,與MCU連接時序,寫命令和寫數(shù)據(jù)的方法,用戶指令集,擴充指令集,圖形顯示坐標,漢字顯示坐標,字符集,</p><p> LCD12864和8255初始化程序編程方法</p><p><b> 基本功能要求</b></p><p> 使用8255與
7、LCD12864顯示模塊,編程在LCD中心位置顯示漢字字符串“32微機原理及課程設(shè)計”</p><p> 編程從LCD中間最右端開始,人右向左滾動顯示“32位微機原理及課程設(shè)計”</p><p><b> 實驗情況</b></p><p> 第一屏:在LCD12864第二行和第三行顯示“西安理工大學(xué)”,“微機原理課設(shè)”</p>
8、<p> 第二屏:循環(huán)滾動顯示“西安理工大學(xué)”</p><p><b> 右邊界如圖:</b></p><p><b> 西</b></p><p><b> 西安</b></p><p><b> 西安理</b></p>
9、;<p><b> 西安理工</b></p><p><b> 西安理工大</b></p><p><b> 西安理工大學(xué)</b></p><p><b> 左邊界如圖:</b></p><p><b> 西安理工大學(xué)&l
10、t;/b></p><p><b> 安理工大學(xué)</b></p><p><b> 理工大學(xué)</b></p><p><b> 工大學(xué)</b></p><p><b> 大學(xué)</b></p><p><b>
11、 學(xué)</b></p><p> 第三屏:顯示2組頭像</p><p><b> 基本原理</b></p><p><b> 硬件連接圖</b></p><p><b> IO譯碼</b></p><p><b> 825
12、5功能設(shè)定</b></p><p><b> 工作方式選擇</b></p><p> 00:方式0 端口A(PA0~PA7)端口C</p><p><b> 01:方式1</b></p><p><b> 10:方式2</b></
13、p><p><b> LCD功能設(shè)定</b></p><p><b> 引腳說明</b></p><p><b> 八位并行時序圖</b></p><p> MCU寫資料到LCD</p><p> MCU從模塊讀出資料</p><
14、;p><b> 程序用到基本的指令</b></p><p> 程序用到的擴展指令集</p><p><b> 漢字顯示坐標</b></p><p> 顯示資料RAM(DDRAM)</p><p> 顯示半寬字形:把8位元資料寫入DDRAM范圍:02H~7FH</p>&
15、lt;p> 顯示CGRAM字形:把16位元資料寫入DDRAM</p><p> 顯示中文字形:將16位元寫入DDRAMK范圍:A1A1H~F7FEH</p><p> 繪圖RAM(GDRAM)</p><p><b> 關(guān)閉繪圖功能</b></p><p> 先將Y坐標寫入到GDRAM</p>
16、<p> 再將X坐標寫入到GDRAM</p><p> D15~D8寫入到RAM</p><p> D7~D0寫入到RAM</p><p><b> 打開繪圖功能</b></p><p><b> 程序流程</b></p><p><b>
17、 編程實現(xiàn)</b></p><p><b> MAIN函數(shù)</b></p><p> void main() </p><p><b> {</b></p><p> unsig
18、ned int i=9,j=0,k=1;</p><p> printf("Press any key to begin!\n\n");</p><p><b> getch();</b></p><p> while(!Startup());// 打開設(shè)備</p><p> Port
19、WriteByte(0x28b,0x80);/*設(shè)8255為方式0,C口輸出,A口輸出*/</p><p><b> clear();</b></p><p> while(!kbhit())</p><p><b> {</b></p><p><b> flush();<
20、;/b></p><p> fist_Display();//第一屏顯示</p><p> Sleep(1000);</p><p> move_xaut_Right();//右邊界滾動</p><p> move_xaut_Left();//左邊界滾動</p><p> move_x
21、aut_Right();</p><p> drawpic(&display_pic[0]);//顯示圖像</p><p><b> }</b></p><p> Cleanup();/*關(guān)閉設(shè)備*/</p><p><b> }</b></p><p&
22、gt;<b> 寫命令時序</b></p><p> void cmdsetup()</p><p><b> {</b></p><p> PortWriteByte(0x28a,0x00);//RS、RW拉低</p><p> Sleep(1);</p><
23、p> PortWriteByte(0x28a,0x04);//E拉高</p><p> Sleep(1);</p><p> PortWriteByte(0x28a,0x00);//E拉低</p><p> Sleep(1);</p><p><b> }</b></p>&
24、lt;p><b> 寫數(shù)據(jù)時序</b></p><p> void datasetup()</p><p><b> {</b></p><p> PortWriteByte(0x28a,0x01);//RS高,RW低</p><p> Sleep(1);</p>
25、<p> PortWriteByte(0x28a,0x05);//E高</p><p><b> Sleep(1);</b></p><p> PortWriteByte(0x28a,0x01);//E低</p><p><b> Sleep(1);</b></p><
26、p><b> }</b></p><p> 第一屏顯示“西安理工大學(xué)”,“微機原理課設(shè)”</p><p> void fist_Display()</p><p><b> {</b></p><p> unsigned char i;</p><p> P
27、ortWriteByte(0x288,0x01);</p><p> cmdsetup();</p><p> PortWriteByte(0x288,0x91);</p><p> cmdsetup();</p><p> Sleep(10);</p><p> for (i=0;i<12;)<
28、/p><p><b> {</b></p><p> PortWriteByte(0x288,display_xaut[i++]);</p><p> datasetup(); </p><p> PortWriteByte(0x288,display_xaut[i++]);</p><p&
29、gt; datasetup();</p><p><b> }</b></p><p> PortWriteByte(0x288,0x89);</p><p> cmdsetup();</p><p> Sleep(10);</p><p> for (i=0;i<12;)<
30、;/p><p><b> {</b></p><p> PortWriteByte(0x288,display_design[i++]);</p><p> datasetup();</p><p> PortWriteByte(0x288,display_design[i++]);</p><p
31、> datasetup();</p><p><b> }</b></p><p><b> }</b></p><p> 顯示圖像初始化LCD</p><p> void draw_pic_init()</p><p><b> {</b&
32、gt;</p><p> LcdWcom(0x03);</p><p><b> Sleep(1);</b></p><p> LcdWcom(0x0c);</p><p><b> Sleep(1);</b></p><p> LcdWcom(0x01);<
33、/p><p><b> Sleep(1);</b></p><p><b> }</b></p><p><b> 繪圖函數(shù)</b></p><p> void drawpic(unsigned char *p)</p><p><b>
34、 {</b></p><p> unsigned char i, j;</p><p> draw_pic_init();</p><p> LcdWcom(0x36);</p><p><b> Sleep(2);</b></p><p> LcdWcom(0x36);&
35、lt;/p><p><b> Sleep(2);</b></p><p> LcdWcom(0x3e);</p><p><b> Sleep(2);</b></p><p> LcdWcom(0x01);</p><p> for(i=0;i<32;i++)&l
36、t;/p><p><b> {</b></p><p> LcdWcom(0x80+i);</p><p> LcdWcom(0x80);</p><p> for(j=0;j<16;j++)</p><p><b> {</b></p><p
37、> LcdWdata(*p++);</p><p><b> }</b></p><p><b> }</b></p><p> for(i=0;i<32;i++)</p><p><b> {</b></p><p> LcdW
38、com(0x80+i);</p><p> LcdWcom(0x88);</p><p> for(j=0;j<16;j++)</p><p><b> {</b></p><p> LcdWdata(*p++);</p><p><b> }</b><
39、/p><p><b> }</b></p><p><b> }</b></p><p><b> 刷新函數(shù)</b></p><p> void flush()</p><p><b> {</b></p>&l
40、t;p> PortWriteByte(0x288,0x36);</p><p> cmdsetup();</p><p> PortWriteByte(0x288,0x30);</p><p> cmdsetup();</p><p><b> }</b></p><p><
41、b> 右邊界滾進</b></p><p> void move_xaut_Right()</p><p><b> {</b></p><p> unsigned char i;</p><p> PortWriteByte(0x288,0x01);</p><p>
42、 cmdsetup();</p><p> PortWriteByte(0x288,0x97);</p><p> cmdsetup();</p><p> for(i=0;i<2;)</p><p><b> {</b></p><p> PortWriteByte(0x288
43、,display_Right1[i++]);</p><p> datasetup();</p><p> PortWriteByte(0x288,display_Right1[i++]);</p><p> datasetup();</p><p><b> }</b></p><p>
44、 Sleep(100);</p><p> PortWriteByte(0x288,0x01);</p><p> cmdsetup();</p><p> PortWriteByte(0x288,0x96);</p><p> cmdsetup();</p><p> for(i=0;i<4;)&
45、lt;/p><p><b> {</b></p><p> PortWriteByte(0x288,display_Right2[i++]);</p><p> datasetup();</p><p> PortWriteByte(0x288,display_Right2[i++]);</p><
46、;p> datasetup();</p><p><b> }</b></p><p> Sleep(100);</p><p> PortWriteByte(0x288,0x01);</p><p> cmdsetup();</p><p> PortWriteByte(0x2
47、88,0x95);</p><p> cmdsetup();</p><p> for(i=0;i<6;)</p><p><b> {</b></p><p> PortWriteByte(0x288,display_Right3[i++]);</p><p> dataset
48、up();</p><p> PortWriteByte(0x288,display_Right3[i++]);</p><p> datasetup();</p><p><b> }</b></p><p> Sleep(100);</p><p> PortWriteByte(0x
49、288,0x01);</p><p> cmdsetup();</p><p> PortWriteByte(0x288,0x94);</p><p> cmdsetup();</p><p> for(i=0;i<8;)</p><p><b> {</b></p>
50、<p> PortWriteByte(0x288,display_Right4[i++]);</p><p> datasetup();</p><p> PortWriteByte(0x288,display_Right4[i++]);</p><p> datasetup();</p><p><b>
51、}</b></p><p> Sleep(100);</p><p> PortWriteByte(0x288,0x01);</p><p> cmdsetup();</p><p> PortWriteByte(0x288,0x93);</p><p> cmdsetup();</p&g
52、t;<p> for(i=0;i<10;)</p><p><b> {</b></p><p> PortWriteByte(0x288,display_Right5[i++]);</p><p> datasetup();</p><p> PortWriteByte(0x288,dis
53、play_Right5[i++]);</p><p> datasetup();</p><p><b> }</b></p><p> Sleep(100);</p><p> PortWriteByte(0x288,0x01);</p><p> cmdsetup();</p&
54、gt;<p> PortWriteByte(0x288,0x92);</p><p> cmdsetup();</p><p> for(i=0;i<12;)</p><p><b> {</b></p><p> PortWriteByte(0x288,display_Right6[i+
55、+]);</p><p> datasetup();</p><p> PortWriteByte(0x288,display_Right6[i++]);</p><p> datasetup();</p><p><b> }</b></p><p> Sleep(100);</
56、p><p> PortWriteByte(0x288,0x01);</p><p> cmdsetup();</p><p> PortWriteByte(0x288,0x91);</p><p> cmdsetup();</p><p> for(i=0;i<12;)</p><p&
57、gt;<b> {</b></p><p> PortWriteByte(0x288,display_Right6[i++]);</p><p> datasetup();</p><p> PortWriteByte(0x288,display_Right6[i++]);</p><p> datasetup
58、();</p><p><b> }</b></p><p> Sleep(100);</p><p> PortWriteByte(0x288,0x01);</p><p> cmdsetup();</p><p> PortWriteByte(0x288,0x90);</p&g
59、t;<p> cmdsetup();</p><p> for(i=0;i<12;)</p><p><b> {</b></p><p> PortWriteByte(0x288,display_Right6[i++]);</p><p> datasetup();</p>
60、<p> PortWriteByte(0x288,display_Right6[i++]);</p><p> datasetup();</p><p><b> }</b></p><p> Sleep(100);</p><p><b> }</b></p>
61、<p><b> 右邊界滾出</b></p><p> void move_xaut_Left()</p><p><b> {</b></p><p> unsigned char i;</p><p> PortWriteByte(0x288,0x01);</p>
62、<p> cmdsetup();</p><p> PortWriteByte(0x288,0x90);</p><p> cmdsetup();</p><p> for(i=0;i<10;)</p><p><b> {</b></p><p> PortWr
63、iteByte(0x288,display_Left1[i++]);</p><p> datasetup();</p><p> PortWriteByte(0x288,display_Left1[i++]);</p><p> datasetup();</p><p><b> }</b></p>
64、<p> Sleep(100);</p><p> PortWriteByte(0x288,0x01);</p><p> cmdsetup();</p><p> PortWriteByte(0x288,0x90);</p><p> cmdsetup();</p><p> for(i=
65、0;i<8;)</p><p><b> {</b></p><p> PortWriteByte(0x288,display_Left2[i++]);</p><p> datasetup();</p><p> PortWriteByte(0x288,display_Left2[i++]);</p
66、><p> datasetup();</p><p><b> }</b></p><p> Sleep(100);</p><p> PortWriteByte(0x288,0x01);</p><p> cmdsetup();</p><p> PortWrit
67、eByte(0x288,0x90);</p><p> cmdsetup();</p><p> for(i=0;i<6;)</p><p><b> {</b></p><p> PortWriteByte(0x288,display_Left3[i++]);</p><p>
68、 datasetup();</p><p> PortWriteByte(0x288,display_Left3[i++]);</p><p> datasetup();</p><p><b> }</b></p><p> Sleep(100);</p><p> PortWrite
69、Byte(0x288,0x01);</p><p> cmdsetup();</p><p> PortWriteByte(0x288,0x90);</p><p> cmdsetup();</p><p> for(i=0;i<4;)</p><p><b> {</b><
70、;/p><p> PortWriteByte(0x288,display_Left4[i++]);</p><p> datasetup();</p><p> PortWriteByte(0x288,display_Left4[i++]);</p><p> datasetup();</p><p><b&
71、gt; }</b></p><p> Sleep(100);</p><p> PortWriteByte(0x288,0x01);</p><p> cmdsetup();</p><p> PortWriteByte(0x288,0x90);</p><p> cmdsetup();<
72、;/p><p> for(i=0;i<2;)</p><p><b> {</b></p><p> PortWriteByte(0x288,display_Left5[i++]);</p><p> datasetup();</p><p> PortWriteByte(0x288,
73、display_Left5[i++]);</p><p> datasetup();</p><p><b> }</b></p><p> Sleep(100);</p><p><b> }</b></p><p><b> 漢字編碼</b>
74、;</p><p> unsigned char display_xaut[12]={0xce,0xf7,0xb0,0xb2,0xc0,0xed,0xb9,0xa4,0xb4,0xf3,0xd1,0xa7};</p><p> // 西 / 安/理 /工/大/學(xué)</p><p> unsigned char display_de
75、sign[12]={0xce,0xa2,0xbb,0xfa,0xd4,0xad,0xc0,0xed,0xbf,0xce,0xc9,0xe8};</p><p> // 微 機 原 理 課 設(shè)</p><p><b> 測試方案</b></p><p><b> 測試結(jié)果</b&
76、gt;</p><p><b> 課設(shè)總結(jié)</b></p><p> 學(xué)會軟件和硬件協(xié)調(diào)開發(fā)的方法,首先搭建原理圖,再進進行軟件開發(fā),下載到MCU,進行調(diào)試</p><p> 通過查閱芯片數(shù)據(jù)手冊進行硬件開發(fā),了解芯片時序圖,例如LCD芯片時序,RW, RS ,E三者之間的時序關(guān)系</p><p> 8255初始
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設(shè)計--lcd12864液晶顯示
- fpga課程設(shè)計報告---基于cpld的1602字符液晶顯示系統(tǒng)設(shè)計
- 課程設(shè)計--lcd1602液晶字符串循環(huán)顯示
- eda課程設(shè)計--1616字符發(fā)生器
- 單片機原理及應(yīng)用課程設(shè)計---12864點陣lcd的顯示
- 課程設(shè)計報告----通用示波器顯示字符
- lcd顯示設(shè)計單片機課程設(shè)計
- 可編程字符顯示課程設(shè)計
- 超聲波測距LCD12864顯示.rar
- 超聲波測距LCD12864顯示.rar
- 液晶顯示屏lcd顯示接口設(shè)計課程設(shè)計
- 單片機lcd系統(tǒng)顯示課程設(shè)計
- 課程設(shè)計--帶lcd顯示的定時鬧鐘
- 課程設(shè)計--帶lcd顯示的定時鬧鐘
- 微機課程設(shè)計--- 陣式圖形顯示
- 課程設(shè)計--帶LCD顯示的定時鬧鐘.doc
- 單片機課程設(shè)計lcd顯示屏設(shè)計
- 微機原理課程設(shè)計---字符串動畫顯示
- 基于cpld的字符液晶顯示課程設(shè)計
- 新手必看1602字符液晶顯示原理+實例詳解
評論
0/150
提交評論