LCD顯示接口模塊的程序設計
低功耗方式Sleep,通過(guò)執行一條睡眠指令就進(jìn)入低功耗方式。如果使能,MDT將被清0,但仍保持運行。TO(STUATUS4>)位被置1,PD位(STUATUS3>)被清0,振蕩器驅動(dòng)器被停止。所有I/O端口保持Sleep指令執行前它們所有的狀態(tài)(驅動(dòng)高、驅動(dòng)低或高阻)。
本文引用地址:http://dyxdggzs.com/article/168658.htm在這種方式時(shí)為使電流消耗最低,把所有的I/O引腳放在VDD或VSS電平上,以保證外部電路從I/O引腳、低功耗的A/D、不使能的外部時(shí)鐘中拉出電流。為使電流消耗最低,TOCK1輸入電平應該在VDD或VSS上。
1.睡眠喚醒
單片機通過(guò)下列事件之一喚醒睡眠:
· 在MCLR引腳上的外部復位輸入;
· 監視定時(shí)器喚醒(如果WDT使能);
· INT引腳中斷、RB端口變化中斷和一些外部中斷。
以下是能將單片機從睡眠中喚醒的外部中斷:
· PSP讀或寫(xiě);
· TMR1中斷,TIMERI必須作為一個(gè)異步計數器運行;
· cap捕捉方式中斷;
· 特別事件觸發(fā)器(TIMERI使用外部時(shí)鐘異步方式,CCPI是用比較器模式);
· SSP(START/STOP)位探測中斷;
· SSP用主從模式(SP2/12C)發(fā)送和接收;
· USARTRX或TX(同步從模式);
· A/D轉換(當A/D時(shí)鐘源是RC時(shí));
· E2PROM寫(xiě)操作完成。
因為在睡眠期間,無(wú)片內時(shí)針出現,所以其他外部事件不能產(chǎn)生中斷。當執行Sleep指令時(shí),下一個(gè)指令(PC+1)被預取,對于通過(guò)中斷事件喚醒的單片機,相應的中斷使能位置1(使能),喚醒是不管GIE位的狀態(tài)的。
如果GIE位清0(不使能),單片機在Sleep指令之后連續執行指令。如果GIE位是置1的使能,單片機在Sleep指令之后執行指令,然后分支到中斷地址(0004h)。如不期望執行緊跟在Sleep指令之后的指令,用戶(hù)應該在Sleep指令之后加一個(gè)NOP指令。
當全體中斷不能維護任何中斷或者已包括它的中斷使能位和中斷標志位是置1的時(shí)候,將發(fā)生下面之一。
①如果在Sleep指令執行之前發(fā)生中斷,Sleep指令將作為一個(gè)NOP完成,因此WDT和WDT后分頻器將不被清0,TD位將不會(huì )置1,PD位將不會(huì )清0。
②如果在Sleep指令執行期間或之后發(fā)生中斷,單片機將立即喚醒睡眠,在喚醒之前Sleep指令將完全執行。因此,WDT和WDT后分頻器將被清0,TD位將被置1,PD位將被清0。
即使在執行Sleep指令之前標志位被檢查,在Sleep指令完成之前標志位變成1也是可能的。為了決定Sleep指令是否執行,應該檢測PD位,如果PD位置1,Sleep指令將作為NOP執行。為保證WDT清0,在Sleep指令之前應該執行CLRWDT指令。
內部電路調試器:當設置字里的DEBUG位被編程為0時(shí),內部電路調試器功能使能。當使用MPLAB時(shí),這種功能允許簡(jiǎn)單的功能調試,當微處理機有這種使能功能時(shí),其中一些資源通常是不可使用的。
為了使用單片機的內部電路調試器功能,設計必須實(shí)現內部電路串行編程以連接MCLR/VPP、VDD、GND、R87和RB6。這樣將內部電路調試器和微芯片或其他公司的開(kāi)發(fā)工具連接。
程序驗證/代碼保護:如果代碼保護位不被編程,片內程序存儲器可以被讀出以便驗證。
識別碼D存儲單元:4個(gè)存儲器單元被設定為ID存儲單元,在這里用戶(hù)可以?xún)Υ鏅z查其他代碼識別數。這些存儲單元在正常執行中是不可訪(fǎng)問(wèn)的,但在編程/修改期間是可讀寫(xiě)的,推薦使用ID存儲單元的低4位。
內部電路串行編程:PlC16P877微處理器在應用電路結束時(shí)能夠被串行編程??捎脙筛€(xiàn)作為時(shí)鐘線(xiàn)和數據線(xiàn),其他線(xiàn)用作電源、接地和編程電壓線(xiàn)來(lái)簡(jiǎn)單地完成。
當使用ICSP時(shí),如果執行一個(gè)大量的擦除,部件必須用4.5~5.5V電壓供電。這包括從一個(gè)打開(kāi)狀態(tài)到關(guān)閉狀態(tài)兩個(gè)的代碼保護的重新編程。對于ICSP的所有其他情況,部件可以在通常操作電壓下編程。這意味著(zhù)振蕩器值,獨一無(wú)二的用戶(hù)代碼或用戶(hù)碼可以被重新編程或增加12。
IS:低電壓ICSP編程.
設置LVP位使能低電壓ICSP編程。這種模式允許微處理機在操作電壓范圍內使用一個(gè)vDD通過(guò)ICSP編程實(shí)現。這意味著(zhù)Vpp不必帶到VIHH,但在標準操作電壓時(shí)能夠替換。在這種模式里,RB3rPGM引腳被制定為編程功能和停止 個(gè)普通的I/O引腳。在編程期間,VDD應用到MCLR引腳。為了進(jìn)入編程模式,必須應用RB3/PGM使LVP位置1。出廠(chǎng)時(shí),LVP位的缺省值是1。
如果低電壓編程模式不能使,那么LVP位不能編程到0,RB3/PGM變成一個(gè)數字I/O引腳,然而,當在MCLP上用VIHH進(jìn)入編程時(shí),LVP位只可以被編程,當MCLR上使用高電壓時(shí),LVP位只可以被置1。
應該注意,一旦LVP位編程到0,只有高電壓編程模式可用于對單片機編程,
當使用低電壓ICSP時(shí),如果執行一個(gè)大量的擦除,部件必須用4.5~5.5V電壓供電。這包括從一個(gè)打開(kāi)狀態(tài)到關(guān)閉狀態(tài)的兩個(gè)代碼保護的重新編程。對于ICSP的所有其他情況,部件可以在通常操作電壓下被編程,這意味著(zhù)振蕩器值不變。用戶(hù)代碼或用戶(hù)碼叮以被重新編程或增加,
SED152OFOA液晶顯示驅動(dòng)器有13條指令,下面以M680O系列MPU按口為例(RES=1),總結這些指令,如表所示。
表 SED1520F0A的指令集
下面以圖所示的接口電路為例說(shuō)明液晶顯示分區情況.E1、E2是液晶顯示的控制引腳,分別控制不同區域,下面只對E1控制區域的程序進(jìn)行分析.
2 程序設計
在系統程序的初始化部分,應對程序中用到的寄存器和臨時(shí)變量作如下說(shuō)明。
(1)定義程序中需要的全局變量。
(2)系統各個(gè)口的輸入輸出狀態(tài)初始化子程序。
(3)讀液晶顯示器狀態(tài)子程序。
(4)對液晶顯示器發(fā)送指令子程序(指令保存在TRANS寄存器中)。
(5)對液晶顯示器寫(xiě)數據了程序,其中數據保存在WRIte寄存器中。
(6)開(kāi)E1顯示子程序
(7)E1邊清屏子程序。
(8)關(guān)E1顯示子程序
有了以上的通用子程序,就可以構造出各種顯示程序,如字符、漢宇、曲線(xiàn)等。執行這些程序前,必須對液晶顯; J動(dòng)進(jìn)行初始化。初始化的順序為:關(guān)顯示→正常顯示驅動(dòng)設置→占空比設置→復位→ADC選擇→清屏-開(kāi)顯示,程序如下。
LCD顯示屏相關(guān)文章:lcd顯示屏原理
分頻器相關(guān)文章:分頻器原理 lcd相關(guān)文章:lcd原理
評論