《單片機(jī)技術(shù)及應(yīng)用》完整課件_第1頁
《單片機(jī)技術(shù)及應(yīng)用》完整課件_第2頁
《單片機(jī)技術(shù)及應(yīng)用》完整課件_第3頁
《單片機(jī)技術(shù)及應(yīng)用》完整課件_第4頁
《單片機(jī)技術(shù)及應(yīng)用》完整課件_第5頁
已閱讀5頁,還剩208頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

單片機(jī)基礎(chǔ)知識(shí)本章目標(biāo)職業(yè)素養(yǎng)目標(biāo)學(xué)會(huì)識(shí)別AT89S52的標(biāo)識(shí)

知識(shí)目標(biāo)了解單片機(jī)的相關(guān)常識(shí)掌握AT89S52的構(gòu)造與原理單片機(jī)基礎(chǔ)知識(shí)本單元內(nèi)容概述一初步了解單片機(jī):

1.計(jì)算機(jī)的相關(guān)基礎(chǔ)知識(shí);

2.單片機(jī)的概念

3.單片機(jī)的發(fā)展歷史;

4.單片機(jī)的基本類型;

5.單片機(jī)的應(yīng)用范圍。二、學(xué)習(xí)單片機(jī)AT89S52的硬件資源:

1.單片機(jī)AT89S52的中央處理器;

2.單片機(jī)AT89S52的存儲(chǔ)器;

3.單片機(jī)AT89S52的端口與引腳;

4.單片機(jī)AT89S52的時(shí)序與復(fù)位;

5.單片機(jī)AT89S52的標(biāo)示。一.計(jì)算機(jī)的常用術(shù)語1、位(bit)位是計(jì)算機(jī)所能表示的最基本、最小的數(shù)據(jù)單元。計(jì)算機(jī)采用二進(jìn)制,因此位就是1個(gè)二進(jìn)制位,若干二進(jìn)制位的組合就可以表示各種數(shù)據(jù)、字符等。2、字(word)和字長字是計(jì)算機(jī)內(nèi)部進(jìn)行數(shù)據(jù)處理的基本單位。通常它與計(jì)算機(jī)內(nèi)部寄存器、算術(shù)邏輯單元、數(shù)據(jù)總線的長度一致。一個(gè)字所包含的二進(jìn)制位數(shù)稱為字長。計(jì)算機(jī)的相關(guān)基礎(chǔ)知識(shí)3、字節(jié)(byte)把相鄰的8位二進(jìn)制數(shù)成為字節(jié),可以用字節(jié)作為微型計(jì)算機(jī)字長的單位。8位微型計(jì)算機(jī)的字長等于1個(gè)字節(jié),16位微型計(jì)算機(jī)的字長等于2個(gè)字節(jié),32位微型計(jì)算機(jī)的字長等于4個(gè)字節(jié)。習(xí)慣上把一個(gè)字節(jié)定為8位,把一個(gè)字定為16位,把一個(gè)雙字定為32位。

4、指令指令是規(guī)定計(jì)算機(jī)進(jìn)行某種操作的命令,由一串二進(jìn)制數(shù)碼組成,是計(jì)算機(jī)自動(dòng)控制的依據(jù)。5、程序程序是指令的有序組合,是為實(shí)現(xiàn)特定目標(biāo)或解決待定問題而用計(jì)算機(jī)語言編寫的命令序列。6、機(jī)器語言用二進(jìn)制(或十六進(jìn)制)數(shù)表示的指令和數(shù)據(jù)總和為機(jī)器語言,是計(jì)算機(jī)能直接識(shí)別和執(zhí)行的程序。7、匯編語言用助記符號(hào)表達(dá)的指令稱為匯編語言,是機(jī)器語言的符號(hào)表示。8、高級(jí)語言采用接近人類自然語言的習(xí)慣表達(dá)的程序設(shè)計(jì)語言,例如BASIC、C語言。現(xiàn)在一般使用C51語言設(shè)計(jì)51單片機(jī)程序。1、數(shù)制介紹(1)十進(jìn)制(Decimal)數(shù)碼:0,1,2,3,4,5,6,7,8,9①十進(jìn)制有0~9十個(gè)不同的數(shù)碼。

②十進(jìn)制數(shù)逢十進(jìn)一,即當(dāng)?shù)臀粷M十則向鄰高位進(jìn)一。(2)二進(jìn)制(Binary)數(shù)碼:0,1①二進(jìn)制有0,1兩個(gè)不同的數(shù)碼。

②二進(jìn)制數(shù)逢二進(jìn)一。計(jì)算機(jī)的相關(guān)基礎(chǔ)知識(shí)二.計(jì)算機(jī)的數(shù)制(3)十六進(jìn)制(Hexadecimal)數(shù)碼:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F(xiàn)①十六進(jìn)制有0~F十六個(gè)不同的數(shù)碼。

②十六進(jìn)制數(shù)逢十六進(jìn)一。表1-1部分十進(jìn)制、二進(jìn)制、十六進(jìn)制數(shù)的對(duì)照表十進(jìn)制二進(jìn)制十六進(jìn)制十進(jìn)制二進(jìn)制十六進(jìn)制000000810008100011910019200102101010A300113111011B401004121100C501015131101D601106141110E701117151111F2、數(shù)制的書寫(1)可以在數(shù)后面用英文字母標(biāo)記。十進(jìn)制數(shù)以字母D結(jié)尾,例如:32D,1000D。二進(jìn)制數(shù)以字母B結(jié)尾,例如:1001B,0100B。十六進(jìn)制數(shù)以字母H結(jié)尾,例如:123H,A1EFH。(2)可以給數(shù)加括號(hào),并在括號(hào)右下角標(biāo)注數(shù)制代號(hào),例如:十進(jìn)制數(shù),(32)10,(1000)10

二進(jìn)制數(shù),(1001)2,(0100)2

十六進(jìn)制數(shù),(123)16,(A1EF)163、不同數(shù)制之間的轉(zhuǎn)換(1)二進(jìn)制與十進(jìn)制相互轉(zhuǎn)換

①二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),將二進(jìn)制數(shù)按權(quán)展開后相加,例如:

11010B=1×24+1×23+0×22+1×21+0×20=26D②十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),采用“除2取余法”。即用2連續(xù)去除十進(jìn)制數(shù),直到商為0為止,然后把各次余數(shù)按最后得到的為最高位、最早得到的為最低位(從下至上),依次排列起來所得到的數(shù)便是所求的二進(jìn)制數(shù)。

例如:試求出十進(jìn)制數(shù)125的二進(jìn)制數(shù)。把125連續(xù)除以2,直到商為0,相應(yīng)豎式為:125262…余12312…余015…余1272321…余1…余120…余1

按照逆序?qū)⒏饔鄶?shù)記下,得到轉(zhuǎn)換后的二進(jìn)制為:111101B。(2)十六進(jìn)制與十進(jìn)制相互轉(zhuǎn)換

①十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù),將十六進(jìn)制數(shù)按權(quán)展開后相加,例如:

64H=6×161+4×160=100D②十進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù),采用“除16取余法”。即用16連續(xù)去除要轉(zhuǎn)換的十進(jìn)制數(shù),直到商為0為止,然后把各次余數(shù)按逆得到順序依次排列起來,所得的數(shù)便是所求的十六進(jìn)制數(shù)。(3)二進(jìn)制與十六進(jìn)制相互轉(zhuǎn)換

①二進(jìn)制數(shù)轉(zhuǎn)換成十六進(jìn)制數(shù),采用“四位合一位”的方法。即從二進(jìn)制數(shù)最低位開始,每四位一組,不足四位以0補(bǔ)足,然后分別把每組用十六進(jìn)制數(shù)表示,并按序相連。例如:把二進(jìn)制數(shù)1101111100110B轉(zhuǎn)換成十六進(jìn)制數(shù),則有:

00011011111001101BE6

所以,1101111100110B=1BE6H②十六進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù),采用“一位分四位”的方法。即把十六進(jìn)制數(shù)的每一位分別用4位二進(jìn)制數(shù)表示,然后將其按序連成一體。

例如:把十六進(jìn)制數(shù)2AE5H轉(zhuǎn)換成二進(jìn)制數(shù),則有:

2AE5

0010101011100101

所以,2AE5H=0010101011100101B單片機(jī),全稱單片微型計(jì)算機(jī),就是在一塊芯片上集成了微處理器(CPU)、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器以及多種I/O接口電路的具有一定規(guī)模的微型計(jì)算機(jī),因最早被應(yīng)用在工業(yè)控制領(lǐng)域,所以又被稱為微控制器。單片機(jī)的概念MCUSOCSCM單片機(jī)的發(fā)展史單片微型計(jì)算機(jī)

微控制器

專用化片上系統(tǒng)

單片機(jī)的發(fā)展歷史單片機(jī)的分類用途專用型單片機(jī)通用型單片機(jī)廠家Intel(MCS51系列、MCS96系列)Atmel(AT89系列、MCS51內(nèi)核)

Motorola(68HCXX系列)Microchip(PIC系列)

……位數(shù)4位機(jī)

8位機(jī)

16位機(jī)

32位機(jī)等等計(jì)算機(jī)網(wǎng)絡(luò)與通信家用電器智能儀器儀表工業(yè)控制醫(yī)療設(shè)備汽車設(shè)備單片機(jī)的應(yīng)用智能儀器儀表智能電壓表溫濕度時(shí)鐘超聲波流量計(jì)示波器工業(yè)控制水廠控制自動(dòng)打包智能電梯醫(yī)療設(shè)備呼吸機(jī)心電監(jiān)護(hù)儀汽車設(shè)備電動(dòng)助力轉(zhuǎn)向系統(tǒng)ABS防抱死計(jì)算機(jī)及網(wǎng)絡(luò)和通信

