《單片機控制技術(shù)項目式課程》(第2版)課件全套 王璇 項目1-11 認識單片機 - STC高性能51單片機的應用設計_第1頁
《單片機控制技術(shù)項目式課程》(第2版)課件全套 王璇 項目1-11 認識單片機 - STC高性能51單片機的應用設計_第2頁
《單片機控制技術(shù)項目式課程》(第2版)課件全套 王璇 項目1-11 認識單片機 - STC高性能51單片機的應用設計_第3頁
《單片機控制技術(shù)項目式課程》(第2版)課件全套 王璇 項目1-11 認識單片機 - STC高性能51單片機的應用設計_第4頁
《單片機控制技術(shù)項目式課程》(第2版)課件全套 王璇 項目1-11 認識單片機 - STC高性能51單片機的應用設計_第5頁
已閱讀5頁,還剩670頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目1認識單片機初步認識單片機。掌握單片機的基本概念。了解單片機的發(fā)展歷史及發(fā)展趨勢。了解單片機的分類、特點及應用領(lǐng)域。了解行業(yè)標準中電子元器件的規(guī)范。了解芯片制造過程,培養(yǎng)自主創(chuàng)新意識。學習目標敘述什么是單片機。敘述單片機的發(fā)展歷史及發(fā)展趨勢。敘述單片機的分類。敘述單片機的特點及應用領(lǐng)域。工作任務任務1.1單片機是什么任務1.2單片機的發(fā)展任務1.3單片機的分類任務1.4單片機的特點及應用領(lǐng)域項目小結(jié)項目1認識單片機任務1.1單片機是什么單片機就在我們?nèi)粘I钪?,在我們身邊的各種家用電器中。比如洗衣機,單片機在其控制面板中,如圖所示:1.1.1單片機在哪里

全自動洗衣機操作面板洗衣機的單片機控制圖

1.1.2單片機的樣子單片機封裝以外形的包裝形式不同進行分類,常見的有雙列直插式(DIP封裝)、塑料J形引腳芯片載體(PLCC封裝)和塑料方型扁平式(PQFP封裝)等。

(a)DIP封裝(b)PLCC封裝(c)PQFP封裝封裝1:PDIP40(PlasticDualInlinePacket40)塑料雙列(直插封裝)體積大;插拔或焊接方便;容易加工;缺口側(cè)圓形標記處為1腳;調(diào)試樣機建議采用此封裝。封裝2

:PLCC44(PlasticJ-leadedChipCarrier)塑料J形引腳芯片載體體積較小插拔或焊接方便。中心正上方圓形標記處為1腳封裝3

:封裝:TQFP44

(ThinPlasticGullWingQuadFlatPacket)扁體塑料鷗翼狀方形平面封裝體積最小只能焊接左下方缺口側(cè)圓形標記處為1腳批量生產(chǎn)設計推薦此封裝在一片集成電路芯片上集成微處理器、存儲器、I/O接口電路、定時器/計數(shù)器等部件,從而構(gòu)成了單芯片微型計算機,即單片機。

單硅晶片CPU存儲器控制電路定時器時鐘電路I/O口單片機概念1.1.3單片機的基本概念單片機內(nèi)部結(jié)構(gòu)示意圖注意:單片機本身只是一個集成度高、功能強的電子元件,只有當它與某些器件或設備有機地結(jié)合在一起時才構(gòu)成了單片機應用系統(tǒng)的硬件部分,配置適當?shù)墓ぷ鞒绦蚝螅涂梢詷?gòu)成一個真正的單片機應用系統(tǒng),完成特定的任務。第一階段(1976~1978):單片機的探索階段。以Intel公司MCS-48為代表。第二階段(1978~1982):單片機的完善階段。MCS-51系列單片機。第三階段(1982~1990):單片機向微控制器發(fā)展的階段。8位單片機的鞏固和16位單片機的推出。第四階段(1990~今):微控制器的全面發(fā)展階段。8位/16位/32位通用型單片機以及小型廉價的專用型單片機。任務1.2單片機的發(fā)展1.2.1單片機的發(fā)展歷史1.2.2單片機的發(fā)展趨勢單片機今后將向高性能、高速、低壓、低功耗、低價格、存儲容量增大、外圍電路內(nèi)裝化等方向發(fā)展。1.CPU的發(fā)展趨勢(1)采用雙CPU結(jié)構(gòu),提高處理能力。(2)增加數(shù)據(jù)總線寬度,內(nèi)部采用16位數(shù)據(jù)總線。2.片內(nèi)存儲器的發(fā)展趨勢(1)加大存儲容量。(2)片內(nèi)EPROM開始EEPROM化(3)閃速存儲器(4)串行存儲器(5)片內(nèi)程序的保密措施3.片內(nèi)I/O的改進(1)增加并行口的驅(qū)動能力,能直接輸出大電流和高電壓。(2)增加I/O口的邏輯控制功能。(3)設置了一些特殊的串行接口功能,構(gòu)成分布式、網(wǎng)絡化系統(tǒng)。4.外圍功能部件內(nèi)裝化5.低功耗化6.應用軟件和系統(tǒng)軟件內(nèi)固化1.按數(shù)據(jù)總線位數(shù)不同分類(1)4位單片機:(2)8位單片機:(3)16位單片機:(4)32位單片機:控制功能較弱,CPU一次只能處理4位二進制數(shù)。品種豐富、應用廣泛。分為51系列和非51系列。操作速度及數(shù)據(jù)吞吐能力在性能上比8位機有較大提高。主要有TI的MSP430系列、Intel的MCS-96系列等。字長為32位,是單片機中的頂級產(chǎn)品,具有極高的運算速度。常見ARM處理器架構(gòu)可分為ARM7、ARM9及ARM11。(1)MCS-51系列單片機MCS-51系列單片機是Intel公司在1980年推出的高性能8位單片機,可分為51和52兩個子系列。2.按生產(chǎn)廠家分類基本型增強型(2)80C51系列﹡ATMEL的:89C51、89C52、89C2051等;

80C51是MCS-51系列中的一個典型品種;其它廠商生產(chǎn)的與80C51兼容的單片機統(tǒng)稱為80C51系列。當前常用的80C51系列單片機主要產(chǎn)品有:

Philips、Infineon、Dallas等公司的許多產(chǎn)品。(3)其他常用單片機系列Atmel公司的AVR系列單片機精簡指令集(RISC)單片機,其ATtiny系列、AT90S系列與ATmega系列分別對應為低、中、高檔產(chǎn)品。主要特點:ROM采用Flash結(jié)構(gòu),有多種編程方式,數(shù)據(jù)處理速度快,功耗低,I/O口功能強、驅(qū)動能力大,具有A/D轉(zhuǎn)換電路,有功能強大的定時/計數(shù)器。Microchip公司的PIC系列單片機主要產(chǎn)品是8位單片機,CPU采用了RISC結(jié)構(gòu)的嵌入式微控制器,共有3個系列:基本級、中級和高級。主要特點:高速度、低電壓、低功耗、大電流LCD驅(qū)動能力和低價位OTP技術(shù)。Motorola公司的單片機品種全、新產(chǎn)品多,4位、8位、16位32位的單片機都能生產(chǎn)。主要特點:在同樣的速度下所用的時鐘頻率較Intel類單片機低得多,使得高頻噪聲低,抗干擾能力強,更適合于工控領(lǐng)域及惡劣的環(huán)境。任務1.4單片機的特點及應用領(lǐng)域與通用微機相比較,單片機在結(jié)構(gòu)、指令設置上均有其獨特之處,主要特點如下:(1)單片機的存儲器ROM和RAM是嚴格區(qū)分的。(2)采用面向控制的指令系統(tǒng)。(3)單片機的I/O引腳通常是多功能的。(4)單片機的外部擴展能力很強。1.4.1單片機的特點單片機在控制領(lǐng)域中的主要特點:(1)體積小,成本低,運用靈活,易于產(chǎn)品化,能方便地組成各種智能化的控制設備和儀器,做到機電一體化。(2)能針對性地完成從簡單到復雜的各類控制任務,因而能獲得最佳的性價比。(3)抗干擾能力強,適用溫度范圍寬,在各種惡劣的環(huán)境下都能可靠

