單片機原理與應(yīng)用(C51編程+Proteus仿真) 課件全套 劉霞 第1-10章 單片機概述- 單片機應(yīng)用系統(tǒng)綜合設(shè)計_第1頁
單片機原理與應(yīng)用(C51編程+Proteus仿真) 課件全套 劉霞 第1-10章 單片機概述- 單片機應(yīng)用系統(tǒng)綜合設(shè)計_第2頁
單片機原理與應(yīng)用(C51編程+Proteus仿真) 課件全套 劉霞 第1-10章 單片機概述- 單片機應(yīng)用系統(tǒng)綜合設(shè)計_第3頁
單片機原理與應(yīng)用(C51編程+Proteus仿真) 課件全套 劉霞 第1-10章 單片機概述- 單片機應(yīng)用系統(tǒng)綜合設(shè)計_第4頁
單片機原理與應(yīng)用(C51編程+Proteus仿真) 課件全套 劉霞 第1-10章 單片機概述- 單片機應(yīng)用系統(tǒng)綜合設(shè)計_第5頁
已閱讀5頁,還剩573頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機概述01重點介紹單片機的基本概念、開發(fā)步驟以及仿真環(huán)境搭建。01單片機概述123單片機的基本概念單片機的開發(fā)步驟單片機仿真開發(fā)環(huán)境搭建1.1單片機的基本概念一、單片機簡介在一塊芯片上集成:中央處理單元(CPU)、程序存儲器(

ROM)、數(shù)據(jù)存儲器(RAM)、輸入/輸出接口(I/O)、定時器/計數(shù)器、中斷系統(tǒng)、系統(tǒng)時鐘電路、系統(tǒng)總線以及各種外圍功能部件。嵌入式控制器(EMCU)或微控制器(MCU)單片機(SCM)專用型通用型分類專門針對某些產(chǎn)品的特定用途而制作的單片機。內(nèi)部可開發(fā)的資源全部提供給用戶。簡稱國際國內(nèi)單片機單片微型計算機的簡稱1.1單片機的基本概念二、單片機類型1、

51系列單片機

型號片內(nèi)ROM片內(nèi)RAMI/O口(位)定時器/計數(shù)器(個)中斷(個)基本型8031無128B322580514KB128B62587514KB128B3225增強型8032無256B323680528KB256B323687528KB256B323表1-1MCS-51系列單片機的內(nèi)部資源1.1單片機的基本概念表1-251系列單片機芯片廠商產(chǎn)品廠商產(chǎn)品ATMEL公司AT89C5x系列(89C51/89S51、89C52/89S52.

89C55等)Philipe

公司P89LPC7xx系列,P89LPC9xx系列,80C51、8xC552

系列Cygnal公司C80C51F系列高速SOC單片機LG公司GMS90/97系列低價高速單片機ADI公司ADμC8xx系列高精度單片機臺灣華邦公司W(wǎng)78C54、W78C58、W78E54、W78E58等AMD公司

8-

515/535單片機Siemens公司C501-1R,C501-1E,C503-1R,SAB80512單片機STCSTC89C51RC,STC89C52RC,STC89C53RC,STC89LE51RC,STC89LE52RC,STC12C5412AD等1.1單片機的基本概念

字母或數(shù)字含義前綴AT廠家名稱縮寫型號8內(nèi)核為80519內(nèi)部含有Flash存儲器S/C/LVS:含有串行下載的Flash存儲器C:表示CMOS產(chǎn)品LV:表示低電壓產(chǎn)品,可在25V電壓下工作。5固定不變1/21:基本型2:增強型后綴12/16/20/24時鐘頻率為12

MHz/16

MHz/20

MHz/24

MHzP/D/Q/J/A/S雙列直插DIP封裝/陶瓷封裝/PQFP封裝/PLV封裝/TQFP封裝/SOIC封裝C/I/A/MC:商業(yè)用產(chǎn)品,溫度范圍為0~℃

+

70℃

I:工業(yè)用產(chǎn)品,溫度范圍為-40℃

~

+85℃

A:汽車用產(chǎn)品,溫度范圍為-40℃~

+

125℃

M:軍用產(chǎn)品,溫度范圍為-55℃~

+

150℃型號含義:AT89S52-12PI1.1單片機的基本概念2、其他系列單片機PIC系列單片機美國Microchip公司產(chǎn)品;精簡指令集(RISC);

哈佛總線結(jié)構(gòu)。低檔型:PIC12CSxxx/

16C5x系列中檔型:PIC12C/

PIC16C系列以及PIC18系列。高檔型:PICI7C.xx

系列。AVR系列單片機STM32系列單片機ATMEL公司的產(chǎn)品;精簡指令集(RISC)。

低檔Tiny系列:Tiny11/12/13/15/26/28等中檔AT90S系列:AT90S1200/2313/8515/8535高檔ATmega系列:ATmega8/16/32/64/128STMicroelectronics公司產(chǎn)品;以ARM

Cortex?-M0,M0+,M3,M4和M7為內(nèi)核。主流產(chǎn)品:STM32F0/STM32F3超低功耗產(chǎn)品:STM32L0/STM32L4/STM32L4+高性能產(chǎn)品:STM32F2/32F4/32F7/32H701單片機概述123單片機的基本概念單片機的開發(fā)步驟單片機仿真開發(fā)環(huán)境搭建1.2單片機的開發(fā)步驟圖1-1單片機應(yīng)用系統(tǒng)組成01.提出項目02.項目論證03.方案設(shè)計04.硬件設(shè)計07.脫機運行06.系統(tǒng)調(diào)試05.軟件設(shè)計單片機應(yīng)用系統(tǒng)開發(fā)的一般過程1.2單片機的開發(fā)步驟08.產(chǎn)品定型1.2單片機的開發(fā)步驟01單片機概述123單片機的基本概念單片機的開發(fā)步驟單片機仿真開發(fā)環(huán)境搭建1.3單片機仿真開發(fā)環(huán)境搭建0102KeilC51編譯軟件Proteus仿真軟件1.3單片機仿真開發(fā)環(huán)境搭建仿真界面KeilC51的使用步驟1.3.11.創(chuàng)建工程2.添加用戶源程序文件3.編寫代碼4.程序的編譯KeilC51的使用步驟1.創(chuàng)建工程(1)單擊菜單欄中的“Project/NewμVisionProject”

圖1新建一個工程(2)在彈出“Create

New

Project"

窗口輸入工程路徑及名稱

圖2工程命名KeilC51的使用步驟1.創(chuàng)建工程(3)選擇單片機:在彈出“Select

Device

for

Target”窗口中,選擇“Atmel”目錄下的“AT89C52”。