平板電腦智能手機(jī)家用電器

智能電飯煲智能電視機(jī)AT89S52單片機(jī)的基本組成AT89S52單片機(jī)內(nèi)部結(jié)構(gòu)框圖如圖1-2所示:AT89S52單片機(jī)內(nèi)部包括:一個(gè)8位89S52微處理器(CPU),是單片機(jī)的運(yùn)算和指揮中心。片內(nèi)8K字節(jié)程序存儲(chǔ)器(ROM),用于存放程序、原始數(shù)據(jù)及表格。片內(nèi)256字節(jié)數(shù)據(jù)存儲(chǔ)器(RAM),用于存放臨時(shí)數(shù)據(jù),如運(yùn)算的中間結(jié)果及欲顯示數(shù)據(jù)。4組8位并行輸入/輸出端口(I/O端口)P0~P3,每個(gè)端口均有8條I/O線,用于與外部交換信息。3個(gè)16位的定時(shí)器/計(jì)數(shù)器。1個(gè)6向量2級(jí)中斷結(jié)構(gòu),有6個(gè)中斷源和2個(gè)中斷優(yōu)先級(jí)。1個(gè)全雙工UART(通用異步接收發(fā)送器)的串行I/O口。片內(nèi)晶振及時(shí)鐘電路。具有節(jié)電工作方式,即空閑方式與掉電方式。看門狗定時(shí)器WDT是一種需要軟件控制的復(fù)位方式。雙數(shù)據(jù)指針寄存器DPTR0、DPTR1。中央處理器(CPU)也稱微處理器,是單片機(jī)的核心部件,是單片機(jī)的控制和指揮中心。主要包含運(yùn)算器和控制器。AT89S52單片機(jī)的中央處理器(CPU)

程序狀態(tài)字寄存器PSW算術(shù)邏輯運(yùn)算單元ALU累加器A通用寄存器B

暫存器

運(yùn)算器對(duì)數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算、邏輯運(yùn)算和位操作運(yùn)算

定時(shí)電路程序計(jì)數(shù)器PC

指令寄存器IR

指令譯碼器ID

振蕩器

控制器控制單片機(jī)的工作AT89S52單片機(jī)內(nèi)部的存儲(chǔ)器分為兩種:程序存儲(chǔ)器ROM和數(shù)據(jù)存儲(chǔ)器RAM。程序存儲(chǔ)器ROM用于存放程序、原始數(shù)據(jù)或表格,可在線編寫程序,掉電后數(shù)據(jù)保持不變。數(shù)據(jù)存儲(chǔ)器RAM用于存放運(yùn)算的中間結(jié)果、最終結(jié)果或欲顯示的數(shù)據(jù)等,其數(shù)據(jù)可隨時(shí)改寫,掉電后數(shù)據(jù)消失。AT89S52單片機(jī)的存儲(chǔ)器

圖1-3

AT89S52單片機(jī)存儲(chǔ)器空間配置1、程序存儲(chǔ)器

AT89S52單片機(jī)片內(nèi)程序存儲(chǔ)器ROM有8K字節(jié),其地址為0000H~1FFFH;片外可接擴(kuò)展程序存儲(chǔ)器ROM,最大達(dá)64k字節(jié),地址為0000H~FFFFH,片內(nèi)外統(tǒng)一編址。CPU訪問片內(nèi)、片外程序存儲(chǔ)器ROM時(shí)用MOVC指令。2、數(shù)據(jù)存儲(chǔ)器

AT89S52單片機(jī)片內(nèi)數(shù)據(jù)存儲(chǔ)器RAM有256字節(jié),其地址為00H~FFH;片外可接擴(kuò)展數(shù)據(jù)存儲(chǔ)器RAM,最大達(dá)64k字節(jié),地址為0000H~FFFFH。訪問片內(nèi)RAM時(shí)用MOV指令,訪問片外RAM時(shí)用MOVX指令。0FFH80H高128B通用RAM區(qū)7FH30H通用RAM區(qū)2FH20H位尋址區(qū)地址工作寄存器1FH18HR7R0寄存器3組02H07HR706HR617H10HR7R0寄存器2組05HR5R40FH08HR7R0寄存器1組03HR3R207H00HR7R0寄存器0組(默認(rèn))01HR100HR0圖1-4AT89S52單片機(jī)數(shù)據(jù)存儲(chǔ)器結(jié)構(gòu)

(1)工作寄存器區(qū)

AT89S52單片機(jī)在片內(nèi)RAM中劃分出低地址的32個(gè)字節(jié)單元(00H~1FH)作為工作寄存器區(qū),供用戶使用。工作寄存器區(qū)分為4個(gè)工作寄存器組,每個(gè)組有8個(gè)寄存器,分別稱為R7~R0,占8個(gè)字節(jié)。在單片機(jī)工作時(shí),只有一組寄存器作為當(dāng)前工作寄存器組R7~R0使用。當(dāng)單片機(jī)復(fù)位后,系統(tǒng)默認(rèn)工作寄存器0組為當(dāng)前工作寄存器組。(2)位尋址區(qū)在工作寄存器區(qū)后的20H~2FH共16個(gè)字節(jié)為位尋址區(qū),共有128位(8*16=128)。每一位都有相應(yīng)的位地址00H~7FH。利用位尋址可以對(duì)某一位進(jìn)行單獨(dú)的操作,而無須將一個(gè)字節(jié)的8位全部重新操作一遍。(3)通用RAM區(qū)

AT98S52單片機(jī)片內(nèi)通用RAM區(qū)地址為30H~FFH,這里通常設(shè)為堆棧區(qū),棧頂?shù)奈恢糜啥褩<拇嫫鱏P指定。系統(tǒng)復(fù)位時(shí),SP的初始值為07H。3、特殊功能寄存器SFR①累加器ACC(E0H)累加器ACC是89S52最常用、最忙碌的8位特殊功能寄存器,許多指令的操作數(shù)取自于ACC,許多運(yùn)算中間結(jié)果也存放與ACC。在指令系統(tǒng)中,用A作為累加器ACC的助記符。

②寄存器B(F0H)在乘、除指令中,用到了8位寄存器B。乘法指令的兩個(gè)操作數(shù)分別取自A和B,乘積存于B和A兩個(gè)8位寄存器中。除法指令中,A中存放被除數(shù),B中存放除數(shù),商存放于A,余數(shù)存放于B。在其他指令中,B可作為一般通用寄存器使用。③程序狀態(tài)寄存器PSW(D0H)

程序狀態(tài)寄存器PSW是一個(gè)8位特殊功能寄存器,它的各位包含了程序執(zhí)行后的各種狀態(tài)信息,供程序查詢或判別之用。地址D0H寄存器名稱程序狀態(tài)寄存器PSW位地址D7D6D5D4D3D2D1D0位名稱CYACF0RS1RS0OVF1P位意義進(jìn)/借輔進(jìn)用戶標(biāo)志寄存器組選擇溢出用戶標(biāo)志奇/偶表1-2程序狀態(tài)寄存器PSW功能表CY(PSW.7):進(jìn)/借位標(biāo)志位。在執(zhí)行加法(或減法)運(yùn)算指令時(shí),如果運(yùn)算結(jié)果的最高位(D7位)向前有進(jìn)位(或借位),則CY位由硬件自動(dòng)置為1(CY=1);如果運(yùn)算結(jié)果的最高位無進(jìn)位(或借位),則CY位被清0(CY=0)。

AC(PSW.6):輔助進(jìn)/借位標(biāo)志位。當(dāng)執(zhí)行加法(或減法)操作時(shí),如果運(yùn)算結(jié)果(和或差)的低4位(D3位)向高4位(D4位)有半進(jìn)位(或借位),則AC位將被硬件自動(dòng)置為1(AC=1);否則AC位被清0(AC=0)。

F0(PSW.5):用戶標(biāo)志位0。用戶可以根據(jù)自己的需要對(duì)F0位賦予一定的含義,由用戶置位或復(fù)位,以作為軟件標(biāo)志。

RS1、RS0(PSW.4、PSW.3):工作寄存器組選擇位。在單片機(jī)數(shù)據(jù)存儲(chǔ)器中有四組工作寄存器組(寄存器3組、寄存器2組、寄存器1組、寄存器0組),每個(gè)寄存器組中有8個(gè)寄存器R7~R0。程序運(yùn)行時(shí)只能有一組寄存器組工作,可以通過設(shè)置RS1、RS0的值來進(jìn)行選取。RS1RS0工作寄存器組片內(nèi)RAM地址00寄存器0組00H~07H01寄存器1組08H~0FH10寄存器2組10H~17H11寄存器3組18H~1F7H表1-3工作寄存器組選擇表OV(PSW.2):溢出標(biāo)志位。當(dāng)進(jìn)行算術(shù)運(yùn)算時(shí),如果運(yùn)算結(jié)果超出了-128~+127的范圍,則有溢出,OV位由硬件自動(dòng)置為1(OV=1);否則無溢出,OV位清0(OV=0)。

F1(PSW.1):用戶標(biāo)志位1(僅AT89S52所有)。作用與用戶標(biāo)志位0相同。

P(PSW.0):奇偶標(biāo)志位。每條指令執(zhí)行完后,該位始終跟蹤指示累加器ACC中1的個(gè)數(shù)。如果A中的1為奇數(shù),則P=1,A中的1為偶數(shù),則P=0。此位常用于校驗(yàn)串行通信中的數(shù)據(jù)傳送是否出錯(cuò)。④堆棧指針SP(81H)堆棧指針SP是一個(gè)8位特殊功能寄存器,SP的內(nèi)容可指向89S52片內(nèi)00H~7FHRAM的任何單元。系統(tǒng)復(fù)位后,SP初始化為07H,即指向地址為07H的RAM單元。