地工作。(4)可以方便地實現(xiàn)多機控制和分布式控制,使整個控制系統(tǒng)的工作效率和可靠性大大提高。小型、靈活、方便、便宜就是單片機的主要特點。智能儀器儀表數(shù)字式測角儀交直流電壓電流表數(shù)字測溫儀單片機結(jié)合不同類型的傳感器,可實現(xiàn)電壓、頻率、濕度、溫度等物理量的測量。采用單片機控制使得儀器儀表數(shù)字化、智能化、微型化,且功能比起采用電子或數(shù)字電路更加強大。1.4.2單片機的應用領(lǐng)域

工業(yè)控制電梯智能化控制用單片機可以構(gòu)成形式多樣的控制系統(tǒng)、數(shù)據(jù)采集系統(tǒng)。例如工廠流水線的智能化管理、電梯智能化控制、各種報警系統(tǒng)。

智能流水線家用電器在家用電器領(lǐng)域,單片機的應用越來越廣泛。如洗衣機、電冰箱、微波爐,其他音響視頻器材等。洗衣機微波爐智能冰箱通信設備現(xiàn)在的通信設備基本上實現(xiàn)了單片機智能控制,從手機,電話機,小型程控交換機、無線對講機到樓宇自動通信呼叫系統(tǒng)、列車無線通信等。手機電話機小型程控交換機對講機醫(yī)用設備病床呼叫系統(tǒng)電池分析儀醫(yī)用呼吸機超聲診斷設備監(jiān)護儀汽車電子產(chǎn)品自動駕駛系統(tǒng)安全保護系統(tǒng)集中顯示系統(tǒng)辦公自動化設備打印機復印機傳真機繪圖儀人臉識別考勤機商業(yè)營銷設備手持條碼閱讀器IC卡刷卡機出租車計價器項目小結(jié)本項目主要介紹了單片機的概念、發(fā)展、分類、特點及應用領(lǐng)域,通過四個任務完成了對單片機的認識。單片機在一塊超大規(guī)模芯片上,集成了一部完整微機的全部基本單元,具有很高的性價比和相當小的體積,廣泛應用于儀器儀表、家用電器、醫(yī)用設備、航空航天、專用設備的智能化管理及過程控制等領(lǐng)域。單片機的發(fā)展經(jīng)歷了“探索”、“完善”、“MCU化”、“全面發(fā)展”四個階段,并將進一步向著CMOS化、低功耗、小體積、低價格、大容量、高性能、外圍電路內(nèi)裝化(嵌入式)和串行擴展技術(shù)等方向發(fā)展。項目2用單片機集成開發(fā)環(huán)境進行項目設計了解KeilC51軟件和Proteus軟件。熟練掌握KeilC51軟件的使用方法。熟練掌握Proteus軟件的使用方法。學會運用信息化手段解決專業(yè)技術(shù)問題,培養(yǎng)信息化素養(yǎng)。學習目標敘述用KeilC51軟件創(chuàng)建工程的步驟。用KeilC51軟件完成單片機程序的編譯和調(diào)試。敘述Proteus軟件的使用方法。用Proteus軟件設計單片機電路。工作任務任務2.1用KeilC51軟件進行軟件設計任務2.2用Proteus軟件進行硬件設計項目小結(jié)項目2用單片機集成開發(fā)環(huán)境進行項目設計任務2.1用KeilC51軟件進行軟件設計

用KeilC51軟件進行軟件設計,首先要在計算機上正確安裝KeilμVision4。

KeilμVision4使用工程的方法來管理文件,基本操作步驟如下:(1)新建工程文件。(2)選擇CPU型號(如Atmel公司的AT89C52)。(3)為工程添加源程序文件(新建一個源程序文件并添加源程序,或直接添加已存在的源程序文件)。(4)對工程進行設置。(5)程序編譯、調(diào)試。任務準備1.任務要求用KeilμVision4新建一個工程文件“流水燈.uvproj”,詳細說明設計一個應用程序的過程。2.任務分析根據(jù)任務要求,只有熟悉KeilμVision4的實際操作步驟,才能正確地設計一個應用程序并對該應用程序進行編譯。任務操作3.任務設計啟動KeiluVision4,進入工作界面單擊Project,在下拉菜單中選NewμVisionProject,新建工程選擇路徑工程名CPU型號選擇到現(xiàn)在為止,用戶已經(jīng)建立一個空白的工程文件,并為該項目選擇好了CPU。單擊“File”菜單,在下拉菜單中單擊“New”選項來新建一個C文件此處可以鍵入程序建議:先單擊“File”中的“SaveAs”來保存空白文件,并在彈出的對話框中選擇存儲位置及文件名。儲存路徑文件名要帶擴展名添加文件到工程文件添加完成以后的界面打開led.c文件,輸入C代碼。輸入程序時,KeilC51會自動識別關(guān)鍵字,并以不同的顏色提示用戶加以注意單擊“Project”菜單中“Optionsfortarget‘target1’”,對工程進行設置,以滿足要求。更改晶振頻率使程序編譯后產(chǎn)生HEX代碼,以便在Proteus里加載可執(zhí)行代碼

依次單擊,如果沒有語法錯誤,將會生成可執(zhí)行文件編譯、鏈接、生成可執(zhí)行文件任務2.2用Proteus軟件進行硬件設計

用Proteus軟件進行硬件設計,首先要在計算機上正確安裝Proteus軟件。任務準備1.任務要求用安裝好的Proteus軟件設計一個單片機控制LED工作的電路并進行仿真。要求使用AT89C52單片機進行設計,且晶振頻率為12MHz。2.任務分析根據(jù)任務要求,首先用Proteus軟件繪制一個用單片機控制LED工作的電路,該電路中應包括電源電路、時鐘電路、復位電路和LED電路。學生要學會用Proteus軟件設計電路的方法。然后載入控制LED工作的單片機軟件并對電路進行仿真。任務操作3.任務設計(1)軟件打開雙擊桌面上的ISIS7Professional圖標或者單擊屏幕左下方的“開始”→“程序”→“Proteus7Professional”→“ISIS7Professional”,就進入了ProteusISIS集成環(huán)境。(2)工作界面(3)原理圖繪制

