嵌入式技術(shù)基礎(chǔ)與實踐課件章編程_第1頁
嵌入式技術(shù)基礎(chǔ)與實踐課件章編程_第2頁
嵌入式技術(shù)基礎(chǔ)與實踐課件章編程_第3頁
嵌入式技術(shù)基礎(chǔ)與實踐課件章編程_第4頁
嵌入式技術(shù)基礎(chǔ)與實踐課件章編程_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第9章LCD與LED編程主要內(nèi)容數(shù)碼管編程實例LCD概述點陣字符型LCD的接口特性點陣字符型LCD的編程實例9.1數(shù)碼管編程實例9.1.1掃描法LED顯示編程原理

8段數(shù)碼管一般由8個發(fā)光二極管(Llight-emittingdiode,LED)組成,每一個位段就是一個發(fā)光二極管。一個8段數(shù)碼管分別由a、b、c、d、e、f、g位段,外加上一個小數(shù)點的位段h(或記為dp)組成。實物外型見下圖。數(shù)碼管外形agdfecbh數(shù)碼管8段數(shù)碼管可分為共陽極和共陰極兩種,如下圖所示。共陰極8段數(shù)碼管的信號端高電平有效,只要在各個位段上加上相應(yīng)的信號即可使相應(yīng)的位段發(fā)光,共陽極的8段數(shù)碼管則相反,在相應(yīng)的位段加上低電平即可使該位段發(fā)光。abcdefgdp(a)共陰極gndVccabcdefgdp(b)共陽極4連排數(shù)碼管同時顯示原理4連排數(shù)碼管,利用CS3、CS2、CS1、CS0控制各個數(shù)碼管的位選信號,每個時刻只能讓一個數(shù)碼管有效,即CS3、CS2、CS1、CS0只能有一個為0,例如令CS3=0,CS2、CS1、CS0=111,則數(shù)據(jù)線上的數(shù)據(jù)體現(xiàn)在第一個數(shù)碼管上,其他則不受影響。要讓各個數(shù)據(jù)管均顯示需要的數(shù)字,則必須逐個使相應(yīng)位選信號為0,其他位選信號為1,并將要顯示的一位數(shù)字送到數(shù)據(jù)線上。這種方法叫“位選線掃描法”。雖然每個時刻只有一個數(shù)碼管有效,但只要延時適當(dāng),由于人眼的“視覺暫留效應(yīng)”(約100ms左右),看起來則是同時顯示的。

4連排共陰極8段數(shù)碼管

CS3abcdefgdpCS2abcdefgdpCS1abcdefgdpCS0abcdefgdp

9.1.2接口實例一個4連排共陰極8段數(shù)碼管的編程實例。在硬件連接上,利用MCU的B口控制8個位段(數(shù)據(jù)),用C口的低四位控制數(shù)碼管的位選信號。圖中,PTB7~0分別接h~a位段,PTC3~0分別過1K電阻與CS3~0位選端相接,這樣PTB3就控制最左邊一個數(shù)碼管的顯示,PTC0則控制最右邊一個數(shù)碼管的顯示。接在位選線上的1K電阻是限流電阻,避免電流過大燒壞數(shù)碼管。CS2CS1agdfecbhabfCS0PTC3PTB6PTB2PTB7PTB3PTB41KΩ1KΩ1KΩ1KΩgchde654321CS3121110987PTB1PTC2PTC1PTB5PTB0PTC0agdfecbhagdfecbhagdfecbh9.1.3數(shù)碼管匯編語言實例