⑤數(shù)據(jù)指針DPTR(83H,82H)數(shù)據(jù)指針DPTR是一個(gè)16位特殊功能寄存器,其高位字節(jié)寄存器用DPH表示(地址83H),低位字節(jié)寄存器用DPL表示(地址82H)。數(shù)據(jù)指針DPTR用于存放16位地址,以便對(duì)64KB片外RAM作間接尋址。AT89S52單片機(jī)有4組8位并行準(zhǔn)雙向I/O端口,分別為P0、P1、P2和P3,共占32個(gè)引腳。每個(gè)端口均包含一個(gè)端口鎖存器(特殊功能寄存器P0~P3)、一個(gè)輸出驅(qū)動(dòng)器和輸入緩沖器。每個(gè)端口可以8條線一起用作I/O口線傳輸字節(jié)信息,也可以每一根I/O口線單獨(dú)使用。對(duì)端口鎖存器的讀/寫就可以實(shí)現(xiàn)端口的輸入/輸出。AT89S52單片機(jī)的并行端口

1、P0口的使用

P0口可作為通用的8位輸入/輸出端口使用。在單片機(jī)外接擴(kuò)展存儲(chǔ)器時(shí),它還可以作為分時(shí)復(fù)用的低8位地址/數(shù)據(jù)總線使用,此時(shí)高8位地址總線由P2端口擔(dān)任。P0口的每一位可驅(qū)動(dòng)8個(gè)TTL個(gè)負(fù)載。(1)P0口作為通用輸出口,需外接上拉電阻才能輸出電平。(2)P0口作為通用輸入口,分為讀鎖存器和讀引腳兩種情況。在讀端口引腳數(shù)據(jù)前,應(yīng)先向端口鎖存器寫入1。2、P1口的使用

P1口常作為通用的輸入/輸出端口,內(nèi)部有上拉電阻,不需外接電阻。當(dāng)從端口引腳讀入數(shù)據(jù)時(shí),應(yīng)先向端口寫1,再讀引腳數(shù)據(jù)。P1口每一位可驅(qū)動(dòng)4個(gè)TTL個(gè)負(fù)載。在AT89S52單片機(jī)中,P1端口還用于一些復(fù)用功能。引腳號(hào)第二功能P1.0T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出P1.1T2EX(定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制)P1.5MOSI(在系統(tǒng)編程用)P1.6MISO(在系統(tǒng)編程用)P1.7SCK(在系統(tǒng)編程用)表1-4AT89S52P1端口各引腳復(fù)用功能表3、P2口的使用

P2口可作為通用的8位輸入/輸出端口使用。在單片機(jī)外接擴(kuò)展存儲(chǔ)器時(shí),它還可以作為高8位地址總線,與P0口的低8位地址總線一起形成16位I/O口地址。P2口的每一位可驅(qū)動(dòng)4個(gè)TTL負(fù)載。

P2口作為通用I/O口使用時(shí),并且不須外接電阻,讀引腳狀態(tài)前,應(yīng)先向端口寫1。4、P3口的使用

P3口是單片機(jī)中使用最靈活、功能最多的一個(gè)并行端口,它具有通用的輸入/輸出功能,還具有多種用途的第二功能(見表1-5)。同樣,P3口的每一位也可驅(qū)動(dòng)4個(gè)TTL負(fù)載。

P3口作為輸入使用時(shí),同P0~P2口一樣,應(yīng)先由軟件向端口寫1,再讀引腳數(shù)據(jù)。P3口也無需外接電阻。引腳號(hào)第二功能P3.0RXD(串行輸入)P3.1TXD(串行輸出)P3.2INT0(————-)(外部中斷0)P3.3INT1(————-)(外部中斷1)P3.4T0(定時(shí)器0外部輸入)P3.5T1(定時(shí)器1外部輸入)P3.6WR(——-)(外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7RD(——-)(外部數(shù)據(jù)存儲(chǔ)器寫選通)表1-5AT89S52P3端口各引腳復(fù)用功能表1、AT89S52單片機(jī)的封裝形式

AT89S52單片機(jī)有PDIP(雙列直插式封裝)、PLCC(帶引線的塑料芯片載體封裝)和TQFP(方形扁平封裝)三種封裝方式(P指塑料)AT89S52單片機(jī)的封裝與引腳介紹圖1-7TQFP封裝圖1-8PLCC封裝

圖1-9PDIP封裝2、AT89S52單片機(jī)的引腳介紹

①電源引腳VCC和GNDVCC(40腳):電源端,接+5V。

GND(20腳):接地端。

②外接晶體振蕩器引腳XTAL1和XTAL2XTAL1(19腳):接外部晶振和微調(diào)電容的一端。在片內(nèi)接振蕩電路反相放大器的輸入端。當(dāng)采用外部時(shí)鐘時(shí),此引腳作為外部時(shí)鐘信號(hào)的輸入端。

XTAL2(18腳):接外部晶振和微調(diào)電容的另一端。在片內(nèi)接振蕩電路反相放大器的輸出端。當(dāng)采用外部時(shí)鐘時(shí),此引腳懸空。③控制信號(hào)引腳RST、PSEN(————)、ALE/PROG(——————)、EA(———)/VPP

RST(9腳):復(fù)位信號(hào)輸入端,高電平有效。

PSEN(————)(29腳):外部程序存儲(chǔ)器選通信號(hào)。

ALE/PROG(—————)(30腳):地址鎖存允許信號(hào)輸出/編程脈沖輸入端。

EA(———)/VPP(31腳):內(nèi)部與外部程序存儲(chǔ)器選擇端/片內(nèi)FlashROM編程電壓輸入端。④輸入/輸出端口P0、P1、P2和P3。

單片機(jī)時(shí)序就是CPU在執(zhí)行指令時(shí)所需控制信號(hào)的時(shí)間順序。在執(zhí)行指令時(shí),CPU首先到程序存儲(chǔ)器中取出需要執(zhí)行指令的指令碼存入指令寄存器,通過指令譯碼器對(duì)其譯碼,并由時(shí)序部件產(chǎn)生一系列時(shí)鐘信號(hào)去完成指令的執(zhí)行。這些指令時(shí)鐘控制信號(hào)在時(shí)間上的相互關(guān)系就是CPU時(shí)序。單片機(jī)通過時(shí)鐘電路產(chǎn)生時(shí)序。AT89S52單片機(jī)的時(shí)鐘與時(shí)序1、單片機(jī)系統(tǒng)的時(shí)鐘電路

內(nèi)部振蕩方式外部時(shí)鐘方式單片機(jī)的時(shí)鐘信號(hào)(1)內(nèi)部振蕩方式

AT89S52芯片內(nèi)部有一個(gè)振蕩器,在引腳XTAL1、XTAL2外接晶體振蕩器(簡(jiǎn)稱晶振),就構(gòu)成了內(nèi)部振蕩方式。(2)外部時(shí)鐘方式外部時(shí)鐘信號(hào)由XTAL1引腳接入單片機(jī)(XTAL2懸空),此時(shí)單片機(jī)將按照外部時(shí)鐘信號(hào)工作。圖1-10AT89S52單片機(jī)的內(nèi)部振蕩方式電路

2、單片機(jī)的時(shí)鐘信號(hào)度量各種時(shí)序信號(hào)出現(xiàn)時(shí)間的尺度

1個(gè)指令周期由1至4個(gè)機(jī)器周期組成AT89S52的機(jī)器周期常定義為12個(gè)振蕩周期振蕩周期T又稱為時(shí)鐘周期,是時(shí)序中最小的時(shí)間單位

振蕩周期指令周期機(jī)器周期

單片機(jī)的復(fù)位操作完成單片機(jī)片內(nèi)電路的初始化,使單片機(jī)從一種確定的狀態(tài)開始運(yùn)行。當(dāng)復(fù)位信號(hào)(高電平)加到單片機(jī)RST引腳并維持2個(gè)機(jī)器周期時(shí),CPU就可以響應(yīng)并將系統(tǒng)復(fù)位。如果RST持續(xù)為高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài),而無法執(zhí)行程序。因此要求單片機(jī)復(fù)位后能脫離復(fù)位狀態(tài)。AT89S52單片機(jī)的復(fù)位上電復(fù)位開關(guān)復(fù)位單片機(jī)的復(fù)位圖1-11單片機(jī)復(fù)位電路

單片機(jī)的復(fù)位操作使單片機(jī)進(jìn)入初始化狀態(tài)。初始化后各內(nèi)部計(jì)算器的狀態(tài)如下:00H0000H各有效位為0特例累加器ACC寄存器B程序狀態(tài)字PSW寄存器TCON寄存器TMOD寄存器T0、T1、T2寄存器SCON堆棧指針SP:07H端口鎖存器P0~P3:0FFH串行數(shù)據(jù)緩沖器SBUF:不定寄存器PCON寄存器IE寄存器IP數(shù)據(jù)指針DPTR程序計(jì)數(shù)器PCAT89S52單片機(jī)的標(biāo)識(shí)⑴“ATMEL”:?jiǎn)纹瑱C(jī)生產(chǎn)公司的名稱。⑵“AT89S52”:?jiǎn)纹瑱C(jī)的型號(hào)。⑶“24PC”:①數(shù)字部分,表示支持的最高系統(tǒng)時(shí)鐘。②數(shù)字后綴第一個(gè)字母,表示封裝。“P”:DIP封裝;“A”:TQFP封裝;“J”:PLCC封裝。③數(shù)字后綴最后一個(gè)字母,表示應(yīng)用級(jí)別。“C”:商業(yè)級(jí);“I”:工業(yè)級(jí)(有鉛);“U”工業(yè)級(jí)(無鉛)。⑷第4行的標(biāo)示“0525”:表示2005年的第25周生產(chǎn)。第二單元單片機(jī)系統(tǒng)顯示界面教學(xué)目標(biāo)及職業(yè)要求教學(xué)目標(biāo)