①將所需元器件加入到對象選擇器窗口。同樣的方式添加LED等其它元件輸入“AT89C”雙擊單擊按鈕P②放置元器件至圖形編輯窗口③連接元器件注意:圖中的單片機元件沒有“VCC”和“GND”引腳,這是因為Proteus軟件中,元件模型中的“電源”和“地”已經(jīng)進行了連接,“VCC”接到了“+5V”電源,“GND”接到了“地”,所以隱藏了這兩個引腳。(4)電路仿真①Proteus可以對純硬件電路仿真運行,以檢查硬件電路是否正確,此時無需加載軟件。只要在原理圖編輯完成以后,選擇“Debug”→“Execute”命令即可進行電路仿真。②將通過上一個任務生成的可執(zhí)行文件下載到原理圖中的單片機上以后,執(zhí)行“Debug”→“Execute”命令對整個系統(tǒng)進行軟、硬件全面仿真運行。當發(fā)光二極管滿足導通條件時,其顏色將發(fā)生改變表示其導通發(fā)光。項目小結(jié)本項目詳細介紹了KeilC51軟件的使用方法,包括新建工程文件、選擇CPU型號等,同時介紹了單片機硬件設計與仿真軟件Proteus的使用方法。KeilC51軟件是目前非常流行的MCS-51系列單片機開發(fā)軟件,提供了豐富的庫函數(shù)和功能強大的集成開發(fā)調(diào)試工具,工作界面是Windows操作界面。通過該軟件可以完成編譯、鏈接、生成可執(zhí)行文件等整個開發(fā)流程。Proteus軟件是英國Labcenterelectronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能對單片機及其外圍電子元器件進行仿真。項目3MCS-51系列單片機最小系統(tǒng)的設計

了解MCS-51系列單片機的內(nèi)部結(jié)構(gòu)。理解MCS-51系列單片機存儲器的分布和運用。理解MCS-51系列單片機最小系統(tǒng)的基本結(jié)構(gòu)和原理。掌握MCS-51系列單片機最小系統(tǒng)的設計方法。能獨立分析和解決電路設計中的問題。學習目標介紹MCS-51系列單片機的基本結(jié)構(gòu)。介紹MCS-51系列單片機的存儲器。介紹MCS-51系列單片機芯片。設計MCS-51系列單片機最小系統(tǒng)。工作任務任務3.1認識MCS-51系列單片機的內(nèi)部結(jié)構(gòu)任務3.2MCS-51系列單片機最小系統(tǒng)電路的設計項目拓展STC89C52實驗板電路的設計項目小結(jié)項目3MCS-51系列單片機最小系統(tǒng)的設計時鐘電路CPUROMRAMT0T1中斷系統(tǒng)串行接口并行接口P0P1P2P3TXDRXDINT0INT1定時計數(shù)器結(jié)構(gòu)框圖中央處理器CPU:8位,運算和控制功能內(nèi)部RAM:共256個RAM單元,高128個單元被專用寄存器占用,低128個單元供用戶使用,用于存放可讀寫數(shù)據(jù),運算的中間結(jié)果等。內(nèi)部ROM:4KB的8位ROM,用于存放程序、原始數(shù)據(jù)和表格。定時/計數(shù)器:兩個16位的定時/計數(shù)器,實現(xiàn)定時或計數(shù)功能。并行I/O口:4組8位的并行I/O口,既可用作輸入,也可用作輸出。串行口:一個全雙工串行口。中斷控制系統(tǒng):5個中斷源(外部中斷2個,定時/計數(shù)中斷2個,串行中斷1個)時鐘電路:用于產(chǎn)生單片機運行的時鐘脈沖序列。任務3.1認識MCS-51系列單片機的內(nèi)部結(jié)構(gòu)3.1.1MCS-51系列單片機的基本結(jié)構(gòu) 結(jié)構(gòu)框圖1

2

3

4

5

6

7

8

9

10111213141516171819

2040

39

38

37

36

35

34

33

32

313029282726252424222180318751805189C51片內(nèi)RAM片內(nèi)ROM256B4KB片外ROM可擴展64K片外RAM可擴展64K3.1.2MCS-51系列單片機的內(nèi)部存儲器1.程序存儲器(ROM——只讀存儲器)

作用:存放設計人員編寫的程序。

大?。篗CS-51的單片機內(nèi)部有4KROM。

編址范圍:4KROM編址范圍:0000H~0FFFH。外部擴展:

64KROM,編址范圍:0000H~FFFFH。

程序存儲器地址分配0000H0001H0002H(PC)0000H是程序執(zhí)行的起始單元,

在這三個單元存放一條

無條件轉(zhuǎn)移指令中斷5中斷4中斷3中斷2中斷10003H000BH0013H001BH0023H002BH外部中斷0定時器0中斷外部中斷1定時器1中斷串行口中斷8位...0FFFH0FFEH程序存儲器資源分布中斷入口地址內(nèi)部外部0000H0FFFH(4K)0000HFFFFH(64K)0000H0FFFH(4K)EA=1EA=02.數(shù)據(jù)存儲器(RAM)MCS—51系列單片機的內(nèi)部數(shù)據(jù)存儲器由讀寫存儲器RAM組成,用于存儲數(shù)據(jù)。它由RAM塊和特殊功能寄存器(SFR)塊組成。內(nèi)部RAM大小:256個字節(jié)(256B),其中低128個單元是真正的內(nèi)部RAM,可以被用來寫入或讀出數(shù)據(jù)。編址范圍:00H~FFH。外部擴展RAM:64KB編址范圍:0000H~FFFFH。0000HFFFFH(64K)內(nèi)部外部數(shù)據(jù)存儲器RAM00HFFH7FH80H(高128B)(低128B)RAM專用

寄存器00H07H08H0FH10H17H18H1FH0區(qū)R0R7R0R7R0R7R0R71區(qū)2區(qū)3區(qū)工作寄存器區(qū)可位尋址區(qū)20H2FH7F78070030H7FH數(shù)據(jù)緩沖區(qū)/堆棧區(qū)內(nèi)部RAM存儲器

11第3區(qū)18H~1FH

01第1區(qū)08H~0FHRS1RS0寄存器區(qū)片內(nèi)RAM地址

00第0區(qū)00H~07H

10第2區(qū)10H~17H工作寄存器區(qū)選擇位RS0、RS1PSW位地址

CYACF0RS1RS0OVF1P

00H—1FH,供用戶編程使用,臨時存放8位信息。共四組,每組8個單元,即8個寄存器當某一組被設定成工作寄存器組后,該組中的8個寄存器,從低地址到高地址就分別稱為R0-R7,從而可以把它們用作通用寄存器,并可按寄存器尋址方式被訪問。一旦工作寄存器組被指定后,另外三組寄存器則同其它數(shù)據(jù)RAM一樣,只能按字節(jié)地址被予以讀寫。

