第一篇:單片機實踐報告
黑龍江科技大學(xué)? ?
綜合設(shè)計性實驗報告
實驗項目名稱
生產(chǎn)車間流水線自動控制模擬 所屬課程名稱
單片機 實
驗
日
期
2015-4-13—2015-4-17
班 班
級 級
自動化 13-5 班 學(xué) 學(xué)
號 號
2013022332 姓 姓
名 名
于思淼 成 成績
電氣與控制工程學(xué)院實驗室
實驗概述:
【實驗?zāi)康募耙蟆?/p>
目的:基本掌握單片機的指令系統(tǒng),尤其是 MCS-51 單片機指令系統(tǒng),應(yīng)根據(jù)所選課題的任務(wù)、要求和條件進行總體方案的設(shè)計,通過方案比較,確定總體方案。然后對方案中以單片機為核心的電路進行設(shè)計計算。
實踐教學(xué)環(huán)節(jié)是對學(xué)生學(xué)習(xí)的綜合性的訓(xùn)練,單片機工程實踐是以工程項目和工程應(yīng)用為課題,著重培養(yǎng)學(xué)生工程實踐能力、獨立工作能力及創(chuàng)新能力。
單片機工程實踐應(yīng)達到的基本要求:
1、綜合運用單片機技術(shù)課程中所學(xué)到的理論知識
學(xué)生根據(jù)所選課題的任務(wù)、要求和條件進行總體方案的設(shè)計,通過方案比較,決定總體方案。然后對方案中以單片機為核心的電路進行設(shè)計計算,包括元器件的選擇和電路參考的計算,并畫出總體電路圖。
2、硬件電路制作
設(shè)計方案指導(dǎo)教師審查通過后,學(xué)生可向指導(dǎo)教師領(lǐng)取所需元器件等材料,并制作電路。
3、軟件的編制與仿真
根據(jù)已設(shè)計出的軟件系統(tǒng)框圖,用 MCX-51 匯編語言編制出各功能模塊的子程序及整機軟件系統(tǒng)的主程序,程序設(shè)計時,要充分考慮與所設(shè)計硬件電路的連接及有關(guān)定量的要求。
4、撰寫實踐總結(jié)報告.5、本實驗要求:(1)模擬生產(chǎn)車間流水線自動控制及產(chǎn)生故障后自動報警停止流水線工作,只要按下任一按鈕就產(chǎn)生報警信號,排除后繼續(xù)工作。(2)P1.0~P1.7 分別控制從準(zhǔn)備到入庫的 8 道工序,P3.3 為報警的輸入端(使用外部中斷 INT1,觸發(fā)方式為下降沿觸發(fā))。只要按下任一按鈕(每道工序一個按鈕)就產(chǎn)生報警信號,排除后繼續(xù)工作。中斷入口地址為 0013H。
【實驗原理】
P1.0~P1.7 分別控制從準(zhǔn)備到入庫的 8 道工序,P3.3 為報警的輸入端(使用外部中斷 INT1,觸發(fā)方式為下降沿觸發(fā))。只要按下任一按鈕(每道工序一個按鈕)就產(chǎn)生報警信號,排除后繼續(xù)工作。中斷入口地址為 0013H。
設(shè)計題目:生產(chǎn)車間流水燈的控制 第一步:了解流水燈的控制原理 第二部:擬定控制方案 第三部:根據(jù)方案用 Keil 軟件編寫程序 第四步:運用 Proteus 軟件模擬真實流水燈將程序運行 第五步:觀察,并記錄
原理圖如下所示:
【實驗環(huán)境】(使用的軟件)
本實驗采用 Keil 軟件和 Proteus 軟件,該軟件模擬了真實流水燈的電路
實驗內(nèi)容:
【實驗方案設(shè)計】
方案一
流水燈控制(現(xiàn)象和程序)
org 0000h mov a,#01h main: mov p1,a acall delay rl a ljmp main
delay:mov r2,#2 d0:mov r0,#255 d1:mov r1,#98 nop djnz r1,$ djnz r0,d1 djnz r2,d0 ret end
流水燈依次亮無限循環(huán)不停止,延時時間 1s。
方案二
帶中斷的流水燈控制(現(xiàn)象和程序)
org 0000h mov ie,#84h mov tcon,#04h ljmp main org 0013h ljmp zd
org 0030h main:mov a,#01h
loop:mov p1,a acall delay rl a ajmp loop mov p1,#00h sjmp $
delay:mov r2,#2 d0:mov r0,#255 d1:mov r1,#98 nop djnz r1,$ djnz r0,d1 djnz r2,d0 ret
zd: mov a,#080h xh:mov p1,a acall delay rr a
jnb p3.3,xh reti end
流水燈按照次序依次亮中斷后流水燈反向依次亮,延時時間 1s。
【 實驗過程 】
(實驗步驟、記錄、數(shù)據(jù)、分析)
1、了解流水線模塊硬件工作原理,設(shè)計出流程圖,確定程序大體方案。
2、根據(jù)設(shè)計編制程序 3、編譯,調(diào)試程序。若編譯,連接過程中產(chǎn)生的信息顯示在信息窗的“建立”視中。如編譯有錯誤,警告信息,用鼠標(biāo)左鍵雙擊錯誤,警告信息或?qū)⒐鈽?biāo)移到錯誤,警告信息上,回車,系統(tǒng)自動打開對應(yīng)的出錯文件,并定位于出錯行上 4、運行方案一和方案二,觀察實驗現(xiàn)象,檢查生產(chǎn)車間流水線自動控制模擬工作狀況是否滿足設(shè)計要求,若不滿足重新檢查程序,重新調(diào)試,若滿足則實驗結(jié)束后退出調(diào)試狀態(tài)。
【結(jié)論】(結(jié)果)
1.流水燈依次亮無限循環(huán)不停止
2.流水燈按照次序依次亮,循環(huán) 5 5 次之后停止,中斷后流水燈反向依次亮。
【小結(jié)】
通過本次實踐操作,明白了流水燈編程的基本操作,在編程過程中應(yīng)該細心仔細檢查每一步程序。確保最后出現(xiàn)正確的結(jié)果。本次的實踐告訴我平時還行該多細心做好日常事宜。
指導(dǎo)教師評語及成績:
評語:
實驗期間綜合情況
出勤情況:
遲到次數(shù)1 次()2 次()3 次()
多次()
無())
曠課次數(shù)1 次()2 次()3 次()
多次()
無())
實驗報告書寫成績:
原理部分
優(yōu)()
良()
中()
及()
不及格()
方案部分
優(yōu)()
良()
中()
及()
不及格()
過程部分
優(yōu)()
良()
中()
及()
不及格()
結(jié)論部分
優(yōu)()
良()
中()
及()
不及格()
指導(dǎo)教師簽名:
批閱日期:
第二篇:PIC單片機報告
PIC單片機實驗報告
一、定時器的使用
(1)實驗?zāi)康模和ㄟ^學(xué)習(xí)和實驗理解PIC單片機定時器的內(nèi)部工作原理,學(xué)會定時器 初始化配置編程,并能利用實驗板對定時器有簡單的應(yīng)用。
(2)實驗器材:16位PIC單片機學(xué)習(xí)板。
(3)實驗過程:
1、PIC單片機定時器概述:根據(jù)具體器件,dsPIC30F 器件系列提供了幾個16 位定時器。這些定時器被指定為Timer1、Timer2、Timer3 ……等??煞譃槿N類型:A類型時基、B類型時基和C類型時基。
A類型時基:在大多數(shù)dsPIC30F 器件上,至少有一個A 類型定時器。通常Timer1 是A 類型定時器。A 類型定時器與其他類型的定時器相比,有下列獨特的功能:
可以使用器件的低功耗32 kHz 振蕩器作為時鐘源工作
可以在使用外部時鐘源的異步模式下工作
A 類型定時器獨特的功能使它可以用于實時時鐘應(yīng)用(Real-Time Clock,RTC)。16 位定時器模式:在16 位定時器模式下,定時器在每個指令周期遞增,直到與預(yù)先裝入周期寄存器PR1 中的值匹配,然后復(fù)位至0,繼續(xù)計數(shù)。當(dāng)CPU 進入空閑模式時,定時器將停止遞增,除非TSIDL(T1CON<13>)位 = 0。如果TSIDL = 1,定時器模塊邏輯將繼續(xù)遞增,直到CPU 空閑模式終止。位同步計數(shù)器模式:在16 位同步計數(shù)器模式下,定時器將在外部時鐘信號的上升沿遞增,外部時鐘信號與內(nèi)部相位時鐘同步。定時器計數(shù),直到等于PR1 中預(yù)先裝入的值,然后復(fù)位至0,繼續(xù)計數(shù)。當(dāng)CPU 進入空閑模式時,同上。位異步計數(shù)器模式:在16 位異步計數(shù)器模式下,定時器在外部時鐘信號的上升沿遞增。定時器計數(shù),直到等于PR1 中預(yù)先裝入的值,然后復(fù)位至0,繼續(xù)計數(shù)。當(dāng)定時器配置為異步工作模式時,CPU 進入空閑模式,如果TSIDL = 1,則定時器將停止遞增。
B類型時基:在大多數(shù)dsPIC30F 器件上,如果存在Timer2 和Timer4,它們是B 類型定時器。與其他類型的定時器相比,B 類型定時器有下列獨特的功能:
B 類型定時器可以和C 類型定時器相連形成32 位定時器。B 類型定時器的TxCON
寄存器具備T32 控制位,用來使能32 位定時器功能。B 類型定時器的時鐘同步在預(yù)分頻邏輯后執(zhí)行。為輸入捕捉,輸出比較/ 簡單PWM 模塊提供時基
C類型時基:在大多數(shù)dsPIC30F 器件上,Timer3 和Timer5 是C 類型定時器。與其他類型的定時器相比,C 類型定時器有下列獨特的功能:
C 類型定時器可以和B 類型定時器相連形成32 位定時器。在某個給定的器件上,至少有一個C 類型定時器能夠觸發(fā)A/D 轉(zhuǎn)換。
相關(guān)寄存器:要使用定時器,首先要了解定時器相關(guān)寄存器,dspic30f4011的定時器相關(guān)寄存器有:
以A類時基定時器(Timer1)為例,要用到的相關(guān)寄存器有:T1CON(定時器1控制寄存器)、IFS0bits(中斷標(biāo)志狀態(tài)寄存器)、IPC0bits(中斷優(yōu)先級控制寄存器)、IEC0bits(中斷允許控制寄存器)、PR1(定時器初值寄存器)
定時器模式:所有類型的定時器都可以在定時器模式下工作。在定時器模式下,定時器的輸入時鐘由內(nèi)部系統(tǒng)時鐘(FOSC/4)提供。當(dāng)使能為該模式時,對于1:1 的預(yù)分頻器設(shè)置,定時器的計數(shù)值在每個指令周期都會加1。
通過清零TCS 控制位(TxCON<1>)選擇定時器模式。
同步模式控制位TSYNC(T1CON<2>)在該模式下不起作用,因為使用了系統(tǒng)時鐘源產(chǎn)生定時器時鐘。
定時器初值計算:指令周期=1/(fosc/4),定時器初值=所需定時時間/(指令周期×分頻比)
程序代碼:
#include “p30f4011.h” void timer_init()
{
T1CON=0X8030;
//預(yù)分頻256,ton=1,開始計時,其余都為0//清除TMR1的中斷標(biāo)志 //中斷優(yōu)先級為7 //使能中斷
//在預(yù)分頻256模式下,計時1秒
IFS0bits.T1IF = 0;
IPC0bits.T1IP = 7;IEC0bits.T1IE = 1;}
PR1=0x1c20;
void __attribute__((__interrupt__))_T1Interrupt(void)//中斷服務(wù)程序 {}
void main(){}
TRISE=0x100;
//將LED相連IO口設(shè)為輸出 //執(zhí)行定時器1初始化 //PORTE初始化輸出為低
IFS0bits.T1IF=0;PORTE++;
//軟件清除定時器1中斷標(biāo)志位 //實現(xiàn)每一秒對PORTE加1,用LED顯示
timer_init();PORTE=0;
while(1);//程序進入死循環(huán),定時執(zhí)行定定時器中斷程序
二、中斷
實驗?zāi)康模和ㄟ^學(xué)習(xí)和實踐理解PIC單片機中斷的特性及工作原理,學(xué)會中斷的初始化配置,并能對中斷進行簡單的應(yīng)用。
實驗器材:16位PIC單片機學(xué)習(xí)板。
實驗過程:
dsPIC30F的中斷特性:
多達8 個處理器異常和軟件陷阱 7 個用戶可選擇的優(yōu)先級
具有多達62 個向量的中斷向量表(Interrupt Vector Table,IVT)每個中斷或異常源都有唯一的向量 指定的用戶優(yōu)先級中的固定優(yōu)先級
用于支持調(diào)試的備用中斷向量表(Alternate Interrupt Vector Table,AIVT)固定的中斷入口和返回延時
中斷優(yōu)先級:
(1)可以為每個外設(shè)中斷源分配7 個優(yōu)先級之一。
可用的優(yōu)先級從1 開始為最低優(yōu)先級,7 級為最高優(yōu)先級。如果與中斷源有關(guān)的IPC 位被全部清零,則中斷源被有效禁止。
(2)由于特定的優(yōu)先級會被分配給一個以上的中斷請求源,所以在給定的用戶分配
級別內(nèi)提供了一種解決優(yōu)先級沖突的方法。
根據(jù)每個中斷源在IVT中的位置,它們都有一個自然順序優(yōu)先級。中斷向量的編號越低,自然優(yōu)先級越高,而向量的編號越高,自然優(yōu)先級越低。
(3)任何待處理的中斷源的總優(yōu)先級都首先由該中斷源在IPCx 寄存器中用戶分配的優(yōu)先級決定,然后由IVT 中的自然順序優(yōu)先級決定。
相關(guān)寄存器:INTCON1 和INTCON2(全局中斷控制寄存器)、IFSx(中斷標(biāo)志狀態(tài)寄存器)、IECx(中斷使能控制寄存器)、IPCx(中斷優(yōu)先級控制寄存器)、SR(CPU狀態(tài)寄存器)、CORCON(內(nèi)核控制寄存器)。
初始化配置:
1.如果不需要中斷嵌套,將NSTDIS 控制位置1。
2.通過寫相應(yīng)的IPCx 控制寄存器中的控制位選擇中斷源的用戶分配優(yōu)先級。如果不需要多個優(yōu)先級,所有允許的中斷源的IPCx 寄存器控制位均可以編程為同一個非零值。3.在相關(guān)的IFSx 狀態(tài)寄存器中清零與外設(shè)相關(guān)的中斷標(biāo)志狀態(tài)位。
4.通過在相應(yīng)的IECx 控制寄存器中置1 與中斷源相關(guān)的中斷允許控制位,使能中斷源。
程序代碼:
void init(){
IFS0bits.INT0IF = 0;//清除INT0的中斷標(biāo)志
IPC0bits.INT0IP = 7;//中斷優(yōu)先級為7 IEC0bits.INT0IE = 1;}
void __attribute__((__interrupt__))_INT0Interrupt(void)//中斷服務(wù)程序 {
IFS0bits.INT0IF = 0;Led=~Led;}
int main(){
unsigned char Led=0;init();while(1){
PORTE = Led;
//清INT0中斷標(biāo)志//實現(xiàn)LED亮滅變化 //使能中斷
}}
第三篇:單片機課程設(shè)計報告
單片機課程設(shè)計報告
? 課程名稱:單片機原理及接口課程設(shè)計
? 題目:基于
? 學(xué)院:電氣信息學(xué)院
? 專業(yè)班級:測控技術(shù)與儀器
? 姓名:江讓
? 學(xué)號:
? 指導(dǎo)老師:劉升老師
? 時間:
C51單片機的ADC0809數(shù)模轉(zhuǎn)換103班1090640772013/1/16
第四篇:單片機課程設(shè)計報告
單片機課程設(shè)計報告
題目:小直流電機調(diào)速實驗
教學(xué)單位: 機 電 工 程 系
專業(yè): 機械設(shè)計制造及其自動化
班級: 0803班學(xué)號: 0811050342姓名: 程懷虎
2011 年 11月
(以下內(nèi)容用宋體,五號,單倍行距)
第五篇:單片機實習(xí)報告
1602液晶顯示設(shè)計
一、實驗簡介:
通過學(xué)習(xí)本門課程,能夠掌握利用51單片機完成簡單項目的應(yīng)用系統(tǒng)設(shè)計和調(diào)試,掌握單片機應(yīng)用程序的編寫和調(diào)試過程。本次實習(xí),我的題目是用51單片機控制1602液晶顯示指定字符的設(shè)計,需要分別設(shè)計系統(tǒng)的硬件電路及調(diào)試軟件程序,并能夠正確演示調(diào)試結(jié)果。
二、實驗要求:
1、查找資料學(xué)習(xí)單片機的LCD點陣顯示原理;
2、理解KST-51的LCD點陣顯示電路圖;
3、編制程序在點陣LCD上實現(xiàn)字母:我愛單片機繪制原理圖;
4、完成實驗報告的撰寫。
三、硬件電路:
(一)89C52系列單片機
89C52是INTEL公司MCS-51系列單片機中基本的產(chǎn)品,它內(nèi)置8位中央處理單元、512字節(jié)內(nèi)部數(shù)據(jù)存儲器RAM、8k片內(nèi)程序存儲器(ROM)32個雙向輸入/輸出(I/O)口、3個16位定時/計數(shù)器和5個兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)時鐘振蕩電路。此外,89C52還可工作于低功耗模式,可通過兩種軟件選擇空閑和掉電模式。在空閑模式下凍結(jié)CPU而RAM定時器、串行口和中斷系統(tǒng)維持其功能。掉電模式下,保存RAM數(shù)據(jù),時鐘振蕩停止,同時停止芯片內(nèi)其它功能。89C52有PDIP(40pin)和PLCC(44pin)兩種封裝形式。
1、單片機最小系統(tǒng)
KST-51單片機開發(fā)板
最小系統(tǒng)是指單片機正常工作的最基本的外圍配置,主要包括時鐘電路、復(fù)位電路等。
51單片機最小系統(tǒng)是利用XTAL1和XTAL2兩個引腳外接晶體振蕩器的內(nèi)部時鐘方式,C1和C2的作用是穩(wěn)定頻率和快速起振,典型值為30pf,晶體振蕩器的振蕩頻率典型值為6 MHZ、12 MHZ或者11.0592 MHZ,系統(tǒng)與PC通信時常采用11.0592MHZ。
復(fù)位電路設(shè)計形式包括:上電復(fù)位、按鍵復(fù)位、和利用專業(yè)的復(fù)位芯片進行管理,本次設(shè)計采用按鍵復(fù)位方式。
51單片機最小系統(tǒng)
2、單片機引腳功能
51系列單片機有40個引腳,包括2個 電源引腳,2個外界晶振引腳,4個控制或 其他電源復(fù)用引腳,32個I/O引腳。1)主電源引腳(2根)VCC(Pin40):電源輸入,接+5V電源 GND(Pin20):接地線 2)外接晶振引腳(2根)
XTAL1(Pin19)、XTAL2(Pin18)主要用來構(gòu)成單片機的時鐘電路。時鐘電路用來產(chǎn)生單片機工作所需的時鐘信號。時鐘信號分為內(nèi)部時鐘方式和外部時鐘方式。3)控制引腳(4根)
RST/VPP(Pin9):復(fù)位引腳,引腳上出現(xiàn)2個機器周期的高電平將使單片機復(fù)位。
ALE/PROG(Pin30):地址鎖存允許信號 PSEN(Pin29):外部存儲器讀選通信號
EA/VPP(Pin31):程序存儲器的內(nèi)外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內(nèi)部程序存儲器讀指令。4)輸入/輸出引腳(32根)
P0口是一個雙功能的8位并行口,可以用做地址/數(shù)據(jù)總線,另外P0口還可以作為通用I/O口使用,此時為準(zhǔn)雙向口,且內(nèi)部無上拉電阻。
P1口是單功能的I/O口,只能作為通用的I/O口使用,為準(zhǔn)雙向口,但內(nèi)部有上拉電阻。
P2口是一個雙功能口,為準(zhǔn)雙向口,但內(nèi)部有上拉電阻,P2口功能主要有一下兩個方面:一是作為高8位地址輸出線使用時,P2口可以輸出外部存儲器的高8位地址,與P0口輸出的低8位地址一起構(gòu)成16位地址,可以尋址64位的地址空間;二是作為通用I/O口使用時,與P1口使用方法一樣。
P3口作為通用I/O口時使用方法與P1一樣。另外,P3口主要作為第二功能使用。
(二)1602字符液晶
P3口第二功能表
字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,1602是指顯示的內(nèi)容為16*2,即可以顯示兩行,每行16個字符。字符液晶絕大多數(shù)是基于HD44780液晶芯片的。
1602實物圖 1、1602LCD的特性
? +5V電壓,對比度可調(diào) ? 內(nèi)含復(fù)位電路
? 提供各種控制命令,如:清屏、字符閃爍、光標(biāo)閃爍、顯示移位等多種功能
? 有80字節(jié)顯示數(shù)據(jù)存儲器DDRAM ? 內(nèi)建有160個5X7點陣的字型的字符發(fā)生器CGROM ? 8個可由用戶自定義的5X7的字符發(fā)生器CGRAM
2、字符型LCD1602接口 引腳2、1為1602的電源和地,引腳15、16 為背光電源,引腳4、5、6為控制端口,引腳7-14為 數(shù)據(jù)端口,以下為各個端口的詳細介紹。3、1602存儲器
HD44780內(nèi)置了DDRAM(顯示數(shù)據(jù)存儲RAM)、CGROM(字符存儲ROM)和CGRAM(用戶自定義RAM)。
DDRAM就是顯示數(shù)據(jù)RAM,用來寄存待顯示的字符代碼。共80個字節(jié),其地址和屏幕的對應(yīng)關(guān)系如下表:
在DDRAM的00H地址處顯示數(shù)據(jù),則必須將00H加上80H,即0X80+0x00,若要在DDRAM的01H處顯示數(shù)據(jù),則必須將01H加上80H即 0X80+0x01。以此類推。
字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點陣字符圖形,如下表所示,這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常 用的符號、和日文假名等,每一個字符都有一個固定的代碼。4、1602指令表
對DDRAM的內(nèi)容和地址操作,HD44780的指令集及其設(shè)置說明,共有11條指令: 1)清屏指令
功能:<1> 清除液晶顯示器,即將DDRAM的內(nèi)容全部填入“空白”的字符碼20H;<2> 光標(biāo)歸位,即將光標(biāo)撤回液晶顯示屏的左上方;<3> 將地址計數(shù)器(AC)的值設(shè)為0。
2)光標(biāo)歸位指令
功能:<1> 把光標(biāo)撤回到顯示器的左上方;<2> 把地址計數(shù)器(AC)的值設(shè)置為0;<3> 保持DDRAM的內(nèi)容不變 3)輸入模式設(shè)置指令
功能:設(shè)定每次寫入1位數(shù)據(jù)后光標(biāo)的移位方向,并且設(shè)定每次寫入的一個字符是否移動。參數(shù)設(shè)定的情況如下所示: 位名 設(shè)置
I/D 0=寫入新數(shù)據(jù)后光標(biāo)左移 1=寫入新數(shù)據(jù)后光標(biāo)右移
S 0=寫入新數(shù)據(jù)后顯示屏不移動 1=寫入新數(shù)據(jù)后顯示屏整體右移1個字 4)顯示開關(guān)控制指令
功能:控制顯示器開/關(guān)、光標(biāo)顯示/關(guān)閉以及光標(biāo)是否閃爍。參數(shù)設(shè)定的情況如下:
位名 設(shè)置 D 0=顯示功能關(guān) 1=顯示功能開 C 0=無光標(biāo) 1=有光標(biāo) B 0=光標(biāo)不閃爍 1=光標(biāo)閃爍 5)設(shè)定顯示屏或光標(biāo)移動方向指令
功能:使光標(biāo)移位或使整個顯示屏幕移位。參數(shù)設(shè)定的情況如下: S/C R/L 設(shè)定情況
0 0 光標(biāo)左移1格,且AC值減1 0 1 光標(biāo)右移1格,且AC值加1 1 0 顯示器上字符全部左移一格,但光標(biāo)不動 1 1 顯示器上字符全部右移一格,但光標(biāo)不動 6)功能設(shè)定指令
功能:設(shè)定數(shù)據(jù)總線位數(shù)、顯示的行數(shù)及字型。參數(shù)設(shè)定的情況如下: 位名 設(shè)置
DL 0=數(shù)據(jù)總線為4位 1=數(shù)據(jù)總線為8位 N 0=顯示1行 1=顯示2行 F 0=5×7點陣/每字符 1=5×10點陣/每字符 7)設(shè)定CGRAM地址指令
功能:設(shè)定下一個要存入數(shù)據(jù)的CGRAM的地址。8)設(shè)定DDRAM地址指令
功能:設(shè)定下一個要存入數(shù)據(jù)的CGRAM的地址。9)讀取忙信號或AC地址指令
功能:<1> 讀取忙碌信號BF的內(nèi)容,BF=1表示液晶顯示器忙,暫時無法接收單片機送來的數(shù)據(jù)或指令;當(dāng)BF=0時,液晶顯示器可以接收單片機送來的數(shù)據(jù)或指令;<2> 讀取地址計數(shù)器(AC)的內(nèi)容。10)數(shù)據(jù)寫入DDRAM或CGRAM指令
功能:<1> 將字符碼寫入DDRAM,以使液晶顯示屏顯示出相對應(yīng)的字符;<2> 將用戶自己設(shè)計的圖形存入CGRAM。11)從CGRAM或DDRAM讀出數(shù)據(jù)的指令
功能:讀取DDRAM或CGRAM中的內(nèi)容。
5、時序圖
(1)讀狀態(tài) 輸入:RS=0,RW=1,E=1 讀數(shù)據(jù) 輸入:RS=1,RW=1,E=1(2)寫指令 輸入:RS=0,RW=0,E=下降沿脈沖,DB0~DB7=指令碼 寫數(shù)據(jù) 輸入:RS=1,RW=0,E=下降沿脈沖,DB0~DB7=數(shù)據(jù)
四、實習(xí)結(jié)果與討論:
通過程序的編輯在1602型LCD上實現(xiàn)了顯示英文字符,通過本次實驗的學(xué)習(xí)進一步熟悉了1602型LCD,對其操作有了更多的心得體會,在本次實驗中獲益匪淺。
五、實驗程序: #include
sbit LCD_RS = P2^0;sbit LCD_RW = P2^1;sbit LCD_EN = P2^2;
uchar code dis1[] = {“woai danpianji”};uchar code dis2[] = {“huizhi yuanlitu”};uchar code dis3[] = {“chen jian”};uchar code dis4[] = {“ dianzihua 1101 ”};
void delay(int ms){ int i;while(ms--){ for(i = 0;i< 250;i++){ _nop_();_nop_();_nop_();_nop_();} } }
bit lcd_busy(){ bit result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();result =(bit)(P0&0x80);LCD_EN = 0;return result;} void lcd_wcmd(uchar cmd){ while(lcd_busy());LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();P0 = cmd;_nop_();_nop_();_nop_();_nop_();LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();LCD_EN = 0;}
void lcd_wdat(uchar dat){ while(lcd_busy());LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;_nop_();_nop_();_nop_();_nop_();LCD_EN = 1;_nop_();_nop_();_nop_();_nop_();LCD_EN = 0;}
void lcd_pos(uchar pos){ lcd_wcmd(pos|0x80);//數(shù)據(jù)指針=80+地址變量 }
void lcd_init(){ lcd_wcmd(0x38);//16*2顯示,5*7點陣,8位數(shù)據(jù) delay(5);lcd_wcmd(0x38);delay(5);lcd_wcmd(0x38);delay(5);lcd_wcmd(0x0c);//顯示開,關(guān)光標(biāo) delay(5);lcd_wcmd(0x06);//移動光標(biāo) delay(5);lcd_wcmd(0x01);//清除LCD的顯示內(nèi)容 delay(5);}
void flash(){ delay(600);//控制停留時間 lcd_wcmd(0x08);//關(guān)閉顯示 delay(200);//延時 lcd_wcmd(0x0c);//開顯示 delay(200);//延時 lcd_wcmd(0x08);//關(guān)閉顯示 delay(200);//延時 lcd_wcmd(0x0c);//開顯示 delay(200);} main(){ uchar i;delay(10);lcd_init();// 初始化LCD
while(1){ lcd_wcmd(0x06);//向右移動光標(biāo)
lcd_pos(0);//設(shè)置顯示位置為第一行的第1個字符 i = 0;while(dis1[i]!= '