圖3選擇單片機型號KeilC51的使用步驟1.創(chuàng)建工程

圖4啟動代碼選擇(4)單擊“OK”按鈕,如果需要復(fù)制啟動代碼到新建的工程,單擊“是”,否則,單擊“否”。

圖5工程文件的創(chuàng)建KeilC51的使用步驟2.添加用戶源程序文件(1)新建文件:單擊“File/New”,保存為**.c

圖6新建文件

圖7保存文件Proteus的的使用步驟1.3.21.新建工程2.繪制原理圖3.添加Hex文件4.仿真運行Proteus的的使用步驟1.創(chuàng)建工程:點擊“文件/新建工程”

圖1Proteus工程命名界面

圖2Proteus原理圖模板選擇

圖3ProteusPCB模板選擇Proteus的的使用步驟

圖4Proteus原理圖繪制界面Proteus的的使用步驟2.繪制原理圖:(1)放置元器件:

圖6元器件選擇界面點擊

圖5選擇按鈕Proteus的的使用步驟

圖7搜索元器件界面

圖8放置元器件界面搜索元器件放置元器件Proteus的的使用步驟

圖9放置其他元器件Proteus的的使用步驟(2)按電路圖連接:

圖10點亮LED原理圖添加電源和地元件參數(shù)設(shè)置:雙擊器件連線

圖11放置電源終端

圖12修改參數(shù)Proteus的的使用步驟3.添加Hex文件:雙擊單片機,在彈出的對話框中“ProgramFile”選項后面的

,添加Hex文件

圖13添加Hex文件Proteus的的使用步驟4.仿真運行:

圖14運行效果本章小結(jié)

1.單片機就是單片微型計算機,在一片半導(dǎo)體硅片上集成中央處理單元(CPU)、存儲器(RAM、ROM)、并行I/O、串行I/O、定時器/計數(shù)器、中斷系統(tǒng)、系統(tǒng)時鐘電路及系統(tǒng)總線等部件。

2.單片機按照其用途可分為通用型和專用型兩大類。通用型單片機是將內(nèi)部可開發(fā)的資源(如存儲器、I/O等各種外圍功能部件等)全部提供給用戶。專用型單片機是專門針對某些產(chǎn)品的特定用途而制作的。

3.51系列單片機包括Intel

公司的MCS-51系列單片機以及以51為內(nèi)核擴展出來的單片機,這類單片機的基本結(jié)構(gòu)和指令系統(tǒng)都是兼容的。

4.單片機應(yīng)用系統(tǒng)主要由硬件和軟件兩部分組成。

5.了解單片機的開發(fā)過程。

6.單片機仿真所需要的軟件為:編程軟件Keil

μVision的51版本;仿真軟件采用Proteus平臺。掌握這2個軟件的安裝及基本使用方法。AT89S52的硬件結(jié)構(gòu)02介紹單片機引腳、最小系統(tǒng)、單片機執(zhí)行指令的工作過程、單片機的存儲結(jié)構(gòu)以及C51語言的定義方式。02AT89S52的硬件結(jié)構(gòu)01硬件組成050203存儲器結(jié)構(gòu)單片機的CPU單片機引腳04時鐘電路與時序06單片機工作方式2.1AT89S52單片機的硬件組成圖1AT89S52單片機片內(nèi)結(jié)構(gòu)AT89S52完全兼容AT89C51/AT89S51單片機,使用AT89C51/AT89S51單片機的系統(tǒng),在保留原來軟硬件的基礎(chǔ)上,可用AT89S52直接代換。!02AT89S52的硬件結(jié)構(gòu)01硬件組成050203存儲器結(jié)構(gòu)單片機的CPU單片機引腳04時鐘電路與時序06單片機工作方式2.2AT89S52單片機的引腳

圖1(a)DIP封裝的引腳分布(b)PLCC封裝的引腳分布!AT89S52與各種8051單片機的引腳兼容,不同封裝引腳號不同,但功能和使用方法相同。本課程以40引腳DIP封裝方式為例介紹各引腳功能。2.2AT89S52單片機的引腳序號分類引腳名稱和標號引腳功能1電源引腳VCC(40腳)電源正極,接+5V電源VSS(20腳)電源負極,接數(shù)字地2時鐘引腳XTAL1(19腳)片內(nèi)時鐘振蕩器的反相放大器輸入端XTAL2(18腳)片內(nèi)時鐘振蕩器的反相放大器輸出端3控制引腳RST(9腳)復(fù)位信號輸入端,2個機器周期高電平復(fù)位外部ROM訪問允許控制端/編程電壓輸入端地址鎖存控制信號端/編程脈沖輸入端訪問片外ROM的讀選通信號4I/O引腳P0口(39腳-32腳)漏極開路雙向I/O口數(shù)據(jù)/地址(低8位)總線復(fù)用P1口(1腳-8腳)準雙向I/O口/第二功能P2口(21腳-28腳)準雙向I/O口/地址總線(高8位)P3口(10腳-17腳)準雙向I/O口/第二功能表1引腳名稱及功能2.2AT89S52單片機的引腳1、電源引腳VCC(40腳):+5V電源2、時鐘引腳(XTAL1、XTAL2)圖2內(nèi)部時鐘方式必須為單片機提供時鐘信號VSS(20腳):數(shù)字地內(nèi)部時鐘方式和外部時鐘方式外部時鐘方式XTAL1接外部時鐘振蕩器XTAL2懸空常用內(nèi)部時鐘方式XTAL1、XTAL2外接晶振和微調(diào)電容2.2AT89S52單片機的引腳3、控制引腳

①復(fù)位引腳(RST,9腳)正常工作時,該引腳應(yīng)保持低電平復(fù)位狀態(tài)時,該引腳加上持續(xù)時間大于2個機器周期的高電平看門狗定時器溢出輸出時,該引腳輸出8個機器周期的高電平圖3復(fù)位引腳常用連接2.2AT89S52單片機的引腳3、控制引腳

代碼<8KB,讀片內(nèi)ROM(8KB,0x0000~0x1FFF)中的程序;代碼>8KB,先讀片內(nèi)ROM

(8KB),再讀片外ROM(0x2000~0xFFFF)只讀片外ROM中程序(0x0000~0xFFFF)對片內(nèi)ROM編程,接編程電壓。ISP方式,不用該引腳編程。2.2AT89S52單片機的引腳3、控制引腳

正常工作時,該引腳持續(xù)輸出1/6fosc的脈沖信號圖5ALE脈沖信號可用作外部定時或觸發(fā)信號通過檢測該引腳的脈沖頻率,測試單片機是否正常工作2.2AT89S52單片機的引腳3、控制引腳

