下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、;*LCD模塊測(cè)試程序* ;編程:劉鋼 ;日期:2005/1/21 ;*器件說(shuō)明* ;用PIC16F877A驅(qū)動(dòng)LCD模塊 ;LCD模塊,型號(hào):ST1620-1 ;LCD模塊初始化,由廠家提供的資料顯示,其初始化過(guò)程為: ;1-延時(shí)15ms ;2-寫(xiě)指令38H(寫(xiě)入之前不用檢測(cè)Busy信號(hào) ;3-延時(shí)5ms ;4-再次寫(xiě)入38H指令(寫(xiě)入之前不用檢測(cè)Busy信號(hào),至于為什么要重復(fù)寫(xiě)入現(xiàn)在不清楚,而且下面還要寫(xiě)一次. ;5-延時(shí)5ms ;4-再次寫(xiě)入38H指令(寫(xiě)入之前不用檢測(cè)Busy信號(hào) ;5-檢測(cè)Busy信號(hào); ;6-寫(xiě)指令38H,此條指令是將LCD顯示模塊設(shè)置為8位數(shù)據(jù)線,雙行,5X7點(diǎn)陣
2、顯示 ;7-檢測(cè)Busy信號(hào); ;8-寫(xiě)指令08H,關(guān)閉顯示 ;9-檢測(cè)Busy信號(hào); ;10-寫(xiě)指令01H,顯示清屏 ;以后寫(xiě)入光標(biāo)等的控制指令. ;* LIST P=PIC16F877A ;告訴匯編器所要匯編的器件型號(hào) INCLUDE "P16F877.INC" ;匯編程序的頭文件 ;設(shè)置單片機(jī)的特殊存儲(chǔ)器位,使用HS(高速晶振,打開(kāi)上電延時(shí)復(fù)位功能, ;關(guān)閉看門(mén)狗,關(guān)閉低電壓編程功能. _CONFIG _HS_OSC &_PWRTE_ON&_WDT_OFF&_LVP_OFF ;注意:在CONFIG前面一定要加上兩條下畫(huà)線,否則匯編時(shí)會(huì)出錯(cuò)! ;
3、* LCD_RS EQU 02H LCD_RW EQU 01H LCD_E EQU 00H COUNT1 EQU 020H COUNT2 EQU 021H COUNT3 EQU 022H COUNT4 EQU 023H DATA_TEMP EQU 041H DATADO EQU 042H ;* ORG 0000H ;上電復(fù)位初始地址 GOTO MAIN ;* ORG 0010H ;主程序起始地址 MAIN ;初始化端口 BANKSEL ADCON1 ;選擇體1 BCF INTCON,GIE ;關(guān)閉中斷 MOVLW 07H MOVWF ADCON1 ;上電時(shí)有A/D轉(zhuǎn)換功能的端子全部被設(shè)為了A狀
4、態(tài), MOVLW 0XFF MOVWF TRISA ;暫時(shí)將A口設(shè)為輸入 CLRF TRISB ;設(shè)B口為輸出 CLRF TRISC ;設(shè)C口為輸出 CLRF TRISE ;設(shè)E口為普通I/O口,RE0-RE2為輸出口 MOVLW 0XFF MOVWF TRISD ;暫時(shí)將D口設(shè)為輸入 BANKSEL PORTC ;選擇體0 ;初始化LCD模塊* CALL DELAYTIME10 ;LCD上電延時(shí)15秒鐘,使LCD上建立工作所需電壓. CALL DELAYTIME10 MOVLW 038H ;寫(xiě)入38H指令,本來(lái)在此不用檢測(cè)Busy信號(hào)(在COMAND_WR子程序 CALL COMAND_WR
5、 ;中包含有檢測(cè)Busy信號(hào)的子程序,但此處不想單獨(dú)編寫(xiě)命令寫(xiě) ;入程序,所以全部用同一個(gè)命令寫(xiě)入子程序. CALL DELAYTIME5 MOVLW 038H ;再次寫(xiě) 入38H指令(寫(xiě)入之前不用檢測(cè)Busy信號(hào),至于為什么要 CALL COMAND_WR ;重復(fù)寫(xiě)入現(xiàn)在不清楚,而且下面還要寫(xiě)一次. CALL DELAYTIME5 MOVLW 038H CALL COMAND_WR CALL DELAYTIME5 MOVLW 038H CALL COMAND_WR MOVLW 08H ;并閉LCD模塊的顯示. CALL COMAND_WR MOVLW 01H ;清LCD模塊顯示. CALL
6、COMAND_WR MOVLW 06H ;將模塊設(shè)為向顯示數(shù)據(jù)存貯器寫(xiě)入一個(gè)數(shù)據(jù)后,地址或光標(biāo)加 CALL COMAND_WR ;1,即后寫(xiě)入的字符處于顯示屏的右邊. ;以下為L(zhǎng)CD顯示測(cè)試程序* ;為了使程序具有通用性,所以將命令字的寫(xiě)入,數(shù)據(jù)的寫(xiě)入與讀出程序都做成了子程序. MOVLW 0CH ;開(kāi)LCD模塊的顯示 CALL COMAND_WR LCD_DISPLAY MOVLW 080H ;設(shè)置第一行字符從第一位開(kāi)始顯示.由于已經(jīng)將指針 CALL COMAND_WR ;設(shè)為了每向顯示存貯器寫(xiě)入一個(gè)數(shù)據(jù)指針加1,所以越 ;后寫(xiě)入的數(shù)據(jù)會(huì)越靠近右邊.另外,由于在LCD模塊的 ;初始化時(shí)已經(jīng)寫(xiě)
7、入了清顯示命令,光標(biāo)及顯示存貯器 ;的地址指針已回到了00H,所以在此處不寫(xiě)入此段命令 ;也可以. CALL LCD_DISPLAY1 ;顯示第一行字符 MOVLW 0C0H ;設(shè)置第二行字符從第一位開(kāi)始顯示. CALL COMAND_WR CALL LCD_DISPLAY2 DISPLAY_LOOP CALL SWAP ;讀出LCD顯示數(shù)據(jù)存貯器中的字符數(shù)據(jù)并移位. CALL DELAYTIME250 ;延時(shí). MOVLW 0C0H ;寫(xiě)入顯示數(shù)據(jù)存貯器的首地址. CALL COMAND_WR MOVLW 030H ;數(shù)據(jù)表指針. MOVWF FSR WR_LOOP MOVF INDF,W
8、;將數(shù)據(jù)表中的數(shù)據(jù)寫(xiě)入到LCD模塊顯示數(shù)據(jù)存貯器中. CALL DATA_WR INCF FSR MOVF FSR,W SUBLW 040H ;是否已經(jīng)將16個(gè)字符數(shù)據(jù)全部寫(xiě)入到LCD模塊中. BTFSS STATUS,Z GOTO WR_LOOP ;沒(méi)有寫(xiě)完則返回繼續(xù)寫(xiě)入. GOTO DISPLAY_LOOP ;*以下為各子程序* ;移位子程序 ;程序功能:使字符向左流動(dòng)并循環(huán)顯示.在本程序中,只是第二行的字符會(huì)流動(dòng)顯示,第一行字符固定顯示. ;移位原理:將LCD模塊的顯示存貯器內(nèi)的40H4FH(對(duì)應(yīng)第二行顯示存貯器的第1字符到第16字符數(shù)據(jù)讀出, ; 依次放置于地址為30H3FH的數(shù)據(jù)寄存
9、器器中,然后將其整體向下 移一位.以達(dá)到字符流動(dòng)顯示的 ; 效果,并將40H中的數(shù)據(jù)取出放入30H中,以達(dá)到循環(huán)的效果. SWAP MOVLW 030H ;設(shè)置數(shù)據(jù)表(30H40H寄存器指針起始值 MOVWF FSR ;數(shù)據(jù)表指針. MOVLW 0C0H ;設(shè)置想要讀出的LCD模塊的顯示存貯器的起始地址,此處的C0H對(duì) ;應(yīng)LCD模塊第二行的第1個(gè)字符 CALL COMAND_WR READ CALL DATA_RD ;調(diào)數(shù)據(jù)讀出子程序從LCD模塊的顯示存貯器中讀出數(shù)據(jù),每讀一次 ;LCD顯示存貯器的地址指針會(huì)自動(dòng)加1,不用人工干預(yù). MOVF DATA_TEMP,W ;將子程序讀出的數(shù)據(jù)存于
10、W中. MOVWF INDF ;用間接尋址指令將讀出的數(shù)據(jù)存入以FSR為指針的寄存器中. INCF FSR ;將指針加1,指向下一個(gè)寄存器. MOVF FSR,W ;檢查指針數(shù)值是否達(dá)到40H,如果達(dá)到40H表明已經(jīng)讀出了16個(gè)數(shù)據(jù) SUBLW 040H ;將指針數(shù)據(jù)與40H相減. BTFSS STATUS,Z ;如果為零則狀態(tài)寄存器的Z位置1. GOTO READ ;如果不為零則表示還沒(méi)有讀出16個(gè)數(shù)據(jù),轉(zhuǎn)回再繼續(xù)讀出. MOVLW 03FH MOVWF FSR ;設(shè)置寄存器指針,這次的指針用于移位. RD_LOOP MOVF INDF,W ;將指針?biāo)傅募拇嫫髦械臄?shù)據(jù)取出. INCF FS
11、R ;將指針加1. MOVWF INDF ;將先前從寄存器中取出的數(shù)據(jù)寫(xiě)入到下一個(gè)寄存器中(因?yàn)橹羔槺患?. DECF FSR ;將指針減1,消去剛才加上的1. DECF FSR ;將指針減1,指向上一個(gè)寄存器. MOVF FSR,W SUBLW 02FH ;判斷移位16個(gè)數(shù)據(jù) BTFSS STATUS,Z GOTO RD_LOOP ;如果移位沒(méi)有完成則繼續(xù)移位. MOVF 040H,W ;將40H中的數(shù)據(jù)(實(shí)際是移位前3FH中的數(shù)據(jù)放入30H中,以達(dá)到循環(huán)的效果. MOVWF 030H RETURN ;顯示子程序* LCD_DISPLAY1 ;LCD模塊第一行字符顯示子程序,顯示"
12、*LS Liengsing*" ;由于每向LCD模塊的顯示存貯器中寫(xiě)入一個(gè)字符模塊的顯示存貯器地址指針就加1,不用人工干預(yù). MOVLW '*' CALL DATA_WR MOVLW '*' CALL DATA_WR MOVLW 'L' CALL DATA_WR MOVLW 'S' CALL DATA_WR MOVLW ' ' CALL DATA_WR MOVLW ' ' CALL DATA_WR MOVLW 'E' CALL DATA_WR MOVLW 'n
13、9; CALL DATA_WR MOVLW 'g' CALL DATA_WR MOVLW 'i' CALL DATA_WR MOVLW 'n' CALL DATA_ WR MOVLW 'e' CALL DATA_WR MOVLW 'e' CALL DATA_WR MOVLW 'r' CALL DATA_WR MOVLW '*' CALL DATA_WR MOVLW '*' CALL DATA_WR RETURN LCD_DISPLAY2 ;LCD模塊第二行字符顯示子程
14、序,顯示"*Liu Gang*" MOVLW '*' CALL DATA_WR MOVLW '*' CALL DATA_WR MOVLW '*' CALL DATA_WR MOVLW '*' CALL DATA_WR MOVLW 'L' CALL DATA_WR MOVLW 'i' CALL DATA_WR MOVLW 'u' CALL DATA_WR MOVLW ' ' CALL DATA_WR MOVLW 'G' CALL DA
15、TA_WR MOVLW 'a' CALL DATA_WR MOVLW 'n' CALL DATA_WR MOVLW 'g' CALL DATA_WR MOVLW '*' CALL DATA_WR MOVLW '*' CALL DATA_WR MOVLW '*' CALL DATA_WR MOVLW '*' CALL DATA_WR RETURN INCLUDE "TS1620SUBPRG_A8.ASM" ; 以下為延時(shí)子程序 * DELAYTIME5 MOVLW
16、D'51 MOVWF COUNT2 LOOP01 MOVLW D'255 MOVWF COUNT3 LOOP02 DECFSZ COUNT3 GOTO LOOP02 DECFSZ COUNT2 GOTO LOOP01 RETURN ;* DELAYTIME10 MOVLW D'101 MOVWF COUNT2 LOOP11 MOVLW D'255 MOVWF COUNT3 LOOP12 DECFSZ COUNT3 GOTO LOOP12 DECFSZ COUNT2 GOTO LOOP11 RETURN ;* DELAYTIME500 MOVLW D'20 MOVWF COUNT4 LOOP21 MOVLW D'255 MOVWF COUNT3 LOOP22 MOVLW D'255 MOVWF COUNT2 LOOP23 DECFSZ COUNT2 GOTO LOOP23 DECFSZ COUN
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 全國(guó)粵教版信息技術(shù)七年級(jí)上冊(cè)第一單元第五節(jié)4.《格式化磁盤(pán)》說(shuō)課稿
- 2025年秋季幼兒園家長(zhǎng)工作計(jì)劃
- Unit 4 What can you do Part C Story time大單元整體說(shuō)課稿表格式-2024-2025學(xué)年人教PEP版英語(yǔ)五年級(jí)上冊(cè)
- 2025年護(hù)士專業(yè)實(shí)習(xí)計(jì)劃范文大全
- 2025年班主任工作計(jì)劃三班
- 人教版歷史與社會(huì)七年級(jí)下冊(cè)6.4.1《海拔最高的牧區(qū)》說(shuō)課稿與教學(xué)反思
- 一共有多少(說(shuō)課稿)-2024-2025學(xué)年一年級(jí)上冊(cè)數(shù)學(xué)北師大版
- 2025年律師工作計(jì)劃模板
- 2025年大學(xué)社團(tuán)成員的個(gè)人工作計(jì)劃
- 全國(guó)清華大學(xué)版信息技術(shù)八年級(jí)下冊(cè)第3單元第9課《按圖索驥-制作熱點(diǎn)鏈接》說(shuō)課稿
- 中考語(yǔ)文文學(xué)文本類閱讀復(fù)習(xí)專題課件:表現(xiàn)手法分析之襯托、對(duì)比與抑揚(yáng)
- 2023年海峽出版發(fā)行集團(tuán)有限責(zé)任公司招聘筆試題庫(kù)及答案解析
- 腎臟病飲食依從行為量表(RABQ)附有答案
- 臺(tái)大公開(kāi)課歐麗娟紅樓夢(mèng)講義
- 【合同范本】補(bǔ)充協(xié)議-面積差補(bǔ)款-預(yù)售版
- 藝術(shù)(音樂(lè)、美術(shù))專業(yè)人才需求情況調(diào)研報(bào)告
- [QC成果]提高剪力墻施工質(zhì)量一次合格率
- 移印工作業(yè)指導(dǎo)書(shū)
- 樂(lè)高基礎(chǔ)篇樂(lè)高積木和搭建種類專題培訓(xùn)課件
- 事故形成的冰山理論
- 溶解度曲線教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論