以下給出GP32對上述4位一體LED的匯編編程實例,表9-1列出了該例程的所有程序文件,下面逐一介紹這些程序。表9-1數(shù)碼管顯示工程文件工程文件名LED.prj所在路徑MC08Ex2007\GP32\GP32S\S05_數(shù)碼管LED文件類型文件名功能簡述講解章節(jié)頭文件GP32ASM.h芯片頭文件[匯編工程文件組織]4.3Includes.h總頭文件[匯編工程文件組織]4.3LED.hLED驅(qū)動頭文件[本章]SCI.h串行通信頭文件[串行通信子函數(shù)]7.4.1匯編語言子程序文件MCUinit.s芯片初始化文件[初始化及PLL編程實例]14.2.5Vectors08.s中斷處理子程序與中斷向量表文件[匯編工程文件組織]4.3GeneralFun.s通用子程序文件[匯編工程文件組織]4.3SCI.s串行通信文件[串行通信子函數(shù)]7.4.1LED.sLED驅(qū)動文件[本章]匯編語言主程序文件Main.s主程序文件[本章]數(shù)碼管顯示工程文件(1)LED匯編編程主函數(shù)

//------------------------------------------------------*//工程名:LED.prj*//硬件連接:*//(1)LED的8個位段(數(shù)據(jù))和位選引腳與MCU的通用I/O口*//引腳連接(見"LCD.s"文件)*//(2)MCU的串口與PC方的串口相連*//工程描述:在4連排數(shù)碼管上從左至右顯示從串口接收來的4位*//十進制數(shù)*//目的:實現(xiàn)數(shù)碼管的顯示*//注意:LCD及鍵盤的可能影響*//--------清華2007版《嵌入式技術(shù)基礎(chǔ)與實踐》實例--------*

LED匯編編程主函數(shù)1//總頭文件.include"Includes.h"http://主程序

.areaflash(abs).orgFlashStartAddrMainInit:://復(fù)位后從此處執(zhí)行(見Vectors08.s文件末尾處)SEI//關(guān)總中斷

//1.堆棧初始化為RAM最高端

LDHX#RAMendAddr+1//HX=#RAMEndAddr+1TXS//HX-1->SP//2.芯片初始化

JSRMCUinit//初學(xué)時跳過此處LED匯編編程主函數(shù)2

//3.模塊初始化

JSRSCIinit//(1)串行口初始化

JSRLEDinit//(2)LED控制引腳初始化

//4.全局變量初始化

//(1)LED緩存初始存入0000MOV#'0',*LEDbuf4MOV#'0',*LEDbuf4+1MOV#'0',*LEDbuf4+2MOV#'0',*LEDbuf4+3//(2)標(biāo)志初始化=&FFMOV#$FF,ReFlagLED匯編編程主函數(shù)3//5.開放各模塊中斷

JSREnableSCIreInt//允許SCI接收中斷

//6.開總中斷

CLI//LED初始顯示0000LDHX#LEDbuf4JSRLEDshow//程序總循環(huán)入口MainLoop:LDAReFlag//當(dāng)接收并正確接收數(shù)據(jù)時,ReFlag=0CMP#$0LED匯編編程主函數(shù)4BNEMain_Show//數(shù)據(jù)從ReBuf-->LEDbufMOV*ReBuf4,*LEDbuf4MOV*ReBuf4+1,*LEDbuf4+1MOV*ReBuf4+2,*LEDbuf4+2MOV*ReBuf4+3,*LEDbuf4+3MOV#$FF,ReFlagMain_Show://把LEDbuf4為首址4個數(shù)字送LED顯示

LDHX#LEDbuf4JSRLEDshowBRAMainLoopLED匯編編程主函數(shù)5//包含本工程的其他文件---------------------------------.include"EnDisInt.s"http://允許/禁止MCU各模塊中斷.include"MCUinit.s"http://芯片初始化.include"GeneralFun.s"http://該文件包含延時子程序.include"SCI.s"http://串行通信.include"LED.s"http://LED驅(qū)動

//包含中斷處理子程序與中斷向量表文件"Vectors08.s"------//注意:這個包含語句的存放位置必須放在最后.include"Vectors08.s"http://中斷處理子程序與中斷向量表LED匯編編程主函數(shù)6(2)LED驅(qū)動子程序LED.s