正常工作時,該引腳持續(xù)輸出1/6fosc的正脈沖信號擴展并行總線時,該引腳外接鎖存器對片內(nèi)ROM編程,為編程脈沖輸入端。ISP方式,不用該引腳。圖6并行總線擴展示意圖2.2AT89S52單片機的引腳3、控制引腳

擴展片外并行程序存儲器時需接該引腳,低電平有效。若不擴展片外程序存儲器時,該引腳懸空。圖7外擴程序存儲器2.2AT89S52單片機的引腳4、并行I/O口(P0、P1、P2、P3)①P0口(P0.0~P0.7,39腳~32腳)擴展總線:地址總線(低8位)及數(shù)據(jù)總線分時復(fù)用通用I/O口:準雙向口,輸出外接上拉電阻,輸入先寫“1”圖8并行總線擴展示意圖2.2AT89S52單片機的引腳4、并行I/O口(P0、P1、P2、P3)②P1口(P1.0~P1.7,1腳~8腳)通用I/O口:準雙向口,輸出不用外接上拉電阻,輸入先寫“1”第二功能:序號引腳第二功能說明1P1.0T2T2的外部計數(shù)信號輸入端2P1.1T2EXT2的捕捉/重新裝載觸發(fā)及方向控制端3P1.5MOSI對片內(nèi)Flash存儲器的串行編程和校驗4P1.6MISO對片內(nèi)Flash存儲器的串行編程和校驗5P1.7SCK對片內(nèi)Flash編程和校驗移位脈沖輸入引腳AT89S52不用T2的P1.0和P1.1的復(fù)用功能時,AT89S51以及8051兼容機與AT89S52的引腳功能完全相同,它們的外部硬件接口電路也完全相同。!表2P1口的第二功能2.2AT89S52單片機的引腳4、并行I/O口(P0、P1、P2、P3)③P2口(P2.0~P2.7,21腳~28腳)擴展總線:地址總線(高8位)通用I/O口:準雙向口,輸出不用外接上拉電阻,輸入先寫“1”圖9并行總線擴展示意圖2.2AT89S52單片機的引腳4、并行I/O口(P0、P1、P2、P3)④P3口(P3.0~P3.7,10腳-17腳)第二功能:通用I/O口:準雙向口,輸出不用外接上拉電阻,輸入先寫“1”引腳第二功能說明引腳第二功能說明P3.0RXD串行數(shù)據(jù)接收端P3.4T0定時器T0外部計數(shù)輸入端P3.1TXD串行數(shù)據(jù)發(fā)送端P3.5T1定時器T1外部計數(shù)輸入端P3.2外部中斷0輸入端P3.6外部RAM的寫選通控制端P3.3外部中斷1輸入端P3.7外部RAM的讀選通控制端了解單片機40個引腳功能對應(yīng)用系統(tǒng)硬件電路設(shè)計十分重要。!表3P3口的第二功能2.2AT89S52單片機的引腳單片機的最小系統(tǒng)

也稱單片機最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機可以工作的系統(tǒng),由電源、晶振、復(fù)位電路和程序存儲器選擇電路組成。圖10單片機最小系統(tǒng)02AT89S52的硬件結(jié)構(gòu)01硬件組成050203存儲器結(jié)構(gòu)單片機的CPU單片機引腳04時鐘電路與時序06單片機工作方式2.3AT89S52單片機的CPU1、運算器1234算術(shù)邏輯運算單元(ALU):實現(xiàn)算術(shù)和邏輯兩種運算位處理器:實現(xiàn)位操作累加器(A):8位特殊功能寄存器(SFR),字節(jié)地址為0xE0CPU中的數(shù)據(jù)傳送大多通過累加器A完成;ALU進行運算時,其中一個數(shù)據(jù)大部分都來自累加器A;ALU運算結(jié)果的存放單元。作用寄存器(B):8位SFR,字節(jié)地址為0xF0,主要用于乘法和除法運算5程序狀態(tài)字寄存器(PSW):8位SFR,字節(jié)地址為0xD0位號PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位地址0xD70xD60xD50xD40xD30xD20xD10xD0符號CYACF0RS1RS0OV-P2.3AT89S52單片機的CPU2、控制器功能:控制指令的讀入、譯碼和執(zhí)行,從而對各功能部件進行定時和邏輯控制。單片機執(zhí)行指令的工作過程程序計數(shù)器PC的工作過程(PC)ROM指令寄存器定時控制電路各功能部件地址指令結(jié)果定時信號控制信號(PC)ROM(PC)+1指令譯碼器PC的內(nèi)容:下一條要執(zhí)行的指令在程序存儲器中的地址PC是一個16位計數(shù)器尋址范

圍是0x0000

~

0xFFFF02AT89S52的硬件結(jié)構(gòu)01硬件組成050203存儲器結(jié)構(gòu)單片機的CPU單片機引腳04時鐘電路與時序06單片機工作方式2.4時鐘電路與時序1、時鐘電路內(nèi)部時鐘電路(常用)外部時鐘電路21晶振常選6MHz、12MHz或11.0592MHzC1和C2對頻率有微調(diào)

作用晶振頻率越高,單片機速度越快容值為10~40pF,通常可選擇30pF瓷片電容用于多片單片機同時工作

振蕩頻率一般低于12MHz外部振蕩器價格貴

圖1內(nèi)部時鐘方式圖2外部時鐘方式2.4時鐘電路與時序2、時序123振蕩周期:最小時間單位。若晶振頻率為fosc,振蕩周期Tosc=1/fosc狀態(tài)周期:振蕩信號二分頻信號,1個狀態(tài)周期=2個振蕩周期機器周期:CPU完成一個基本操作所需時間,1個機器周期=12個振蕩周期指令周期:執(zhí)行一條指令所需時間,1個機器周期=1或2或4個機器周期4圖3單片機周期之間的關(guān)系02AT89S52的硬件結(jié)構(gòu)01硬件組成050203存儲器結(jié)構(gòu)單片機的CPU單片機引腳04時鐘電路與時序06單片機工作方式2.5單片機存儲器結(jié)構(gòu)1、程序存儲器(ROM):存放單片機程序和一些固定常數(shù)下載程序(編程):編程器方式或在線編程(ISP)1圖1編程器圖2ISP下載方式2.5單片機存儲器結(jié)構(gòu)1、程序存儲器(ROM):存放單片機程序和一些固定常數(shù)存儲器容量:2片外可擴展為64KB,地址范圍為0x0000~0xFFFFAT89S52片內(nèi)ROM容量為8KB,地址范圍0x0000~0x1FFF圖

