874380931基于單片機(jī)的LCD頻率計(jì)設(shè)計(jì)課程設(shè)計(jì)_第1頁
874380931基于單片機(jī)的LCD頻率計(jì)設(shè)計(jì)課程設(shè)計(jì)_第2頁
874380931基于單片機(jī)的LCD頻率計(jì)設(shè)計(jì)課程設(shè)計(jì)_第3頁
874380931基于單片機(jī)的LCD頻率計(jì)設(shè)計(jì)課程設(shè)計(jì)_第4頁
874380931基于單片機(jī)的LCD頻率計(jì)設(shè)計(jì)課程設(shè)計(jì)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)應(yīng)用技術(shù)課程設(shè)計(jì)報(bào)告題 目: lcd頻率計(jì) 系 別: 電子電氣工程系 專 業(yè): 電子信息工程系 班 級(jí): 08電信一班 四川職業(yè)技術(shù)學(xué)院課程設(shè)計(jì)任務(wù)書 電子電氣工程 系 電子信息工程技術(shù) 專業(yè) 8 年級(jí) 電信1 班學(xué)生日期 2010.6.25 課程設(shè)計(jì)題目 lcd頻率計(jì) 課程設(shè)計(jì)內(nèi)容與要求:一、設(shè)計(jì)任務(wù) 用單片機(jī)的定時(shí)器/計(jì)數(shù)器測(cè)量外邊眼脈沖的頻率,并使用lcd1602顯示結(jié)果。 二、設(shè)計(jì)要求1給定條件(1) lcd1602(2) at89s52單片機(jī)2技術(shù)指標(biāo)(1) 單片機(jī)控制lcd實(shí)現(xiàn)頻率顯示(2) 頻率范圍為1hz-500khz,精度為1hz。 課 程 設(shè) 計(jì) 成 績 評(píng) 定 表本

2、課程設(shè)計(jì)評(píng)語: 指導(dǎo)教師(簽名): 年 月 日本課程設(shè)計(jì)成績:指導(dǎo)教師(簽名): 年 月 日 目 錄1方案設(shè)計(jì)1.1 系統(tǒng)分析1.2 系統(tǒng)方案2 硬件設(shè)計(jì)2.1 系統(tǒng)控制芯片2.4 元件清單3 軟件設(shè)計(jì)3.1 軟件功能3.2 lcd驅(qū)動(dòng)程序3.3 主程序4 課程設(shè)計(jì)體會(huì)5 參考文獻(xiàn)lcd頻率計(jì)摘 要:本設(shè)計(jì)的成品是一個(gè)利用單片機(jī)產(chǎn)生脈沖,利用lcd1602顯示出頻率.頻率計(jì)主要由at89s52單片機(jī)最小系統(tǒng)電路、lcd1602電路構(gòu)成,它能實(shí)現(xiàn)1hz500khz任意頻率的顯示。關(guān)鍵字:單片機(jī) lcd1602 1方案設(shè)計(jì)1.1 系統(tǒng)分析選擇at89s52單片機(jī)中的t2定時(shí)器/計(jì)數(shù)器產(chǎn)生1000h

3、z的脈沖,從p1.0輸出,p3.4輸入.再通過單片機(jī)傳送給lcd1602,并顯示頻率.液晶顯示器具有體積小、重量輕、功耗極低、顯示內(nèi)容豐富等特點(diǎn),在單片機(jī)系統(tǒng)中得到了廣泛的應(yīng)用。單片機(jī)具有體積小、功能強(qiáng)、成本低、功耗小等優(yōu)點(diǎn),所以在工業(yè)控制、智能儀表、通信技術(shù)、信號(hào)處理及家用電器產(chǎn)品中廣泛應(yīng)用?,F(xiàn)在的單片機(jī)從功能上突破微型計(jì)算機(jī)的傳統(tǒng)功能,向著以單元片機(jī)為核心、外接各種控制單元的專用單片機(jī)方向陽發(fā)展。1.2 系統(tǒng)方案我們采用at89s52單片機(jī)中的t2定時(shí)器/計(jì)數(shù)器實(shí)現(xiàn)脈沖的產(chǎn)生,用lcd1602來實(shí)現(xiàn)頻率的顯示。 2 硬件設(shè)計(jì)2.1 系統(tǒng)控制芯片 選用的是單片機(jī),如下圖。其引腳如下圖示。單片