1//[LED.s]LED驅(qū)動----------------------------------------*//本文件包含:*//(1)LEDinit:4連排LED初始化*//(2)LEDshow:在4連排LED上顯示4個十進制數(shù)*//(3)LEDshow1:在1個LED上顯示數(shù)字*//硬件連接:*//(1)PTB7-0分別接LED的數(shù)據(jù)線hgfedcba*//(2)PTC3-0分別接各LED的位選線(從右到左)*//------------------------------------------------------*

LED驅(qū)動子程序LED.s2.include"LED.h"http://該頭文件包含LED驅(qū)動相關(guān)寄存器宏定義

//LEDinit:4連排LED初始化-------------------------------*//功能:定義LED控制引腳的數(shù)據(jù)口和位選口為輸出*//入口:無*//出口:無*//堆棧深度:2+1=3*//------------------------------------------------------*LED驅(qū)動子程序LED.s3LEDinit::PSHA//保護A//數(shù)據(jù)口為輸出到LEDLDA#%11111111STALEDdata_D//位選口為輸出到LEDLDALEDcs_DORA#%00001111STALEDcs_DPULA//恢復(fù)ARTSLED驅(qū)動子程序LED.s4//LEDshow:在4連排LED上顯示4個十進制數(shù)------------------*//功能:在4連排LED上顯示HX所指向的4個數(shù)據(jù)*//入口:HX=待顯示數(shù)據(jù)緩沖的首地址*//出口:無*//說明:HX所指向的緩沖區(qū)中的數(shù)據(jù)是數(shù)值的ASCII值*//堆棧深度:2+4+4=10*//內(nèi)部調(diào)用:LEDshow1,DelayHX*//------------------------------------------------------*LED驅(qū)動子程序LED.s5LEDshow::PSHA//保護ALDA#4//循環(huán)顯示4個LEDLEDshow_1:PSHH//暫存顯示緩沖首地址

PSHXPSHA//暫存循環(huán)計數(shù)器

//取要顯示的1個數(shù)字

LDA,X//把這個數(shù)字的ASCII碼轉(zhuǎn)換成數(shù)值-->ASUB#'0'//設(shè)置要顯示的LED位號(從左到右為3-0)-->XPULXPSHXDECX//顯示這個數(shù)字

JSRLEDshow1LED驅(qū)動子程序LED.s6//延時

LDHX#$FFJSRDelayHXPULA//恢復(fù)計數(shù)器

PULX//恢復(fù)顯示緩沖首地址

PULH//指向下一個要顯示的數(shù)字

AIX#1//循環(huán)顯示4個數(shù)字

DBNZALEDshow_1PULA//恢復(fù)ARTSLED驅(qū)動子程序LED.s7//LEDshow1:在1個LED上顯示數(shù)字---------------------------*//功能:在第X個LED上顯示數(shù)字A(要查表轉(zhuǎn)碼)*//入口:*//(1)X:要顯示的LED位號(從右到左0-3)*//(2)A:要顯示的數(shù)字(0-9)*//出口:無*//堆棧深度:2+1+1=4*//------------------------------------------------------*LEDshow1:PSHH//保護HPSHA//保護ACLRHLED驅(qū)動子程序LED.s8LDACStable,X//查表取位選信號

STALEDcs//送位選信號

PULA//恢復(fù)ATAXLDADtable,X//查表取顯示碼

STALEDdata//送到LED數(shù)據(jù)線

PULH//恢復(fù)HRTS

//片選表0123CStable::.byte$F7,$FB,$FD,$FE//顯示碼表0123456789Dtable::.byte$3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$6F(3)LED驅(qū)動頭文件LED.h

//[LED.h]LED驅(qū)動頭文件-------------------

//LED驅(qū)動相關(guān)寄存器宏定義LEDdata=PTB//LED數(shù)據(jù)口LEDdata_D=DDRB//數(shù)據(jù)口相應(yīng)方向寄存器LEDcs=PTC//LED位選口LEDcs_D=DDRC//位選口相應(yīng)方向寄存器9.1.4數(shù)碼管08C語言實例