3單片機2.5單片機存儲器結(jié)構(gòu)1、程序存儲器(ROM)3特殊程序存儲器地址(7個)序號中斷源入口地址(匯編語言用)中斷類型號(C語言用)1INT00x000302T00x000B13INT10x001324T10x001B35串行口0x002346T20x002B5啟動地址0x00007C51編程時,用戶無須考慮起始地址和中斷源在ROM中的存放地址,C51編譯軟件會按照上述規(guī)定,自動安排程序的存放地址。!2.5單片機存儲器結(jié)構(gòu)2、數(shù)據(jù)存儲器(RAM):存放數(shù)據(jù)1片內(nèi)數(shù)據(jù)存儲器的結(jié)構(gòu)劃分:存儲器容量為256B,0x00~0xFF(1)工作寄存器區(qū)(0x00H~0x1F)(2)位尋址區(qū)(0x20~0x2F)128個位地址,位地址范圍為0x00~0x7F。RS1RS0工作寄存器區(qū)000區(qū)(0x00-0x07)011區(qū)(0x08-0x0F)102區(qū)(0x10H-0x17)

113區(qū)(0x18-0x1F)2.5單片機存儲器結(jié)構(gòu)2.5單片機存儲器結(jié)構(gòu)(3)通用RAM區(qū)(0x30~0xFF)可作為數(shù)據(jù)區(qū)或堆棧區(qū)域(后進先出)堆棧作用:保護斷點(子程序、中斷)和現(xiàn)場保護堆棧操作:入棧(PUSH)和出棧(POP)堆棧指針(SP):其內(nèi)容指出堆棧頂部所在位置SP是一個SFR,地址為0x81單片機復(fù)位后,SP中的內(nèi)容為0x07堆棧結(jié)構(gòu):向上生長型入棧:SP先加1,再把1字節(jié)數(shù)據(jù)壓入堆棧;出棧:

1字節(jié)數(shù)據(jù)彈出堆棧后,SP再減1C51編程由編譯軟件自動分配堆棧區(qū)域,用戶不用設(shè)置。2.5單片機存儲器結(jié)構(gòu)2、數(shù)據(jù)存儲器(RAM)1片內(nèi)數(shù)據(jù)存儲器的結(jié)構(gòu)劃分:存儲器容量為256B,0x00~0xFF2片外數(shù)據(jù)存儲器:最多擴展64KB的RAM,地址范圍0x0000~0xFFFF3、特殊功能寄存器(SFR)AT89S52的SFR共32個32個離散分布在該區(qū)域映射地址:80H~FFHSFR與片內(nèi)RAM統(tǒng)一編址未使用單元無定義2.5單片機存儲器結(jié)構(gòu)3、特殊功能寄存器(SFR)表

SFR的名稱和地址有12個特殊功能寄存器具有位地址和位名稱,這里位名稱和位地址等價!凡是可以進行位尋址的SFR,其字節(jié)地址的末位只能是0H或8H2.5單片機存儲器的結(jié)構(gòu)4、C51中的數(shù)據(jù)類型定義與存儲器之間的關(guān)系單片機中能夠存儲數(shù)據(jù)的區(qū)域C51編譯器完全支持52單片機的硬件結(jié)構(gòu),可訪問52硬件系統(tǒng)的所有部分。該編譯器通過將變量、常量定義成不同的數(shù)據(jù)、存儲類型的方法,將它們定位在不同的存儲區(qū)的單元中。2.5單片機存儲器的結(jié)構(gòu)4、C51中的變量定義與存儲器之間的關(guān)系數(shù)據(jù)類型1常量(變量)數(shù)值大小不同,所占據(jù)的數(shù)據(jù)存儲空間就不同變量定義:數(shù)據(jù)類型符變量名1[

=初值],變量名2[

=初值]…數(shù)據(jù)類型符字節(jié)數(shù)位數(shù)表示數(shù)的范圍unsigned

char180~255signedchar18-128~127unsigned

int2160~65535signedint216-32768~32767unsigned

long432-2147483648~2147483647signedlong4320~4294967295float432±1.75494E-38~±3.402823E+38doublefloat864±1.75494E-38~±3.402823E+38bit

10或12.5單片機存儲器的結(jié)構(gòu)3、C51中的變量定義與數(shù)據(jù)存儲器之間的關(guān)系數(shù)據(jù)類型1數(shù)據(jù)類型符字節(jié)數(shù)位數(shù)表示數(shù)的范圍unsigned

char180~255signedchar18-128~127unsigned

int2160~65535signedint216-32768~32767bit

10或1unsignedchary=0x05;bit

x=1;【例】unsigned

int

z=0x0005;

這些變量具體存在單片機存儲器哪些地址里?變量定義:數(shù)據(jù)類型符變量名1[

=初值],變量名2[

=初值]…【縮寫形式】#defineucharunsignedchar#defineuintunsignedintuchary=0x05;uintz=0x0005;2.5單片機存儲器的結(jié)構(gòu)unsignedchary=0x05;bit

x=1;【例】unsigned

int

z=0x0005;

這些變量具體存在單片機片內(nèi)存儲器哪些地址里?注:定義變量只聲明數(shù)據(jù)類型,沒指定存儲區(qū)域。由編譯器自動分配存儲區(qū)如何將變量定義到指定的片內(nèi)位尋址或片外存儲區(qū)域內(nèi)?數(shù)據(jù)類型12.5單片機存儲器的結(jié)構(gòu)存儲類型2uchardataa=0x05;ucharbdatab=0x05;ucharidatac=0x05;ucharpdatad=0x05;ucharxdatae=0x05;ucharcodetab[]={0x01,0x02,0x03,0x04};【例】這些變量具體存在單片機存儲器哪些區(qū)域里?變量定義:數(shù)據(jù)類型符

[存儲類型]

變量名1[=初值],變量名2[=初值],…;存儲類型字節(jié)存儲空間data1片內(nèi)RAM0x00~0x7F直接尋址bdata1片內(nèi)RAM0x20~0x2F位尋址區(qū)idata1片內(nèi)RAM0x00~0xFF間接尋址pdata1片外RAM0x00~0xFFxdata2片外RAM的0x0000~0xFFFFcode2程序存儲器區(qū)0x0000~0xFFFF2.5單片機存儲器的結(jié)構(gòu)存儲類型2uchardataa=0x05;ucharbdatab=0x05;ucharidatac=0x05;ucharpdatad=0x05;ucharxdatae=0x05;ucharcodetab[]={0x01,0x02,0x03,0x04};【例】C51如何在代碼中指定存儲器的具體地址(絕對地址)?2.5單片機存儲器的結(jié)構(gòu)絕對地址訪問3絕對宏:絕對宏命令在“absacc.h”#include<absacc.h>#define

NRAM