4、機(jī)就是在一塊硅片上集民了中央處理器()、存儲(chǔ)器(、lash emory)和輸入、輸出接口(并行、串行通信口)、振蕩電路、計(jì)數(shù)器等到電路的一塊集成電路,這樣的一塊集成電路具有一臺(tái)計(jì)算機(jī)的基本功能,因而被稱為單片微型計(jì)算機(jī),簡稱單片機(jī)()。圖1 單片機(jī)at89s52圖2 at89s52引腳圖p0 口:p0口是一個(gè)8位漏極開路的雙向i/o口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)ttl邏輯電平。對(duì)p0端口寫“1”時(shí),引腳用作高阻抗輸入。 當(dāng)訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),p0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,p0具有內(nèi)部上拉電阻。 在flash編程時(shí),p0口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)

5、。程序校驗(yàn)時(shí),需要外部上拉電阻。 p1 口:p1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向i/o 口,p1 輸出緩沖器能驅(qū)動(dòng)4 個(gè)ttl 邏輯電平。對(duì)p1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。 此外,p1.0和p1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(p1.0/t2)和時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(p1.1/t2ex),具體如下表所示。在flash編程和校驗(yàn)時(shí),p1口接收低8位地址字節(jié)。 引腳號(hào)第二功能:p1.0 t2(定時(shí)器/計(jì)數(shù)器t2的外部計(jì)數(shù)輸入),時(shí)鐘輸出 p1.1 t2ex(定時(shí)器/計(jì)數(shù)

6、器t2的捕捉/重載觸發(fā)信號(hào)和方向控制) p1.5 mosi(在系統(tǒng)編程用) p1.6 miso(在系統(tǒng)編程用) p1.7 sck(在系統(tǒng)編程用) p2 口:p2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向i/o 口,p2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)ttl 邏輯電平。對(duì)p2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入 口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。 在訪問外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(執(zhí)行movxdptr) 時(shí),p2 口送出高八位地址。在這種應(yīng)用中,p2 口使用很強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址(如movx ri)訪問外

7、部數(shù)據(jù)存儲(chǔ)器時(shí),p2口輸出p2鎖存器的內(nèi)容。在flash編程和校驗(yàn)時(shí),p2口也接收高8位地址字節(jié)和一些控制信號(hào)。 p3 口:p3 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向i/o 口,p2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)ttl 邏輯電平。對(duì)p3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。 p3口亦作為at89s52特殊功能(第二功能)使用,如下表所示。在flash編程和校驗(yàn)時(shí),p3口也接收一些控制信號(hào)。 端口引腳 第二功能:p3.0 rxd(串行輸入口)p3.1 txd(串行輸出口)p3.2 into(外中斷0)

8、p3.3 int1(外中斷1)p3.4 to(定時(shí)/計(jì)數(shù)器0)p3.5 t1(定時(shí)/計(jì)數(shù)器1)p3.6 wr(外部數(shù)據(jù)存儲(chǔ)器寫選通)p3.7 rd(外部數(shù)據(jù)存儲(chǔ)器讀選通)此外,p3口還接收一些用于flash閃存編程和程序校驗(yàn)的控制信號(hào)。rst復(fù)位輸入。當(dāng)振蕩器工作時(shí),rst引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將是單片機(jī)復(fù)位。ale/prog當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ale(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ale仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ale脈沖。對(duì)flash存儲(chǔ)

9、器編程期間,該引腳還用于輸入編程脈沖(prog)。如有必要,可通過對(duì)特殊功能寄存器(sfr)區(qū)中的8eh單元的d0位置位,可禁止ale操作。該位置位后,只有一條movx和movc指令才能將ale激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ale禁止位無效。psen程序儲(chǔ)存允許(psen)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)at89c52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次psen有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,將跳過兩次psen信號(hào)。ea/vpp外部訪問允許,欲使cpu僅訪問外部程序存儲(chǔ)器(地址為0000h-ffffh),ea端必須保持低電

