版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Exynos4412設(shè)備驅(qū)動(dòng)及測(cè)試程序設(shè)計(jì)實(shí)驗(yàn)報(bào)告15281099劉梓麟計(jì)算機(jī)科學(xué)與技術(shù)2018年4月15日一、實(shí)驗(yàn)?zāi)康?. 理解Text LCD設(shè)備在4412系統(tǒng)中的設(shè)備端口定義2. 學(xué)握用戶程序借助于系統(tǒng)調(diào)用對(duì)Text LCD控制的原理3. 掌握TextLCD驅(qū)動(dòng)程序設(shè)計(jì)的主要內(nèi)容4. 完成TextLCD測(cè)試程序設(shè)計(jì)二、實(shí)驗(yàn)原理1. TextLCD驅(qū)動(dòng)程序 1.1功能及原理 定義Text LCD設(shè)備地址值。012: define TEXTLCD.ADDRESS 0x05000010013: define TEXTLCD_ADDRESS_RANGE 0x1000 為了控制Text LCD,定
2、義ioctlO函數(shù)中使用的命令參數(shù)。022:#define TEXTLCD_ON1023:#de仃ne TEXTLCD_OFF2024:廿define TEXTLCD INIT3025:itdefine TEXT_CLEAR4026:027:ndefine TEXT_LINE15028:廿de Fine TEXTJJNE26 runCommand()按照時(shí)序,向Text LCD發(fā)送控制命令。38行的數(shù)據(jù)為0x0100表示EN(enable)信號(hào)。033void runCommand(void)034035command &= OxOOFF;036*textlcd_ioremap =comman
3、d0x0000;037udelay (1000);038*textlcd_ioremap =command0x0100;039udelay (1000);040*textlcd_ioremap =command0x0000;041udelay (1000);042044: void writeCharacter(char ch)045: 046: unsigned short int data;047: data 二 ch & OxOOFF;048: *textlcd_ioremap = 0x0400;049: udelay(1000);050: *textlcd_ioremap = data
4、 | 0x0500;051: udelay(1000);052: *textlcd_ioremap = data 0x0400;053: udelay (1000);054: 向Text LCD寫顯示數(shù)據(jù)。第48行,RS為1,寫數(shù)據(jù)寄存器;第50行,使能EN為1, 同時(shí)送出數(shù)據(jù);第52行,EN變?yōu)?。 控制Text LCD函數(shù)56: clearDisplayO清屏,并把光標(biāo)返回到HOME位置。62:不改變DD RAM (顯示)內(nèi)容,只把光標(biāo)放到Home的位置。68:當(dāng)讀或?qū)慙CD數(shù)據(jù)時(shí),要決定增加(I/D=l)或減少(1/0=0)光標(biāo)位置,還要決定卷屏 (S=l)或不卷屏(S=0) o75:設(shè)
5、置D顯示文本,C顯示光標(biāo),或C閃爍光標(biāo)。82:決定把畫面(S/C=l)或光標(biāo)(S/C=O)向右(R/Z=l)或向右(R/L=O)移動(dòng)。89:設(shè)置接口的數(shù)據(jù)傳輸長(zhǎng)度為8比特(DL=1)或4比特(DL=O):設(shè)置顯示行數(shù)為2行(21) 或者1行(N=0),并且把字符字體指定為5X10點(diǎn)陣(21)或者5X7點(diǎn)陣(F=0)。當(dāng)TextLCD模塊連接電源后,需要50ms的復(fù)位時(shí)間,所以,向TextLCD發(fā)送命令,要在加電 后等待一段時(shí)間(大于50ms)。另外,當(dāng)接口使用4位傳輸數(shù)據(jù)時(shí),要先傳送高位4位,再 傳送低4位。103:指定顯示存儲(chǔ)器DDRam的地址。110:讀LCD模塊內(nèi)部忙標(biāo)Busy Flag
6、(BF)以及讀取地址計(jì)數(shù)器對(duì)應(yīng)的內(nèi)容。LCD模塊執(zhí)行056:void clearDisplay(void)062:void returnllomc(void)068:void entryModeSet(int increase, int shift)075:void displayOnOffControl(int display, int cursor, int blink)082:void cursorOrDisplayshift(int serecnOrCursor, int rightOrLeft)089:void setFunctionSet(int dataLcngth, int r
7、ow, int font)/096: void setCGRamAddress(int address)103: void setDDRamAddress(int address)110: void readBusyFlagAndAddrcss(int *pBusyFlag, int *pAddressCounter)每個(gè)操作控制命令時(shí)需要一定的時(shí)間,所以當(dāng)MCU發(fā)出一個(gè)操作控制命令后,可以通過(guò)讀取 BF的方式,提高傳輸效率。當(dāng)MCU讀到BF為1時(shí),需要等待;直到BF為0后,才發(fā)送下 一個(gè)控制命令。 initializeTextLcd()134: void initializeTextLcd(
8、void)135: 136: setFunctionSet (lt 1, 0): /I da taken: 8; 1 line: 2; 0 font: 5X7 dot137: displayOnOffControl(1, 0, 0) ; /I display on;0 cursor off;0 cursor blink off 138: clearDisplayO ;139: entryModeSet(1, 0) ; / 1 after data is read or written, curor pos increase; 0 screen scroll off140: returnllom
9、eO ;141: 136:接口傳輸數(shù)據(jù)的長(zhǎng)度:8;顯示線數(shù):2;字符點(diǎn)陣:5X7o137:把display設(shè)置為on,不顯示光標(biāo),光標(biāo)不閃爍。139:讀寫一數(shù)據(jù)后,地址自動(dòng)增加。不滾屏顯示。 IoctlO202switch (cmd) 203case TEXTLCD_ON:204displayOnOffControl (1, 0, 0);205break;206case TEXTLCD_OFF:207displayOnOffControl (0, 0, 0);208break;209case TEXTLCD_INIT:210initializeTextLcd();211break;212cas
10、e TEXT_CLEAR:213clearDisplay ();214break;215case TEXT_LINE1:216setDDRamAddress(0x00);217break;218case TEXT_LINE2:219setDDRamAddress (0x40);220break;2. TextLCD測(cè)試程序2.1功能及原理 打開設(shè)備文件打開TextLcd設(shè)備驅(qū)動(dòng)程序。驅(qū)動(dòng)程序的路徑是“/dev/fpga_textlcd”。Fd為設(shè)備文件024: fd = open(/dev/fpga_textlccT, 0_WR0NLY); 標(biāo)識(shí)符。OJVRONLY表示以只寫的形式打開。 Te
11、xtLCD初始化和關(guān)閉操作015: ioctl(fd, TEXTLCD_INIT);035: ioctl(fd, TEXTLCD_OFF); TextLCD顯示輸出028:ioctl (fd,TEXTLCD CLEAR);029:ioctl (fd,TEXTLCD_LINE1);030:write(fd,msgsOj, strlen(msgs0);031:ioctl (fd,TEXTLCD_LINE2);032:write (fd,msgs1, strlen(msgsl);28:清屏。29-31:通過(guò)操作命令,設(shè)置Text LCD顯示格式。32:使用write()函數(shù)輸出顯示字符串。3KeyP
12、ad原理M3 Deivce(DipSW Dot. OLED . etc.)CS9FPGA ChipS4412圖2-3-1 M3楔塊的keypad和4412的連接關(guān)系8。圖2-3-2 M3模塊的keypad原理圖3394.蜂鳴器原理PiezoController包含一個(gè)八位的寄存器Piezo,由控制寄存器控制。表1-4-1表示的是Piezo控制寄存器的數(shù)據(jù)位結(jié)構(gòu)。PhZalAddiPss0x0500_0050Piezo_Ctl_RegBIT 1514131211109876543210Piezo表示的八位寄存器,音階數(shù)據(jù)如下。序號(hào)音階數(shù)據(jù)1哆0x012#來(lái)0x313來(lái)0x024#咪0x325咪0
13、x036發(fā)0x047#唆0x339唆0x0510#拉0x3411拉0x0612#西0x3513西0x0714哆0x1115#來(lái)0x4116來(lái)0x1217#咪0x4218咪0x1319發(fā)0x1420#唆0x4321唆0x1522#拉0x4423拉0x1624#西0x4525西0x1726哆0x2127#來(lái)0x5128來(lái)0x2229#咪0x5230咪0x2331發(fā)0x2432#唆0x5333唆0x2534#拉0x5435拉0x2636#西0x5537西0x27表2-4-2用Piezo表示的音階三、實(shí)驗(yàn)結(jié)果1. 顯示字符串由兩行變?yōu)橐恍衖nt lengthoflinel;全局變量在fpga_text
14、lcd_write()函數(shù)中,用全局變Slengthiflinel保存length的值。 len gthofline1=length;在 fpga_textlcd_ioctl()函數(shù)中,把 case TEXTLCD_LINE2 中 setD D Ram Address函數(shù)的參數(shù)修改為lengthoflinel,即可在第一行內(nèi)容后繼續(xù)顯示原來(lái)第二行的內(nèi)容。2. 顯示字符的左移(或右移)功能在 case TEXTLCD_LINE1 和 case TEXTLCD_LINE2 后分另U力口入一層循 環(huán),循環(huán)中加入一行代碼:cursorOrDisplayshift (1, 0)即可實(shí)現(xiàn)輸入內(nèi) 容的左移,
15、將第二個(gè)參數(shù)修改為1即可實(shí)現(xiàn)右移。3. 顯示字符的卷屏左移(或右移)功能在 case TEXTLCD_LINE1 和 case TEXTLCD_LINE2 后分別加入一行代 碼entryModeSet (1, 1)可以實(shí)現(xiàn)卷屏。4. 綜合編程編寫新的測(cè)試函數(shù),并導(dǎo)入之前的keypad, piezo驅(qū)動(dòng)程序:#inelude #inelude #include #inelude #inelude #include textlcd.hint main(void)int fd_keypadJ fd_piezo, fd_textlcd;char buf20;char msg16 = 0;unsigne
16、d char inputNumber;unsigned char nullValue = 0x00;unsigned char values =0x11 0x12, 0x13 0x14, 0x15, 0x16, 0x17, 0x21; fd_keypad = open(/dev/fpga_keypad3O_RDWR);fd_piezo = open(H/dev/fpga_piezoO_RDWR);fd_textlcd = open (* /dev/f pga_text 1 cd H, O_RDWR); if(fd_keypad 0) printf( Device Open ERROR!n);r
17、eturnif(fd_piezo 0)printf(Device Open ERROR!nH);return -1;if(fd_textlcd 0)printf(Device Open ERROR!n”);returnbuf0 = 0;buf1 = 0;char temp2;printf(Please push the button !n); ioctl(fd_textlcd, TEXTLCD_INIT);/初始化循環(huán)while(l)read(fd_keypadJbuf 20); /讀鍵盤號(hào)printf(,%srn, buf);/獲取鍵盤號(hào)對(duì)應(yīng)的數(shù)字1-8if(buf0 =p)inputNum
18、ber = 0;else if(bufl = 32)inputNumber = buf0 - 48;/輸出對(duì)應(yīng)的音符printf(input:%dn”, inputNumber);write(fd_piezo &valuesinputNumber-11); ioctl(fd_textlcd, TEXTLCD_CLEAR);/輸出對(duì)應(yīng)的textlcd符號(hào)switch(inputNumber)case 1:msg0 = V;ioctl(fd_textlcd, TEXTLCD_LINE1);write(fd_textledmsg, strlen(msg); break;case 2:msg0 = O; ioctl(fd_textlcdJ write(fd_textled, break;case 3:msg0 = J3J; ioctl(fd_textled, write(fd_tex
溫馨提示
- 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èi)浴活動(dòng)拍攝方案策劃(3篇)
- 蓋板破除施工方案(3篇)
- 鐵馬圍欄施工方案(3篇)
- 房屋排險(xiǎn)施工方案(3篇)
- 國(guó)旗桿施工方案(3篇)
- 2025年食品行業(yè)質(zhì)量安全控制手冊(cè)
- 基層醫(yī)院PCCM建設(shè)方案
- 微型西瓜飲品培訓(xùn)方案
- 2025年高職(軟件技術(shù))嵌入式開發(fā)綜合測(cè)試題及答案
- 2025年高職第一學(xué)年(醫(yī)學(xué)檢驗(yàn)技術(shù))臨床檢驗(yàn)基礎(chǔ)階段測(cè)試試題及答案
- 研學(xué)實(shí)踐承辦機(jī)構(gòu)服務(wù)與管理規(guī)范
- 2023年貴州省部分法院聘用制書記員招聘524名筆試參考題庫(kù)(共500題)答案詳解版
- 個(gè)人借款借條電子版篇
- 2023年世界上最坑人的搞笑腦筋急轉(zhuǎn)彎整理
- 廣西建設(shè)領(lǐng)域?qū)I(yè)技術(shù)人員三新技術(shù)網(wǎng)絡(luò)培訓(xùn)考試題目及答案
- 情緒的作文400字五篇
- 【藍(lán)光】藍(lán)光電梯的調(diào)試資料
- NY/T 682-2003畜禽場(chǎng)場(chǎng)區(qū)設(shè)計(jì)技術(shù)規(guī)范
- GB/T 33725-2017表殼體及其附件耐磨損、劃傷和沖擊試驗(yàn)
- FZ/T 01057.1-2007紡織纖維鑒別試驗(yàn)方法 第1部分:通用說(shuō)明
- 實(shí)習(xí)協(xié)議模板(最新版)
評(píng)論
0/150
提交評(píng)論