




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、MS基于1602字符型液晶顯示器的顯示系統(tǒng) 姓名:楊越 班級(jí):電子11-1 學(xué)號(hào):1104001041、 實(shí)習(xí)目的(1)了解飛思卡爾單片機(jī)的基本原理,掌握其基本的工作流程。(2)了解LCD1602的基本原理及用法。(3)能夠熟練使用CodeWarrior軟件編寫(xiě)C語(yǔ)言程序,使用BDM仿真器下載程序。(4)能夠熟練焊接電路板。二、實(shí)驗(yàn)設(shè)備與器件CodeWarrior軟件,BDM仿真器,萬(wàn)用電路板,飛思卡爾單片機(jī),LCD1602液晶顯示器,三、實(shí)驗(yàn)內(nèi)容內(nèi)容:利用飛思卡爾單片機(jī)制作基于1602字符液晶顯示器的顯示系統(tǒng)要求:用四個(gè)按鍵控制,按下第一個(gè)按鍵顯示1,按下第二個(gè)按鍵顯示2,以此類(lèi)推。(1)L
2、CD1602液晶顯示器的原理:1602共16個(gè)管腳,但是編程用到的主要管腳不過(guò)三個(gè),分別為:RS(數(shù)據(jù)命令選擇端),R/W(讀寫(xiě)選擇端),E(使能信號(hào));以后編程便主要圍繞這三個(gè)管腳展開(kāi)進(jìn)行初始化,寫(xiě)命令,寫(xiě)數(shù)據(jù)。以下具體闡述這三個(gè)管腳:RS為寄存器選擇,高電平選擇數(shù)據(jù)寄存器,低電平選擇指令寄存器。R/W為讀寫(xiě)選擇,高電平進(jìn)行讀操作,低電平進(jìn)行寫(xiě)操作。E端為使能端,后面和時(shí)序聯(lián)系在一起。 除此外,D0D7分別為8位雙向數(shù)據(jù)線。操作時(shí)序: RSR/W操作說(shuō)明00寫(xiě)入指令碼D0D701讀取輸出的D0D7狀態(tài)字10寫(xiě)入數(shù)據(jù)D0D711從D0D
3、7讀取數(shù)據(jù)注:關(guān)于E=H脈沖開(kāi)始時(shí)初始化E為0,然后置E為1,再清0.讀取狀態(tài)字時(shí),注意D7位,D7=1,禁止讀寫(xiě)操作;D7=0,允許讀寫(xiě)操作;所以對(duì)控制器每次進(jìn)行讀寫(xiě)操作前,必須進(jìn)行讀寫(xiě)檢測(cè)。(即后面的讀忙子程序)指令集:LCD_1602 初始化指令小結(jié):0x38 設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口0x01 清屏0x0F 開(kāi)顯示,顯示光標(biāo),光標(biāo)閃爍0x08 只開(kāi)顯示0x0e 開(kāi)顯示,顯示光標(biāo),光標(biāo)不閃爍0x0c 開(kāi)顯示,不顯示光標(biāo)0x06
4、160; 地址加1,當(dāng)寫(xiě)入數(shù)據(jù)的時(shí)候光標(biāo)右移0x02 地址計(jì)數(shù)器AC=0;(此時(shí)地址為0x80) 光標(biāo)歸原點(diǎn),但是DDRAM中斷內(nèi)容不變0x18 光標(biāo)和顯示一起向左移動(dòng)(2)飛思卡爾單片機(jī)的功能及特點(diǎn):MC9S12XS128 是 16 位單片機(jī),由 16 位中央處理單元(CPU12X)、128KB 程序、Flash(P-lash)、8KB RAM、8KB 數(shù)據(jù) Flash(D-lash)組成片內(nèi)存儲(chǔ)器。主要功能模塊包括:內(nèi)部存儲(chǔ)器, 內(nèi)部 PLL 鎖相環(huán)模塊 ,2 個(gè)異步串口通訊 SCI ,1個(gè)串行外設(shè)接口 SPI MSCAN 模塊
5、,1 個(gè) 8 通道輸入/輸出比較定時(shí)器模塊 TIM ,周期中斷定時(shí)器模塊 PIT ,16 通道 A/D 轉(zhuǎn)換模塊 ADC ,1 個(gè) 8 通道脈沖寬度調(diào)制模塊 PWM ,輸入/輸出數(shù)字 I/O 口。 本次設(shè)計(jì)中主要用到PORTA,PORTB端口:PORTA:PORTA 為通用 I/O 口, 共 8 個(gè),作為通用數(shù)字 I/O 口使用,未集成特殊功能.主要配置寄存器有:數(shù)據(jù)寄存器 PORTA、數(shù)據(jù)方向寄存 DDRA、上拉電阻控制寄存器PUCR 和驅(qū)動(dòng)控制寄存器 RDR。a. 數(shù)據(jù)寄存器 PORTA通過(guò)寫(xiě) 1/0 使單片機(jī)對(duì)應(yīng)引腳輸出高低電平,或通過(guò)讀取數(shù)據(jù)寄存器獲得對(duì)應(yīng)引腳的高低電平值 。例:POR
6、TA_PB0=1b. 數(shù)據(jù)方向寄存器 DDRADDRA 寄存器配置引腳為輸出口還是輸入口,“0”,輸入口;“1”,輸出口。MCU 復(fù)位后,DDRA 值為 0x00, 引腳默認(rèn)為輸入口。例:DDRA=0xFF /配置 PORTA 口為輸出 PORTB:PORTB 為通用數(shù)字 I/O 口, 共 8 個(gè)。其使用與 PORTA 基本一樣。主要配置寄存器有:數(shù)據(jù)寄存器 PORTB、數(shù)據(jù)方向寄存 DDRB。上拉電阻控制寄存器 PUCR 和驅(qū)動(dòng)控制寄存器 RDR 與 PORTA 、PORTB、PORTE、PORTK 共用。a.數(shù)據(jù)寄存器 PORTBb.數(shù)據(jù)方向寄存器 DDRB四、原理圖: 器件說(shuō)明:LCD1
7、602 (16管腳),2個(gè)排阻,4個(gè)10k電阻,一個(gè)1K電阻,飛思卡爾芯片(64管腳) 管腳連接:VSSGND DB6PB6VCCVCCDB7PB7VEEGNDAVCCRSPA0KGNDRWPA1K1PA4EPA2K2PA5DB0PB0K4PA6DB1PB1K4PA7DB2PB2DB3PB3DB4PB4 DB5PB5五、流程圖開(kāi)始 鎖相環(huán)設(shè)置 初始化LCD是否有鍵按下 否 是 寫(xiě)指令 寫(xiě)數(shù)據(jù) 顯示字符 六、程序設(shè)計(jì)1.void PLL_Init(void):內(nèi)部鎖相環(huán)模塊,單片機(jī)使用PLL功能能夠獲得更高的總線頻率,這對(duì)于需要提高單片機(jī)運(yùn)行速度的應(yīng)用場(chǎng)合非常必要。2. void LCD_ini
8、t(void):初始化LCD1602液晶顯示屏,3. void LCD_write_command(uchar dat):寫(xiě)指令4. void LCD_write_data(uchar dat):寫(xiě)數(shù)據(jù)5. void LCD_disp_char(uchar x,uchar y,uchar dat):顯示字符6. void main(void):主函數(shù)#include <hidef.h> /* common defines and macros */#include "derivative.h" /* derivative-specific definitions
9、 */#include "MC9S12XS128.h" unsigned char a=0; unsigned char b=0; unsigned char c=0; unsigned char d=0; void PLL_Init(void) /PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1) /鎖相環(huán)時(shí)鐘=2*16*(2+1)/(1+1)=48MHz REFDV=1; /總線時(shí)鐘=48/2=24MHz SYNR=2; while(!(CRGFLG&0x08); CLKSEL=0x80; /選定鎖相環(huán)時(shí)鐘 # define LCD_DB PO
10、RTB# define LCD_RS PORTA_PA0# define LCD_RW PORTA_PA1# define LCD_E PORTA_PA2void LCD_init(void);/初始化函數(shù)void LCD_write_command(uchar command);/寫(xiě)指令函數(shù)void LCD_write_data(uchar dat);/寫(xiě)數(shù)據(jù)函數(shù)void LCD_disp_char(uchar x,uchar y,uchar dat);/在某個(gè)屏幕位置上顯示一個(gè)字符,X(0-16),y(1-2)/void LCD_check_busy(void);/檢查忙函數(shù)。我沒(méi)用到此函
11、數(shù),因?yàn)橥ㄟ^(guò)率極低。void delay_n25us(uint n);/延時(shí)函數(shù)/*/*初始化函數(shù)*void LCD_init(void)LCD_write_command(0x38);/設(shè)置8位格式,2行,5x7LCD_write_command(0x0c);/整體顯示,關(guān)光標(biāo),不閃爍LCD_write_command(0x06);/設(shè)定輸入方式,增量不移位LCD_write_command(0x01);/清除屏幕顯示delay_n25us(10);/實(shí)踐證明,我的LCD1602上,用for循環(huán)200次就能可靠完成清屏指令。/LCD_write_command(0x06);/LCD_writ
12、e_command(0x0c);/*/*寫(xiě)指令函數(shù)*void LCD_write_command(uchar dat)LCD_DB=dat;delay_n25us(1);LCD_RS=0;delay_n25us(1);/指令LCD_RW=0;delay_n25us(1);/寫(xiě)入LCD_E=1;delay_n25us(1);/允許LCD_E=0;delay_n25us(1);/實(shí)踐證明,我的LCD1602上,用for循環(huán)1次就能完成普通寫(xiě)指令。 /*/*寫(xiě)數(shù)據(jù)函數(shù)*void LCD_write_data(uchar dat)LCD_DB=dat;delay_n25us(1);LCD_RS=1;d
13、elay_n25us(1);/數(shù)據(jù)LCD_RW=0;delay_n25us(1);/寫(xiě)入LCD_E=1;delay_n25us(1);/允許LCD_E=0;delay_n25us(1);delay_n25us(1);/*/*顯示一個(gè)字符函數(shù)*void LCD_disp_char(uchar x,uchar y,uchar dat)uchar address;if(y=1) address=0x80+x;else address=0xc0+x;LCD_write_command(address);LCD_write_data(dat);/*/*檢查忙函數(shù)*void LCD_check_busy(
14、) /實(shí)踐證明,在我的LCD1602上,檢查忙指令通過(guò)率極低,以 /至于不能正常使用LCD。因此我沒(méi)有再用檢查忙函數(shù)。而使do /用了延時(shí)的方法,延時(shí)還是非常好用的。我試了一下,用 LCD_E=0; /for循環(huán)作延時(shí),普通指令只要1次循就可完成。清屏指令 LCD_RS=0; /要用200次循環(huán)便能完成。 LCD_RW=1; LCD_DB=0xff; LCD_E=1; while(LCD_DB7=1);*/*延時(shí)函數(shù)*void delay_n25us(uint n) uint i=0; uchar j=0; for(i=n;i>0;i-) for(j=0;j<2;j+); /在這個(gè)
15、延時(shí)循環(huán)函數(shù)中我只做了2次循環(huán), /實(shí)踐證明我的LCD1602上普通的指令只需1次循環(huán)就能可靠完成。/*void check_key(void) /判斷按鍵是否可以控制單片機(jī)(如果鍵入正常,則單片機(jī)上的LED會(huì)亮 if(!PORTAB_PA4) PORTE_PE5 = 0; a=1; else if(!PORTAB_PA5) PORTE_PE5 = 0; a=2; else if(!PORTAB_PA6) PORTE_PE5 = 0; a=3; else if(!PORTAB_PA7) PORTE_PE5 = 0; a=4; else PORTE_PE5 = 1;/*主函數(shù)*void port
16、_init() DDRB=0XFF; DDRA=0XFF; PORTB=0XFF;void main(void) /PLL_Init(); port_init(); LCD_init(); DDRE_DDRE5 = 1; PORTE_PE5 = 1; /不亮 /*DDRA_DDRA0 = 1; DDRA_DDRA1 = 1; DDRA_DDRA2 = 1; DDRA_DDRA3 = 1;*/ DDRA_DDRA4 = 0; /SET PORTA I/O INPUT DDRA_DDRA5 = 0; DDRA_DDRA6 = 0; DDRA_DDRA7 = 0; PORTAB_PA4 = 1; P
17、ORTAB_PA5 = 1; PORTAB_PA6 = 1; PORTAB_PA7 = 1;/LCD_disp_char(4,2,'1'); for(;) _FEED_COP(); /* feeds the dog */ check_key(); /檢查按鍵 while(1) /*if (a=1) delay(10);*/ /延時(shí)去抖 if(a=1) LCD_disp_char(0,2,'1'); /在LCD第二行第一位輸出1 /*else if (a=2) delay(10);*/ /延時(shí)去抖 else if(a=2) LCD_disp_char(1,2,
18、39;2'); /在LCD第二行第二位輸出2 /*else if (a=3) delay(10);*/ /延時(shí)去抖 else if(a=3) LCD_disp_char(2,2,'3'); /在LCD第二行第3位輸出3 /*else if (a=4)/延時(shí)去抖 delay(10);*/ else if(a=4) LCD_disp_char(3,2,'4'); /在LCD第二行第4位輸出4 / else LCD_disp_char(12,1,'0'); / / LCD_disp_char(2,1,'2'); /* loop
19、forever */ /* please make sure that you never leave main */七、調(diào)試過(guò)程(1)使用Altium畫(huà)出電路圖:在電路圖設(shè)計(jì)過(guò)程中,注明所用器件名稱(chēng),規(guī)格,注意管腳的連接,盡可能讓電路原理圖規(guī)范,正確,方便看圖焊接的工作。(2)測(cè)量電路焊接是否正常:焊接好電路板后,首先用萬(wàn)用表測(cè)試是否連通,將表筆兩端分別置于連接的兩管腳,將萬(wàn)用表開(kāi)關(guān)置于分貝檔,若有響聲,則電路已經(jīng)聯(lián)通,分別測(cè)試該設(shè)計(jì)所用的所有管腳。(3)檢驗(yàn)輸入I0:用萬(wàn)用表分別檢測(cè)4個(gè)按鍵,看按鍵是否起到輸入作用。將萬(wàn)用表開(kāi)關(guān)置于電壓檔,分別測(cè)試按鍵按下前后的單片機(jī)電壓。若按鍵前電壓為5v,按鍵后為0,則說(shuō)明按鍵起到了輸入的作用。(4)輸出IO端口:輸出口主要檢驗(yàn)lcd1602的顯示情況,首先用萬(wàn)用表測(cè)試,檢查L(zhǎng)CD1602管腳鏈接是否有問(wèn)題。注:LCD1602的VEE串聯(lián)一個(gè)電位器后接地,通過(guò)調(diào)節(jié)電位器,調(diào)節(jié)顯示對(duì)比度,否則即使初始化程序正確,字符也可能顯示不出來(lái)。(5)程序:程序中主要注意Lcd1602顯示部分,因?yàn)長(zhǎng)CD1602相對(duì)于單片機(jī)速度比較慢,所以在編寫(xiě)程序時(shí)應(yīng)注意加延時(shí)。八、遇到的問(wèn)題及解決辦法 (1)初次焊接LCD1602后,屏幕不亮首先檢
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 4389-2022農(nóng)業(yè)灌溉用水流量率定規(guī)程
- DB32/T 4333-2022銀縷梅扦插繁殖技術(shù)規(guī)程
- DB32/T 4221-2022鐵路集裝箱遠(yuǎn)程操控作業(yè)通用技術(shù)規(guī)范
- DB32/T 4105-2021油菜品種蘇油6號(hào)
- DB32/T 3953-2020風(fēng)力發(fā)電機(jī)組在建項(xiàng)目首件驗(yàn)收規(guī)范
- DB32/T 3687-2019蘇山豬生產(chǎn)管理技術(shù)規(guī)程
- DB32/T 3598-2019增材制造金屬激光熔化沉積制件性能要求及測(cè)試方法
- DB32/T 3509-2019斑點(diǎn)叉尾鮰品種江豐1號(hào)
- DB31/T 73-2020水泥粉磨系統(tǒng)運(yùn)行管理與節(jié)能監(jiān)測(cè)
- DB31/T 571-2011人才測(cè)評(píng)服務(wù)規(guī)范
- 2025屆福建省漳州市高三第三次教學(xué)質(zhì)量檢測(cè)生物試卷(解析版)
- 2025年茶葉加工工職業(yè)技能競(jìng)賽參考試題庫(kù)500題(含答案)
- SL631水利水電工程單元工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)第1部分:土石方工程
- 廣東省2024年中考數(shù)學(xué)試卷【附真題答案】
- 監(jiān)控立桿基礎(chǔ)國(guó)家標(biāo)準(zhǔn)
- 肺癌患者護(hù)理查房--ppt課件
- 《北京市房屋建筑和市政基礎(chǔ)設(shè)施工程竣工驗(yàn)收管理辦法》(2015年4月1日起實(shí)施)
- 臨建施工方案(經(jīng)典)
- 場(chǎng)地平整土方開(kāi)挖專(zhuān)項(xiàng)施工方案
- 德魯克的績(jī)效觀
- 那洛巴尊者傳
評(píng)論
0/150
提交評(píng)論