以下給出GP32對上述4位一體LED的匯編編程實例,表9-2列出了該例程的所有程序文件,具體內(nèi)容不做介紹,讀者參閱附帶教學(xué)資料“MC08Ex2007\GP32\GP32C\C05_數(shù)碼管LED”中的工程。

表9-2數(shù)碼管顯示08C工程文件工程文件名LED.prj所在路徑MC08Ex2007\GP32\GP32C\C05_數(shù)碼管LED文件類型文件名功能簡述講解章節(jié)頭文件GP32C.hGP32MCU映像寄存名定義頭文件[08C工程文件組織]5.3EnDisInt.h開放或禁止MCU各模塊中斷頭文件[08C工程文件組織]5.3Type.h類型別名定義頭文件[用typedef定義類型]5.2.10[08C工程文件組織]5.3Includes.h總頭文件[08C工程文件組織]5.3LED.hLED驅(qū)動頭文件[本章]SCI.h串行通信頭文件[串行通信子函數(shù)]7.4.1C語言子函數(shù)文件MCUInit.c芯片初始化文件[初始化及PLL編程實例]14.2.5SCI.c串行通信文件[串行通信子函數(shù)]7.4.1LED.cLED驅(qū)動文件[本章]Vectors08.c中斷處理函數(shù)與中斷向量表文件[08C工程文件組織]5.3C語言主函數(shù)Main.c主函數(shù)文件[本章]9.2LCD概述9.2.1LCD的特點低電壓微功耗平板型結(jié)構(gòu)使用壽命長被動顯示顯示信息量大且易于彩色化無電磁輻射9.2.2LCD的分類按電光效應(yīng)分類電場效應(yīng)類

電流效應(yīng)類電熱寫入效應(yīng)類熱效應(yīng)類按顯示內(nèi)容分類字段型(或稱為筆劃型)點陣字符型點陣圖形型

LCD的分類按LCD的采光方式分類帶背光源:在弱光或黑暗條件下使用不帶背光源:靠背面的反射膜將射入的自然光從下面反射出來完成的。

LCD的分類9.3點陣字符型LCD的接口特性9.3.1點陣字符型液晶顯示模塊的基本特點液晶顯示屏是以若干5×8或5×11點陣塊組成的顯示字符群。主控制電路為HD44780(HITACHI)及其它公司的兼容電路。內(nèi)部具有字符發(fā)生器ROM具有64字節(jié)的自定義字符RAM具有64字節(jié)的數(shù)據(jù)顯示RAM標(biāo)準(zhǔn)接口特性,與H68HC08系列MCU容易接口。模塊結(jié)構(gòu)緊湊、輕巧、裝配容易。單+5V電源供電低功耗、高可靠性。9.3.2HD44780的引腳與時序

HD44780的引腳信號HD44780的外部接口信號一般有14條,有的型號顯示器使用16條,其中與MCU的接口有8條數(shù)據(jù)線、3條控制線。

管腳號符號電平方向引腳含義說明1Vss

電源地2Vdd

電源(+5V)3V0

液晶驅(qū)動電源(0~5V)4RSH/L輸入寄存器選擇;1-數(shù)據(jù)寄存器0-數(shù)據(jù)寄存器5R/WH/L輸入讀寫操作選擇:1-讀操作0-寫操作6EH/LH→L輸入使能信號:R/W=0,E下降沿有效,R/W=1,E=1有效7~10DB0~DB3三態(tài)8位數(shù)據(jù)總線的低4位,若與MCU進行4位傳送時,此4位不用

11~14DB4~DB7

三態(tài)8位數(shù)據(jù)總線的高4位,若與MCU進行4位傳送時,只用此4位15~16E1~E2

輸入上下兩行使能信號,只用于一些特殊型號HD44780的時序信號D0-D79.3.3HD44780的編程結(jié)構(gòu)

