版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、文檔可能無(wú)法思考全面,請(qǐng)瀏覽后下載! 電子信息專業(yè)實(shí)驗(yàn)報(bào)告 課程:數(shù)字信息技術(shù)專業(yè)實(shí)驗(yàn) 題目:LCD實(shí)驗(yàn) 學(xué)生:茹滋巖(2012141451109) 張書愷(2012141451007) 蔣正東(2012141451) 鄧童虎(2012141451) 組號(hào):527 / 27點(diǎn)陣型12864液晶的使用【實(shí)驗(yàn)?zāi)康摹渴煜c(diǎn)陣型128*64液晶顯示器的驅(qū)動(dòng)電路及使用方法。掌握用AT89S52來(lái)控制液晶顯示器的方法掌握用掃描法識(shí)別矩陣按鍵的方法進(jìn)一步熟悉EDA實(shí)驗(yàn)平臺(tái)【實(shí)驗(yàn)器材】EDA實(shí)驗(yàn)箱、PC機(jī)、DB25-ISP下載線、USB轉(zhuǎn)換線、USB-BLASTER編程器等軟件:Quatus II 、Keil
2、 uVision2、ISPlay等 。【實(shí)驗(yàn)原理】單片機(jī)簡(jiǎn)介在一片集成電路芯片上集成微處理器、存儲(chǔ)器、I/O接口電路,從而構(gòu)成了單芯片微型計(jì)算機(jī),即單片機(jī)。Intel公司首先推出了MCS-51系列單片機(jī):集成 8位CPU、4K字節(jié)ROM、128字節(jié)RAM、4個(gè)8位并口、1個(gè)全雙工串行口、2個(gè)16位定時(shí)/計(jì)數(shù)器。尋址范圍64K,并有控制功能較強(qiáng)的布爾處理。80C51是MCS-51系列中的一個(gè)典型品種;其它廠商以8051為基核開發(fā)出的CMOS工藝單片機(jī)產(chǎn)品統(tǒng)稱為80C51系列。當(dāng)前常用的80C51系列單片機(jī)主要產(chǎn)品廠商有: Intel、ATMEL、Philips、華邦、Dallas 、STC、Si
3、emens(Infineon)等。實(shí)驗(yàn)板上使用的AT89S52是與MCS-51單片機(jī)產(chǎn)品兼容的產(chǎn)品,它具有8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器、 1000次擦寫周期、 全靜態(tài)操作、0Hz33Hz 、 三級(jí)加密程序存儲(chǔ)器 、 32個(gè)可編程I/O口線 、三個(gè)16位定時(shí)器/計(jì)數(shù)器、八個(gè)中斷源 、全雙工UART串行通道、 低功耗空閑和掉電模式 、掉電后中斷可喚醒 、看門狗定時(shí)器等功能 。各管腳功能簡(jiǎn)介如下:P0 口:P0口是一個(gè)8位漏極開路的雙向I/O口。 需要指出的是,在flash編程時(shí),P0口也用來(lái)接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。 P1 口:P1 口是一個(gè)具
4、有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。 引腳號(hào)第二功能:P1.0 T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出 P1.1 T2EX(定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制) P1.5 MOSI(在系統(tǒng)編程用) P1.6 MISO(在系統(tǒng)編程用) P1.7 SCK(在系統(tǒng)編程用) P2 口:P2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平 P3 口:P3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動(dòng)4 個(gè) TTL 邏輯電平。端口引腳 第二功能P3.0 RXD(
5、串行輸入口)P3.1 TXD(串行輸出口)P3.2 INTO(外中斷0)P3.3 INT1(外中斷1)P3.4 TO(定時(shí)/計(jì)數(shù)器0)P3.5 T1(定時(shí)/計(jì)數(shù)器1)P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)RST復(fù)位輸入(高電平復(fù)位)ALE/PROG當(dāng)訪問(wèn)外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。PSEN程序儲(chǔ)存允許(PSEN)EA/VPP外部訪問(wèn)允許,訪問(wèn)外部程序存儲(chǔ)器,EA端保持低電平。EA端為高電平,執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。液晶簡(jiǎn)介液晶作為顯示器件廣泛應(yīng)用于各種電子儀器、便攜設(shè)備上,點(diǎn)陣液晶可以方便的顯示各
6、種字符、圖片。WGM12864H液晶顯示模塊采用三星公司的KS0107液晶控制器,能夠顯示128*64像素圖形或4行16*16中文字符。一 系統(tǒng)硬件電路1. WGM12864H液晶模塊2. WGM12864H操作指令(1) 顯示開關(guān)控制。R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0000011111D此命令用于控制液晶顯示器開關(guān)。D=1:顯示開。顯示器可以進(jìn)行各種顯示操作。D=0:顯示關(guān)。不能對(duì)顯示器進(jìn)行各種顯示操作。開顯示時(shí),液晶模塊DDRAM的內(nèi)容顯示在LCD屏幕上,控制顯示器的開關(guān)并不影響DDRAMA中的數(shù)據(jù)和內(nèi)部狀態(tài)。(2) 設(shè)置顯示起始行。R/WD/IDB7DB6DB
7、5DB4DB3DB2DB1DB00011A5A4A3A2A1A0WGM12864H液晶模塊共有64行,由Z地址計(jì)數(shù)器進(jìn)行控制。Z地址計(jì)數(shù)器是一個(gè)六位計(jì)數(shù)器A5:A0,此計(jì)數(shù)器具有循環(huán)計(jì)數(shù)功能,它是用于行掃描同步,當(dāng)一行掃描完成時(shí)此計(jì)數(shù)器自動(dòng)加一,指向下一行掃描數(shù)據(jù),RST復(fù)位后Z計(jì)數(shù)器為0。起始行可以是64行中的任一行,如設(shè)置A5:A0為62,則起始行于DDRAM中的行對(duì)應(yīng)關(guān)系如下:DDRAM的行626301236061顯示的行1234566364此命令常用于滾動(dòng)顯示文本/圖像信息。(3) 設(shè)置頁(yè)地址。R/WD/IDB7DB6DB5DB4DB3DB2DB1DB00010111A2A1A0WGM
8、12864H液晶顯示屏的128*64點(diǎn)陣與DDRAM的128*64位顯存相對(duì)應(yīng),如下圖所示:X地址計(jì)數(shù)器為DDRAM的頁(yè)指針。所謂頁(yè)地址就是DDRAM的行地址,8行為頁(yè)。WGM液晶顯示器共64行,即8頁(yè),A2:A0表示07頁(yè)。讀寫數(shù)據(jù)對(duì)頁(yè)地址沒(méi)有影響,頁(yè)地址由本指令或RST信號(hào)改變,復(fù)位后頁(yè)地址為0。(4) 設(shè)置列地址。R/WD/IDB7DB6DB5DB4DB3DB2DB1DB00001A5A4A3A2A1A0Y地址計(jì)數(shù)器為DDRAM列指針。DDRAM共128列,分為左右兩屏,每屏列地址均編址為0-63。此指令將A5:A0送入Y地址計(jì)數(shù)器,作為DDRAM的Y地址指針。在對(duì)DDRAMA進(jìn)行讀寫操
9、作后,Y地址指針自動(dòng)加一,指向下一個(gè)DDRAM單元。當(dāng)Y地址計(jì)數(shù)器計(jì)數(shù)到63后,自動(dòng)翻轉(zhuǎn)為當(dāng)前屏的0列。(5) 寫顯示數(shù)據(jù)。R/WD/IDB7DB6DB5DB4DB3DB2DB1DB001D7D6D5D4D3D2D1D0D7-D0為顯示數(shù)據(jù),此指令把D7-D0寫入相應(yīng)DDRAM單元,Y地址指針自動(dòng)加一。(6) 讀狀態(tài)。R/WD/IDB7DB6DB5DB4DB3DB2DB1DB010BF0ON/OFFRST0000當(dāng)R/W=1、D/I=0、E=1時(shí),狀態(tài)分別輸出到數(shù)據(jù)總線DB7-DB0相應(yīng)位置。BF:BF標(biāo)志提供內(nèi)部工作情況。BF=1表示模塊在進(jìn)行內(nèi)部操作,此時(shí)模塊不接受外部指令和數(shù)據(jù)。BF=0
10、時(shí)模塊為準(zhǔn)備狀態(tài),隨時(shí)可接受外部指令和數(shù)據(jù)。ON/OFF:表示顯示器開關(guān)觸發(fā)器狀態(tài)。RST:RST=1表示內(nèi)部正在進(jìn)行初始化,此時(shí)模塊不接受外部指令和數(shù)據(jù)。(7) 讀顯示數(shù)據(jù)。R/WD/IDB7DB6DB5DB4DB3DB2DB1DB011D7D6D5D4D3D2D1D0當(dāng)R/W=1、D/I=1、E=1時(shí),此時(shí)DDRAM相應(yīng)單元數(shù)據(jù)被輸出到數(shù)據(jù)總線DB7-DB0相應(yīng)位置,Y地址指針自動(dòng)加一。使用此12864液晶時(shí),數(shù)據(jù)總線DB7-DB0分別接單片機(jī)的Px.7-Px.0,R/W、D/I、CS1、CS2、RST分別接單片機(jī)其它五個(gè)IO口進(jìn)行控制。液晶其它引腳按引腳功能圖上接線即可。3. 4*4矩陣
11、鍵盤模塊鍵盤電路圖如下:這是一種簡(jiǎn)單的非編碼鍵盤,線路簡(jiǎn)單,識(shí)別可靠。4條行線、4條列線分別接單片機(jī)IO口,列線上加上拉電阻,提高抗干擾性。在行列交叉點(diǎn)接入16個(gè)按鍵。由于按鍵數(shù)量較多,沒(méi)有給每一個(gè)按鍵單獨(dú)加防抖電路,防抖功能依靠軟件上延時(shí)實(shí)現(xiàn)。鍵盤工作原理:先給行線、列線賦1,然后給某一個(gè)列線賦0,檢查行線,若某一行線為0,則表示有按鍵被按下,此時(shí)進(jìn)行約10ms的延時(shí),再次判斷是否有按鍵被按下。確認(rèn)有按鍵被按下后,根據(jù)賦0的列線和檢測(cè)到為0的行線即可唯一確定被按下的是哪個(gè)鍵。然后所有線賦1,再給另外一列賦0,以后的工作同上。這樣逐列掃描鍵盤即可。軟件中給這每個(gè)鍵賦不同的值,即可識(shí)別出16個(gè)按
12、鍵。如果掃描時(shí)間足夠短,使用這種逐列掃描的方式可以有效識(shí)別所按按鍵。4. 單片機(jī)的基本工作電路單片機(jī)的基本工作電路同以上幾例,在此不再贅述。二系統(tǒng)主要程序設(shè)計(jì)1. 4*4行列式16鍵鍵盤掃描程序流程圖開始第一列置0行列全賦1讀入IO口值查表對(duì)照求出鍵值返回鍵值N第二列置0行列全賦1讀入IO口值查表對(duì)照求出鍵值返回鍵值N第三列置0行列全賦1讀入IO口值查表對(duì)照求出鍵值返回鍵值N讀入IO口值查表對(duì)照求出鍵值返回鍵值N子程序返回Y行線全為1?行列全賦1Y第四列置0Y行線全為1?Y行線全為1?行線全為1?2. 主程序流程圖開始初始化顯示歡迎屏幕按鍵掃描輸入數(shù)字返回按鍵值顯示按鍵值三 完整源程序參考程序
13、如下:/*/ #include #define uint unsigned int #define uchar unsigned char #define ulong unsigned long #define lcdbus P0sbit lcddi=P10;sbit lcdrw=P11;sbit lcde=P14;sbit lcdcs1=P12;sbit lcdcs2=P13;sbit lcdbf=P07;/*/ uchar code title=/*- 文字: -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x00,0x00,0x00,0x00,0x00,0x00
14、,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /*- 文字: 請(qǐng) -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x40,0x42,0x4C,0xC4,0x00,0x22,0xAA,0xAA,0xAA,0xBF,0xAA,0xAA,0xAA,0x22,0x20,0x00,0x00,0x00,0x00,0x7F,0x20,0x10,0xFF,0x0A,0x
15、0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x00,/*- 文字: 輸 -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x44,0xF4,0x4F,0xE4,0x44,0x64,0x90,0x98,0x94,0x93,0x14,0x98,0x08,0xD0,0x10,0x00,0x04,0x04,0x04,0xFF,0x02,0x02,0xFF,0x4A,0x8A,0x7F,0x00,0x3F,0x80,0xFF,0x00,0x00,/*- 文字: 入 -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x00,0x00,
16、0x00,0x00,0x01,0x83,0x76,0x18,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x00,0x00,0x00,0x03,0x04,0x18,0x30,0x10,0x00,/*- 文字: 數(shù) -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x10,0x92,0x54,0x38,0xFF,0x38,0x54,0x52,0x80,0xF0,0x1F,0x12,0x10,0xF0,0x10,0x00,0x42,0x42,0x2A,0x2E,0x13
17、,0x1A,0x26,0x02,0x40,0x20,0x13,0x0C,0x33,0x60,0x20,0x00,/*- 文字: 據(jù) -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x08,0x08,0x08,0xFF,0x88,0x40,0xFE,0x92,0x92,0x92,0xF2,0x92,0x92,0x9E,0x80,0x00,0x02,0x42,0x81,0x7F,0x40,0x30,0x0F,0xFC,0x44,0x44,0x47,0x44,0x44,0xFC,0x00,0x00,/*- 文字: : -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=1
18、6x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*- 文字: -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0
19、0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ;uchar code key= /*- 文字: 0 -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*- 文字: 1 -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,
20、0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*- 文字: 2 -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*- 文字: 3 -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,/*- 文字: 4
21、-*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,/*- 文字: 5 -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,/*- 文字: 6 -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x00,0xE0,0x10,
22、0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,/*- 文字: 7 -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,/*- 文字: 8 -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,
23、0x22,0x1C,0x00,/*- 文字: 9 -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,/*- 文字: . -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,/*- 文字: + -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x
24、高=8x16 -*/0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,/*- 文字: - -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,/*- 文字: * -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,
25、0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,/*- 文字: / -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,/*- 文字: */*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=8x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, ;/*/ void de
26、lay10ms() uchar i,j; for(i=50;i0;i-) for(j=250;j0;j-); /*/ void delayus(uint n)while(n-);/*/ uchar scankey() /P2口(p2.0p2.3列p2.4p2.7行) 列接上拉電阻 uchar key,rk; uchar bz=1; /當(dāng)有按鍵按下后,此標(biāo)志置零,以此確定有按鍵被按下,并送顯示。lcdrw=1;lcde=1;/將LCD使能端置一,防止對(duì)按鍵掃描干擾,LCDRW端置一,防止對(duì)已顯示數(shù)據(jù)干擾。doP2=0xff; P2_0=0; key=P2&0xF0; if(key!=0xF0)
27、delay10ms(); key=P2&0xF0; if(key!=0xF0) switch(key) case 0xe0:key=0;break; case 0xd0:key=4;break; case 0xb0:key=8;break; case 0x70:key=12;break; bz=0;rk=key;key=key&0xF0; while(key!=0xF0) key=P2; key=key&0xF0; delayus(800); P2=0xff; P2_1=0; key=P2; key=key&0xf0; if(key!=0xf0) delay10ms(); key=P2&0xf
28、0; if(key!=0xf0) switch(key) case 0xe0:key=1;break; case 0xd0:key=5;break; case 0xb0:key=9;break; case 0x70:key=13;break; bz=0;rk=key;key=key&0xf0; while(key!=0xf0) key=P2; key=key&0xf0; delayus(800); P2=0xff; P2_2=0;key=P2; key=key&0xf0; if(key!=0xf0) delay10ms(); key=P2&0xf0; if(key!=0xf0) switch(
29、key) case 0xe0:key=2 ;break; case 0xd0:key=6 ;break; case 0xb0:key=10;break; case 0x70:key=14;break; bz=0;rk=key;key=key&0xf0; while(key!=0xf0) key=P2; key=key&0xf0; delayus(800); P2=0xff; P2_3=0;key=P2; key=key&0xf0; if(key!=0xf0) delay10ms(); key=P2&0xf0; if(key!=0xf0) switch(key) case 0xe0:key=3;
30、break; case 0xd0:key=7;break; case 0xb0:key=11;break; case 0x70:key=15;break; bz=0;rk=key;key=key&0xf0; while(key!=0xf0) key=P2; key=key&0xf0; delayus(800); while(bz=1); bz=1; return (rk) ; /*/ void writeinst(uchar x)/寫指令lcdrw=0;lcddi=0;lcde=1;/P2_3=1;lcdbus=x;delayus(5);lcde=0;/*/ void writedata(uc
31、har x) /寫送顯數(shù)據(jù) lcdrw=0;lcddi=1;lcde=1;/P2_3=1;lcdbus=x;delayus(5);lcde=0;/*/ void clr() /清屏 uchar x=0,y=0;lcdcs1=1;lcdcs2=1;for(x=0;x8;x+)writeinst(0xb8+x);writeinst(0x40);for(y=0;y64;y+) writedata(0x00);/*/ void sethang(uchar x)/設(shè)置顯示起始行。lcdcs1=1;lcdcs2=1;writeinst(0xc0+x%64);/*/ void LCDInit()clr();
32、writeinst(0xb8); /定位到第0頁(yè) writeinst(0x40); /定位到第0列 writeinst(0x3f);/開顯示 /*/ void display16_16(uchar x,uchar y,uchar code * buff) /在第X 頁(yè)第Y列 顯示16*16字符 uchar j;if(y=64)lcdcs2=1;lcdcs1=0;writeinst(0xb8+x);writeinst(0x40+y%64);for(j=0;j16;j+) writedata(*(buff+j);writeinst(0xb9+x);writeinst(0x40+y%64);for(
33、j=16;j32;j+) writedata(*(buff+j);/*/ void display8_16(uchar x,uchar y,uchar code * buff) /在第X 頁(yè)第Y列 顯示8*16字符 uchar j;if(y=64)lcdcs1=0;lcdcs2=1;writeinst(0xb8+x);writeinst(0x40+y%64);for(j=0;j8;j+) writedata(*(buff+j);writeinst(0xb9+x);writeinst(0x40+y%64);for(j=8;j16;j+) writedata(*(buff+j);/*/ void
34、main()uchar i=0,j=0,k=0; EA=0;LCDInit();sethang(0);/設(shè)置顯示其實(shí)行為各頁(yè)第一行。P2=0XFF;/將FPGA中與門的另一路輸入置1,防止對(duì)LCD使能端干擾for(i=0;i8;i+)display16_16(0,i*16,title+i*32);i=0;j=0;while(1)for(i=2;i8;i+=2)/頁(yè)控制for(j=0;j16;j+=1)/列控制 k=scankey(); if(k=15) j-=2;sethang(0);P2=0XFF;display8_16(i,(j+1)*8,key+k*16); elsesethang(0)
35、;P2=0XFF;display8_16(i,j*8,key+k*16);if(k=15)i-=2;delayus(50000);LCDInit();sethang(0);for(i=0;i8;i+)display16_16(0,i*16,title+i*32); /*/ 【實(shí)驗(yàn)內(nèi)容】一 電路連線提示本實(shí)驗(yàn)中使用FPGA連接液晶、鍵盤、單片機(jī),F(xiàn)PGA的內(nèi)容本實(shí)驗(yàn)不做要求,在此簡(jiǎn)要闡明本實(shí)驗(yàn)中所用數(shù)據(jù)線及其在FPGA內(nèi)部的聯(lián)系。FPGA內(nèi)部聯(lián)系如圖:各引腳對(duì)應(yīng)關(guān)系如下圖:從圖中可看出,LCD的使能端與鍵盤第四列公共一個(gè)物理線路“KEYS0/LCD”,所以在FPGA內(nèi)部用一個(gè)與門聯(lián)系兩個(gè)輸入,兩
36、個(gè)輸入分時(shí)控制這個(gè)公共線路。FPGA中其他線路可以近似看做從“input”到“output”的單向“導(dǎo)線”。二 實(shí)驗(yàn)步驟:1. FPGA板插入底板,通過(guò)USB-blaster連接電腦。AT89S52單片機(jī)的ISP下載線連接電腦并口,并與底板連接。安裝FPGA實(shí)驗(yàn)板時(shí)注意方向,使FPGA板子的開關(guān)在做左手邊。注意引腳都要插入FPGA板子下面的排孔里,不要錯(cuò)位。2. 打開EDA底板電源。3. 將“桌面EDA實(shí)驗(yàn)-51部分-LCD實(shí)驗(yàn)底板驅(qū)動(dòng)”路徑下 “LCD12864.qpf”文件燒入FPGA中。具體步驟如下:a) 用USB轉(zhuǎn)換線將 USB BLASTER 與PC機(jī)相連,USB BLASTER的另
37、一端連接到FPGA核心板右下角J12口。如果連接正常,USB BLASTER綠燈點(diǎn)亮。b) 雙擊“桌面EDA實(shí)驗(yàn)-51部分-LCD實(shí)驗(yàn)底板驅(qū)動(dòng)”路徑下 “LCD12864.qpf”文件,啟動(dòng)Quartus II;c) 單擊菜單欄中 ToolsProgrammer ,打開FPGA程序下載窗口;d) 單擊界面右上角“Hardware Setup”,在“Currently selected Hardware”下拉列表中選擇“USB-BlasterUSB-0”,激活USB-Blaster,單擊“close”關(guān)閉;e) 單擊“Add File”,路徑選擇“桌面EDA實(shí)驗(yàn)-51部分-LCD實(shí)驗(yàn)底板驅(qū)動(dòng)”,
38、選中文件“LCD1602.sof”,勾選Program/Configure;f) 給EDA主板供電,單擊“start”,將底板驅(qū)動(dòng)程序燒錄到FPGA中。燒錄后不要將此程序關(guān)掉,也不要斷電,否則程序會(huì)丟失,需要重新燒錄。4. 生成HEX文件具體步驟如下:a) 單擊“開始程序”,啟動(dòng)Keil uVision2;b) 單擊“ProjectNew Project”,創(chuàng)建新工程;c) 新工程保存路徑為“桌面EDA實(shí)驗(yàn)-51部分-LCD實(shí)驗(yàn)程序一”,工程名設(shè)為“工程一”,單擊“保存”;d) 在彈出的“器件選擇窗口”中,選擇“AtmelAT89S52”,單擊“確定”;e) 右鍵單擊窗口右邊列表欄中“Sour
39、ce Group 1”,選擇“Add File to Group Source Group 1”;f) 選中“桌面EDA實(shí)驗(yàn)-51部分-LCD實(shí)驗(yàn)程序一”路徑下“程序一.c”,單擊“Add”,然后單擊“close”;g) 雙擊“程序一.c”,打開該文件。h) 單擊窗口左上角“Build Target”按鍵,編譯程序一;i) 單擊窗口左上角圖標(biāo),選中“output”面板,選中“Creative HEX”,單擊“確定”。j) 再次單擊窗口左上角“Build Target”按鍵,將生成“程序二.Hex”文件;k) 在路徑“桌面EDA實(shí)驗(yàn)-51部分-LCD實(shí)驗(yàn)程序一”下,已經(jīng)生成“程序一.Hex”文件
40、。5. 將 程序一.hex 燒入單片機(jī)具體步驟如下:a) 用DB25-ISP下載線連接單片機(jī)ISP程序下載口(EDA主板右下角J15口)和PC機(jī)并口,EDA主板右下角S8撥碼開關(guān)全部撥向ON;b) 在桌面雙擊圖標(biāo)“ISPlay.exe”,啟動(dòng)ISPlay;c) 單擊“檢測(cè)器件”,聽到“嘀嘀嘀”,表示器件檢測(cè)成功;d) 單擊“文件”,選擇“桌面EDA實(shí)驗(yàn)-51部分-LCD實(shí)驗(yàn)程序一”路徑下“程序一.hex”,單擊“打開”;e) 單擊“AUTORUN!”,完成程序的下載;下載完成會(huì)聽到“嘀嘀嘀”的響聲。6. 此時(shí)12864顯示器上應(yīng)該出現(xiàn)“請(qǐng)輸入數(shù)據(jù):”?,F(xiàn)在就可以按下4*4矩陣鍵盤上任意鍵,觀察
41、實(shí)驗(yàn)現(xiàn)象。按照底板上標(biāo)志的各按鍵,填入表一各單元左下角。表一 按鍵顯示記錄0123456789.+-*/【實(shí)驗(yàn)注意事項(xiàng)】1. ISP下載線與底板連接的插口下方有“MCU DISABLE”跳線,一定要將此跳線帽拔下,否則MCU將不可用。2. 單片機(jī)上方有一小塊帶8*8點(diǎn)陣的線路板,實(shí)驗(yàn)時(shí)請(qǐng)將此板拔下,否則將對(duì)顯示器產(chǎn)生不利影響。3. FPGA中寫入邏輯后不要將“Quartus ”關(guān)掉,否則FPGA將不可用,此實(shí)驗(yàn)亦無(wú)法完成。4. 實(shí)驗(yàn)中不可斷電,否則應(yīng)重新給FPGA寫入邏輯。5. 底板的模式請(qǐng)?jiān)O(shè)置成“3”,否則鍵盤將不可用,或者顯示容易出錯(cuò)。模式顯示如右圖數(shù)碼管位置,模式選擇按鍵為與底板電源開關(guān)
42、并列的右側(cè)的按鍵的第一個(gè)鍵?!緦?shí)驗(yàn)要求】1. 根據(jù)實(shí)驗(yàn)內(nèi)容,填寫表1。2.目前Main函數(shù)中對(duì)顯示器的控制還不夠完善,最大的缺陷是清除鍵,在清除到當(dāng)前行第一個(gè)字符位后,再按清除鍵,不能繼續(xù)清除上一行。因此本實(shí)驗(yàn)要求分析并修改程序,完善本程序功能: 當(dāng)清除到每行行首的時(shí)候,按下清除鍵,能夠繼續(xù)刪除上一行的字符。注意:改寫后的程序不能出現(xiàn)錯(cuò)誤,不能減少程序功能。/*/ #include #define uint unsigned int #define uchar unsigned char #define ulong unsigned long #define lcdbus P0sbit lcd
43、di=P10;sbit lcdrw=P11;sbit lcde=P14;sbit lcdcs1=P12;sbit lcdcs2=P13;sbit lcdbf=P07;/*/ uchar code title=/*- 文字: -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x
44、00,0x00, /*- 文字: 請(qǐng) -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x40,0x42,0x4C,0xC4,0x00,0x22,0xAA,0xAA,0xAA,0xBF,0xAA,0xAA,0xAA,0x22,0x20,0x00,0x00,0x00,0x00,0x7F,0x20,0x10,0xFF,0x0A,0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x00,/*- 文字: 輸 -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x44,0xF4,0x4F,0xE4,0x44,0x64,0x90,0x98
45、,0x94,0x93,0x14,0x98,0x08,0xD0,0x10,0x00,0x04,0x04,0x04,0xFF,0x02,0x02,0xFF,0x4A,0x8A,0x7F,0x00,0x3F,0x80,0xFF,0x00,0x00,/*- 文字: 入 -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x00,0x00,0x00,0x00,0x01,0x83,0x76,0x18,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x00,0x00,0x00,0x0
46、3,0x04,0x18,0x30,0x10,0x00,/*- 文字: 數(shù) -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x10,0x92,0x54,0x38,0xFF,0x38,0x54,0x52,0x80,0xF0,0x1F,0x12,0x10,0xF0,0x10,0x00,0x42,0x42,0x2A,0x2E,0x13,0x1A,0x26,0x02,0x40,0x20,0x13,0x0C,0x33,0x60,0x20,0x00,/*- 文字: 據(jù) -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x08,0x08,0x08,0xFF,0x88,0x40,0xFE,0x92,0x92,0x92,0xF2,0x92,0x92,0x9E,0x80,0x00,0x02,0x42,0x81,0x7F,0x40,0x30,0x0F,0xFC,0x44,0x44,0x47,0x44,0x44,0xFC,0x00,0x00,/*- 文字: : -*/*- 宋體12; 此字體下對(duì)應(yīng)的點(diǎn)陣為:寬x高=16x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 酒店線上服務(wù)平臺(tái)建設(shè)合同
- 主持人兼職勞務(wù)合同范本
- 倉(cāng)儲(chǔ)運(yùn)輸合同范文
- 高考數(shù)學(xué)(理)一輪復(fù)習(xí)教案:第十三篇 推理證明、算法、復(fù)數(shù)第2講 直接證明與間接證明
- 2025年濟(jì)南道路運(yùn)輸從業(yè)人員資格考試內(nèi)容有哪些
- 2025年西安考貨運(yùn)從業(yè)資格證題庫(kù)答案
- 孔隙結(jié)構(gòu)對(duì)大氣等離子噴涂熱障涂層沖蝕失效行為的影響
- 2025年滬教版選修4歷史下冊(cè)階段測(cè)試試卷含答案
- 2025年人教B版高三歷史下冊(cè)月考試卷含答案
- 2025年中圖版選修4地理上冊(cè)階段測(cè)試試卷含答案
- 2023年四川省綿陽(yáng)市中考初中學(xué)業(yè)水平考試語(yǔ)文試題【含答案】
- 正大天虹方矩管鍍鋅方矩管材質(zhì)書
- 2024年山東魯商集團(tuán)有限公司招聘筆試參考題庫(kù)含答案解析
- 山東省泰安市2022年初中學(xué)業(yè)水平考試生物試題
- 受賄案例心得體會(huì)
- 人教A版高中數(shù)學(xué)選擇性必修第一冊(cè)第二章直線和圓的方程-經(jīng)典例題及配套練習(xí)題含答案解析
- 圖書館學(xué)基礎(chǔ)簡(jiǎn)明教程
- 畢業(yè)設(shè)計(jì)(論文)-液體藥品灌裝機(jī)的設(shè)計(jì)與制造
- 二年級(jí)下冊(cè)數(shù)學(xué)教案 -《數(shù)一數(shù)(二)》 北師大版
- 銀行內(nèi)部舉報(bào)管理規(guī)定
- 平面幾何強(qiáng)化訓(xùn)練題集:初中分冊(cè)數(shù)學(xué)練習(xí)題
評(píng)論
0/150
提交評(píng)論