①掌握單片機(jī)編程常用軟件的使用

②掌握顯示模塊的程序設(shè)計(jì)方法職業(yè)素質(zhì)要求

①熟練操作相關(guān)軟件②學(xué)會(huì)處理燒寫芯片時(shí)遇到的問題

本單元項(xiàng)目列表項(xiàng)目2.1:流水燈項(xiàng)目2.2:電子鐘項(xiàng)目2.1流水燈2.1.1項(xiàng)目描述(一)點(diǎn)亮一個(gè)放光二極管 (二)實(shí)現(xiàn)二極管閃爍 (三)實(shí)現(xiàn)流水燈2.1.2項(xiàng)目分析(一)硬件電路設(shè)計(jì)

以單片機(jī)為控制中心,通過其I/O口與MCU04顯示模塊中的發(fā)光二極管連接,構(gòu)成單片機(jī)控制LED電路。

(二)程序設(shè)計(jì)

C51語言編寫單片機(jī)控制LED程序。2.1.3任務(wù)2-1-1點(diǎn)亮一個(gè)發(fā)光二極管一、發(fā)光二極管(LED)的工作原理

二、任務(wù)2-1-1的實(shí)施1.硬件設(shè)計(jì)2.點(diǎn)亮LED0的程序設(shè)計(jì)

P0.0的電平LED0的狀態(tài)C語言語句1(高電平)滅P0^0=1;0(低電平)亮P0^0=0;2.1.4任務(wù)2-1-2實(shí)現(xiàn)二極管閃爍一、任務(wù)要求

本任務(wù)要求單片機(jī)控制LED0間隔1S閃爍,就是讓LED0燈亮1S,然后熄滅1S,反復(fù)循環(huán)不止。二、任務(wù)2-1-2的實(shí)施

1、硬件電路的設(shè)計(jì)2、程序的設(shè)計(jì)

(1)下面函數(shù)為mS級(jí)延時(shí)函數(shù)voiddelayms(uintx) //當(dāng)晶振為12MHz,延時(shí)xmS,{ //用Medwin3.0的“查看/工具欄/時(shí) //間”功能測(cè)試結(jié)果:

uchari; //x小于500(mS)時(shí),最大誤差 //為17us;

while(x--) //x為1000、2000、3000(mS) //時(shí),誤差分別為19、23、27us。

for(i=0;i<123;i++); } //當(dāng)晶振為11.0592MHz,延時(shí) //12x/11mS。(2)單片機(jī)控制LED0閃爍的程序流程圖

任務(wù)2-1-2的程序清單/*-武漢市儀表電子學(xué)校--*/#include<at89x52.h>#defineuintunsignedint //定義uint=unsignedint(無符號(hào)整型)#defineucharunsignedchar //定義uchar=unsignedchar(無符號(hào)字符型)sbitLED0=P0^0; //定義符號(hào)LED0為單片機(jī)的P0.0引腳voiddelayms(uintx) //函數(shù)省略,請(qǐng)參考上文。voidmain(){ while(1) { LED0=0; //LED0亮1S delayms(922); //實(shí)際晶振11.0592MHz,1000*11.0592/12=922 LED0=1; //LED0滅1S delayms(922); }2.1.5任務(wù)2-1-3實(shí)現(xiàn)流水燈一、任務(wù)要求

單片機(jī)控制8個(gè)發(fā)光二極管從LED0到LED7間隔1S依次點(diǎn)亮,當(dāng)LED7亮1S后,又從LED0開始點(diǎn)亮,如此循環(huán)不止,視覺效果上像一個(gè)亮的燈從右到左流動(dòng)。二、任務(wù)2-1-3的實(shí)施

1、硬件電路的設(shè)計(jì)2、程序的設(shè)計(jì)

(1)流水燈形成原理引腳步驟P0.7(LED7)P0.6(LED6)P0.5(LED5)P0.4(LED4)P0.3(LED3)P0.2(LED2)P0.1(LED1)P0.0(LED0)說明111111110LED0亮211111101LED1亮311111011LED2亮411110111LED3亮511101111LED4亮611011111LED5亮710111111LED6亮801111111LED7亮(2)流水燈控制方法二程序流程圖

項(xiàng)目2.2電子鐘2.2.1項(xiàng)目描述(一)任務(wù)2-2-1:

用字符型液晶顯示模塊RTC1602, 顯示“Welcome!”。(二)任務(wù)2-2-2: 利用C51單片機(jī)的定時(shí)器中斷功能,結(jié)合 RTC1602編寫程序,制作一個(gè)簡(jiǎn)易電子鐘。2.2.2項(xiàng)目分析(一)硬件電路設(shè)計(jì) 單片機(jī)的I/O口與RTC1602連接,構(gòu)成模擬操作時(shí)序的接口電路。(二)程序設(shè)計(jì)

編寫字符型液晶顯示模塊RTC1602的接口驅(qū)動(dòng)程序和顯示數(shù)字、英文等字符的程序,以及中斷初始化和服務(wù)函數(shù)程序。2.2.3任務(wù)2-3-1RTC1602顯示“Welcome!”

一、字符型液晶顯示模塊RTC1602概述

二、字符型液晶顯示模塊RTC1602主要硬件構(gòu)成說明LCDLCDLCD控制器顯示器驅(qū)動(dòng)器背光VDDVSSV0R/WRSDB0~DB7LEDALEDK字符型液晶顯示模塊RTC1602的接口定義表2-5RTC1602模塊的接口定義管腳號(hào)管腳名稱方向管腳功能描述1VSS--電源地(0V)2VDD--模塊電源正極(+5V)3V0--對(duì)比度調(diào)節(jié)端4RSI數(shù)據(jù)/指令寄存器選擇端RS=0:選擇指令RS=1:選擇數(shù)據(jù)5R/WI讀寫選擇端R/W=0:寫操作;R/W=1:讀操作。6EI使能端7DB0I/O數(shù)據(jù)線8DB1I/O數(shù)據(jù)線9DB2I/O數(shù)據(jù)線10DB3I/O數(shù)據(jù)線11DB4I/O數(shù)據(jù)線12DB5I/O數(shù)據(jù)線13DB6I/O數(shù)據(jù)線14DB7I/O數(shù)據(jù)線15LEDA--LED背光源正極(+5V)16LEDK--LED背光源負(fù)極(0V)三、RTC1602的控制寄存器1、指令寄存器(IR)2、數(shù)據(jù)寄存器(DR)3、忙標(biāo)志:BF4、地址計(jì)數(shù)器(AC)5、顯示數(shù)據(jù)寄存器(DDRAM)6、字符產(chǎn)生器(CGROM)7、字符產(chǎn)生器(CGRAM)圖2-2-4CGROM字符編碼與字符關(guān)系對(duì)照?qǐng)D

四、RTC1602的指令系統(tǒng)單片機(jī)是通過控制HD44780來控制RTC1602進(jìn)行顯示。控制指令有9種,各種指令的格式及功能說明如表2-6。命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0功能清屏0000000001清除屏幕顯示內(nèi)容。歸位000000001*將光標(biāo)及光標(biāo)所在位的字符回原點(diǎn)。設(shè)置輸入模式00000001I/DS設(shè)置光標(biāo)、顯示畫面移動(dòng)方向。顯示開關(guān)控制0000111DBC設(shè)置顯示、光標(biāo)、光標(biāo)閃爍的開關(guān)。設(shè)置顯示模式0000111000設(shè)置顯示為16×2,5×7的點(diǎn)陣,8位數(shù)據(jù)總線。設(shè)置數(shù)據(jù)指針0080H+地址碼(第一行:0~27H;第二行:40~67H)設(shè)置數(shù)據(jù)指針。讀忙標(biāo)志BF01BFAC6AC5AC4AC3AC2AC1AC0指示液晶屏的工作狀態(tài)。寫數(shù)據(jù)10數(shù)據(jù)往DDRAM中寫數(shù)據(jù)。讀數(shù)據(jù)11數(shù)據(jù)從DDRAM中讀數(shù)據(jù)。表2-6RTC1602指令表

指令說明:(1)清屏

功能描述:清除顯示屏所有的內(nèi)容,光標(biāo)回到原點(diǎn)。命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0清屏0000000001

指令說明:(2)歸位命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0歸位000000001*功能描述:清地址計(jì)數(shù)器AC=0;將光標(biāo)及光標(biāo)所在位的字符回原點(diǎn);但DDRAM中的內(nèi)容并不改變。指令說明:(3)設(shè)置輸入模式

功能描述:設(shè)置光標(biāo)、顯示畫面移動(dòng)方向。I/D:地址指針AC變化方向標(biāo)志。I/D=1時(shí),讀寫一個(gè)字符后,地址計(jì)數(shù)器AC自動(dòng)加1;I/D=0時(shí),讀寫一個(gè)字符后,地址計(jì)數(shù)器AC自動(dòng)減1。S:顯示移位標(biāo)志。S=1時(shí),寫入一個(gè)字符后全部顯示往左(I/D=1)移動(dòng)或者往右(I/D=0)移動(dòng);S=0時(shí),寫一個(gè)字符顯示不發(fā)生位移。命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0設(shè)置輸入模式

00000001I/DS指令說明:(4)顯示開關(guān)控制功能描述:設(shè)置光標(biāo)、顯示畫面移動(dòng)方向。D:顯示開/關(guān)控制標(biāo)志。D=1,開顯示;D=0,關(guān)顯示。關(guān)顯示后,顯示數(shù)據(jù)仍保持在DDRAM中,立即開顯示可以再現(xiàn)。C:光標(biāo)顯示控制標(biāo)志。:C=1,光標(biāo)顯示;C=0,光標(biāo)不顯示。不顯示光標(biāo)并不影響模塊其它顯示功能。