從編程角度看,HD44780內(nèi)部主要由指令寄存器(IR)、數(shù)據(jù)寄存器(DR)、忙標(biāo)志(BF)、地址計數(shù)器(AC)、顯示數(shù)據(jù)寄存器(DDRAM)、字符發(fā)生器ROM(CGROM)、字符發(fā)生器RAM(CGRAM)及時序發(fā)生電路構(gòu)成。指令寄存器(IR)數(shù)據(jù)寄存器(DR)忙標(biāo)志(BF)地址計數(shù)器(AC)顯示數(shù)據(jù)寄存器(DDRAM)字符發(fā)生器ROM(CGROM)字符發(fā)生器RAM(CGRAM)9.3.4HD44780的指令集

清屏(ClearDisplay)

歸位(ReturnHome)

輸入方式設(shè)置(EntryModeSet)

顯示開關(guān)控制(DisplayON/OFFControl)

光標(biāo)或畫面移位(CursororDisplayShift)

功能設(shè)置(FunctionSet)CGRAM地址設(shè)置(CGRAMAddressSet)DDRAM地址設(shè)置(DDRAMAddressSet)讀忙標(biāo)志BF和AC值(ReadBusyFlagandAddressCount)寫數(shù)據(jù)到DDRAM或CGRAM(WriteDatatoDDRAMorCGRAM)讀DDRAM或CGRAM數(shù)據(jù)(ReadDatafromDDRAMorCGRAM)

9.4點陣字符型LCD編程實例本節(jié)給出點陣字符型LCD的一個編程實例。在SD-HC08實驗板上,LCD的數(shù)據(jù)線7~14腳(DB0~DB7)分別與MCU的PTB0~PTB7連接,LCD的控制線RS、R/、E(4、5、6腳)分別與MCU的PTC0、PTC1、PTC2連接,右圖給出LCD的硬件連接方式。LCD的1、2、3腳為供電電源與亮度調(diào)節(jié)引腳。MT-IDE實驗箱的擴展板的上還留有一排插孔,當(dāng)LCD接在下排插孔時,LCD控制線與數(shù)據(jù)線與MCU的連接可以自行定義并通過下部接線孔接線。

LCD(YM1602C)16151413121110090807060504030201VccLCD_RWLCD_RSPTB7PTB6PTB5PTB4PTB3PTB2PTB1PTB0PTC2PTC1PTC0GP32LCD_D7LCD_D6LCD_D5LCD_D4LCD_D3LCD_D2LCD_D1LCD_D0LCD_E×GNDGND9.4.1LCD編程匯編工程實例

LCD初始化、顯示通用子函數(shù)下面給出以GP32為例有關(guān)LCD初始化和LCD顯示的通用子函數(shù)。它們是:LCD初始化子函數(shù)、LCD顯示子函數(shù)。LCD初始化子函數(shù)用來對LCD做一些初始設(shè)置,LCD顯示子函數(shù)用來將LCD緩沖區(qū)中的數(shù)據(jù)顯示在LCD屏幕上。將它們應(yīng)用到CCM3118、S08系列、S12系列中時只需要修改相應(yīng)的頭文件和宏定義中LCD寄存器的地址即可。

表9-4LCD顯示匯編工程文件

表9-4LCD顯示匯編工程文件工程文件名LCD.prj所在路徑MC08Ex2007\GP32\GP32S\S06_液晶LCD文件類型文件名功能簡述講解章節(jié)頭文件GP32ASM.h芯片頭文件[匯編工程文件組織]4.3Includes.h總頭文件[匯編工程文件組織]4.3LCD.hLCD驅(qū)動頭文件[本章]SCI.h串行通信頭文件[參見工程實例]7.4.2匯編語言子程序文件MCUinit.s芯片初始化文件[初始化及PLL編程實例]14.2.5Vectors08.s中斷處理子程序與中斷向量表文件[參見工程實例]GeneralFun.s通用子程序文件[本章]SCI.s串行通信文件[參見工程實例]LCD.sLCD驅(qū)動文件[本章]匯編語言主程序文件Main.s主程序文件[本章]LCD初始化、顯示子函數(shù)頭文件:LCD.h