DBYTE[0x30]

#define

PORTA

XBYTE[0xFFF0]unsignedcharREAD_PORTA;voidmain(void){ while(1)

{

NRAM=0x01;

READ_PORTA

=PORTA;

}}【例】將0x01存入片內(nèi)RAM0x30內(nèi)并

讀取片外0xFFF0地址的內(nèi)容code區(qū)CBYTE(字節(jié)形式)CWORD(字形式)data區(qū)DBYTE

(字節(jié)形式)DWORD(字形式)xdata區(qū)pdata區(qū)XBYTE(字節(jié)形式)XWORD(字形式)PBYTE(字節(jié)形式)PWORD(字形式)(片外)(片外)(片內(nèi))#define變量名宏定義[絕對地址]

宏定義名稱(ROM)2.5單片機存儲器的結(jié)構(gòu)絕對地址訪問3_at_關(guān)鍵字#include<reg52.h>unsignedchardataNRAM

_at_0x50;voidmain(void){

NRAM=0x01;

while(1);}【例】將0x01存入片內(nèi)RAM0x50里格式:地址常數(shù):指定變量的絕對地址,必須位于有效的存儲器空間內(nèi)使用_at_定義的變量必須為全局變量bit類型的變量及函數(shù)不能使用_at_#include<reg52.h>unsignedcharxdatabuffer[8]_at_0x40;voidmain(void){unsignedcharj;for(j=0;j<8;j++){buffer[j]=0;}

while(1);}【例】片外RAM0x40開始的8個單元清0數(shù)據(jù)類型[存儲類型]

變量名

_at_地址常數(shù)2.5單片機存儲器的結(jié)構(gòu)C51語言的特殊功能寄存器及位變量定義4特殊功能寄存器和特殊功能位使用前必須要先定義,才可以使用8位特殊功能寄存器的C51定義sfr

特殊功能寄存器名稱=特殊功能寄存器地址;16位特殊功能寄存器的C51定義sfr16特殊功能寄存器名稱=特殊功能寄存器地址;特殊功能位的C51定義sbit用戶定義名稱=特殊功能位名稱;sfrP0=0x80;sfr16DPTR0=0x82;sbitLED0=P0^0;2.5單片機存儲器的結(jié)構(gòu)C51語言的特殊功能寄存器及位變量定義4為了用戶編程方便,C51把52單片機常用的特殊功能寄器和可尋址的特殊功能位進行了定義,放在reg52.h頭文件中。程序使用#include<re52.h>,可直接使用SFR名稱和可尋址位名稱P0~P3通用I/O口的特殊功能位在reg52.H文件沒給出定義,需用戶自定義#include<reg52.h>sbitLED0=P0^0;voidmain(void){

RS1=0;RS0=1;

while(1)

{

P1=0x01;LED0=0;}}02AT89S52的硬件結(jié)構(gòu)01硬件組成050203存儲器結(jié)構(gòu)單片機的CPU單片機引腳04時鐘電路與時序06單片機工作方式2.6單片機工作方式1、片內(nèi)ROM編程(包括校驗)方式下載程序(編程):編程器方式或在線編程(ISP)1圖1編程器圖2ISP下載方式4種工作方式:編程、復(fù)位、程序執(zhí)行和低功耗方式。2.6單片機工作方式二、復(fù)位工作方式復(fù)位條件1:在RST(9腳)加上大于2個機器周期的高電平復(fù)位電路:2圖3上電和按鍵復(fù)位電路復(fù)位作用:單片機啟動時需要復(fù)位;當(dāng)程序出錯(如程序跑飛);操

作錯誤使系統(tǒng)處于死鎖狀態(tài)時,使AT89S52擺脫“跑飛”

或“死鎖”狀態(tài)而重新啟動程序。2.6單片機工作方式2、復(fù)位工作方式復(fù)位后狀態(tài)3PC指針被初始化為0000H片內(nèi)RAM的內(nèi)容保持不變SFR初值(SP)=07H(P0)=FFH(P1)=FFH(P2)=FFH(P3)=FFH(其他SFR)=FFH寄存器

復(fù)位狀態(tài)

寄存器

復(fù)位狀態(tài)Acc0x00DP1H0x00PSW0x00DP1L0x00B0x00TMOD0x00SP0x07TCON0x00DPTR0x0000TH0TL00x0000P0~P30xFFTH1TL10x0000IP0bxx000000SCON0x00IE0b0x000000SBUF0bxxxxxxxxDP0H0x00PCON0b0xxx0000DP0L0x00AUXR0bxxx00xx0WDTRST0bxxxxxxxxAUXR10bxxxxxxx02.6單片機工作方式2、復(fù)位工作方式看門狗定時器(WDT)的使用4程序“跑飛”或“死循環(huán)”,沒有及時復(fù)位,采用“看門狗”技術(shù)看門狗部件包含1個14位看門狗定時器和看門狗復(fù)位寄存器

程序正常執(zhí)行時,在16384μs內(nèi)不斷復(fù)位清“0”看門狗定時器。2.6單片機工作方式2、復(fù)位工作方式看門狗定時器(WDT)的使用5#include<reg52.h>sfrWDTRST=0xa6

//reg52.h中沒有聲明WDTRST特殊功能寄存器......voidmain(){

WDTRST=0x1e;//啟動看門狗運行

WDTRST=0xe1;.....;

while(1)//無限循環(huán)