(1)工作寄存器區(qū)00H07H08H0FH10H17H18H1FH0區(qū)R0R7R0R7R0R7R0R71區(qū)2區(qū)3區(qū)工作寄存器區(qū)可位尋址區(qū)20H2FH7F78070030H7FH數(shù)據(jù)緩沖區(qū)/堆棧區(qū)位尋址區(qū)(20H—2FH)16個字節(jié)。16*8=128位,每一位都有一個位地址,范圍為:00H—7FH,位地址區(qū)也可作為一般RAM使用。(2)位尋址區(qū)00H07H08H0FH10H17H18H1FH0區(qū)R0R7R0R7R0R7R0R71區(qū)2區(qū)3區(qū)工作寄存器區(qū)可位尋址區(qū)20H2FH7F78070030H7FH數(shù)據(jù)緩沖區(qū)/堆棧區(qū)(3)數(shù)據(jù)緩沖區(qū)30H—7FH,即用戶區(qū),共80個單元。用于存放運算數(shù)據(jù)和結(jié)果。實際上不使用的位尋址的字節(jié)和不使用的工作寄存器區(qū)都可以用作數(shù)據(jù)緩沖區(qū)使用。00H07H08H0FH10H17H18H1FH0區(qū)R0R7R0R7R0R7R0R71區(qū)2區(qū)3區(qū)工作寄存器區(qū)可位尋址區(qū)20H2FH7F78070030H7FH數(shù)據(jù)緩沖區(qū)/堆棧區(qū)注意:堆棧一般開辟在這個區(qū)域又稱為專用寄存器,專用于控制、管理片內(nèi)算術(shù)邏輯部件、并行I/O口、串行I/O口、定時器/計數(shù)器、中斷系統(tǒng)等功能模塊的工作。用戶在編程時可以置數(shù)設定。離散地分布在RAM的高128個單元(80H-FFH)。注意:SFR的實際個數(shù)和單片機的型號有關(guān),51單片機有21個。每個SFR占有一個RAM單元,它們分布在80H~FFH的地址范圍內(nèi),沒有被SFR占用的RAM單元實際并不存在,訪問它們也是沒有意義的。3.特殊功能寄存器(SFR)特殊功能寄存器一覽表注意:凡是地址以“0”和“8”結(jié)尾的單元都是可位尋地址的,地址的范圍是80H~FFH。

11個可以進行位尋址?!钐貏e提示:對SFR只能使用直接尋址方式,書寫時可使用寄存器符號,也可用寄存器單元地址。序號SFR地址SFR符號復位值功能說明1E0HACC00H累加器可位尋址2F0HB00HB寄存器可位尋址3D0HPSW00H程序狀態(tài)字可位尋址480HP0FFHP0口鎖存寄存器可位尋址581HSP07H堆棧指針682HDPL00H數(shù)據(jù)指針DPTR低8位783HDPH00H數(shù)據(jù)指針DPTR高8位887HPCON0XXX0000B電源控制寄存器988HTCON00H定時器控制寄存器可位尋址1089HTMOD00H定時器0和1的模式寄存器118AHTL000H定時器0低8位128BHTL100H定時器1低8位138CHTH000H定時器0高8位148DHTH100H定時器1高8位1590HP1FFHP1口鎖存寄存器可位尋址1698HSCON00H串行口控制寄存器可位尋址1799HSBUFXXXXXXXXB串行口數(shù)據(jù)緩沖寄存器180A0HP2FFHP2口鎖存寄存器可位尋址190A8HIE0X000000B中斷允許控制寄存器可位尋址200B0HP3FFHP3口鎖存寄存器可位尋址210B8HIPXX000000B中斷優(yōu)先級控制寄存器可位尋址幾個特殊功能寄存器:(1)累加器(ACC或A):最常用的一個8位特殊功能寄存器。該寄存器可位尋址。幾乎全部指令都可用它作為操作數(shù),有些指令必須用它作為目標操作數(shù)。(2)B寄存器:一個8位特殊功能寄存器。乘除法指令必須用它作為其中的一個操作數(shù)。它也可作為普通RAM單元使用。(3)堆棧指針(SP):一個8位特殊功能寄存器。單片機復位時,SP為07H,它總是指向棧頂。它主要用在子程序調(diào)用、中斷響應及返回中。(4)數(shù)據(jù)指針(DPTR):一個16位特殊功能寄存器,可分為兩個8位寄存器,高8位為DPH,低8位為DPL。該寄存器主要用于存放程序存儲器和片外數(shù)據(jù)存儲器的地址。(5)程序狀態(tài)字(PSW

):一個8位的特殊功能寄存器,位于單片機的特殊功能寄存器區(qū),用來存放運算結(jié)果的一些特征。PSWCY——

進位/借位標志;位累加器(簡稱C)。AC——

半字節(jié)進位標志,輔助進/借位標志;用于十進制調(diào)整。F0——

用戶定義標志位;軟件置位/清零。RS1、RS0——寄存器區(qū)選擇控制位。OV——

溢出標志;硬件置位/清零(注意溢出條件)。P——

奇偶標志;A中1的個數(shù)為奇數(shù)P=1;否則P=0?!痢撐粺o定義。

P×OVRS0RS1

F0

AC

CYPSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0程序計數(shù)器(PC):一個不屬于特殊功能寄存器、物理上獨立的寄存器。是一個16位寄存器,具有自動加1功能,總是存放將要被執(zhí)行指令的首地址。單片機復位后,PC為0000H,單片機的應用程序應放在以程序存儲器地址0000H開始的單元中。3.1.3MCS-51系列單片機內(nèi)部存儲器的讀寫控制1.任務要求編寫一段程序,對單片機內(nèi)部幾個特殊功能寄存器進行讀寫,利用KeilC51軟件的調(diào)試功能,觀察程序運行后各存儲單元的變化情況。2.任務分析根據(jù)任務要求,分別給P0口、程序狀態(tài)字PSW和累加器ACC賦不同的值,同時將累加器ACC里的值讀出存到變量dat中,通過調(diào)試觀察P0、PSW、ACC和變量dat的值的變化。3.任務設計(1)程序設計//***************************************************************//宏定義,包含頭文件#include<reg52.h>//***************************************************************//主程序main(){ unsignedchardat;//定義變量dat為無符號字符型

P0=0x00;//將P0口清0 PSW=0x80;//將0x80賦給PSW ACC=0xf0;//將0xf0傳送到累加器ACC dat=ACC;//將累加器ACC的內(nèi)容送給變量dat}(2)觀察程序執(zhí)行之后各存儲器單元的變化

①在Keil下創(chuàng)建工程項目,輸入源程序,并編譯鏈接生成HEX文件。②在Keil的“Debug”菜單下選擇“Start/StopDebugSession”子菜單,或者點擊快捷圖標,進入調(diào)試界面。③點擊菜單View下的“MemoryWindow”命令,打開存儲器窗口。存儲器窗口用來顯示系統(tǒng)中各種內(nèi)存中的值,通過在Address后的編緝框內(nèi)輸入“字母:數(shù)字”即可顯示相應內(nèi)存值。例如鍵入C:0,即顯示從0開始的ROM單元中的值。本程序的二進制代碼。④點擊菜單View下的“WatchWindows”命令,打開觀察窗口,并將變量dat添加進去。⑤選擇“Peripherals”菜單下的“I/O-Ports”,選中“Port0”后,會彈出P0的調(diào)試窗口,可以觀察P0口每一位的電平狀態(tài)。觀察窗口P0調(diào)試窗口P0口的輸出鎖存器的狀態(tài)P0口引腳狀態(tài)⑥運行程序。采用單步運行方式,觀察P0,PSW,ACC等相關(guān)寄存器以及變量dat的變化,運行結(jié)果如下圖。任務3.2

MCS-51系列單片機最小系統(tǒng)電路的設計

3.2.1MCS-51系列單片機芯片介紹區(qū)分芯片引腳序號芯片表面會有一個凹進去的小圓坑,或用顏色標識的小標記,,這些標記所對應的就是芯片第1腳,然后逆時針數(shù)下去就是最后一個引腳。引腳定義與說明1)主電源引腳(2根)VCC(Pin40):電源輸入,接+5V電源GND(Pin20):接地線2)外接晶振引腳(2根)XTAL1(Pin19):片內(nèi)振蕩電路的輸入端XTAL2(Pin18):片內(nèi)振蕩電路的輸出端3)控制引腳(4根)RST/VPP(Pin9):復位引腳,引腳上出現(xiàn)2個機器周期的高電平將使單片機復位初始化。設計單片機應用系統(tǒng)時,這個引腳一定要連接相應復位電路。(Pin29):外部存儲器讀選通信號。PSEN有效(低電平)時,可實現(xiàn)對外部ROM單元的讀操作。