//[LCD.h]LCD驅(qū)動頭文件-------------------------------

//寄存器及相關(guān)位定義LCDdata=PTB//LCD顯示數(shù)據(jù)或指令傳送口LCDdataD=DDRB//LCD數(shù)據(jù)口方向寄存器LCDctrl=PTC//LCD控制信號傳送口LCDctrlD=DDRC//LCD控制口方向寄存器RS=0//LCD寄存器選擇信號(PTC0)RW=1//LCD讀寫信號(PTC1)E=2//LCD使能信號(PTC2)LCD初始化、顯示子函數(shù):LCD.s

//[LCD.s]LCD驅(qū)動----------------------------------------*//本文件包含:*//(1)LCDshow:在LCD(HD44780)顯示屏上顯示數(shù)據(jù)*//(2)LCDinit:初始化LCD(HD44780)*//(3)mand:執(zhí)行A中的LCD命令*//硬件連接:*//在SD-HC08實驗板上,有與LCD連接的兩排插孔:*//(1)LCD若接上排插孔:*//LCD的數(shù)據(jù)線(DB0-7),控制線RS,R/W,E分別與MCU的*//PTB0-7,PTC0-2連接*//(2)LCD若接下排插孔:*//可自行定義LCD與MCU的連接*//------------------------------------------------------*

.include"LCD.h"http://該頭文件包含寄存器及相關(guān)位定義

//LCDshow:在LCD(HD44780)顯示屏上顯示數(shù)據(jù)---------------*//功能:在LCD(HD44780)顯示屏上顯示HX所指向的32個數(shù)據(jù)*//入口:HX=待顯示數(shù)據(jù)的首地址*//出口:無*//堆棧深度:2+1+1+9=13*//內(nèi)部調(diào)用mand*//------------------------------------------------------*LCD初始化、顯示子函數(shù):LCD.sLCDshow::PSHA//保護AAIS#-1//開辟1個字節(jié)的臨時變量

//1.LCD初始化

JSRLCDinit//2.顯示第1行16個字符

//2.1設(shè)置顯示首地址

BCLR#RS,LCDctrl//RS,R/W=00(寫的是指令)BCLR#RW,LCDctrlLDA#%10000000//后7位為DDRAM地址($00)JSRmand

LCD初始化、顯示子函數(shù):LCD.s//2.2寫16個數(shù)據(jù)到DDRAMLDA#16//[SP+1]初始=16(1行顯示個數(shù))STA1,SPBSET#RS,LCDctrl//RS,R/W=10(寫的是數(shù)據(jù))BCLR#RW,LCDctrlLCDshow_1:LDA,X//取待顯示的數(shù)據(jù)

JSRmand//向DDRAM寫入數(shù)據(jù)

AIX#1//指向下一個待顯示的數(shù)據(jù)

DBNZ1,SP,LCDshow_1//若16個數(shù)據(jù)沒寫完則繼續(xù)LCD初始化、顯示子函數(shù):LCD.s//3.顯示第2行16個字符

//3.1設(shè)置顯示首地址

BCLR#RS,LCDctrl//RS,R/W=00(寫的是指令)BCLR#RW,LCDctrlLDA#%11000000//后7位為DDRAM地址($40)JSRmand//3.2寫16個數(shù)據(jù)到DDRAMLDA#16//[SP+1]初始=16(1行顯示個數(shù))STA1,SPBSET#RS,LCDctrl//RS,R/W=10(寫的是數(shù)據(jù))BCLR#RW,LCDctrlLCDshow_2:LDA,X//取待顯示的數(shù)據(jù)

LCD初始化、顯示子函數(shù):LCD.sJSRmand//向DDRAM寫入數(shù)據(jù)

AIX#1//指向下一個待顯示的數(shù)據(jù)

DBNZ1,SP,LCDshow_2//若16個數(shù)據(jù)沒寫完則繼續(xù)