{

WDTRST=0x1e;//清0看門狗并啟動運行

WDTRST=0xe1;

......;//執(zhí)行時間必須小于16384μs(系統(tǒng)時鐘為12MHz時)

}}2.6單片機工作方式3、程序執(zhí)行方式單片機基本工作方式,即CPU依次從ROM讀取指令執(zhí)行程序的工作過程。四、低功耗工作方式2種工作模式:待機(空閑)模式和掉電保護模式IDL=1待機模式PD=1掉電保護模式GF1、GF0:用戶標志位SMOD:串行通信波特率選擇━:保留位CPU不工作振蕩器仍然運行外圍電路工作SFR、RAM保持之前狀態(tài)路振蕩器停止工作所有功能部件停止工作SFR、RAM保持之前狀態(tài)2.6單片機工作方式4、低功耗工作方式待機(空閑)模式IDL=1CPU不工作;振蕩器仍然運行;外圍電路工作(中斷、定時器、串口等);SFR、RAM保持之前狀態(tài)。中斷退出:任何中斷被響應(yīng),IDL=0(硬件)退出待機模式,進入中斷服務(wù)程序。1待機模式進入:待機模式退出:硬件復(fù)位退出;復(fù)位時,IDL=0,退出空閑模式,單片機從頭開始執(zhí)行程序。2.6單片機工作方式4、低功耗工作方式掉電保護模式PD=12掉電保護模式進入:振蕩器停止工作;所有功能部件停止工作;SFR、RAM保持之前狀態(tài)掉電保護模式退出:中斷退出:中斷使單片機退出掉電模式,程序從原來停止處繼續(xù)運行。硬件復(fù)位退出:硬件復(fù)位使單片機退出掉電模式,程序從頭開始運行。本章小結(jié)1.掌握單片機最小系統(tǒng)常用電路設(shè)計。由電源、晶振、復(fù)位電路和程序存儲器選擇電路組成。2.單片機的CPU由運算器和控制器構(gòu)成。3.單片機的時序信號包括振蕩周期、狀態(tài)周期、機器周期和指令周期。掌握機器周期和振蕩周期的關(guān)系。4.單片機的存儲器結(jié)構(gòu)包括4個獨立的物理空間,片內(nèi)RAM(256B)、片外RAM(64KB)、片內(nèi)ROM(8KB)、片外ROM(64KB)。重點掌握片內(nèi)RAM的空間分布。5.AT89S52單片機有32個SFR,C51編程中SFR以及特殊功能位必須通過關(guān)鍵字sfr、sbit定義才可使用。SFR的定義在頭文件reg52.h里,使用時包含該頭文件。但I/O口的特殊功能位需要自定義。6.掌握程序狀態(tài)字PSW的各位功能。

7.了解C51中的數(shù)據(jù)與存儲器之間的關(guān)系。8.了解單片機的工作方式。單片機輸出顯示控制03介紹單片機與常用的發(fā)光二極管、數(shù)碼管、LED點陣顯示屏、LCD液晶顯示器的接口設(shè)計與軟件編程。3單片機輸出顯示控制01單片機并行I/O端口的內(nèi)部結(jié)構(gòu)0203單片機控制數(shù)碼管單片機控制發(fā)光二極管0405單片機控制液晶顯示器LCD單片機控制LED點陣顯示3.1單片機并行I/O端口的內(nèi)部結(jié)構(gòu)G1G20結(jié)論:P0口作為輸出口使用,需需外接上拉電阻,一般為4.7KΩ或10KΩ1P0做通用輸入輸出口使用P0做輸出口使用一、P0口3.1單片機并行I/O端口的內(nèi)部結(jié)構(gòu)一、P0口+5VG1G201P0做通用輸入輸出口使用結(jié)論:P0口作為輸入口使用,需先寫“1”P0做輸入口使用準雙向口:高電平、低電平3.1單片機并行I/O端口的內(nèi)部結(jié)構(gòu)G1G212P0做數(shù)據(jù)/地址總線使用一、P0口P0口地址總線低8位P0做地址總線輸出使用控制線13.1單片機并行I/O端口的內(nèi)部結(jié)構(gòu)一、P0口G1G20P0做數(shù)據(jù)線輸入使用2P0做數(shù)據(jù)/地址總線使用結(jié)論:P0口地址總線低8位P0口數(shù)據(jù)總線(8位)控制線0此時不能作為通用的I/O端口CPU寫入1,下方場效應(yīng)管截止上方場效應(yīng)管截止高阻狀態(tài)雙向口:高電平、低電平、高阻3.1單片機并行I/O端口的內(nèi)部結(jié)構(gòu)二、P1口P1口做通用輸入輸出口使用結(jié)論:讀鎖存器內(nèi)部總線讀引腳DCLQ鎖存器P1.XVccP1作為輸入口使用,需先寫“1”P1作為輸出口使用,無需外接上拉電阻3.1單片機并行I/O端口的內(nèi)部結(jié)構(gòu)結(jié)論:1P2做通用輸入輸出口使用三、P2口DCLQ.鎖存器MUXP2.x地址控制讀鎖存器內(nèi)部總線讀引腳VccP2作為輸入口使用,需先寫“1”P2作為輸出口使用,無需外接上拉電阻3.1單片機并行I/O端口的內(nèi)部結(jié)構(gòu)結(jié)論:2P2做地址總線使用三、P2口DCLQ.鎖存器MUXP2.x地址控制讀鎖存器內(nèi)部總線讀引腳VccP2口作為地址總線高8位,與P0口構(gòu)成16位地址,尋址64KB地址空間P2做地址總線使用,就不能再做普通I/O口使用3.1單片機并行I/O端口的內(nèi)部結(jié)構(gòu)結(jié)論:1P3做通用輸入輸出口使用四、P3口P3作為輸入口使用,需先寫“1”P3作為輸出口使用,無需外接上拉電阻讀鎖存器內(nèi)部總線讀引腳DCLQ鎖存器P3.x第二功能輸出端第二功能輸入端Vcc13.1單片機并行I/O端口的內(nèi)部結(jié)構(gòu)P3第二功能四、P3口讀鎖存器內(nèi)部總線讀引腳DCLQ鎖存器P3.x第二功能輸出端第二功能輸入端Vcc21

第二輸出功能

D鎖存自動置13.1單片機并行I/O端口的內(nèi)部結(jié)構(gòu)P3第二功能四、P3口讀鎖存器內(nèi)部總線讀引腳DCLQ鎖存器P3.x第二功能輸出端第二功能輸入端Vcc21

第二輸入功能

D鎖存自動置1P3口第一功能與第二功能,究竟是使用哪個功能,完全是由單片機執(zhí)行的指令控制來自動切換的,用戶不需要進行任何設(shè)置。