B:閃爍顯示控制標(biāo)志。B=1,光標(biāo)閃爍,B=0,不顯示光標(biāo)。命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0顯示開關(guān)控制

0000001DCB指令說明:(5)設(shè)置顯示模式功能描述:設(shè)置模塊的顯示方式。我們?cè)谝院蟮捻?xiàng)目中固定顯示模式為16×2、5×7的點(diǎn)陣,8位數(shù)據(jù)總線。命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0設(shè)置顯示模式

0000111000指令說明:(6)設(shè)置數(shù)據(jù)指針功能描述:設(shè)置DDRAM地址指針。它將DDRAM存儲(chǔ)顯示字符的字符碼的首地址送入地址計(jì)數(shù)器AC中,于是顯示字符的字符碼就可以寫入DDRAM中或者從DDRAM中讀出。RTC1602有兩行,每行有40個(gè)地址,我們只取前16個(gè)就行了。要想在正確的位置顯示字符,必須在地址前加上80H。例如我們要在DDRAM的01H地址處顯示字符“A”,那么地址數(shù)據(jù)為80H+01H,即81H。往81H中寫入數(shù)據(jù)0x41H(A的代碼),這樣就能在DDRAM的01H處顯示字符“A”。命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0設(shè)置數(shù)據(jù)指針

80H+地址碼(第一行:0~27H;第二行:40~67H)

指令說明:(7)讀忙標(biāo)志BF功能描述:當(dāng)RS=0和R/W=1時(shí),在E信號(hào)高電平的作用下,BF和AC6~AC0被讀到數(shù)據(jù)總線DB7~DB0的相應(yīng)位,通過BF的值來判斷模塊的工作狀態(tài)。BF:內(nèi)部操作忙標(biāo)志,BF=1,表示模塊正在進(jìn)行內(nèi)部操作,此時(shí)模塊不接收任何外部指令和數(shù)據(jù),直到BF=0為止。命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0讀忙標(biāo)志BF01BFAC6AC5AC4AC3AC2AC1AC0指令說明:(9)讀數(shù)據(jù)

功能描述:從DDRAM中讀取數(shù)據(jù)。命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0設(shè)置數(shù)據(jù)指針11數(shù)據(jù)指令說明:(8)寫數(shù)據(jù)命令RSR/WDB7DB6DB5DB4DB3DB2DB1DB0設(shè)置數(shù)據(jù)指針10數(shù)據(jù)功能描述:寫數(shù)據(jù)到DDRAM中。五、RTC1602的讀寫操作時(shí)序?qū)懖僮鲿r(shí)序圖從圖2-35中可看出,對(duì)RTC1602寫操作過程為:R/W端為0;RS端根據(jù)寫指令或?qū)憯?shù)據(jù),分別設(shè)置為0、1;單片機(jī)準(zhǔn)備好數(shù)據(jù)DB0~DB7后,在E端產(chǎn)生下降沿,RTC1602鎖定數(shù)據(jù)。讀操作時(shí)序圖從圖2-36中可看出,對(duì)RTC1602讀操作過程為:R/W端為1;RS端根據(jù)讀狀態(tài)或讀數(shù)據(jù),分別設(shè)置為0、1;E端變?yōu)?,RTC1602輸出數(shù)據(jù),單片機(jī)可讀取數(shù)據(jù)DB0~DB7;E端變?yōu)?,此后數(shù)據(jù)輸出無效。

圖2-2-5RTC1602的寫時(shí)序圖

圖2-2-6RTC1602的讀時(shí)序圖六、任務(wù)2-2-1的實(shí)施1、硬件電路的設(shè)計(jì)

本任務(wù)需要使用YL-236裝置中的三個(gè)模塊:MCU01主機(jī)模塊、MCU02電源模塊、MCU04顯示模塊,模塊接線圖如圖2-37所示。MCU04顯示模塊

RSWREDB7~DB0GND+5VGND+5VP1.0P1.1P1.2P0口GND+5VMCU01主機(jī)模塊MCU02電源模塊2、RTC1602的基本C51函數(shù)及顯示界面程序設(shè)計(jì)(1)voidbusy()(2)voidwriteData(unsignedcharx)(3)voidwriteOrder(unsignedcharx)(4)voidinit16024()(5)voidwriteByte(unsignedcharx,y,dod)(6)voidwriteString(unsignedcharx,y,unsignedcharcode*p)任務(wù)2-2-1的程序流程圖如圖2-2-8所示。開始初始化RTC1602調(diào)用顯示字符串和字符函數(shù)結(jié)束任務(wù)2-2-2簡(jiǎn)易電子鐘的實(shí)現(xiàn)一、任務(wù)要求利用單片機(jī)的定時(shí)器中斷,實(shí)現(xiàn)電子鐘的準(zhǔn)確計(jì)時(shí),并在RTC1602屏幕上進(jìn)行顯示。二、AT89S52單片機(jī)中斷系統(tǒng)1、中斷的概念所謂的中斷就是,當(dāng)CPU正在處理某項(xiàng)事務(wù)的時(shí)候,如果外界或者內(nèi)部發(fā)生了緊急事件,要求CPU暫停正在處理工作而去處理這個(gè)緊急事件,待處理完后,再回到原來中斷的地方,繼續(xù)執(zhí)行原來被中斷的程序,這個(gè)過程稱作中斷。2、中斷的優(yōu)點(diǎn)(1)分時(shí)操作。CPU與低速的外部設(shè)備交換信息時(shí),可以分時(shí)命令多個(gè)外設(shè)同時(shí)工作,外設(shè)工作的同時(shí),CPU可以執(zhí)行主程序,當(dāng)外設(shè)完成工作時(shí)向CPU申請(qǐng)中斷,CPU才轉(zhuǎn)去執(zhí)行中斷服務(wù)程序,這樣大大提高了CPU工作效率。(2)實(shí)時(shí)處理。可以通過中斷響應(yīng)實(shí)時(shí)處理環(huán)境變化。(3)故障處理。CPU可以通過中斷自行處理運(yùn)行過程中無法預(yù)料的故障問題。3、中斷源

起并發(fā)出中斷請(qǐng)求的源頭(如某設(shè)備或事件)稱為中斷源。51系列單片機(jī)有6個(gè)中斷兩個(gè)中斷(INT0、INT1)、三個(gè)定時(shí)器/計(jì)數(shù)器中斷(T0、T1、T2)和一個(gè)串行口中斷。中斷源的別方式有兩種:(1)查詢中斷:通過軟件逐個(gè)查詢各中斷源的中斷請(qǐng)求標(biāo)志。(2)向量中斷:中斷請(qǐng)求通過優(yōu)先級(jí)排隊(duì)電路,一旦響應(yīng)轉(zhuǎn)向?qū)?yīng)的向量地址執(zhí)行。4、中斷優(yōu)先級(jí)中斷優(yōu)先級(jí)越高,則響應(yīng)優(yōu)先權(quán)就越高。當(dāng)CPU正在執(zhí)行中斷服務(wù)程序時(shí),又有中斷優(yōu)先級(jí)更高的中斷申請(qǐng)產(chǎn)生,這時(shí)CPU就會(huì)暫停當(dāng)前的中斷服務(wù)轉(zhuǎn)而處理高級(jí)中斷申請(qǐng),待高級(jí)中斷處理程序完畢再返回原中斷程序斷點(diǎn)處繼續(xù)執(zhí)行,這一過程稱為中斷嵌套。5、中斷源、入口地址、C語言程序格式表表2-7中斷源、入口地址、C語言程序格式表序號(hào)中斷源中斷向量中斷服務(wù)程序格式1外部中斷0(INT0)0003Hinterrupt02定時(shí)器/計(jì)數(shù)器T0中斷000BHinterrupt13外部中斷1(INT1)0013Hinterrupt24定時(shí)器/計(jì)數(shù)器T1中斷001BHinterrupt35串行口中斷0023Hinterrupt46定時(shí)器/計(jì)數(shù)器T2中斷002BHinterrupt56、C語言中斷服務(wù)函數(shù)格式說明為了便于用C語言編寫單片機(jī)中斷服務(wù)程序,C51譯器也持1單片機(jī)的中斷服務(wù)程序,而且用C言編寫中斷服務(wù)程比匯編語言方便的多。C語言寫中斷服務(wù)函數(shù)的格式如下:函數(shù)類型函數(shù)名(形式參數(shù)列表)interruptn[usingm]其中,interrupt后面的n是中斷編號(hào),取值范圍是0~5;using后面的m表示使用的工作寄存器組號(hào),取值范圍是0~3,若不聲明using項(xiàng),默認(rèn)用第0組工作寄存器。例如,定時(shí)器T0的中斷服務(wù)函數(shù):

voidtime_0(void)interrupt1using0三、AT89S52單片機(jī)定時(shí)器/計(jì)數(shù)器AT89S52單片機(jī)有三個(gè)16位內(nèi)部定時(shí)器/計(jì)數(shù)器(T0、T1、T2)