10、平(接地)。需注意的是:如果加密位lb1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存ea端狀態(tài)。如ea端為高電平(接vcc端),cpu則執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。flash存儲(chǔ)器編程時(shí),該引腳加上+12v的編程允許電源vpp,當(dāng)然這必須是該器件是使用12v編程電壓vpp。 通過任務(wù)分析,要求單片機(jī)要完成三個(gè)實(shí)時(shí)任務(wù),分別是:對(duì)輸入信號(hào)周期進(jìn)行計(jì)數(shù)、定時(shí)1s、動(dòng)態(tài)顯示以及頻率計(jì)算頻率轉(zhuǎn)換為顯示數(shù)據(jù)。要同時(shí)完成三個(gè)實(shí)時(shí)任務(wù),只有使用中斷的方式進(jìn)行任務(wù)分割,可以用定時(shí)器t0、t1及其中斷服務(wù)程序和主程序來分別完成每一個(gè)任務(wù)。1.定時(shí)1st1工作在定時(shí)狀態(tài)下,最大定時(shí)實(shí)踐約為65ms,達(dá)不到1s的定時(shí),所以采用時(shí)50ms

11、,共定時(shí)20次,即可完成1s的定時(shí)功能。th1=(65536-50000)/256; /高8位的初始值 tl1=(65536-50000)%256; /低8位的初始值每定時(shí)1s時(shí)間到,就停下t0的計(jì)數(shù),而從t0的計(jì)數(shù)單元中讀取計(jì)數(shù)的數(shù)值,然后進(jìn)行數(shù)據(jù)處理,送到數(shù)碼管顯示出來。2.輸入的脈沖計(jì)數(shù)在本任務(wù)中,由于單片機(jī)的工作頻率為12mhz,工作在計(jì)數(shù)狀態(tài)下的t0,最大計(jì)數(shù)值為12mhz/24,因此t0能計(jì)數(shù)的脈沖最大計(jì)數(shù)頻率為12mhz/24=500khz。作為定時(shí)器t0,若1s內(nèi)有a次溢出,最后t0的計(jì)數(shù)值為b,則輸出信號(hào)的頻率為: f = a 65536 + b 3.定時(shí)器/計(jì)數(shù)器的工作方式

12、模式1在模式1中,有thx的高8位和tlx的低8位構(gòu)成全16位定時(shí)/計(jì)數(shù)器,其最大計(jì)數(shù)值為:m=65536。其初始值設(shè)置命令為 thx=(65536-t*f/12)/256; tlx=(65536-t*f/12)%256; 4.定時(shí)/計(jì)數(shù)器的中斷設(shè)置定時(shí)/計(jì)數(shù)器的初始化編程格式如下所示:tmod=方式字; /選擇定時(shí)器的工作方式thx=高8為初始值; /裝入tx時(shí)間常數(shù)tlx=低8位初始值;etx=1; /開tx中斷ea=1; /總中斷允許,如果有其他中斷,可共用本條指令trx=1; /啟動(dòng)tx定時(shí)器 5.lcd1602引腳功能介紹字符型液晶是一種液晶顯示器lcd(liquid crystal

13、 diodes)模塊,簡稱lcm.。模塊內(nèi)部含有控制和驅(qū)動(dòng)電路等部件的液晶模塊組件,使用中將其作為一個(gè)獨(dú)立的器件使用。在使用時(shí),將字符和命令通過其接口送到模塊內(nèi)部,模塊內(nèi)的電路控制液晶逐一顯示從端口輸入的各個(gè)字符。在lcd的段電極與背電極間施加電壓(通常為4v或5v),可使該段呈黑色,這樣可以實(shí)現(xiàn)顯示。由于液晶的驅(qū)動(dòng)電路較為復(fù)雜,因此在市場(chǎng)上出現(xiàn)了一種稱為液晶顯示模塊的器件。液晶顯示模塊是一種將液晶顯示器件、連接件、集成電路、pcb線路板、背光源、結(jié)構(gòu)件裝配在一起的組件,實(shí)際上,它是一種商品化的部件。在任務(wù)中采用常用的字符型液晶顯示模塊lcd1602作為顯示器件,其引腳功能見表1。編號(hào)符號(hào)引腳