第二功能輸出端自動置113.1單片機并行I/O端口的內(nèi)部結(jié)構(gòu)1P0:通用I/O使用,每位可驅(qū)動8個LSTTL五、I/O驅(qū)動能力P0口的某位輸出高電平時,可提供400μA的拉電流P0口某位為低電平(0.45V)時,可提供3.2mA的灌電流2P1~P3:通用I/O使用,每位可驅(qū)動4個LSTTL輸出高電平,則輸出的拉電流僅為數(shù)百微安輸出低電平,灌電流從單片機外部流入內(nèi)部,則將大大增加流過的灌電流值單片機任何一個端口要想獲得較大的驅(qū)動能力,要采用低電平輸出3單片機I/O口驅(qū)動能力不夠,要外接驅(qū)動電路4三極管、ULN2003、L298N、L9110等驅(qū)動芯片3.1單片機并行I/O端口的內(nèi)部結(jié)構(gòu)P0口~P3口使用方法總結(jié)P0~P3作為通用I/O口時,為準雙向口,只有高電平和低電平2個狀態(tài);P0~P3作為輸入口使用時,要先向端口寫“1”;123P0作為輸出口使用時,漏極開路,要外接上拉電阻(1KΩ~10KΩ);45P1~P3作為輸出口使用時,內(nèi)部有上拉電阻,不用外接上拉電阻;67并行總線構(gòu)成:P2口(高8位)和P0口(低8位)構(gòu)成16位地址總線;P0口數(shù)據(jù)總線,P0在ALE引腳控制下分時復(fù)用。P0~P3只要作為第二功能使用,就不能再做通用I/O使用了。P0~P3的第一功能和第二功能,由單片機執(zhí)行的指令控制自動切換,用戶不需要進行任何設(shè)置。3單片機輸出顯示控制01單片機并行I/O端口的內(nèi)部結(jié)構(gòu)0203單片機控制數(shù)碼管單片機控制發(fā)光二極管0405單片機控制液晶顯示器LCD單片機控制LED點陣顯示3.2單片機控制發(fā)光二極管一、發(fā)光二極管簡介圖1直插式LED圖2貼片式LED圖4LED驅(qū)動電路圖3LED符號正向?qū)妷菏?.7~2.2V;限流電阻阻值可選150Ω~3kΩ之間電流越大,燒壞的速度也就越快。在設(shè)計時需加限流電阻工作電流一般在1~20mA。!3.2單片機控制發(fā)光二極管二、單片機與LED的連接圖6單片機P1~P3口與LED的連接圖5單片機P0口與LED的連接上拉電阻:1~10kΩ之間選取。(a)LED亮單片機上電后現(xiàn)象(a)(b)(c)(d)(b)LED不亮限流電阻:150Ω~3kΩ之間P1~P3口如何連接LED??3.2單片機控制發(fā)光二極管三、點亮一個發(fā)光二極管仿真實例任務(wù)要求:控制1個發(fā)光二極管點亮。圖7P0口與LED連接圖8P1口與LED連接1硬件電路設(shè)計3.2單片機控制發(fā)光二極管三、點亮一個發(fā)光二極管仿真實例任務(wù)要求:控制1個發(fā)光二極管點亮。2軟件設(shè)計#include<reg52.h>sbitLED=P0^0;voidmain(){

while(1)

{

LED=0;

}

}#include<reg52.h>sbitLED=P0^0;voidmain(){

LED=0;while(1){

;}}分析這2段代程序的運行過程。3.2單片機控制發(fā)光二極管三、點亮一個發(fā)光二極管仿真實例任務(wù)要求:控制1個發(fā)光二極管點亮。3仿真運行圖9KeilC軟件編譯結(jié)果圖10點亮LED運行效果圖3.2單片機控制發(fā)光二極管三、點亮一個發(fā)光二極管仿真實例擴展任務(wù)要求:控制1個發(fā)光二極管閃爍。#include<reg52.h>#defineucharunsignedsbitLED=P0^0;voidmain() { while(1){uinti,j;

LED=0;

for(i=0;i<247;i++)for(j=0;j<100;j++);

LED=1;

for(i=0;i<247;i++)for(j=0;j<100;j++);

}}3.2單片機控制發(fā)光二極管三、點亮一個發(fā)光二極管仿真實例表1C

51延時程序設(shè)計方法序號設(shè)計方法例句說明1for循環(huán)結(jié)構(gòu)for(i=0;i<100;i++);不精確定時2while循環(huán)結(jié)構(gòu)i=250;while(i--);不精確定時3定時器定時TMOD=0x01;TH0=0xee;TL0=0x00;TR0=1精確定時4庫函數(shù)_nop_();//一個機器周期的時間精確定時voiddelay(uint

xms)//ms延時函數(shù){

uint

i,j;for(i=0;i<xms;i++)for(j=0;j<120;j++);}不帶參數(shù)延時函數(shù)的寫法voiddelay()//200ms延時函數(shù){uinti,j;for(i=0;i<247;i++)for(j=0;j<100;j++);}12帶參數(shù)延時函數(shù)的寫法和調(diào)用擴展任務(wù)要求:控制1個發(fā)光二極管閃爍。#include<reg52.h>#defineuintunsignedintsbitLED=P0^0;voidmain() { while(1){uinti,j;

LED=0;

for(i=0;i<247;i++)for(j=0;j<100;j++);

LED=1;

for(i=0;i<247;i++)for(j=0;j<100;j++);

}}用延時函數(shù)改寫這段程序?voiddelay(uint

xms){uint

i,j;for(i=0;i<xms;i++)for(j=0;j<120;j++);}#include<reg52.h>#defineuintunsignedintsbitLED=P0^0;voiddelay(uint

xms){uint

i,j;for(i=0;i<xms;i++)for(j=0;j<120;j++);}void

main() { while(1){LED=0;

delay(200);

LED=1;

delay(200);

}}#include<reg52.h>#defineuintunsignedintsbitLED=P0^0;voiddelay(uint

xms);void

main() { while(1){LED=0;

delay(200);

LED=1;

delay(200);

}}voiddelay(uint

xms){uint

i,j;for(i=0;i<xms;i++)for(j=0;j<120;j++);}3.2單片機控制發(fā)光二極管四、流水燈仿真實例任務(wù)要求:控制8個發(fā)光二極管按照一定的時間間隔依次輪流點亮。1硬件電路設(shè)計代碼是否需要寫8次特殊功能位定義語句?3.2單片機控制發(fā)光二極管四、流水燈仿真實例任務(wù)要求:控制8個發(fā)光二極管按照一定的時間間隔依次輪流點亮。2軟件設(shè)計狀態(tài)P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0編碼1111111100xfe2111111010xfd3111110110xfb4111101110xf75111011110xef6110111110xdf7101111110xbf8011111110x7f表2流水燈的引腳電平狀態(tài)移位(左移或右移)賦值數(shù)組:循環(huán)賦值C51邏輯運算:循環(huán)左移_crol_intrins.h庫函數(shù):左移“<<”右移“>>”循環(huán)右移_cror_依次賦值3.2單片機控制發(fā)光二極管四、流水燈仿真實例C51邏輯運算:循環(huán)左移_crol_intrins.h庫函數(shù):左移“<<”右移“>>”循環(huán)右移_cror_3.2單片機控制發(fā)光二極管四、流水燈仿真實例任務(wù)要求:控制8個發(fā)光二極管按照一定的時間間隔依次輪流點亮。2軟件設(shè)計(1)基于庫函數(shù)的流水燈程序設(shè)計#include<reg52.h>#include<intrins.h>

#defineucharunsignedchar#defineuintunsignedint voiddelayms(uinti);voidmain() { P2=0xfe;while(1){delay(500);

P2=_crol_(P2,1);}}#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint voiddelay(uinti);voidmain() { while(1){uchari,temp=0x01

;