AIS#1//釋放臨時變量

PULA//恢復(fù)ARTS//LCDinit:初始化LCD(HD44780)----------------------------*//功能:初始化LCD(HD44780),設(shè)置顯示方式,輸入方式,并清屏*//入口:無*//出口:無*//堆棧深度:2+3+4=9*//內(nèi)部調(diào)用mand*//------------------------------------------------------*LCD初始化、顯示子函數(shù):LCD.sLCDinit::PSHH//保護HPSHX//保護XPSHA//保護ALDA#%11111111//定義數(shù)據(jù)口(PTB0-7)為輸出

STALCDdataDLDALCDctrlD//定義控制口(PTC0-2)為輸出

ORA#%00000111STALCDctrlD//設(shè)置指令

BCLR#RS,LCDctrl//RS,R/W=00BCLR#RW,LCDctrlLCD初始化、顯示子函數(shù):LCD.s//1.功能設(shè)置

LDA#%00111000//||||||||____可設(shè)任意值(0/1)//||||||______F=0,5*7點陣模式

//|||||_______N=1,2行顯示

//||||________DL=1,8位數(shù)據(jù)總線

//|||_________固定為001JSRmandLCD初始化、顯示子函數(shù):LCD.s//2.顯示開關(guān)控制

LDA#%00001000//||||||||____B=0,不閃爍

//|||||||_____C=0,關(guān)光標(biāo)顯示

//||||||______D=0,關(guān)顯示

//|||||_______固定為00001JSRmand//3.清屏

LDA#%00000001//清DDRAM內(nèi)容,光標(biāo)回原位,清ACJSRmandLCD初始化、顯示子函數(shù):LCD.sLDHX#$0200//等待清屏完畢,時間>1.6msJSRDelayHX//4.輸入方式設(shè)置

LDA#%00000110//||||||||____顯示不移動,光標(biāo)左移(A=1)//|||||||_____數(shù)據(jù)讀寫操作后,AC自動增1//||||||______固定為000001JSRmand

LCD初始化、顯示子函數(shù):LCD.s//5.光標(biāo)或畫面移位設(shè)置

LDA#%00010100//||||||||____可設(shè)任意值(0/1)//||||||______光標(biāo)右移一個字符位,AC自動加1//||||________固定為0001JSRmandLCD初始化、顯示子函數(shù):LCD.s//6.顯示開關(guān)控制

LDA#%00001100//||||||||____B=0,不閃爍

//|||||||_____C=0,關(guān)光標(biāo)顯示

//||||||______D=1,開顯示

//|||||_______固定為00001JSRmandPULA//恢復(fù)HX、APULXPULHRTSLCD初始化、顯示子函數(shù):LCD.smand:執(zhí)行A中的LCD命令---------------------------*//功能:執(zhí)行A中的LCD命令,并延時*//入口:A:存放指令或數(shù)據(jù)*//出口:無*//堆棧深度:2+2=4*//------------------------------------------------------*mand::PSHX//保護XPSHH//保護H//1.等待>40usLDHX#$10JSRDelayHXLCD初始化、顯示子函數(shù):LCD.s//2.數(shù)據(jù)送到LCD的數(shù)據(jù)線上

STALCDdata//3.給出E信號的下降沿,使數(shù)據(jù)寫入LCDBSET#E,LCDctrlNOPNOPNOPBCLR#E,LCDctrl//4.等待>40usLDHX#$10JSRDelayHXPULH//恢復(fù)HPULX//恢復(fù)XRTS

LCD匯編編程主函數(shù)

//------------------------------------------------------*//工程名:LCD.prj*//硬件連接:*//(1)LCD的DB0-7,RS,R/W,E與MCU的通用I/O口引腳連接*//(見"LCD.s"文件)*//(2)MCU的串口與PC方的串口相連*//工程描述:*//(1)初始顯示:*//"WaitReceiving.."*//"Soochow2007.06"

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論