14、說明編號(hào)符號(hào)引腳說明1vss電源地9d2data i/o2vdd電源正極10d3data i/o3vl液晶顯示偏壓信號(hào)11d4data i/o4rs數(shù)據(jù)/命令選擇端(h/l)12d5data i/o5r/w讀/寫選擇端(h/l)13d6data i/o6en使能信號(hào)14d7data i/o7d0data i/o15bla背光源正極8d1data i/o16blk背光源負(fù)極 表14.lcd1602操作說明(1)lcd1602的基本操作時(shí)序 讀狀態(tài):輸入rs=l,rw=h,en=h; 寫指令:輸入rs=l,rw=h,d0d7=指令碼,en=高脈沖; 讀數(shù)據(jù):輸入rs=h,rw=h,en=h; 寫指

15、令:輸入rs=l,rw=h,d0d7=數(shù)據(jù),en=高脈沖;(2)lcd1602的指令說明 1)0011 1000:162顯示,57點(diǎn)陣,8位數(shù)據(jù)接口。 2)0000 0001:顯示清屏,數(shù)據(jù)指針清0,所有顯示清0。 3)0000 0010:顯示回車,數(shù)據(jù)指針清0。 4)00001dcb: d=1 開顯示; d=0 關(guān)顯示。 c=1 顯示光標(biāo); c=0 不顯示光標(biāo)。 b=1 光標(biāo)閃爍; b=0 光標(biāo)不顯示。 5)000001ns: n=1 當(dāng)讀或定一個(gè)字符后地址指針加1,且光標(biāo)加1。 n=0 當(dāng)讀或定一個(gè)字符后地址指針減1,且光標(biāo)減1。 s=1 當(dāng)寫一個(gè)字符,整屏顯示左移(n=1)或右移(n=0

16、)。實(shí)現(xiàn)光標(biāo)不移動(dòng)而屏幕移動(dòng)的效果。 6)80ha7h: 設(shè)置數(shù)據(jù)地址指針(第一行)。 7)c0he7h: 設(shè)置數(shù)據(jù)地址指針(第二行)。 2.4 元件清單 (1) lcd1602 一個(gè)(2) at89s52單片機(jī) 一個(gè)(3) 電阻10k 1k 各一個(gè)(4) 電容 20f 兩個(gè)(5) 12mhz晶振一個(gè)(6) 復(fù)位按鍵一個(gè)(7) 下載線一根(8) 導(dǎo)線若干3 軟件設(shè)計(jì)軟件設(shè)計(jì)部分主要是說明程序設(shè)計(jì)的思路和實(shí)現(xiàn)方法、程序。包含了整體的設(shè)計(jì)思路,和每個(gè)程序的作用和實(shí)現(xiàn)的方法。整個(gè)程序?qū)嶋H上包含三個(gè)部分:頻率產(chǎn)生、函數(shù)中斷和lcd顯示部分。而其中的每一個(gè)部分都有一段程序去實(shí)現(xiàn),在這部分我們將對(duì)每個(gè)程序

17、進(jìn)行詳細(xì)說明其作用和實(shí)現(xiàn)方法。3.1 軟件功能(1) at89s52單片機(jī) 利用c語言程序來實(shí)現(xiàn)定時(shí)/計(jì)數(shù)器功能,用程序來選擇定時(shí)/計(jì)數(shù)器的工作方式,確定工作的模式,實(shí)現(xiàn)全16位的定時(shí)/計(jì)數(shù)器。再通過定時(shí)/計(jì)數(shù)器來設(shè)置中斷程序,完成隨意中斷。(2) lcd1602液晶顯示 通過3.2 lcd驅(qū)動(dòng)程序#include /包含頭文件#define uchar unsigned char#define dbport p0 /定義端口sbit lcdrs= p11;sbit lcdrw= p12;sbit lcden = p13;#ifndef lcd_char_1602_2005_4_9#defin

