已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
武漢理工大學(xué)能力拓展訓(xùn)練說明書1、摘要本次課程設(shè)計基于AT89C52為核心控制器,F(xiàn)YD12864液晶為顯示器設(shè)計的液晶顯示電路。該電路可通過調(diào)用FYD12864液晶內(nèi)部自帶的字庫(包含8192個標(biāo)準(zhǔn)中文漢字)顯示1616點的中文漢字、168的數(shù)字及英文字符,該過程只需要像DDRAM中寫入要顯示的字符的ASCII碼,當(dāng)事先指定顯示數(shù)據(jù)的位置,即可將所需顯示的字符顯示在液晶的指定位置。使用KNY12864液晶的繪圖功能,將所需顯示圖片或字符的字模數(shù)據(jù)寫入到CGRAM中,開圖片顯示,即可將該圖片或字符同時顯示在液晶上。本次設(shè)計的擴展功能為用紅外遙控控制圖像移動,紅外遙控的1、2、3、4、5、6、7、8八個按鍵分別控制圖像的上移、下移、左移、右移、靜止、繼續(xù)、初始界面、重新設(shè)置等八項功能。為實現(xiàn)圖像的移動,可通過數(shù)據(jù)指針改變寫入CGRAM的數(shù)據(jù),使得輸出的圖像數(shù)據(jù)相對于原來在行或者列上按著一定的規(guī)律在變化即可,移動速度的快慢可由刷新的頻率或者每次移動的行或者列數(shù)來決定。至于在液晶上顯示動畫,為了有更好的動畫效果,需要每秒刷新10幅圖像,而在該12864液晶上,每幅圖像需要1K的ROM空間,而52的ROM空間有限,所以在實現(xiàn)動畫上有點困難,故本設(shè)計中不實現(xiàn)該功能。2、軟件簡介2.1 Proteus簡介Proteus軟件是英國Labcenter electronics公司出版的EDA工具軟件(該軟件中國總代理為廣州風(fēng)標(biāo)電子技術(shù)有限公司)。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前最好的仿真單片機及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機愛好者、從事單片機教學(xué)的教師、致力于單片機開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計,真正實現(xiàn)了從概念到產(chǎn)品的完整設(shè)計。是目前世界上唯一將電路仿真軟件、PCB設(shè)計軟件和虛擬模型仿真軟件三合一的設(shè)計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器。Proteus功能模塊:(1)智能原理圖設(shè)計(ISIS)豐富的器件庫:超過27000種元器件,可方便地創(chuàng)建新元件; 智能的器件搜索:通過模糊搜索可以快速定位所需要的器件; 智能化的連線功能:自動連線功能使連接導(dǎo)線簡單快捷,大大縮短繪圖時間; 支持總線結(jié)構(gòu):使用總線器件和總線布線使電路設(shè)計簡明清晰; 可輸出高質(zhì)量圖紙:通過個性化設(shè)置,可以生成印刷質(zhì)量的BMP圖紙,可以方便地供WORD、POWERPOINT等多種文檔使用。 (2)完善的電路仿真功能(Prospice) ProSPICE混合仿真:基于工業(yè)標(biāo)準(zhǔn)SPICE3F5,實現(xiàn)數(shù)字/模擬電路的混合仿真; 超過27000個仿真器件:可以通過內(nèi)部原型或使用廠家的SPICE文件自行設(shè)計仿真器件,Labcenter也在不斷地發(fā)布新的仿真器件,還可導(dǎo)入第三方發(fā)布的仿真器件; 多樣的激勵源:包括直流、正弦、脈沖、分段線性脈沖、音頻(使用wav文件)、指數(shù)信號、單頻FM、數(shù)字時鐘和碼流,還支持文件形式的信號輸入; 豐富的虛擬儀器:13種虛擬儀器,面板操作逼真,如示波器、邏輯分析儀、信號發(fā)生器、直流電壓/電流表、交流電壓/電流表、數(shù)字圖案發(fā)生器、頻率計/計數(shù)器、邏輯探頭、虛擬終端、SPI調(diào)試器、I2C調(diào)試器等; 生動的仿真顯示:用色點顯示引腳的數(shù)字電平,導(dǎo)線以不同顏色表示其對地電壓大小,結(jié)合動態(tài)器件(如電機、顯示器件、按鈕)的使用可以使仿真更加直觀、生動; 高級圖形仿真功能(ASF):基于圖標(biāo)的分析可以精確分析電路的多項指標(biāo),包括工作點、瞬態(tài)特性、頻率特性、傳輸特性、噪聲、失真、傅立葉頻譜分析等,還可以進行一致性分析; (3)獨特的單片機協(xié)同仿真功能(VSM)支持主流的CPU類型:如ARM7、8051/52、AVR、PIC10/12、PIC16、PIC18、PIC24、dsPIC33、HC11、BasicStamp、8086、MSP430等,CPU類型隨著版本升級還在繼續(xù)增加,如即將支持CORTEX、DSP處理器; 支持通用外設(shè)模型:如字符LCD模塊、圖形LCD模塊、LED點陣、LED七段顯示模塊、鍵盤/按鍵、直流/步進/伺服電機、RS232虛擬終端、電子溫度計等等,其COMPIM(COM口物理接口模型)還可以使仿真電路通過PC機串口和外部電路實現(xiàn)雙向異步串行通信; 實時仿真:支持UART/USART/EUSARTs仿真、中斷仿真、SPI/I2C仿真、MSSP仿真、PSP仿真、RTC仿真、ADC仿真、CCP/ECCP仿真; 編譯及調(diào)試:支持單片機匯編語言的編輯/編譯/源碼級仿真,內(nèi)帶8051、AVR、PIC的匯編編譯器,也可以與第三方集成編譯環(huán)境(如IAR、Keil和Hitech)結(jié)合,進行高級語言的源碼級仿真和調(diào)試; (4)實用的PCB設(shè)計平臺原理圖到PCB的快速通道: 原理圖設(shè)計完成后,一鍵便可進入ARES的PCB設(shè)計環(huán)境,實現(xiàn)從概念到產(chǎn)品的完整設(shè)計; 先進的自動布局/布線功能:支持器件的自動/人工布局;支持無網(wǎng)格自動布線或人工布線;支持引腳交換/門交換功能使PCB設(shè)計更為合理; 完整的PCB設(shè)計功能:最多可設(shè)計16個銅箔層,2個絲印層,4個機械層(含板邊),靈活的布線策略供用戶設(shè)置,自動設(shè)計規(guī)則檢查,3D 可視化預(yù)覽; 多種輸出格式的支持:可以輸出多種格式文件,包括Gerber文件的導(dǎo)入或?qū)С觯憷c其它PCB設(shè)計工具的互轉(zhuǎn)(如protel)和PCB板的設(shè)計和加工。 Proteus資源豐富:(1)Proteus可提供的仿真元器件資源:仿真數(shù)字和模擬、交流和直流等數(shù)千種元器件,有30多個元件庫。 (2)Proteus可提供的仿真儀表資源 :示波器、邏輯分析儀、虛擬終端、SPI調(diào)試器、I2C調(diào)試器、信號發(fā)生器、模式發(fā)生器、交直流電壓表、交直流電流表。理論上同一種儀器可以在一個電路中隨意的調(diào)用。 (3)除了現(xiàn)實存在的儀器外,Proteus還提供了一個圖形顯示功能,可以將線路上變化的信號,以圖形的方式實時地顯示出來,其作用與示波器相似,但功能更多。這些虛擬儀器儀表具有理想的參數(shù)指標(biāo),例如極高的輸入阻抗、極低的輸出阻抗。這些都盡可能減少了儀器對測量結(jié)果的影響。 (4)Proteus可提供的調(diào)試手段 Proteus提供了比較豐富的測試信號用于電路的測試。這些測試信號包括模擬信號和數(shù)字信號。2.2 Keil簡介Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發(fā)系統(tǒng),與匯編相比,C語言在功能上、結(jié)構(gòu)性、可讀性、可維護性上有明顯的優(yōu)勢,因而易學(xué)易用。Keil提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。運行Keil軟件需要WIN98、NT、WIN2000、WINXP等操作系統(tǒng)。如果你使用C語言編程,那么Keil幾乎就是你的不二之選,即使不使用C語言而僅用匯編語言編程,其方便易用的集成環(huán)境、強大的軟件仿真調(diào)試工具也會令你事半功倍。Keil C51開發(fā)系統(tǒng)基本知識Keil C51開發(fā)系統(tǒng)基本知識 (1)系統(tǒng)概述 Keil C51軟件提供豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,全Windows界面。另外重要的一點,只要看一下編譯后生成的匯編代碼,就能體會到Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。下面詳細(xì)介紹Keil C51開發(fā)系統(tǒng)各部分功能和使用。 (2)Keil C51單片機軟件開發(fā)系統(tǒng)的整體結(jié)構(gòu) C51工具包的整體結(jié)構(gòu),uVision與Ishell分別是C51 for Windows和for Dos的集成開發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個開發(fā)流程。開發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51及C51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫文件,也可以與庫文件一起經(jīng)L51連接定位生成絕對目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進行源代碼級調(diào)試,也可由仿真器使用直接對目標(biāo)板進行調(diào)試,也可以直接寫入程序存貯器如EPROM中。 Keil C51生成的目標(biāo)代碼效率非常之高,多數(shù)語句生成的匯編代碼很緊湊,容易理解。在開發(fā)大型軟件時更能體現(xiàn)高級語言的優(yōu)勢。3、設(shè)計原理及方案3.1 AT89C52單片機介紹AT89C52是一個低電壓,高性能CMOS 8位單片機,片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器和Flash存儲單元,AT89C52單片機在電子行業(yè)中有著廣泛的應(yīng)用。其主要功能特性有以下幾點:(1)兼容MCS51指令系統(tǒng) (2)8k可反復(fù)擦寫(大于1000次)Flash ROM; (3)32個雙向I/O口; (4)256x8bit內(nèi)部RAM; (5)3個16位可編程定時/計數(shù)器中斷; (6)時鐘頻率0-24MHz; (7)2個串行中斷,可編程UART串行通道; (8)2個外部中斷源,共8個中斷源; (9)2個讀寫中斷口線,3級加密位; (10)低功耗空閑和掉電模式,軟件設(shè)置睡眠和喚醒功能; (11)有PDIP、PQFP、TQFP及PLCC等幾種封裝形式,以適應(yīng)不同產(chǎn)品的需求。 AT89C52為8 位通用微處理器,采用工業(yè)標(biāo)準(zhǔn)的C51內(nèi)核,在內(nèi)部功能及管腳排布上與通用的8xc52 相同,其主要用于會聚調(diào)整時的功能控制。功能包括對會聚主IC 內(nèi)部寄存器、數(shù)據(jù)RAM及外部接口等功能部件的初始化,會聚調(diào)整控制,會聚測試圖控制,紅外遙控信號IR的接收解碼及與主板CPU通信等。其引腳圖如圖3.1.1所示。圖3.1.1 AT89C52引腳圖P0口:P0口是一組8 位漏極開路型雙向I/O 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時,每位能吸收電流的 方式驅(qū)動8 個TTL邏輯門電路,對端口P0 寫“1”時,可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉(zhuǎn)換地址(低8 位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在Flash 編程時,P0口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求外接上拉電阻。 P1口:P1是一個帶內(nèi)部上拉電阻的8 位雙向I/O 口,P1的輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個TTL 邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。與AT89C51 不同之處是,P1.0 和P1.1 還可分別作為定時/計數(shù)器2 的外部計數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX),參見表1。Flash 編程和程序校驗期間,P1接收低8 位地址。表3.1.1 .P1.0和P1.1的第二功能引腳號功能特性P1.0T2,時鐘輸出P1.1T2EX(定時/計數(shù)器2)P2口:P2 是一個帶有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 的輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個TTL 邏輯門電路。對端口P2 寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。在訪問外部程序存儲器或16 位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX DPTR 指令)時,P2 口送出高8 位地址數(shù)據(jù)。在訪問8 位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX RI 指令)時,P2 口輸出P2 鎖存器的內(nèi)容。Flash 編程或校驗時,P2亦接收高位地址和一些控制信號。 P3口:P3 口是一組帶有內(nèi)部上拉電阻的8 位雙向I/O 口。P3口輸出緩沖級可驅(qū)動(吸收或輸出電流)4 個TTL 邏 輯門電路。對P3 口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時,被外部拉低的P3口將用上拉電阻輸出電流(IIL)。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能P3口還接收一些用于Flash 閃速存儲器編程和程序校驗的控制信號。 RST:復(fù)位輸入。當(dāng)振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復(fù)位。 ALE/PROG:當(dāng)訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8 位字節(jié)。一般情況下,ALE 仍以時鐘振蕩頻率的1/6 輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲器時將跳過一個ALE 脈沖。對Flash 存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH 單元的D0 位置位,可禁止ALE 操作。該位置位后,只有一條 MOVX 和MOVC指令才能將ALE 激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應(yīng)設(shè)置ALE 禁止位無效。 PSEN:程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當(dāng)AT89C52 由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN 有效,即輸出兩個脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。 EA/VPP:外部訪問允許。欲使CPU 僅訪問外部程序存儲器(地址為0000HFFFFH),EA 端必須保持低電平(接地)。需注意的是:如果加密位LB1 被編程,復(fù)位時內(nèi)部會鎖存EA端狀態(tài)。 如EA端為高電平(接Vcc端),CPU 則執(zhí)行內(nèi)部程序存儲器中的指令。Flash 存儲器編程時,該引腳加上+12V 的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V 編程電壓Vpp。 XTAL1:振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。 XTAL2:振蕩器反相放大器的輸出端。3.2 FYD12864液晶芯片介紹12864C-1是一種具有4位/8位并行、2線或3線串行多種接口方式,內(nèi)部含有國標(biāo)一級、 二級簡體中文字庫的點陣圖形液晶顯示模塊;其顯示分辨率為12864,內(nèi)置8192個16*16 點漢字,和128個16*8點ASCII字符集.利用該模塊靈活的接口方式和簡單、方便的操作指 令,可構(gòu)成全中文人機交互圖形界面。可以顯示84行1616點陣的漢字.也可完成圖形 顯示.低電壓低功耗是其又一顯著特點。由該模塊構(gòu)成的液晶顯示方案與同類型的圖形點陣 液晶顯示模塊相比,不論硬件電路結(jié)構(gòu)或顯示程序都要簡潔得多,且該模塊的價格也略低于相同點陣的圖形液晶模塊。 (1)基本特性: 低電源電壓(VDD:+3.0-+5.5V) 顯示分辨率:12864點 內(nèi)置漢字字庫,提供8192個1616點陣漢字(簡繁體可選) 內(nèi)置128個168點陣字符 2MHZ時鐘頻率 顯示方式:STN、半透、正顯 驅(qū)動方式:1/32DUTY,1/5BIAS 視角方向:6點 背光方式:側(cè)部高亮白色LED,功耗僅為普通LED的1/51/10 通訊方式:串行、并口可選 內(nèi)置DC-DC轉(zhuǎn)換電路,無需外加負(fù)壓 無需片選信號,簡化軟件設(shè)計 工作溫度:0-+55,存儲溫度:-20-+60(2)內(nèi)部結(jié)構(gòu)FYD12864液晶的內(nèi)部結(jié)構(gòu)控制如圖3.2.1所示。圖 3.2.1 液晶內(nèi)部結(jié)構(gòu)圖(3)模塊接口說明表 3.1.1 12864管腳說明管腳號管腳名稱電平管腳功能描述1VSS0V電源地2VCC3.0+5V電源正3V0-對比度(亮度)調(diào)整4RS(CS)H/LRS=“H”,表示DB7DB0為顯示數(shù)據(jù)RS=“L”,表示DB7DB0為顯示指令數(shù)據(jù)5R/W(SID)H/LR/W=“H”,E=“H”,數(shù)據(jù)被讀到DB7DB0R/W=“L”,E=“HL”,DB7DB0的數(shù)據(jù)被寫到IR或DR6E(SCLK)H/L使能信號714DB0DB7H/L三態(tài)數(shù)據(jù)線15PSBH/LH:8位或4位并口方式,L:串口方式16NC-空腳17/RESETH/L復(fù)位端,低電平有效18VOUT-LCD驅(qū)動電壓輸出端19AVDD背光源正端(+5V)20KVSS背光源負(fù)端(4)模塊主要硬件結(jié)構(gòu)說明表 3.2.2 RS,R/W的配合選擇決定控制界面的4種模式RSR/W功能說明LLMPU寫指令到指令暫存器LH讀出忙標(biāo)志(BF)及地址計數(shù)器(AC)的狀態(tài)HLMPU寫入數(shù)據(jù)到數(shù)據(jù)暫存器HHMPU從數(shù)據(jù)暫存器(DR)中讀出數(shù)據(jù)表 3.2.3 E信號E狀態(tài)執(zhí)行動作結(jié)果高低I/O緩沖DR配合/W進行寫數(shù)據(jù)或指令高DRI/O緩沖配合R驚醒讀數(shù)據(jù)或指令低/低高無動作a. 忙標(biāo)志:BF BF標(biāo)志提供內(nèi)部工作情況.BF=1表示模塊在進行內(nèi)部操作,此時模塊不接受外部指令和數(shù)據(jù).BF=0時,模塊為準(zhǔn)備狀態(tài),隨時可接受外部指令和數(shù)據(jù). 利用STATUS RD 指令,可以將BF讀到DB7總線,從而檢驗?zāi)K之工作狀態(tài).b. 字型產(chǎn)生ROM (CGROM) 字型產(chǎn)生ROM(CGROM)提供8192個此觸發(fā)器是用于模塊屏幕顯示開和關(guān)的控制。DFF=1為開顯示(DISPLAY ON),DDRAM 的內(nèi)容就顯示在屏幕上,DFF=0為關(guān)顯示(DISPLAY OFF)。 DFF 的狀態(tài)是指令DISPLAY ON/OFF和RST信號控制的。c. 顯示數(shù)據(jù)RAM (DDRAM)模塊內(nèi)部顯示數(shù)據(jù)RAM提供642個位元組的空間,最多可控制4行16字(64個字)的中文字型顯示,當(dāng)寫入顯示數(shù)據(jù)RAM時,可分別顯示CGROM與CGRAM的字型;此模塊可顯示三種字型,分別是半角英數(shù)字型(16*8)、CGRAM字型及CGROM的中文字型,三種字型的選擇,由在DDRAM中寫入的編碼選擇,在0000H0006H的編碼中(其代碼分別是0000、0002、0004、0006共4個)將選擇CGRAM的自定義字型,02H7FH的編碼中將選擇半角英數(shù)字的字型,至于A1以上的編碼將自動的結(jié)合下一個位元組,組成兩個位元組的編碼形成中文字型的編碼BIG5(A140D75F),GB(A1A0-F7FFH)。d. 字型產(chǎn)生RAM (CGRAM) 字型產(chǎn)生RAM提供圖象定義(造字)功能, 可以提供四組1616點的自定義圖象空間,使用者可以將內(nèi)部字型沒有提供的圖象字型自行定義到CGRAM中,便可和CGROM中的定義一樣地通過DDRAM顯示在屏幕中。e. 地址計數(shù)器AC地址計數(shù)器是用來貯存DDRAM/CGRAM之一的地址,它可由設(shè)定指令暫存器來改變,之后只要讀取或是寫入DDRAM/CGRAM的值時,地址計數(shù)器的值就會自動加一,當(dāng)RS為“0”時而R/W為“1”時,地址計數(shù)器的值會被讀取到DB6DB0中。f. 光標(biāo)/閃爍控制電路 此模塊提供硬體光標(biāo)及閃爍控制電路,由地址計數(shù)器的值來指必RAM中的光標(biāo)或閃爍位置。(5)主要指令說明表3.3.3 基本指令說明表指 指 令 碼功 能令RSR/WD7D6D5D4D3D2D1D0清除顯示0000000001將DDRAM填滿20H,并且設(shè)定DDRAM的地址計數(shù)器(AC)到00H地址歸位000000001X設(shè)定DDRAM的地址計數(shù)器(AC)到00H,并且將游標(biāo)移到開頭原點位置;這個指令不改變DDRAM 的內(nèi)容顯示狀態(tài)開/關(guān)0000001DCBD=1: 整體顯示 ONC=1: 游標(biāo)ON B=1:游標(biāo)位置反白允許進入點設(shè)定00000001I/DS指定在數(shù)據(jù)的讀取與寫入時,設(shè)定游標(biāo)的移動方向及指定顯示的移位游標(biāo)或顯示移位控制000001S/CR/LXX設(shè)定游標(biāo)的移動與顯示的移位控制位;這個指令不改變DDRAM 的內(nèi)容 功能 設(shè)定00001DLXREXXDL=0/1:4/8位數(shù)據(jù)RE=1: 擴充指令操作RE=0: 基本指令操作 設(shè)定CGRAM 地址0001AC5AC4AC3AC2AC1AC0設(shè)定CGRAM 地址 設(shè)定DDRAM 地址0010AC5AC4AC3AC2AC1AC0設(shè)定DDRAM 地址(顯示位址)第一行:80H87H第二行:90H97H讀取忙標(biāo)志和地址01BFAC6AC5AC4AC3AC2AC1AC0讀取忙標(biāo)志(BF)可以確認(rèn)內(nèi)部動作是否完成,同時可以讀出地址計數(shù)器(AC)的值寫數(shù)據(jù)到RAM10數(shù)據(jù)將數(shù)據(jù)D7D0寫入到內(nèi)部的RAM (DDRAM/CGRAM/IRAM/GRAM)讀出RAM的值11數(shù)據(jù)從內(nèi)部RAM讀取數(shù)據(jù)D7D0(DDRAM/CGRAM/IRAM/GRAM)表3.3.4 擴展指令說明表指 指 令 碼功 能令RSR/WD7D6D5D4D3D2D1D0 待命模式0000000001進入待命模式,執(zhí)行其他指令都棵終止待命模式卷動地址開關(guān)開啟000000001SRSR=1:允許輸入垂直卷動地址SR=0:允許輸入IRAM和CGRAM地址 反白 選擇00000001R1R0選擇2行中的任一行作反白顯示,并可決定反白與否。初始值R1R000,第一次設(shè)定為反白顯示,再次設(shè)定變回正常 睡眠 模式0000001SLXXSL=0:進入睡眠模式SL=1:脫離睡眠模式 擴充 功能 設(shè)定00001CLXREG0CL=0/1:4/8位數(shù)據(jù)RE=1: 擴充指令操作RE=0: 基本指令操作G=1/0:繪圖開關(guān) 設(shè)定繪圖RAM 地址0010AC60AC50AC4AC3AC3AC2AC2AC1AC1AC0AC0設(shè)定繪圖RAM先設(shè)定垂直(列)地址AC6AC5AC0再設(shè)定水平(行)地址AC3AC2AC1AC0將以上16位地址連續(xù)寫入即可(6)讀寫時序圖圖3.2.2 寫數(shù)據(jù)時序圖圖3.2.3 讀數(shù)據(jù)時序圖3.3 設(shè)計方案本次課程設(shè)計基于AT89C52為核心控制器,F(xiàn)YD12864液晶為顯示器設(shè)計的液晶顯示電路。該電路可通過調(diào)用FYD12864液晶內(nèi)部自帶的字庫(包含8192個標(biāo)準(zhǔn)中文漢字)顯示1616點的中文漢字、168的數(shù)字及英文字符,該過程只需要像DDRAM中寫入要顯示的字符的ASCII碼,當(dāng)事先指定顯示數(shù)據(jù)的位置,即可將所需顯示的字符顯示在液晶的指定位置。使用KNY12864液晶的繪圖功能,將所需顯示圖片或字符的字模數(shù)據(jù)寫入到CGRAM中,開圖片顯示,即可將該圖片或字符同時顯示在液晶上。擴展中實現(xiàn)圖像的上、下、左、右移動,實現(xiàn)該功能主要基于數(shù)據(jù)指針讀取的字模數(shù)據(jù)的位置發(fā)生改變來實現(xiàn)的。字模數(shù)據(jù)是固化在52ROM里面的,通過數(shù)據(jù)指針將這些字模數(shù)據(jù)讀到CGRAM中,然后開顯示,即可將圖像或字符顯示在12864液晶上。根據(jù)FYD12864液晶讀取數(shù)據(jù)的順序特性,在讀取字模數(shù)據(jù)時,按照一定的規(guī)律跳過固定的數(shù)據(jù)個數(shù),后面補上另一幅圖像固定的數(shù)據(jù)個數(shù),事實上就是將兩幅圖像拼湊到液晶上,最后通過刷新顯示的圖像,給人的感覺就是圖像在液晶上移動??赡芤苿有Ч麜容^差,但大體實現(xiàn)移動的功能。要控制圖像移動的方向,需要外部鍵盤輸入,MPU判斷鍵值來改變移動方向。由于圖像的移動需要MPU不斷的像CGRAM中寫入圖像數(shù)據(jù),然后刷新液晶顯示來實現(xiàn),這樣子MPU必須忙于數(shù)據(jù)的寫入,無法去檢測鍵盤的輸入。即使可以,檢測的實時性會很低。但是52中有一項功能可不受當(dāng)前指令執(zhí)行影響,那就是中斷,只要有中斷產(chǎn)生,即可暫停當(dāng)前指令的執(zhí)行,進入中斷服務(wù)程序進行處理。設(shè)計中,我采用紅外遙控的方法,將紅外接收器SM0038接收到的信號輸入到外部中斷0的輸入口,通過在中斷服務(wù)程序中對紅外進行解碼,改變標(biāo)志位flag的值來實現(xiàn)移動方向的改變,當(dāng)然前提是開外部中斷0。4、程序設(shè)計4.1 程序流程圖主程序和中斷服務(wù)程序流程圖如下所示: 圖 4.1.1主程序流程圖 圖 4.1.2 外部中斷處理流程圖4.2 程序代碼4.2.1 主函數(shù)文件main.c#include #include 12864.h #include#define uchar unsigned char#define uint unsigned int/紅外接收接P3.2 紅外遙控每個按鍵的定義可以看Code_Chang();/有關(guān)的位聲明/sbit IRIN=P32;uchar Reive4=0,yaokong,Last,Last1;void Init_R()Reive0=0;Reive1=0;Reive2=0;Reive3=0;void delay0(uchar x) /x*0.14MS uchar i; while(x-) for (i = 0; i13; i+) unsigned char Code_Chang(unsigned char yaokong)switch (yaokong)case 0x10:flag=1;break;case 0x03:flag=2;break;case 0x01:flag=3;break;case 0x06:flag=4;break;case 0x09:flag=0;break;case 0x1d:flag=6;break;default:flag=0;break;return flag;void IR_IN() interrupt 0 using 0 unsigned char j,i,N=0;unsigned char k=0;Init_R();EX0 = 0; delay0(15);if (IRIN=1) EX0 =1; return; /確認(rèn)IR信號出現(xiàn)while (!IRIN) /等IR變?yōu)楦唠娖?,跳過9ms的前導(dǎo)低電平信號。delay0(1);for (j=0;j4;j+) /收集四組數(shù)據(jù) for (i=0;i=30) EX0=1;return; /0.14ms計數(shù)過長自動離開。 /高電平計數(shù)完畢 Reivej=Reivej 1; /數(shù)據(jù)最高位補“0” if (N=8) Reivej = Reivej | 0x80; /數(shù)據(jù)最高位補“1”N=0;/end for i/end for jif (Reive2!=Reive3) EX0=1;return; yaokong=Reive2;flag=Code_Chang(yaokong);if(flag0&flag5)Last=flag;EX0=1;/* 主函數(shù) */void main()uchar line=8;/Last=flag;IE = 0x81; TCON = 0x01; IRIN=1; delay1(100); /上電,等待穩(wěn)定init_display();while(1)switch (flag)case 0:break;case 1:picture_move_Up(Photo1,8);break;case 2:picture_move_Down(Photo1,Photo3,8);break;case 3:picture_mov_Left(Photo1,Photo2); picture_mov_Left(Photo2,Photo1);break;case 4:picture_mov_Right(Photo2,Photo1); picture_mov_Right(Photo1,Photo2);break;case 6:flag=Last;break;default:flag=0;break;4.2.2 液晶顯示函數(shù)文件12864.h#include #include #define uchar unsigned char#define uint unsigned intuint time=2000,flag=0;/閃爍間隔時間-顯示方式標(biāo)志位flag/* 12864LCD引腳定義 */#define LCD_data P0 /數(shù)據(jù)口sbit LCD_RS = P20; /寄存器選擇輸入 sbit LCD_RW = P21; /液晶讀/寫控制sbit LCD_EN = P22; /液晶使能控制sbit LCD_PSB = P23; /串/并方式控制sbit LCD_RST = P25; /液晶復(fù)位端口#define delayNOP(); _nop_();_nop_();_nop_();_nop_();/*/uchar code DIS1 = 武漢理工大學(xué) ;uchar code DIS2 = ;uchar code DIS3 = 能力擴展訓(xùn)練 ;uchar code DIS4 = 電信0805 23號 ;/*/*圖像字模省略 */*/uchar code Photo1 =;uchar code Photo2=;uchar code Photo31=0;/該數(shù)組為調(diào)用前面的數(shù)據(jù)用/*/* 延時函數(shù) */void delay1(int ms) while(ms-) uchar y; for(y=0;y100;y+) ; /*/*檢查LCD忙狀態(tài) */bit lcd_busy() bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN = 0; return(result); /*/*寫指令數(shù)據(jù)到LCD */void lcd_wcmd(uchar cmd) while(lcd_busy(); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /*/*寫顯示數(shù)據(jù)到LCD */void lcd_wdat(uchar dat) while(lcd_busy(); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; /*/* LCD初始化設(shè)定 */void lcd_init() LCD_PSB = 1; /并口方式 LCD_RST = 0; /液晶復(fù)位 delay1(3); LCD_RST = 1; delay1(3); lcd_wcmd(0x34); /擴充指令操作 delay1(5); lcd_wcmd(0x30); /基本指令操作 delay1(5); lcd_wcmd(0x0C); /顯示開,關(guān)光標(biāo) delay1(5); lcd_wcmd(0x01); /清除LCD的顯示內(nèi)容 delay1(5);/*/* 設(shè)定顯示位置 */void lcd_pos(uchar X,uchar Y) uchar pos; if (X=1) X=0x80; else if (X=2) X=0x90; else if (X=3) X=0x88; else if (X=4) X=0x98; pos = X+Y ; lcd_wcmd(pos); /顯示地址/* 閃爍函數(shù) */void lcdflag(uint z) lcd_wcmd(0x08); delay1(z); lcd_wcmd(0x0c); delay1(z); lcd_wcmd(0x08); delay1(z); lcd_wcmd(0x0c); delay1(z); lcd_wcmd(0x08); delay1(200); lcd_wcmd(0x0c); delay1(5); lcd_wcmd(0x01); delay1(5);/* 圖形顯示 */void photodisplay(uchar *bmp) uchar i,j; lcd_wcmd(0x34); /寫數(shù)據(jù)時,關(guān)閉圖形顯示 for(i=0;i32;i+) lcd_wcmd(0x80+i); /先寫入水平坐標(biāo)值 lcd_wcmd(0x80); /寫入垂直坐標(biāo)值 for(j=0;j16;j+) /再寫入兩個8位元的數(shù)據(jù) lcd_wdat(*bmp+); delay1(1);
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度農(nóng)業(yè)種植項目環(huán)保監(jiān)測服務(wù)合同3篇
- 2025年度家庭裝修工程材料驗收與保管承包合同3篇
- 農(nóng)村房屋買賣版合同(二零二五)規(guī)范范本
- 2025年度養(yǎng)殖場地承包與農(nóng)產(chǎn)品深加工合作合同3篇
- 2025年度傳媒行業(yè)項目投資與合作合同模板3篇
- 2025年度農(nóng)村個人地基使用權(quán)轉(zhuǎn)讓與農(nóng)村集體產(chǎn)權(quán)制度改革試點合同3篇
- 2025年度全款購豪華MPV及售后保障合同范本3篇
- 2024年中國球形掛板市場調(diào)查研究報告
- 二零二五年度競業(yè)禁止機械租賃與智能維護合同2篇
- 2024年中國焗油黑摩絲市場調(diào)查研究報告
- 2024-2030年中國電子級四氟化硅行業(yè)風(fēng)險評估及未來全景深度解析研究報告
- JGJ106-2014建筑基樁檢測技術(shù)規(guī)范
- 中考字音字形練習(xí)題(含答案)-字音字形專項訓(xùn)練
- 四柱萬能液壓機液壓系統(tǒng) (1)講解
- JTT 1501-2024 潛水作業(yè)現(xiàn)場安全監(jiān)管要求(正式版)
- 家鄉(xiāng)土特產(chǎn)電商營銷策劃方案(2篇)
- CTD申報資料撰寫模板:模塊三之3.2.S.4原料藥的質(zhì)量控制
- 汽車標(biāo)準(zhǔn)-商用車輛前軸總成
- 個人貸款月供款計算表模板
- 先玉335玉米品種介紹課件講解
- (正式版)JTT 1482-2023 道路運輸安全監(jiān)督檢查規(guī)范
評論
0/150
提交評論