ALE/(Pin30):地址鎖存允許信號。在系統(tǒng)擴展時,ALE用于把P0口輸出的低8位地址鎖存起來,以實現(xiàn)低位地址和數(shù)據(jù)的隔離。此外,由于ALE是以晶振的1/6固定頻率輸出的正脈沖,因此它可作為外部時鐘或外部定時脈沖使用。/VPP(Pin31):程序存儲器的內(nèi)外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內(nèi)部程序存儲器讀指令。當電源發(fā)生故障,電壓降低到下限值時,備用電源經(jīng)此端向內(nèi)部RAM提供電壓,以保護內(nèi)部RAM中的信息不丟失。4)可編程輸入/輸出引腳(32根)

P0(Pin39~Pin32)P1(Pin1~Pin8)P2(Pin21~Pin28)P3(Pin10~Pin17)(兼做特殊功能口)P1P3P2P0

1.單片機復位的條件

在復位引腳RST(Pin9)持續(xù)出現(xiàn)24個振蕩器脈沖周期(即2個機器周期)的高電平信號將使單片機復位。通常為了保證應用系統(tǒng)可靠地復位,復位電路應使引腳RST保持10ms以上的高電平。

3.2.2單片機復位電路的設計

2.單片機的復位電路常見復位電路有上電自動復位和按鍵手動復位兩種,如圖(a)、(b)所示。

(a)上電復位電路(b)按鍵復位電路圖(a)為上電復位電路,在上電瞬間,由于電容上電壓不能突變,電容處于充電(導通)狀態(tài),故RST腳的電壓與VCC相同。隨著電容的充電,它兩端的電壓上升,使得引腳RST上電壓下降,最終使單片機退出復位狀態(tài)。選擇合理的充電常數(shù),就能保證在RST端有2個機器周期以上的高電平,從而使單片機內(nèi)部復位。C的推薦值是10μF,R的推薦值是10kΩ。圖(b)是按鍵手動復位電路。開關(guān)未按下時,為上電復位電路,開關(guān)按下時,RST端通過電阻Rl與VCC電源接通,提供足夠時間的復位電平,使單片機復位。

1.時鐘電路設計兩種方式產(chǎn)生時鐘:內(nèi)部振蕩方式

外部時鐘方式

(1)內(nèi)部時鐘電路利用單片機內(nèi)部的振蕩電路,并在XTALl和XTAL2兩引腳間外接石英晶體(或陶瓷諧振器)和電容構(gòu)成的并聯(lián)諧振電路,使內(nèi)部振蕩器產(chǎn)生自激振蕩。晶振可以在0~24MHz之間,不超過33MHz。外接石英晶體時,C1和C2一般取30pF±10pF;外接陶瓷諧振器時,Cl和C2一般取40pF±10pF。電容的大小對振蕩器頻率有微小的影響,可起頻率微調(diào)的作用。3.2.3單片機時鐘電路的設計

晶振類型:石英晶振、有源晶振

晶振:0~33MHz

(6MHz、12MHz、24MHz、33MHz、

11.0592MHz、22.1184MHz)

起振電容類型:瓷片電容、獨石電容

起振電容:30±10pF

(20pF、22pF、27pF、30pF)

內(nèi)部時鐘電路

(2)外部時鐘電路

外部方式的時鐘電路如圖,當有現(xiàn)成的時鐘信號時,可直接將時鐘從XTAL2接入,XTAL1接地即可。注:單片機系統(tǒng)中多采用內(nèi)部時鐘方式。2.時序

所謂時序是指各種信號的時間序列,它表明了指令執(zhí)行中各種信號之間的相互關(guān)系。單片機本身就是一個復雜的時序電路,CPU執(zhí)行指令的一系列動作都是在時序電路控制下一拍一拍進行的。為達到同步協(xié)調(diào)工作的目的,各操作信號在時間上有嚴格的先后次序,這些次序就是CPU的時序。51系列單片機以晶體振蕩器的振蕩周期(或外部引入的時鐘信號的周期)為最小的時序單位。所以片內(nèi)的各種微操作都是以振蕩周期為時序基準。

(1)振蕩周期(Tosc):又稱節(jié)拍(用P表示),是指為單片機提供時鐘脈沖信號的振蕩源的周期。

Tosc=1/fosc

(2)狀態(tài)周期:用S表示。每個狀態(tài)周期為振蕩周期的2倍,是振蕩周期經(jīng)二分頻后得到的。

S=2P=P1+P2(3)機器周期(T機):CPU完成一個基本操作所需要的時間。一個機器周期包含6個狀態(tài)周期S1~S6,也就是12個振蕩周期。即:T機=12

×Tosc=12×1/fosc(4)指令周期:不同的指令,其執(zhí)行時間各不相同,如果用占用機器周期多少來衡量的話,MCS-51單片機的指令可分為單周期指令、雙周期指令及四周期指令。

例如,若fosc=12MHz,則一個振蕩周期Tosc=1/12μs,狀態(tài)周期S=1/6μs,機器周期T機=1μs,指令周期=1~4μs51單片機工作的三個基本條件:1.電源正常2.復位正常3.時鐘正常3.2.4單片機最小系統(tǒng)電路的設計1.任務要求設計一個單片機可以正常工作的最簡單電路,即單片機最小系統(tǒng)。要求使用STC89C52單片機進行設計,且晶振頻率為12MHz。2.任務分析設計的最小系統(tǒng)應該具備電源電路、時鐘電路和復位電路三個部分。時鐘電路的設計可以采用內(nèi)部時鐘方式,而復位電路可以采用上電自動復位的方式。3.任務設計

(1)器件的選擇單片機是本任務的主要芯片,選擇STC89C52,石英晶體外接兩只電容構(gòu)成時鐘電路,復位電路由電阻和電解電容組成,選擇的器件清單如下:器件名稱數(shù)量(只)STC89C52112MHz晶體130pF瓷片電容222uF電解電容110kΩ電阻1(2)電路圖原理圖設計復位電路時鐘電路電源地注意:在具備上述3個電路的情況下,就構(gòu)成了一個最簡單的單片機最小系統(tǒng),但是它沒什么實際意義,因為它不能跟外界進行交流。實際應用中由用戶根據(jù)需要來添加輸出電路,同時配合各種輸入、各種外設的使用,最終形成龐大的單片機系統(tǒng)。項目拓展STC89C52實驗板電路的設計1.實驗板最小系統(tǒng)的設計實驗板的單片機最小系統(tǒng)電路原理圖如附錄B中所示。(1)電源電路①USB1是USB插座,通過USB連線連接到電腦可以給實驗板供電以及進行串口通訊。②SW3為電源開關(guān),LED10為電源指示燈。③TEMP1是一個可選配STC自動下載模塊,如果沒有選配該模塊,需要用跳帽(短路塊)短接TEMP1的第1、2腳,否則整個實驗板不能供電。④J35、J36為電源插針,可以通過此插針向外部擴展模塊提供+5V電壓,也可以從外部電源引入+5V電壓。⑤J38為直接使用+5V直流輸入。注意:由于實驗板是直接采用USB線通過電腦供電、通訊、下載一體的,所以使用時不需要外接電源只要將板子和電腦用USB線接上就行了;如果要接外接電源,一定要接+5V,否則可能會損壞單片機和主板上的芯片。單片機和擴展插座電源電路(2)時鐘電路時鐘電路的設計采用內(nèi)部時鐘方式,晶振可以拔插,在使用過程中,如果需要更換不同頻率的晶振,一定要確保晶振的類型和特性參數(shù)基本相同。(3)復位電路阻容復位包含兩種復位方式,低電平復位與高電平復位。由于51單片機為高電平復位,因此使用時應通過跳帽(短路塊)將1、2腳相連。時鐘電路2.實驗板其他功能模塊的設計在單片機最小系統(tǒng)的基礎上,根據(jù)實際需要添加發(fā)光二極管、數(shù)碼管、鍵盤等輸入或輸出電路,就可以實現(xiàn)不同的功能,下面介紹單片機實驗板的一些常用功能模塊的設計。