18、e lcd_char_1602_2005_4_9#include unsigned char lcd_wait(void)lcdrs=0;lcdrw=1;_nop_();lcden=1;_nop_();lcden=0;return dbport;#define lcd_command0 / command#define lcd_data1 / data#define lcd_clear_screen0x01 / 清屏#define lcd_homing 0x02 / 光標(biāo)返回原點(diǎn)void lcd_write(bit style, unsigned char input)lcden=0;lcdr

19、s=style;lcdrw=0;_nop_();dbport=input;_nop_();/注意順序lcden=1;_nop_();/注意順序lcden=0;_nop_();lcd_wait();#define lcd_show0x04 /顯示開#define lcd_hide0x00 /顯示關(guān) #define lcd_cursor0x02 /顯示光標(biāo)#define lcd_no_cursor0x00 /無光標(biāo) #define lcd_flash0x01 /光標(biāo)閃動(dòng)#define lcd_no_flash0x00 /光標(biāo)不閃動(dòng)void lcd_setdisplay(unsigned char

20、displaymode)lcd_write(lcd_command, 0x08|displaymode);#define lcd_ac_up0x02#define lcd_ac_down0x00 / default#define lcd_move0x01 / 畫面可平移#define lcd_no_move0x00 /defaultvoid lcd_setinput(unsigned char inputmode)lcd_write(lcd_command, 0x04|inputmode);void lcd_initial() /lcd初始化lcden=0;lcd_write(lcd_comm

21、and,0x38); /8位數(shù)據(jù)端口,2行顯示,5*7點(diǎn)陣lcd_write(lcd_command,0x38);lcd_setdisplay(lcd_show|lcd_no_cursor); /開啟顯示, 無光標(biāo)lcd_write(lcd_command,lcd_clear_screen); /清屏lcd_setinput(lcd_ac_up|lcd_no_move); /ac遞增, 畫面不動(dòng)void gotoxy(unsigned char x, unsigned char y)if(y=0)lcd_write(lcd_command,0x80|x);if(y=1)lcd_write(lc

22、d_command,0x80|(x-0x40);void print(unsigned char *str)while(*str!=0)lcd_write(lcd_data,*str);str+;#endifbit time;uchar disp8=0,0,0,0,0,0,0,0;uchar t0count,t1count;void delay_nms(unsigned int n) /延遲一段時(shí)間 unsigned int i; unsigned char j; for(i=n;i0;i-) for(j=250;j0;j-); for(j=250;j0;j-); /*將頻率轉(zhuǎn)換為顯示數(shù)據(jù)*/

23、void calc () uchar i; long frequency; frequency=t0count*65536+th0*256+tl0;/*實(shí)現(xiàn)將頻率轉(zhuǎn)換為顯示數(shù)組*/ for(i=7;i0;i-) dispi=(frequency%10)+0x30; frequency=frequency/10; disp0=frequency+0x30; void init() /對(duì)變量初始化 t0count=0; t1count=0; th0=0; tl0=0;3.3 主程序main() init();lcd_initial(); /以上兩條調(diào)用初始化函數(shù) tmod=0x15; /將t1設(shè)置

24、為模式1、定時(shí)方式,t0為模式1、計(jì)數(shù)方式 th1=(65536-50000+36)/256; tl1=(65536-50000+36)%256; et1=1; et0=1; ea=1; /*將其中的高8位和低8位的初始值更改后可輸出不同頻率的脈沖*/ t2mod=0x2; rcap2h=245; /設(shè)置高8位初始值 rcap2l=74; /設(shè)置低8位初始值 tr2=1; /開始輸出 tr1=1; tr0=1;gotoxy(0,0);print(frequency: hz);while(1)gotoxy(0,1);print(disp);delay_nms(1000);void time0() interrupt 1 /定時(shí)器0的服務(wù)中斷程序 t0count+; /計(jì)算t0在1秒內(nèi)中斷幾次void time1() interrupt 3 th1=(65536-50000+36)/256; tl1=(65536-50000+36)%256; if(t1count=19)/1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論