for(i=0;i<8;i++){P2=~temp;

temp=temp<<1;

delay(500);}}}(2)基于邏輯運算符的流水燈程序設(shè)計3.2單片機控制發(fā)光二極管四、流水燈仿真實例任務(wù)要求:控制8個發(fā)光二極管按照一定的時間間隔依次輪流點亮。2軟件設(shè)計(3)基于數(shù)組的流水燈程序設(shè)計#include<reg52.h>#defineucharunsignedchar #defineuintunsignedint ucharcodetab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};voiddelayms(uinti);

voidmain() { while(1){uchari;for(i=0;i<8;i++){

P2=tab[i];delayms(500);} }}3單片機輸出顯示控制01單片機并行I/O端口的內(nèi)部結(jié)構(gòu)0203單片機控制數(shù)碼管單片機控制發(fā)光二極管0405單片機控制液晶顯示器LCD單片機控制LED點陣顯示3.3單片機控制數(shù)碼管一、單個數(shù)碼管的顯示原理共陽極數(shù)碼管陽極連在一起LED點亮條件COM端接地段碼端給高電平LED點亮條件共陰極數(shù)碼管陰極連在一起圖1數(shù)碼管外形圖1數(shù)碼管引腳

(a)共陰極(b)共陽極COM端高電平段碼端給低電平3.3單片機控制數(shù)碼管七段共陽極數(shù)碼管段碼表數(shù)字dpgfedcba段碼abcdefgdp

0110000000xC01111110010xF92101001000xA43101100000xB04100110010x995100100100x926100000100x827111110000xF88100000000x809100100000x90A100010000x88b100000110x83C110001100xC6d101000010xA1E100001100x86F100011100x8Eunsignedcharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共陽0-F3.3單片機控制數(shù)碼管顯示字符共陰極段碼共陽極段碼顯示字符共陰極段碼共陽極段碼00x3F0xC080x7F0x8010x060xF990x6F0x9020x5B0xA4A0x770x8830x4F0xB0b0x7C0x8340x660x99C0x390xC650x6D0x92d0x5E0XA160x7D0x82E0x790x8670x070xF8F0x710x8E表3-5共陰、共陽數(shù)碼管的段碼表3.3單片機控制數(shù)碼管二、一位數(shù)碼管顯示仿真實例任務(wù)要求:在1位共陽極數(shù)碼管上循環(huán)顯示“0~F”。1硬件電路設(shè)計3.3單片機控制數(shù)碼管二、一位數(shù)碼管顯示仿真實例任務(wù)要求:在1位共陽極數(shù)碼管上循環(huán)顯示“0~F”。2軟件設(shè)計共陽極數(shù)碼管“0~F”的段碼1234ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};數(shù)碼管顯示“0~F”中的一個P2=seg[i]構(gòu)成16次循環(huán):for語句字符之間要加一定的延時delay函數(shù)分析3.3單片機控制數(shù)碼管二、一位數(shù)碼管顯示仿真實例任務(wù)要求:在1位共陽極數(shù)碼管上循環(huán)顯示“0~F”。2軟件設(shè)計共陽極數(shù)碼管“0~F”的段碼1234ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};數(shù)碼管顯示“0~F”中的一個P2=seg[i]構(gòu)成16次循環(huán):for語句字符之間要加一定的延時delay函數(shù)分析#include<reg52.h>#defineucharunsignedchar#defineuintunsignedintucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};voiddelay(uintxms);voidmain(){while(1){uchari;

for(i=0;i<16;i++){P2=seg[i];

delay(500);}}} 3.3單片機控制數(shù)碼管三、多個數(shù)碼管的顯示原理單個數(shù)碼管和單片機連接方法:多個數(shù)碼管和單片機如何連接?公共端接地或高電平段碼端與一個I/O口相連3.3單片機控制數(shù)碼管三、多個數(shù)碼管的顯示原理01靜態(tài)顯示方式02動態(tài)顯示方式公共端都連接在一起段碼端分別與一個I/O口相連公共端分別與一個I/O引腳相連段碼端都與一個I/O口相連同時顯示,無閃爍依次顯示,有閃爍3.3單片機控制數(shù)碼管四、兩位數(shù)碼管靜態(tài)顯示仿真實例任務(wù)要求:在2位共陽數(shù)碼管采用靜態(tài)顯示方式顯示25。1硬件電路設(shè)計Seg1段碼端接P0口Seg2段碼端接P2口P0=0xa4;P2=0x92;ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽0-92軟件設(shè)計#include<reg52.hvoidmain(void){

P0=0xa4;

P2=0x92;while(1);}3.3單片機控制數(shù)碼管四、兩位數(shù)碼管靜態(tài)顯示仿真實例任務(wù)要求:在2位共陽數(shù)碼管采用靜態(tài)顯示方式顯示25。3仿真運行3.3單片機控制數(shù)碼管五、四位數(shù)碼管動態(tài)顯示仿真實例任務(wù)要求:在4位共陽數(shù)碼管采用動態(tài)顯示方式穩(wěn)定顯示“3210”

實物圖四位動態(tài)共陽數(shù)碼管內(nèi)部結(jié)構(gòu)引腳圖3.3單片機控制數(shù)碼管五、四位數(shù)碼管動態(tài)顯示仿真實例任務(wù)要求:在4位共陽數(shù)碼管采用動態(tài)顯示方式穩(wěn)定顯示“3210”

P0abcdefgdpabcdefgdpabcdefgdpabcdefgdpP2.3P2.2P2.1P2.0

0001

0010

01

00

10

00w0=1;

P0=0xc0;delay(2)w0=0;P0=0xf9;delay(2)sbitw0=P2^0;sbitw1=P2^1;sbitw2=P2^2;sbitw3=P2^3;w1=1;w1=0ucharcodeseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};P0=0xff;P0=0xff;3.3單片機控制數(shù)碼管五、四位數(shù)碼管動態(tài)顯示仿真實例任務(wù)要求:在4位共陽數(shù)碼管采用動態(tài)顯示方式穩(wěn)定顯示“3210”

P0abcdefgdpabcdefgdpabcdefgdpabcdefgdpP2.3P2.2P2.1P2.0P0=0xf9;delay(2)w1=1;w1=0P0=0xff;送段碼送位選碼延時消隱關(guān)閉位選碼掃描率大于100Hz,整體掃描時間小于10ms,無閃爍。延時時間的計算整體掃描時間=單個數(shù)碼管點亮?xí)r間*數(shù)碼管個數(shù)數(shù)碼管的消隱現(xiàn)象:有時會出現(xiàn)數(shù)碼管不應(yīng)該亮的段,似乎有微微的發(fā)亮。P0=0xff;消隱:單個數(shù)

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論