(1)LED模塊

LED模塊電路見附錄B中“8個LED燈”電路。RP1為排阻,390歐姆;J9為插針,用于連接需要使用的IO口。(2)數(shù)碼管模塊①見圖中“獨立共陽數(shù)碼管”電路,用來演示數(shù)碼管基本結(jié)構(gòu)。②見圖中“8位共陰數(shù)碼管”電路,使用前必須把J50插針用跳帽跳上,用于數(shù)碼管的整體供電,如果平時不需要使用共陰數(shù)碼管,把跳帽拔掉即可。(3)鍵盤鍵盤有獨立鍵盤和矩陣鍵盤兩種,使用時,用杜邦線連接鍵盤接口和單片機IO口。(4)喇叭見圖中“喇叭及電機電路”,使用時用一根杜邦線連接J42和單片機的一位IO口即可。(5)溫度傳感器見圖中“2路溫度傳感器”電路,設計了2路18B20接口,可以使用任意一個或者2個單獨連接,也可以把2個18B20連接到一根線上操作。(6)AD/DA模塊見圖中“數(shù)模/模數(shù)轉(zhuǎn)換”電路,J31與J32用于切換AD輸入端口,因為只有2個電位器,但有4個輸入端口,所以同時只能使用2個,這2個插針用于切換輸入端口。J33是DA輸入模擬LED燈選擇開關(guān),用跳帽跳上后LED起作用。(7)串口通訊見圖中“串口通訊”電路,單片機串口默認連接的板載usb-232芯片,使用一根USB接口就可以進行串口實驗。J18用于切換串口公口或母口連接到單片機的P3.0、P3.1,平時不用該端口跳帽可以懸空。項目小結(jié)本項目主要介紹了MCS-51系列單片機的芯片引腳、基本結(jié)構(gòu)和內(nèi)部存儲器,同時介紹了其復位電路、時鐘電路的設計方法,通過兩個任務完成了單片機內(nèi)部存儲器的讀寫控制和單片機最小系統(tǒng)的設計。MCS-51系列單片機采用40引腳雙列直插式DIP封裝,內(nèi)部由中央處理器,時鐘電路、程序存儲器、數(shù)據(jù)存儲器、中斷系統(tǒng)、定時/計數(shù)器、并口和一個串行通信模塊組成。保證單片機正常運行的三個基本條件:電源正常、時鐘電路正常、復位電路正常。項目4單片機控制LED的設計了解MCS-51系列單片機I/O口的結(jié)構(gòu)。掌握MCS-51系列單片機I/O口的特點及應用方法。掌握單片機控制LED的硬件設計方法。能熟練編寫單片機控制LED閃爍的程序。能獨立分析和解決硬件設計和軟件設計中的問題。能利用團隊的力量完成任務,培養(yǎng)團隊合作精神。學習目標工作任務敘述MCS-51系列單片機I/O口的結(jié)構(gòu)和特點。設計單片機控制單個LED閃爍的電路和工作軟件。設計單片機控制多個LED循環(huán)閃爍的電路和工作軟件。任務4.1單片機控制單個LED閃爍的設計任務4.2單片機控制多個LED循環(huán)點亮的設計

項目拓展STC89C52實驗板彩燈的花式控制項目小結(jié)項目4單片機控制LED的設計

任務4.1單片機控制單個LED閃爍的設計4.1.1MCS-51系列單片機的I/O口介紹

MCS-51系列單片機有4個8位的并行I/O接口:P0、P1、P2和P3口。它們是特殊功能寄存器中的4個。這4個口,既可以作輸入,也可以作輸出,既可按8位處理,也可按位方式使用。輸出時具有鎖存能力,輸入時具有緩沖功能。

1.P0口P0口是一個三態(tài)雙向口,包括一個輸出鎖存器、兩個三態(tài)緩沖器、輸出驅(qū)動電路和輸出控制電路組成,它的一位結(jié)構(gòu)如圖:輸出驅(qū)動器控制電路P0口功能1、通用I/O接口:不需要外部擴展時,內(nèi)部控制信號將使MUX開關(guān)接通到鎖存器。此時,由于P0口沒有內(nèi)部上拉電阻,通常要在外部加一個上拉電阻來提高驅(qū)動能力。2、地址/數(shù)據(jù)分時復用:需要進行外部擴展時,內(nèi)部控制信號將使MUX開關(guān)接通到內(nèi)部地址/數(shù)據(jù)線。此時,P0口在ALE信號的控制下,分時輸出低8位地址和8位數(shù)據(jù)信號。P0口的工作原理(1)通用I/O口①用作輸入口(端口外數(shù)據(jù)內(nèi)部寄存器)方式1(讀鎖存器):Q緩沖器2D內(nèi)部總線,適于“讀—修改—寫”方式2(讀引腳):P0.x緩沖器1D內(nèi)部總線。

作為通用I/O使用,是一個準雙向口:“在輸入數(shù)據(jù)時應先把口置1,使V1、V2都截止,引腳處于懸浮狀態(tài),可作高阻抗輸入”②用作輸出口(片內(nèi)數(shù)據(jù)端口)數(shù)據(jù)鎖存MUXP0.x(2)地址/數(shù)據(jù)總線口

①輸出:地址/數(shù)據(jù)為1,P0·x——高地址/數(shù)據(jù)為0,P0·x——低

②輸入:經(jīng)緩沖器1讀入

(1)P0口既可作地址/數(shù)據(jù)總線使用,也可作通用I/O口使用。當P0口作地址/數(shù)據(jù)總線使用時,就不能再作通用I/O口使用了。(2)P0口作輸出口使用時,輸出級屬漏極開路,必須外接上拉電阻,才有高電平輸出。(3)P0口作輸入口讀引腳時,應先向鎖存器寫1,使V1、V2截止,不影響輸入電平。P0口特點2.P1口P1口是準雙向口,它只能作通用I/O接口使用。結(jié)構(gòu)與P0口不同,它的輸出只由一個場效應管V1與內(nèi)部上拉電阻組成。(1)P1口是唯一的單功能口,僅能作為通用I/O口使用。因在其輸出端接有上拉電阻,可以直接輸出而無需外接上拉電阻。(2)同P0口一樣,當作輸入口時,必須先向鎖存器寫“1”,使場效應管V1截止。P1口特點3.P2口P2口也是準雙向口,它有兩種用途:通用I/O接口和高8位地址線。