,這里主要介紹T0、T1,它們分別由2個(gè)8位計(jì)數(shù)器組成。T0由TH0(高8位)、TL0(低8位)構(gòu)成;T1由TH1(高8位)、TL1(低8位)構(gòu)成。如果是計(jì)數(shù)內(nèi)部晶振驅(qū)動(dòng)時(shí)鐘,則它是定時(shí)器;如果是計(jì)數(shù)單片機(jī)輸入引腳的脈沖信號(hào),則它是計(jì)數(shù)器。1、模式介紹(1)定時(shí)器模式:設(shè)置為定時(shí)器模式時(shí),加1計(jì)數(shù)器是對(duì)內(nèi)部機(jī)器周期計(jì)數(shù)(1個(gè)機(jī)器周期等于12個(gè)振蕩周期,即計(jì)數(shù)頻率為晶振頻率的1/12)。計(jì)數(shù)值N乘以機(jī)器周期Tcy就是定時(shí)時(shí)間t。當(dāng)晶振為12MHz時(shí),計(jì)數(shù)頻率為1MHz,每1μs計(jì)數(shù)值加1。(2)設(shè)置為計(jì)數(shù)器模式時(shí),外部事件計(jì)數(shù)脈沖由T0P3.4) 或T1(P3.5)引腳輸入到計(jì)數(shù)器。當(dāng)T0或T1引腳上負(fù)跳變時(shí)計(jì)數(shù)器加1。識(shí)別引腳上的負(fù)跳變需要2個(gè)機(jī)器周期,即24個(gè)振蕩周期。所以T0或T1引腳輸入的可計(jì)數(shù)外部脈沖的最高頻率為fosc/24。當(dāng)晶振為12MHz時(shí),最高計(jì)數(shù)頻率為500KHz,高于此頻率將計(jì)數(shù)出錯(cuò)。2、定時(shí)器/計(jì)數(shù)器的相關(guān)寄存器T1控制T0控制D7D6D5D4D3D2D1D0GATEC/TM1M0GATEC/TM1M0(1)定時(shí)器/計(jì)數(shù)器的方式寄存器(TMOD)GATE:門控位。用來確定對(duì)應(yīng)的外部中斷請(qǐng)求引腳是否參與T0或T1的操作控制。當(dāng)GATE=0時(shí),只要定時(shí)器/計(jì)數(shù)器控制寄存器(TCON)中的TR0或TR1為1,T0或T1被允許開始計(jì)數(shù)。當(dāng)GATE=1時(shí),不僅要TCON中的TR0或TR1為1,還要P3口的/INT0或/INT1引腳為1才允許開始計(jì)數(shù)。C/T:計(jì)數(shù)器或定時(shí)器選擇位。C/T=1時(shí),T0或T1為計(jì)數(shù)器模式。C/T=0時(shí),T0或T1為定時(shí)器模式。M1和M0:工作方式選擇位。51單片機(jī)的定時(shí)器/計(jì)數(shù)器四種工作方式,由M1、M0狀態(tài)確定,見表2-8。

M1M0工作方式功能000為13位定時(shí)器/計(jì)數(shù)器,TL存低5位,TH存高8位011為16位定時(shí)器/計(jì)數(shù)器102常數(shù)自動(dòng)裝入的8位定時(shí)器/計(jì)數(shù)器113僅適用與T0,兩個(gè)8位定時(shí)器/計(jì)數(shù)器

表2-8定時(shí)器/計(jì)數(shù)器工作方式(2)定時(shí)器/計(jì)數(shù)器控制寄存器(TCON)TF1/TF0:溢出標(biāo)志位。 當(dāng)T0或T1溢出時(shí),硬件置位TF1/TF0=1),并向CPU申請(qǐng)中斷。 當(dāng)CPU響應(yīng)中斷時(shí),由硬件清除(TF1/TF0=0)。TR1/TR0:運(yùn)行控制位。 當(dāng)TR1/TR0=1時(shí),啟動(dòng)T0或T1。 當(dāng)TR1/TR0=0時(shí),關(guān)閉T0或T1。IE1/IE0:外部中斷請(qǐng)求標(biāo)志。 當(dāng)外部信號(hào)產(chǎn)生中斷時(shí),由硬件置位(IE1/IE0=1), 當(dāng)CPU響應(yīng)中斷時(shí),由硬件清除(IE1/IE0=0)。IT1/IT0:外部中斷0、1的觸發(fā)方式選擇位,由軟件設(shè)置。 當(dāng)IT1/IT0=1時(shí),下降沿觸發(fā)方式。/INT0或/INT1引腳上高到低的負(fù)跳變可引起中斷。當(dāng)IT1/IT0=0時(shí),電平觸發(fā)方式。/INT0或/INT1引腳上低電平可引起中斷。定時(shí)器/計(jì)數(shù)器控制中斷控制D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT03、中斷系統(tǒng)相關(guān)寄存器(1)中斷允許寄存器(IE)

EA:中斷總開關(guān)控制位。EA=1時(shí),CPU開中斷;EA=0時(shí),CPU關(guān)中斷。ET2、ES、ET1、EX1、ET0、EX0分別為T2、串口、T1、外部中斷1、T0、外部中斷0的中斷開關(guān)控制位,置1時(shí)允許該項(xiàng)中斷,清0時(shí)禁止該項(xiàng)中斷產(chǎn)生。要使單片機(jī)某項(xiàng)中斷有效,必須使EA為1,同時(shí)該項(xiàng)中斷開關(guān)控制也為1。D7D6D5D4D3D2D1D0EA—ET2ESET1EX1ET0EX0(2)中斷優(yōu)先級(jí)寄存器(IP)51單片機(jī)的6個(gè)中斷源可以被設(shè)為兩個(gè)不同的級(jí)別,CPU先響應(yīng)中斷級(jí)別高的中斷源。中斷優(yōu)先級(jí)通過中斷優(yōu)先級(jí)寄存器IP中相應(yīng)位的狀態(tài)來設(shè)定。PT2、PS、PT1、PX1、PT0、PX0分別為T2、串口、T1、外部中斷1、T0、外部中斷0的中斷優(yōu)先級(jí)控制位,各項(xiàng)置1時(shí)為高級(jí)中斷,清0時(shí)為低級(jí)中斷。D7D6D5D4D3D2D1D0———PSPT1PX1PT0PX04、定時(shí)器/計(jì)數(shù)器的初始化在使用定時(shí)器/計(jì)數(shù)器前,應(yīng)對(duì)它進(jìn)行初始化,主要是對(duì)TMOD和TCON編程,還需計(jì)算和裝載計(jì)數(shù)初值。一般完成下列幾個(gè)步驟:確定定時(shí)器/計(jì)數(shù)器的工作方式:設(shè)定TMOD。計(jì)算計(jì)數(shù)初始值,并裝載到TH和TL中。定時(shí)器/計(jì)數(shù)器在中斷方式工作時(shí),必須使EA為1,同時(shí)定時(shí)器中斷開關(guān)控制也為1。啟動(dòng)定時(shí)器/計(jì)數(shù)器——編程TCON中的TR1或TR0位。5、定時(shí)器計(jì)數(shù)初始值的計(jì)算①當(dāng)fosc=12MHz時(shí),計(jì)算定時(shí)器計(jì)數(shù)初始值當(dāng)工作在定時(shí)器模式下,定時(shí)器/計(jì)數(shù)器是對(duì)機(jī)器周期脈沖計(jì)數(shù)的,一個(gè)機(jī)器周期為12/fosc=1μS,則定時(shí)器不同方式下的最大定時(shí)時(shí)間如下: 方式013位定時(shí)器最大定時(shí)間隔=213×1μs=8.192mS

方式116位定時(shí)器最大定時(shí)間隔=216×1μs=65.536mS

方式28位定時(shí)器最大定時(shí)間隔=28×1μs=256μS若T0工作在方式1,要求定時(shí)1mS,計(jì)算計(jì)數(shù)初值。如設(shè)計(jì)數(shù)初值為x,則:

﹝216-x﹞×1μs=1000μs,即x=216-1000。可計(jì)數(shù)得到65536-1000=64536=0xfc18。因此TH0=0xfc,TL0=0x18。②當(dāng)fosc=11.0592MHz時(shí),計(jì)算定時(shí)器計(jì)數(shù)初始值當(dāng)fosc=11.0592MHz時(shí),一個(gè)機(jī)器周期為12/fosc=12/11.0592μS,如工作在方式1,要定時(shí)t(uS),設(shè)計(jì)數(shù)初始值為x, 則:﹝216-x﹞×12/11.0592μS=t,即x=216-11.0592t/12。例如:T0工作在方式1,要求定時(shí)10mS,則x=216-110592/12,數(shù)據(jù)(216-110592/12)在單片機(jī)中存儲(chǔ)時(shí),占用2個(gè)字節(jié),等效于(-110592/12),先將(-110592/12)強(qiáng)制轉(zhuǎn)換為uint類型數(shù)據(jù),再將其拆分為高、低8位,編譯時(shí)可產(chǎn)生最精簡(jiǎn)匯編語句,提高定時(shí)精度。因此,裝載定時(shí)器計(jì)數(shù)初始值的C51語句為:

TL0=(uint)(-110592/12)%256;//去掉(uint),將導(dǎo)致計(jì)算結(jié)果誤!

TH0=(uint)(-110592/12)/256;四、任務(wù)2-2-2的實(shí)施1、硬件電路設(shè)計(jì)LCDLCDLCD控制器顯示器驅(qū)動(dòng)器背光VDDVSSV0R/WRSDB0~DB7LEDALEDK2、程序設(shè)計(jì)通過單片機(jī)的定時(shí)中斷進(jìn)行準(zhǔn)確計(jì)時(shí),同時(shí)利用TC1602進(jìn)行顯示,達(dá)到電子鐘得功能。程序流程圖如2-39。第三單元單片機(jī)系統(tǒng)的鍵盤教學(xué)目標(biāo)及職業(yè)要求教學(xué)目標(biāo)

①掌握常見按鍵的程序設(shè)計(jì)②掌握通過按鍵與顯示界面實(shí)現(xiàn)單片機(jī)系統(tǒng)的輸入輸出功能

職業(yè)素質(zhì)要求

①掌握通過按鍵與顯示界面實(shí)現(xiàn)單片機(jī)系統(tǒng)的輸入輸出功能

②掌握結(jié)構(gòu)化程序設(shè)計(jì)方法

本單元項(xiàng)目列表項(xiàng)目3.1:按鍵計(jì)數(shù)器項(xiàng)目3.2:搶答器項(xiàng)目3.3:簡(jiǎn)易計(jì)算器項(xiàng)目3.1按鍵計(jì)數(shù)器3.1.1項(xiàng)目描述(一)使用8個(gè)獨(dú)立按鍵,按下任一鍵,計(jì)數(shù)值加 1,計(jì)數(shù)值范圍是“000~999”

(二)八位數(shù)碼管的右3位顯示計(jì)數(shù)值,最左邊的1 位數(shù)碼管顯示按下的鍵值,其余數(shù)碼管顯示 “-”。3.1.2項(xiàng)目分析(一)硬件電路設(shè)計(jì)

(1)鍵盤輸入部分 將8個(gè)按鍵與單片機(jī)連接,使單片機(jī)能檢測(cè)按鍵的狀態(tài)。 (2)數(shù)碼管顯示部分 將單片機(jī)與數(shù)碼管顯示器連接,通過數(shù)據(jù)總線、控制總線來控制數(shù)碼管的顯示。(二)程序設(shè)計(jì) (1)按鍵掃描函數(shù) 利用延時(shí)消除按鍵抖動(dòng)影響,兩次確認(rèn)有效按鍵后,翻譯鍵值;該函數(shù)還要處理同一個(gè)按鍵的連按問題。 (2)主程序 開機(jī)后,8位數(shù)碼管全部顯示“-”。掃描按鍵判斷是否有鍵按下:有鍵按下,則返回有效鍵值;無按鍵按下,則返回?zé)o效鍵值。若返回鍵值有效,根據(jù)鍵值更新顯示緩沖區(qū)的a[7],計(jì)數(shù)值加1,根據(jù)計(jì)數(shù)值更新顯示緩沖區(qū)a[0]~a[7];調(diào)用數(shù)碼管動(dòng)態(tài)顯示。3.1.3任務(wù)3-1-1了解獨(dú)立按鍵的工作原理

獨(dú)立式按鍵是直接用I/O口線構(gòu)成的按鍵檢測(cè)電路,其特點(diǎn)是每個(gè)按鍵單獨(dú)占用一個(gè)I/O口,每個(gè)按鍵的工作不會(huì)影響其他I/O線的狀態(tài)。獨(dú)立式按鍵的典型應(yīng)用如下圖所示。

(一)獨(dú)立按鍵優(yōu)缺點(diǎn) 優(yōu)點(diǎn):電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單。 缺點(diǎn):按鍵較多時(shí),占用較多I/O口。(二)獨(dú)立按鍵的抖動(dòng)過程 目前常用的按鍵大部分都是機(jī)械式按鍵,機(jī)械式開關(guān)的閉合與斷開的瞬間均有抖動(dòng)過程,抖動(dòng)過程如下圖所示,抖動(dòng)時(shí)間的長短與開關(guān)的機(jī)械特性相關(guān),一般為5~25ms。按鍵抖動(dòng)過程圖(三)消抖的方法

在觸點(diǎn)抖動(dòng)期間檢測(cè)按鍵的通斷狀態(tài),可能導(dǎo)致判斷出錯(cuò),即按鍵的一次按下或釋放被錯(cuò)誤地判別為多次按下。因此,需要采取消抖的方法。消抖的方法

硬件消抖:在鍵輸出端加R-S觸發(fā)器(雙穩(wěn) 態(tài)觸發(fā)器)或單穩(wěn)態(tài)觸發(fā)器構(gòu)成 去抖動(dòng)電路。軟件消抖:在檢測(cè)到有按鍵按下時(shí),執(zhí)行 一個(gè)5~10ms的延時(shí)程序后,若 再次檢測(cè),仍保持閉合狀態(tài)電平, 則確認(rèn)該鍵有效,否則按鍵無效。

3.1.4任務(wù)3-1-2按鍵計(jì)數(shù)器(軟件延時(shí)消 抖)

1.硬件設(shè)計(jì)2.軟件設(shè)計(jì)項(xiàng)目3.2搶答器3.2.1項(xiàng)目描述(一)使用8個(gè)獨(dú)立按鍵,1~7鍵為搶答鍵,8鍵為復(fù)位鍵。

(二)搶答開始前8個(gè)數(shù)碼管顯示“-”,當(dāng)1~7鍵中某一鍵搶答成功時(shí),最右邊數(shù)碼管顯示搶答成功的鍵值(1~7),同時(shí)按下其他鍵無效。按下8鍵,搶答器復(fù)位,可以開始搶答。3.2.2項(xiàng)目分析(一)硬件電路設(shè)計(jì) 電路要求與按鍵計(jì)數(shù)器一樣,請(qǐng)參考項(xiàng)目3.1的相關(guān)部分。(二)程序設(shè)計(jì)

(1)按鍵掃描函數(shù)

基于狀態(tài)機(jī)消除按鍵抖動(dòng)影響,確認(rèn)有效按鍵后,翻譯鍵值;該函數(shù)還要處理同一個(gè)按鍵的連按問題。

(2)主程序

開機(jī)后,8位數(shù)碼管全部顯示“-”。掃描按鍵判斷是否有鍵按下:有鍵按下,則返回有效鍵值;無按鍵按下,則返回?zé)o效鍵值。若返回鍵值有效,根據(jù)鍵值更新?lián)尨痫@示緩沖區(qū)的a[0],或復(fù)位搶答器;調(diào)用數(shù)碼管動(dòng)態(tài)顯示。3.2.3任務(wù)3-2-1 按鍵狀態(tài)機(jī)的原理

一、延時(shí)消抖的缺點(diǎn) 系統(tǒng)檢測(cè)到有按鍵按下后,延時(shí)10~20ms后,再檢測(cè)按鍵狀態(tài),如果仍為按下狀態(tài),則確認(rèn)按鍵有效。這種方法的缺點(diǎn)是:延時(shí)期間單片機(jī)無法進(jìn)行其他工作,使單片機(jī)的效率降低。為了解決上述問題,我們引入有限狀態(tài)機(jī)的思想。

三、有限狀態(tài)機(jī) 把按鍵看成是一個(gè)有限狀態(tài)機(jī),首先要對(duì)一次按鍵操作和確認(rèn)的過程進(jìn)行分析,根據(jù)實(shí)際的情況確定按鍵在整個(gè)過程中的狀態(tài),每個(gè)狀態(tài)的輸入及輸出信號(hào),以及各狀態(tài)間的轉(zhuǎn)換關(guān)系,最后要考慮狀態(tài)機(jī)的時(shí)間間隔(節(jié)拍)問題。 由于按鍵掃描中需要進(jìn)行消抖處理,因此取狀態(tài)機(jī)的時(shí)間間隔為10ms,這樣既達(dá)到消抖的目的,又使單片機(jī)能處理其他任務(wù),提高了系統(tǒng)工作效率。

三、按鍵的狀態(tài)機(jī) 有限狀態(tài)機(jī)(FSM)是實(shí)時(shí)系統(tǒng)設(shè)計(jì)中的一種數(shù)學(xué)模型,是一種重要的、易于建立的、應(yīng)用比較廣泛的、以描述控制特性為主的建模方法,它可以應(yīng)用于從系統(tǒng)分析到設(shè)計(jì)(包括硬件、軟件)的所有階段。 一般有兩種方法建立有限狀態(tài)機(jī):狀態(tài)轉(zhuǎn)移圖和狀態(tài)轉(zhuǎn)移表。其中狀態(tài)轉(zhuǎn)移圖,能夠清楚直觀的看清各狀態(tài)間的關(guān)系,便于對(duì)系統(tǒng)進(jìn)行分析。

按鍵有限狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換圖

3.1.4任務(wù)3-1-2按鍵計(jì)數(shù)器(軟件延時(shí)消 抖)

1.硬件設(shè)計(jì)2.軟件設(shè)計(jì)項(xiàng)目3.3簡(jiǎn)易計(jì)算器3.3.1項(xiàng)目描述(一)使用4×4矩陣鍵盤,能夠進(jìn)行兩位正整數(shù)的加、減、乘、除四則運(yùn)算;

(二)用液晶顯示器RTC1602進(jìn)行顯示。

3.2.2項(xiàng)目分析(一)硬件電路設(shè)計(jì)

(1)鍵盤輸入部分 將4×4矩陣鍵盤與單片機(jī)連接,單片機(jī)能區(qū)分各個(gè)按鍵。 (2)液晶顯示器部分 將單片機(jī)與液晶顯示器RTC1602連接,通過數(shù)據(jù)總線、控制總線來控制其顯示。

(二)程序設(shè)計(jì)

(1)按鍵掃描函數(shù) 利用延時(shí)或狀態(tài)機(jī)消除按鍵抖動(dòng)影響,兩次確認(rèn)有效按鍵后,通過反轉(zhuǎn)法獲得按鍵行列位置,翻譯鍵值;該函數(shù)還要處理同一個(gè)按鍵的連按問題。 (2)主程序 通過調(diào)用按鍵掃描函數(shù),獲得按鍵操作的信息,對(duì)按鍵進(jìn)行相關(guān)處理,完成計(jì)算器的功能。3.3.3任務(wù)3-3-1矩陣鍵盤工作原理及反轉(zhuǎn)法一、矩陣鍵盤的工作原理