P2口作I/O端口使用時:內(nèi)部控制信號使MUX開關(guān)接通到鎖存器,此時P2口的用法與P1口相同。P2口作外部地址總線使用時:內(nèi)部控制信號使MUX開關(guān)接通到內(nèi)部地址線,此時P2口的引腳狀態(tài)由所輸出的地址決定。需要特別指出的是,由于對片外地址的操作是連續(xù)不斷的,只要進行了外部系統(tǒng)擴展,此時P0口和P2口就不能再用作I/O端口了。4.P3口

P3口用作通用I/O口時,其工作原理同P1口類似。此外,它的每一根線還具有第二種功能?!?/p>

在真正的應用電路中,P3口的第二功能顯得更為重要。4.1.2單片機控制單個LED閃爍的設計方法1.任務要求設計一個電路,AT89C52單片機的P1.7引腳連接一個LED燈,控制LED閃爍。2.任務分析

以單片機為核心的電子設計硬件設計軟件設計單片機最小系統(tǒng)加上最簡單的輸出電路來驅(qū)動LED編程控制P1.7引腳的電平狀態(tài),使其持續(xù)一段時間的高電平,再持續(xù)一段時間的低電平3.任務設計(1)器件的選擇①發(fā)光二極管發(fā)光二極管:單向?qū)щ娦裕ㄟ^5mA左右電流即可發(fā)光,電流越大,亮度越強,但若電流過大會燒毀二極管,一般控制在3~20mA。工作電壓:紅色發(fā)光二極管1.7-2.5V

綠色發(fā)光二極管2.0-2.4V

黃色發(fā)光二極管1.9-2.4V

藍/白色發(fā)光二極管3.0-3.8V②限流電阻二極管串聯(lián)電阻的目的是為了防止發(fā)光二極管和P1.7引腳流過的電流過大,燒毀二極管或單片機,所以該電阻也稱為“限流電阻”。限流電阻的選擇:假設電源電壓為VCC,發(fā)光二極管的導通壓降為VDD,導通時流過二極管的電流為I,則限流電阻R為:R=(VCC-VDD)/I例如,若二極管的導通壓降為2.2V,導通時流過的電流為5mA,則限流電阻為560Ω。③器件清單器件名稱數(shù)量(只)AT89C52112MHz晶體122pF瓷片電容222uF電解電容110kΩ電阻1560Ω電阻1發(fā)光二極管LED1(2)硬件原理圖設計再次強調(diào):圖中的單片機元件沒有“VCC”和“GND”引腳,這是因為Proteus軟件中,元件模型中的“電源”和“地”已經(jīng)進行了連接,“VCC”接到了“+5V”電源,“GND”接到了“地”,所以隱藏了這兩個引腳。(3)軟件程序設計#include<reg52.h>//宏定義sbitled=P1^7;//用sbit關(guān)鍵字定義P1.7引腳

//延時子函數(shù)voidDelay(unsignedintt){while(--t);}

//主函數(shù),控制P1.7引腳的LED燈閃爍voidmain(void){while(1)//主循環(huán)

{led=0;//將P1.7引腳置0,對外輸出低電平

Delay(20000);//調(diào)用延時程序

led=1;//將P1.7引腳置1,對外輸出高電平

Delay(20000);//調(diào)用延時程序

}}在軟件編程中,通常使用空循環(huán)來達到延時的效果。延時時間的長短可以在KeilC51的調(diào)試狀態(tài)下分析。(4)軟硬件聯(lián)合調(diào)試1.任務要求

設計一個電路,AT89C52單片機的P1口連接8只LED燈,按以下順序點亮,形成流水燈的效果:

①從P1.0到P1.7連接的8只LED燈逐個點亮;

②從P1.0到P1.7連接的8只LED依次全部點亮;

③從P1.7到P1.0連接的8只LED燈逐個點亮;

④從P1.7到P1.0連接的8只LED依次全部點亮。任務4.2單片機控制多個LED循環(huán)點亮的設計2.任務分析任務要求單片機控制8個LED燈,當需要對某個I/O口的八位一起操作時,一般采用整體操作的方式,即總線的方式。在軟件設計時可以定義一個變量來給P1口賦值,賦的值不同點亮的LED燈不同。由于8只LED燈要按一定規(guī)律點亮,這就要求對給P1口賦的變量進行移位,移位操作既可以用標準C中的左移、右移運算符來實現(xiàn),也可以用C51庫自帶的函數(shù)來實現(xiàn)。

移位運算符

循環(huán)移位函數(shù)

注意:循環(huán)移位函數(shù)_crol_()和_cror_()包含在intrins.h頭文件中,因此如果在程序中要用到這類函數(shù),就必須在程序的開頭處包含intrins.h這個頭文件。由于用到的發(fā)光二極管較多,每個發(fā)光二極管都需要限流電阻,硬件電路會顯得比較復雜,所以這里使用了排阻。排阻,就是若干個參數(shù)完全相同的電阻,它們的一個引腳都連到一起,作為公共引腳,其余引腳正常引出。如果一個排阻是由n個電阻構(gòu)成的,那么它就有n+1個引腳,一般來說最左邊的那個是公共引腳。它在排阻上一般用一個色點標出來。

直插式排阻貼片式排阻☆排阻一般用在數(shù)字電路上,比如作為某個并行口的上拉或者下拉電阻用。使用排阻比用若干只固定電阻更方便。3.任務設計(1)器件的選擇器件清單器件名稱數(shù)量(只)AT89C52112MHz晶體122pF瓷片電容222uF電解電容110kΩ電阻1560Ω×8排阻1發(fā)光二極管LED8(2)硬件原理圖設計(3)軟件程序設計#include<reg52.h>//宏定義,52單片機頭文件#include<intrins.h>//包含_crol_、_cror_函數(shù)所在的頭文件#defineuintunsignedint#defineucharunsignedchar

//延時子函數(shù)voidDelay(unsignedintt){while(--t);}//主函數(shù),循環(huán)點亮LED燈voidmain(){uchark,recy;while(1)//大循環(huán){recy=0xfe;for(k=1;k<=8;k++)//8只LED燈從P1.0到P1.7逐個點亮