矩陣鍵盤又稱行列式鍵盤,由行線、列線、多個(gè)按鍵組成,按鍵位于行、列線的交叉點(diǎn)上,行、列線分別連接到按鍵的兩端,列線通過上拉電阻連接到+5V上,結(jié)構(gòu)如下圖所示。 單片機(jī)的一些I/O口與行線、列線相連,并通過行線(或列線)輸出低電平,檢測(cè)列線(或行線)的反饋信號(hào),從而判定是哪行哪列處的按鍵按下。4×4矩陣鍵盤可以掃描16個(gè)按鍵,也可變化為2×3矩陣鍵盤(6個(gè)按鍵)、4×5矩陣鍵盤(20個(gè)按鍵)等形式。矩陣鍵盤接口電路二、反轉(zhuǎn)法介紹

矩陣鍵盤掃描最常使用反轉(zhuǎn)法,當(dāng)使用反轉(zhuǎn)法時(shí),鍵盤的行、列線都要通過上拉電阻連接到+5V上(單片機(jī)P1~P3口內(nèi)部均有上拉電阻)。反轉(zhuǎn)法只要經(jīng)過2步就能確定按下鍵的行列值。 首先,將矩陣鍵盤的行線設(shè)為輸出線,列線設(shè)為輸入線,使行線全部輸出低電平,當(dāng)某列線出現(xiàn)低電平時(shí),則該列為按鍵所在列。 其次,將矩陣鍵盤的行列線功能反轉(zhuǎn):將列線設(shè)為輸出線,行線設(shè)為輸入線,使列線全部輸出低電平,當(dāng)某行線出現(xiàn)低電平時(shí),則該行為按鍵所在行。2種矩陣鍵盤掃描程序

(1)基于狀態(tài)機(jī)消抖的反轉(zhuǎn)法鍵盤掃描程序 程序參見附錄。(2)基于軟件延時(shí)消抖的反轉(zhuǎn)法鍵盤掃描程序 具體程序?qū)⒃诤?jiǎn)易計(jì)算器的軟件設(shè)計(jì)中介紹。

3.3.5任務(wù)3-3-2簡(jiǎn)易計(jì)算器(反轉(zhuǎn)法)的實(shí)現(xiàn)

1.硬件設(shè)計(jì)2.程序的設(shè)計(jì) 本項(xiàng)目中的鍵盤掃描函數(shù)用反轉(zhuǎn)法來實(shí)現(xiàn),采用軟件延時(shí)消抖。 具體程序省略。第四單元單片機(jī)的模擬量處理

教學(xué)目標(biāo)及職業(yè)要求教學(xué)目標(biāo)

①掌握單片機(jī)系統(tǒng)中A/D轉(zhuǎn)換、D/A轉(zhuǎn)換的程序設(shè)計(jì)②掌握單片機(jī)C51語言數(shù)學(xué)計(jì)算的程序設(shè)計(jì)職業(yè)素質(zhì)要求①學(xué)會(huì)用C51編程時(shí)處理小數(shù)、四舍五入。

本單元項(xiàng)目列表項(xiàng)目4.1:數(shù)字電壓表

項(xiàng)目4.2:數(shù)字電子溫度計(jì)

項(xiàng)目4.1數(shù)字電壓表4.1.1項(xiàng)目描述(一)利用ADC0809將模擬量轉(zhuǎn)換為數(shù)字量,并用數(shù)碼管顯示轉(zhuǎn)換得到的數(shù)字量 (二)制作一只數(shù)字電壓表,將ADC0809轉(zhuǎn)換得到的數(shù)字量通過一定的算法計(jì)算出輸入的電壓值,并用數(shù)碼管顯示出來

4.1.2項(xiàng)目分析(一)硬件電路設(shè)計(jì)

以單片機(jī)為控制核心,單片機(jī)的I/OADC0809的控制端和數(shù)據(jù)端相連構(gòu)成模數(shù)轉(zhuǎn)換接口電路;單片機(jī)的I/O口與數(shù)碼管的控制端和數(shù)據(jù)端相連構(gòu)成顯示接口電路。(二)程序設(shè)計(jì)

編寫ADC0809的接口驅(qū)動(dòng)程序、數(shù)碼管顯示程序

。4.1.3任務(wù)4-1-1數(shù)碼管顯示轉(zhuǎn)換結(jié)果一、模數(shù)轉(zhuǎn)換的概念 模數(shù)轉(zhuǎn)換(ADC)也稱為模擬一數(shù)字轉(zhuǎn)換,是將連續(xù)的模擬量通過轉(zhuǎn)換轉(zhuǎn)換成數(shù)字量。實(shí)現(xiàn)模數(shù)轉(zhuǎn)換器稱為A/D轉(zhuǎn)換器,ADC0809就是我們常用的一種A/D轉(zhuǎn)換器。

二、ADC0809的引腳與內(nèi)部結(jié)構(gòu)

地址碼選通模擬通道CBA000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7模擬通道地址表

ADC0809引腳圖

ADC0809內(nèi)部結(jié)構(gòu)圖三、ADC0809的工作原理 首先確定3位地址(CBA),ALE變高后,將地址存入地址鎖存器中。此地址經(jīng)譯碼選通8路模擬輸入之一到轉(zhuǎn)換器。在本項(xiàng)目中,我們將ADDA、ADDB、ADDC直接與地相連,因此我們選通IN0。START上升沿將逐次逼近寄存器復(fù)位,下降沿啟動(dòng)A/D轉(zhuǎn)換,之后EOC輸出信號(hào)變低,指示轉(zhuǎn)換正在進(jìn)行。直到A/D轉(zhuǎn)換完成,EOC變?yōu)楦唠娖剑甘続/D轉(zhuǎn)換結(jié)束,結(jié)果數(shù)據(jù)已存入鎖存器,這個(gè)信號(hào)可用作中斷申請(qǐng)。當(dāng)OE輸入高電平時(shí),輸出三態(tài)門打開,轉(zhuǎn)換結(jié)果的數(shù)字量輸出到數(shù)據(jù)總線上。四、任務(wù)4-1-1的實(shí)現(xiàn)

1、硬件電路的設(shè)計(jì)2、ADC0809的基本C51函數(shù)及任務(wù)4-1-1程序清單

(1)voidreadAdc0809()

2.1.5任務(wù)4-1-2用ADC0809制作數(shù)字電壓表一、任務(wù)要求

在任務(wù)4-1-1中,我們已經(jīng)將ADC0809進(jìn)行A/D轉(zhuǎn)換的值讀取出來,本任務(wù)是通過一定的算法將得到的值轉(zhuǎn)換成實(shí)際的電壓值,并通過數(shù)碼管進(jìn)行顯示,實(shí)現(xiàn)數(shù)字電壓表的功能。二、計(jì)算公式

由于ADC0809的轉(zhuǎn)換基本為線性,當(dāng)輸入0V模擬電壓時(shí),其轉(zhuǎn)換的數(shù)字量為0;當(dāng)當(dāng)輸入5V模擬電壓時(shí),其轉(zhuǎn)換的數(shù)字量為255(參考電壓為5V);若輸入模擬電壓Vx在0V~5V間時(shí),其轉(zhuǎn)換數(shù)字量mydata滿足算式:Vx/5V=mydata/255。 根據(jù)以上條件可以計(jì)算出被測(cè)電壓值Vx=mydata×5V/255=mydata/51。三、誤差的處理

任務(wù)任務(wù)4-1-2要求顯示精確到被測(cè)電壓的小數(shù)點(diǎn)后一位,在用C51編程時(shí),一般采用整數(shù)計(jì)算,這樣小數(shù)部分會(huì)被省略掉,因此,要做適當(dāng)處理。 首先將AD值放大100倍,計(jì)算出電壓值也是放大100倍的,再加上5(小數(shù)點(diǎn)后的第二個(gè)有效位進(jìn)行四舍五入),最后縮小10倍。這樣得到的值十位是電壓值的整數(shù)部分,個(gè)位是電壓值的小數(shù)部分。四、任務(wù)4-1-2的實(shí)現(xiàn)

1、硬件電路的設(shè)計(jì)2、程序設(shè)計(jì)

項(xiàng)目4.2數(shù)字電子溫度計(jì)4.2.1項(xiàng)目描述(一)任務(wù)4-2-1:利用溫度傳感器LM35采集室溫,通過ADC0809將模擬量轉(zhuǎn)換為數(shù)字量。

(二)任務(wù)4-2-2:制作一只數(shù)字電子溫度計(jì),用數(shù)碼管顯示出來。4.2.2項(xiàng)目分析(一)硬件電路設(shè)計(jì)

溫度傳感器LM35模塊的輸出接到AD/DA模塊;單片機(jī)的I/O口與ADC0809的控制端和數(shù)據(jù)端相連構(gòu)成模數(shù)轉(zhuǎn)換接口電路;單片機(jī)的I/O口與數(shù)碼管的控制端和數(shù)據(jù)端相連構(gòu)成顯示接口電路。

(二)程序設(shè)計(jì) 編寫ADC0809的接口驅(qū)動(dòng)程序、溫度轉(zhuǎn)換程序、數(shù)碼管顯示程序。4.2.3任務(wù)4-2-1了解LM35工作原理一、LM35簡(jiǎn)介

LM35系列是精密集成電路溫度傳感器,其輸出的電壓線性地與攝氏溫度成正比。LM35系列傳感器生產(chǎn)制作時(shí)已經(jīng)過校準(zhǔn),輸出電壓與攝氏溫度一一對(duì)應(yīng),使用極為方便。靈敏度為10mV/℃,精度在0.4℃至0.8℃(-55℃至+150℃溫度范圍內(nèi)),低輸出阻抗,線性輸出和內(nèi)部精密校準(zhǔn)使其與讀出或控制電路接口簡(jiǎn)單和方便,可單電源和正負(fù)電源工作。

二、LM35的引腳及工作原理LM35有多種不同封裝形式,外觀如下圖。常用的溫度傳感器LM35為TO

溫馨提示

  • 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)論