{P1=recy;//先點亮P1.0的LED燈

Delay(50000);//延時一段時間

recy=_crol_(recy,1);//將recy循環(huán)左移1位后再賦給recy}

recy=0xfe;for(k=1;k<=8;k++)//8只LED燈從P1.0到P1.7依次全部點亮

{P1=recy;Delay(50000);recy=recy<<1;//將recy左移1位后再賦給recy}P1=0xff;//全部熄滅

Delay(50000);recy=0x7f;for(k=1;k<=8;k++)//8只LED燈從P1.7到P1.0逐個點亮

{P1=recy;//先點亮P1.7的LED燈

Delay(50000);recy=_cror_(recy,1);//將recy循環(huán)右移1位后再賦給recy}recy=0x7f;for(k=1;k<=8;k++)//8只LED燈從P1.7到P1.0依次全部點亮

{P1=recy;Delay(50000);recy=recy>>1;//將recy右移1位后再賦給recy}P1=0xff;//全部熄滅

Delay(50000);}}(4)軟硬件聯(lián)合調(diào)試將編寫的程序在KeilC51中編譯成*.hex后調(diào)入Proteus硬件電路圖的AT89C52中運行,八只LED燈從P1.0到P1.7逐個點亮,接下來再從P1.0到P1.7依次全部點亮,然后全部熄滅后又從P1.7到P1.0逐個點亮,最后再從P1.7到P1.0依次全部點亮,如此反復形成流水燈。項目拓展STC89C52實驗板彩燈的花式控制

在任務4.2中設計的流水燈為八個LED按一個方向循環(huán)點亮,此外我們還可以通過編程控制LED燈,使它以我們想要的各種方式點亮,而且LED燈點亮頻率可以通過改變延時時間來實現(xiàn)。下面編寫程序控制實驗板上的八個LED燈按照不同花式循環(huán)點亮。

(1)實驗板8個LED燈電路如圖所示。RP1為390歐姆排阻;J9為插針,用于連接需要使用的I/O口,此處用杜邦線連接單片機的P1口。(2)編寫程序,控制八個LED燈使其以1s左右的時間間隔按不同形式循環(huán)點亮。//宏定義#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharvoiddelay(uint);//聲明延時函數(shù)uinta;//定義循環(huán)用變量//定義循環(huán)用數(shù)據(jù)表格ucharcodetable[]={0xff,//全滅0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,//從第0位到第7位依次逐個點亮0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,//從第0位到第7位/依次全部點亮0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,//從第7位到第0位依次全部熄滅0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,//分別從第7位和第0位向中間靠攏逐個點亮//然后從中間向兩邊分散逐個點亮0x7e,0x3c,0x18,0x00,0x00,0x18,0x3c,0x7e,//分別從第7位和第0位向中間靠攏全部點亮,//然后從中間向兩邊分散熄滅0x00//全亮};//定義循環(huán)用數(shù)據(jù)表格//延時子函數(shù),通過time值改變延時時間voiddelay(uinttime){uinti,j;for(i=time;i>0;i--)for(j=110;j>0;j--);}//*************************************************************************//主函數(shù),循環(huán)點亮LED燈voidmain(){while(1){for(a=0;a<42;a++){P1=table[a];//以a做索引號,從數(shù)組中取值送給P1口

delay(1000);//調(diào)用延時子程序,晶振頻率12MHz時,延時約1s }}}//*************************************************************************分析:這個程序中,根據(jù)LED燈點亮的方式,將需要送向P1口的數(shù)據(jù)預先存放到數(shù)組中,程序運行中,只要按照順序?qū)⑦@些數(shù)組元素送向P1口,就可以實現(xiàn)不同花式的彩燈。數(shù)組定義時,寫“code”的含義是告訴單片機,定義的數(shù)組要放在ROM(程序存儲區(qū))里面,寫后就不能再更改。程序可以簡單的分為code(程序)區(qū)和data(數(shù)據(jù))區(qū),code區(qū)在運行的時候是不可以更改的,data區(qū)放全局變量和臨時變量,是要不斷改變的,CPU從code區(qū)讀取指令,對data區(qū)的數(shù)據(jù)進行運算處理。由于單片機上的RAM區(qū)很小,而ROM區(qū)相對來說比較大,當需要定義的數(shù)據(jù)太多時,會存在RAM區(qū)放不下的情況。所以編寫程序時,對于那些在程序運行中一直不變的數(shù)據(jù),可在數(shù)據(jù)類型名和變量名之間加上“code”,這樣數(shù)據(jù)就會被存放到ROM區(qū),節(jié)省了RAM區(qū)的空間。注意:在單片機編程中,要根據(jù)變量的取值范圍,合理的定義變量的數(shù)據(jù)類型,節(jié)省RAM區(qū)。(3)將調(diào)試通過的程序下載到實驗板觀察效果,實驗板上的單片機為STC89C52,可直接使用STC-ISP下載軟件將程序燒寫到單片機上。STC-ISP的打開界面如圖所示。按照界面中操作步驟,依次選取單片機型號、打開HEX文件、選擇串口、點擊下載就可以將程序下載到單片機中。注意:

STC單片機下載時必須進行冷啟動,即在點擊“下載”之前實驗板電源是關(guān)閉的,點擊下載按鈕后,大概2秒鐘,打開實驗板電源,出現(xiàn)藍色進展條并有提示音表示下載成功。項目小結(jié)本項目主要介紹了MCS-51系列單片機I/O口的結(jié)構(gòu)、特點和應用,通過兩個任務實現(xiàn)了單片機對單個LED閃爍和多個LED循環(huán)點亮的控制。MCS-51系列單片機有4個8位的并行I/O接口:P0、P1、P2和P3口。對于P0口要注意其內(nèi)部沒有上拉電阻,所以在硬件設計中要給P0口外接上拉電阻,以保證P0口可以輸出高電平。P1口是唯一一個只有輸入/輸出功能的I/O口。P0口和P2口當有外部擴展存儲器時,作為數(shù)據(jù)/地址分時復用口。P3口的每個引腳都具有第二功能。對于單片機的編程,離不開對特殊功能寄存器的操作,所以在程序中一定要有包含對特殊功能寄存器聲明的頭文件。

項目5

定時器與脈沖計數(shù)器的設計了解單片機定時/計數(shù)器的組成。掌握單片機定時/計數(shù)器的工作原理和功能運用方法。掌握單片機定時/計數(shù)器的初始化方法。掌握定時器的設計方法。掌握脈沖計數(shù)器的設計方法。能獨立分析和解決硬件設計和軟件設計中的問題。能利用團隊的力量完成任務,培養(yǎng)團隊合作精神。學習目標敘述單片機定時/計數(shù)器4種工作方式的工作原理;敘述單片機定時/計數(shù)器的初始化方法;設計定時器的工作程序;設計脈沖計數(shù)器的電路和工作程序。工作任務任務5.1定時器的設計項目5

定時器與脈沖計數(shù)器的設計任務5.2脈沖計數(shù)器的設計項目拓展STC89C52實驗板分頻器的設計項目小結(jié)

單片機定時/計數(shù)器的結(jié)構(gòu)

實質(zhì)是加1計數(shù)器(高8位、低8位);5.1.1MCS-51單片機內(nèi)部定時/計數(shù)器的原理工作方式控制寄存器TMOD,工作方式設置;定時器控制寄存器TCON,啟動、停止及設置溢出標志。任務5.1定時器的設計TMOD中,各有一個控制位(C/T),分別用于控制定時/計數(shù)器T0和T1工作在定時器方式還是計數(shù)器方式。

定時/計數(shù)器工作原理計數(shù)功能----計數(shù)脈沖來自相應的外部輸入引腳,T0為P3.4,T1為P3.5。定時功能----計數(shù)輸入信號是內(nèi)部時鐘脈沖,每個機器周期使寄存器的值加1。所以,計數(shù)頻率是振蕩頻率的1/12。

定時模式,對內(nèi)部機器周期計數(shù)定時時間T=計數(shù)值NxT機計數(shù)模式,對外部事件脈沖計數(shù)計數(shù)脈沖周期要大于2T機計數(shù)值:溢出時計數(shù)器值-計數(shù)初值。

計數(shù)器全1時,再輸入1個脈沖就回零,并發(fā)生

溢出(TCON中TF0或TF1置1)。

計數(shù)器脈沖來源:

振蕩器脈沖經(jīng)過12分頻T0或T1引腳的外部脈沖1.工作方式控制寄存器TMOD

T1控制T0控制M0

溫馨提示

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

評論

0/150

提交評論