版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
單片機項目創(chuàng)建項目一項目1單片機項目創(chuàng)建項目2基于I_O口的電路設計項目3基于定時_計數(shù)器的萬年歷電路設計項目4基于串口通信的電路設計項目5基于AD_DA轉(zhuǎn)換的數(shù)字電壓表與函數(shù)信號發(fā)生器電路設計項目6基于液晶顯示器的風扇控制電路設計項目7基于矩陣鍵盤的電子密碼鎖電路設計與基于點陣屏的動態(tài)顯示電路設計全套可編輯PPT課件
拓展學習提問:同學們,大家各抒己見,探討下學好單片機,對將來就業(yè)有什么樣的幫助?你打算如何學好這門課程?單片機項目創(chuàng)建項目說明本項目主要介紹單片機的發(fā)展與用途、單片機的學習方法、單片機的C51語言、單片機開發(fā)軟件Keil的安裝與使用,以及電路仿真軟件Proteus的使用。本項目共設置了安裝Keil軟件與創(chuàng)建Keil工程、創(chuàng)建Proteus工程與設計仿真電路等實訓模塊,要求學生學會正確安裝Keil軟件,并保證安裝后的Keil軟件能正常使用;正確創(chuàng)建Proteus工程,并能在元件庫中找到仿真電路所需的元器件進行電路繪制。單片機項目創(chuàng)建(1)了解單片機的發(fā)展與用途。
(2)了解單片機的學習方法。
(3)掌握單片機C51語言的基本語法。知識目標:能力目標:(1)能熟練安裝Keil軟件與創(chuàng)建Keil工程。(2)能熟練創(chuàng)建Proteus工程與設計仿真電路。學習目標拓展學習C51語言是基于單片機的C語言,與標準C語言不同的是C51語言運行于單片機平臺上,并根據(jù)單片機的硬件特點擴展了部分關(guān)鍵字。
C51語言項目基礎知識項目基礎知識一、單片機的發(fā)展單片機(SingleChipMicrocomputer,SCM)是一種集成電路芯片,它采用超大規(guī)模集成電路技術(shù)將具有數(shù)據(jù)處理能力的中央處理器(CPU)、隨機存儲器(RAM)、只讀存儲器(ROM)、多種I/O(輸入/輸出)口和中斷系統(tǒng)、定時/計數(shù)器等部件【有些還包括顯示驅(qū)動電路、脈寬調(diào)制電路、多路轉(zhuǎn)換電路、A/D(模擬/數(shù)字)轉(zhuǎn)換電路等】集成到一塊硅片上,屬于一個小而完善的微型計算機系統(tǒng),在工業(yè)控制領域被廣泛應用。單片機也被稱為微控制器,最早被用在工業(yè)控制領域。但現(xiàn)在的單片機是由芯片內(nèi)僅有CPU的專用處理器發(fā)展而來的。拓展學習集成電路芯片是一種將大量晶體管、二極管、電阻、電容等元件集成在硅片上形成的微型電路結(jié)構(gòu)。它通常包括一個硅基板、電路、固定封環(huán)、接地環(huán)和防護環(huán)等部件。集成電路芯片的發(fā)展遵循摩爾定律,通過縮小晶體管的尺寸來提升計算能力和性能。然而,隨著尺寸微縮接近物理極限,傳統(tǒng)的集成電路芯片面臨設計周期長、成本高的問題,因此集成芯片(IntegratedChips)作為一種新興技術(shù)應運而生。
集成電路芯片拓展學習脈沖寬度調(diào)制(PWM)是一種對模擬信號電平進行數(shù)字編碼的方法。它通過高分辨率計數(shù)器對方波的占空比進行調(diào)制來對一個具體模擬信號的電平進行編碼。PWM信號仍然是數(shù)字信號,因為在給定的任何時刻,滿幅值的直流供電要么完全有(ON),要么完全無(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復脈沖序列被加到模擬負載上去的。通,即直流供電被加到負載上;斷,即直流供電被斷開。只要有足夠的帶寬,任何模擬信號都可以使用PWM進行編碼。
脈寬調(diào)制電路拓展學習微控制器是將微型計算機的主要部分集成在一個芯片上的單芯片微型計算機。
微控制器項目基礎知識早期的單片機都是4位或8位的,如Intel的8031單片機,它因為簡單可靠且性能優(yōu)良而獲得了很多好評。此后,Intel公司又在8031單片機的基礎上研發(fā)出了MCS-51系列單片機,基于這一系列的單片機系統(tǒng)直到現(xiàn)在還在被廣泛使用。隨著工業(yè)控制領域?qū)纹瑱C要求的提高,市場上出現(xiàn)了16位單片機,但因其性價比不理想,當時并未得到廣泛應用。20世紀90年代后期,單片機的性能得到了跨越式的發(fā)展。隨著Inteli960系列處理器,特別是ARM系列處理器的廣泛應用,32位單片機迅速取代了16位單片機而成為市場主流產(chǎn)品。項目基礎知識目前,高端32位單片機主頻已經(jīng)超過300MHz,大量專用的嵌入式操作系統(tǒng)被廣泛應用于各系列的單片機上,掌上電腦和手機里甚至可以直接使用專用的Windows和Linux操作系統(tǒng)的高端單片機。與此同時,單片機的價格也大幅下降,普通型號的51單片機出廠價格在1元左右,高端型號的STM32F407單片機出廠價格大約為20元?,F(xiàn)在,幾乎每件電子產(chǎn)品中都會用到單片機。例如,手機、計算器、家用電器、電子玩具、掌上電腦以及鼠標等產(chǎn)品中都有單片機。汽車上一般會配備幾十個單片機,復雜的工業(yè)控制系統(tǒng)中甚至可能配有數(shù)百個單片機。拓展學習主頻即CPU的時鐘頻率,計算機在時鐘信號的控制下分步執(zhí)行操作,每個時鐘信號周期完成一步操作。時鐘頻率的高低在很大程度上反映了CPU速度的快慢。
主頻拓展學習嵌入式操作系統(tǒng)是一種用途廣泛的系統(tǒng)軟件,通常包括與硬件相關(guān)的底層驅(qū)動軟件、系統(tǒng)內(nèi)核、設備驅(qū)動接口、通信協(xié)議、圖形界面、標準化瀏覽器等。
嵌入式操作系統(tǒng)項目基礎知識二、單片機的用途單片機經(jīng)歷了幾十年的發(fā)展,其應用遍布各個領域。導彈的導航裝置,飛機上的各種儀表控制裝置,計算機的網(wǎng)絡通信與數(shù)據(jù)傳輸系統(tǒng),工業(yè)自動化過程的實時控制和數(shù)據(jù)處理系統(tǒng),各種智能IC(集成電路)卡,汽車的安全保障系統(tǒng),錄像機、攝像機、全自動洗衣機及程控玩具、電子寵物的控制系統(tǒng)等都離不開單片機。此外,自動控制領域的機器人、智能儀表、醫(yī)療器械以及各種智能機械中也有單片機。點擊圖標查看
什么是單片機163項目基礎知識如工業(yè)控制中的數(shù)據(jù)采集系統(tǒng)、通信系統(tǒng)、信號檢測系統(tǒng)、無線感知系統(tǒng)、測控系統(tǒng)、機器人等,以及常見的工廠流水線的智能化管理系統(tǒng)、電梯智能化控制系統(tǒng)和各種報警系統(tǒng)等。(2)工業(yè)控制:如電壓表、功率計、示波器、各種分析儀等。采用單片機的儀器、儀表實現(xiàn)了數(shù)字化和智能化,而且其功能比采用單純數(shù)字電路的儀器、儀表更為強大。(1)智能儀器:項目基礎知識如電飯煲、洗衣機、電冰箱、空調(diào)、電視機、其他音響視頻設備和電子稱量設備等。(3)家用電器:如小型程控交換機、樓宇自動通信呼叫系統(tǒng)、列車無線通信、移動電話、集群移動通信、無線電對講機等。現(xiàn)代的單片機普遍具備通信接口,可以很方便地與計算機進行數(shù)據(jù)通信。(4)網(wǎng)絡和通信:如醫(yī)用呼吸機、各種醫(yī)療分析儀、監(jiān)護儀、超聲診斷設備及病床呼叫系統(tǒng)等。(5)醫(yī)用設備:項目基礎知識如汽車中的發(fā)動機控制器、基于CAN(控制器局域網(wǎng))總線的汽車發(fā)動機智能電子控制器、導航系統(tǒng)、防抱死制動系統(tǒng)、胎壓檢測系統(tǒng)等。(7)汽車電子:某些單片機可用于實現(xiàn)特定功能,在各種電路中可以將它們作為其中一個模塊來使用。一般不要求用戶了解這種模塊化的微小系統(tǒng)的內(nèi)部結(jié)構(gòu),而只需了解其輸入輸出信號及系統(tǒng)能夠?qū)崿F(xiàn)的功能。(6)模塊化系統(tǒng):項目基礎知識2.
掌握數(shù)字電路知識1.掌握模擬電路知識3.
掌握C語言知識掌握模擬電路基礎知識后,不僅能看懂別人設計的電路,還能使自己設計的電路更可靠。單片機的概念、術(shù)語、硬件結(jié)構(gòu)和原理都與數(shù)字電路有關(guān)。如果數(shù)字電路基礎知識扎實,理解復雜的單片機硬件結(jié)構(gòu)和原理就容易一些。學習C語言,需要重點掌握的知識有關(guān)鍵字、標識符、運算符、變量類型及取值范圍、數(shù)組、條件判斷語句、循環(huán)語句、跳轉(zhuǎn)語句、開關(guān)語句和函數(shù)結(jié)構(gòu)等。三、單片機的學習方法(一)基礎理論支撐項目基礎知識(二)基礎理論支撐學習編寫程序的過程如下。(1)構(gòu)思。看例程題目先試著構(gòu)思編程思路。(2)研究。收集相關(guān)程序代碼,研究他人的成功編程思路,并總結(jié)自己思路的欠缺處。(3)動手。模仿別人的設計動手編寫相似程序,領會其中每一條語句的作用。(4)修改。試著按照自己的思路修改程序的不足處,比較程序運行效果,領會其中的奧妙。點擊圖標查看
學習單片機需要準備什么項目基礎知識(三)硬件分析與設計設計者應深入細致地調(diào)研和分析,準確理解項目的功能、性能、可靠性等具體要求,將用戶非形式的需求表述轉(zhuǎn)化為完整的需求定義,從而確定系統(tǒng)必須達成的功能。原理圖設計是硬件電路設計的核心。其主要工作流程為合適的元器件選型、必要的計算分析、參數(shù)搭配、仿真工具的運用及仿真電路的驗證等。使用原理圖可將這些流程用圖形化的語言表達出來。1.分析設計需求2.分析設計需求設計原理圖項目基礎知識C語言是一種編譯型程序設計語言,它既具有高級語言的特點,也具備匯編語言的功能。相對于匯編語言,使用C語言開發(fā)系統(tǒng)可以縮短開發(fā)周期、增強程序的可讀性,并且便于改進、擴充和移植程序。四、單片機的C51語言項目基礎知識因為C語言程序本身并不依賴于硬件開發(fā)平臺,所以對程序不做修改或做少量修改就可以將其移植到不同的單片機中。目前,使用C語言進行程序設計已經(jīng)成為單片機軟件開發(fā)的主流?;趩纹瑱C的C語言稱為C51語言。與標準C語言不同的是,C51語言運行于單片機平臺上,并根據(jù)單片機的硬件特點擴展了部分關(guān)鍵字。項目基礎知識(一)標識符與關(guān)鍵字標識符是表示程序中自定義對象名稱的符號。其中,自定義對象可以是常量、變量、數(shù)組、結(jié)構(gòu)、語句標號以及函數(shù)等。(1)標識符的第一個字符必須是字母或者下劃線,不能為數(shù)字。(2)針對C51語言標識符,應區(qū)分大小寫。例如,“ch1”和“Ch1”表示兩個不同的標識符。(3)用戶自定義的標識符不能與系統(tǒng)預留的關(guān)鍵字相同。1.標識符項目基礎知識2.關(guān)鍵字關(guān)鍵字是C51編譯器預留的一些特殊標識符,它們具有特定的含義和用法。C51語言繼承了ANSIC標準定義的32個關(guān)鍵字,見表1-1。表1-1C51語言的關(guān)鍵字項目基礎知識(續(xù)表)項目基礎知識(續(xù)表)項目基礎知識(續(xù)表)項目基礎知識(續(xù)表)項目基礎知識此外,C51語言又結(jié)合單片機硬件的特點擴展了19個關(guān)鍵字,包括_at_、idata、sfr16、alien、interrupt、small、bdata、large、_task_、code、bit、pdata、using、reentrant、xdata、compact、sbit、data和sfr等。項目基礎知識Keil軟件中的C51編譯器支持的數(shù)據(jù)類型見表1-2。表1-2C51編譯器支持的數(shù)據(jù)類型(二)數(shù)據(jù)類型項目基礎知識bit是C51語言中擴展的數(shù)據(jù)類型,它可以定義一個位變量,且定義位變量時可以為變量賦值,但它不能定義位指針或位數(shù)組。位變量的取值是一個二進制位,非0即1。該數(shù)據(jù)類型的定義格式如下:1.bit拓展學習提問:如何更好地記憶和掌握單片機的指令即其功能?項目基礎知識sbit也是C51語言中擴展的數(shù)據(jù)類型,利用它可以訪問單片機內(nèi)部RAM中位地址空間或特殊功能寄存器中的可位尋址的位。該數(shù)據(jù)類型的定義格式如下:2.sbit例如:項目基礎知識(三)常量與變量1.常量在程序運行過程中,將值不能被修改的量稱為常量,如固定的數(shù)據(jù)表、字符等。常量的數(shù)據(jù)類型有整型、浮點型、字符型、字符串型和位標量型等。項目基礎知識(三)常量與變量1.常量1)整型常量整型常量的表示方法有多種。(1)采用十進制表示,如1236、0、-849等。(2)也可以采用十六進制表示,采用此進制表示時應以0x開頭,如0xC8、-0x5A等;如果是長整型數(shù)據(jù),那么需要在數(shù)字后面加上字母L,如1034L、004L、750L等。項目基礎知識2)浮點型常量浮點型常量有十進制和指數(shù)兩種表示形式。(1)十進制浮點型常量由數(shù)字和小數(shù)點組成,整數(shù)或小數(shù)部分為0時可以省略不寫,但必須保留小數(shù)點,如0.666、.35、37.465、0.0、600.等。(2)指數(shù)浮點型常量表示形式為:[±]數(shù)字[.數(shù)字]e[±]數(shù)字。[]中的內(nèi)容為可選項,如124e4、9e7、-3.5e-4等。項目基礎知識3)字符型常量將單個字符放在單引號內(nèi)的常量就是字符型常量,如?a??d?等。有一類字符型常量專門用來表示控制字符,如回車符、換行符等,它們被稱為轉(zhuǎn)義字符,其表示方式是在字符前面加上一個反斜杠“\”,如“\n”。常用的轉(zhuǎn)義字符見表1-3。項目基礎知識表1-3常用的轉(zhuǎn)義字符項目基礎知識4)字符串型常量該常量通常由放在雙引號內(nèi)的一個或多個字符組成,如“test”“OK”等。當雙引號內(nèi)沒有字符,該字符串為空字符串。在C51語言中,字符串型常量是被當作字符類型數(shù)組來處理的。在存儲字符串時,系統(tǒng)會在字符串尾部加上轉(zhuǎn)義字符“\0”作為該字符串的結(jié)束符。例如,字符串型常量“A”和字符型常量?A?是不同的,前者在存儲時多占用了一個字節(jié)的空間。項目基礎知識5)位標量型常量該常量是C51語言的一種擴展數(shù)據(jù)類型,它的值是一個二進制數(shù)。例如,定義位標量型常量False和True:項目基礎知識2.變量在程序運行過程中,值可以改變的量稱為變量,C51編譯器支持的數(shù)據(jù)類型均可定義變量。要在程序中使用變量,必須先定義變量,即指定變量名,并指出變量對應的數(shù)據(jù)類型和存儲類型,這樣編譯系統(tǒng)才能為變量分配相應的存儲空間。變量的定義格式如下:項目基礎知識1)局部變量定義變量時,在變量名前面加上關(guān)鍵字auto,即把該變量定義為自動變量。它一般出現(xiàn)在函數(shù)內(nèi)部或復合語句中,其作用范圍是本函數(shù)或復合語句內(nèi)部,如果省略關(guān)鍵字auto,那么系統(tǒng)默認該變量為自動變量。在程序執(zhí)行過程中,自動變量的存儲空間是動態(tài)分配的。當程序執(zhí)行到該變量的聲明語句時,編譯器會根據(jù)變量類型自動為其分配存儲空間;執(zhí)行完畢函數(shù)或復合語句后,自動變量的存儲空間將立刻被取消,自動變量失效。項目基礎知識2)全局變量此類變量以關(guān)鍵字extern作為標識。全局變量一般定義在所有函數(shù)的外部,其作用范圍是從全局變量定義的位置到源文件結(jié)束,它可以被作用范圍內(nèi)的任何函數(shù)調(diào)用。全局變量有時也稱為外部變量。項目基礎知識3)靜態(tài)變量此類變量以關(guān)鍵字static作為標識。從變量的作用范圍來看,靜態(tài)變量和自動變量類似,其作用范圍是定義該變量的函數(shù)內(nèi)部。如果靜態(tài)變量定義在函數(shù)外部,它將具有全局變量的作用范圍。從存儲占用的角度來看,靜態(tài)變量和全局變量類似,一旦被分配存儲空間,它就始終占有該存儲空間,直至程序運行結(jié)束。項目基礎知識4)寄存器變量單片機的CPU寄存器中也可以保存少量的變量,將這種變量稱為寄存器變量。寄存器變量以關(guān)鍵字register作為標識。單片機對寄存器變量的讀寫速度要遠高于對其他類型變量的訪問速度,所以把最頻繁使用的變量定義為寄存器變量可以有效地提高程序運行速度。項目基礎知識3.變量的初始化及賦值1)變量的初始化變量的初始化是指定義變量時給變量賦一個默認值,全局變量(包括靜態(tài)全局變量)一般在定義時被初始化,局部變量(包括靜態(tài)局部變量)是在運行程序進入定義它們的函數(shù)或復合語句時才被初始化。所有的全局變量和靜態(tài)變量在沒被明確初始化時都會被系統(tǒng)自動清零,而局部變量和寄存器變量在未被賦值前其值是不確定的。項目基礎知識賦予全局變量和靜態(tài)變量的初值必須是常數(shù)表達式,而賦予自動變量和寄存器變量的初值可以是任意表達式,這個表達式可以是常數(shù)、變量和函數(shù)。例如:項目基礎知識2)變量的賦值變量賦值是指給已定義的變量賦一個具體值。常見的變量賦值有以下幾種類型。(1)給整型變量和浮點型變量賦值。賦值格式如下:例如:項目基礎知識C51語言中給多個變量賦同一數(shù)值時允許使用連等的方式。例如:項目基礎知識(2)給字符型變量賦值??蓪⒆址统A?、字符的ASCII值或轉(zhuǎn)義字符等賦給字符型變量。例如:項目基礎知識(四)運算符與表達式算術(shù)運算符是執(zhí)行算術(shù)運算的操作符,包括加、減、乘、除和取余等。常用的算術(shù)運算符見表1-4。1.算術(shù)運算符表1-4算術(shù)運算符項目基礎知識人們常用關(guān)系運算符來比較兩個變量的大小,運算結(jié)果為1或者0,關(guān)系運算符見表1-5。2.關(guān)系運算符表1-5關(guān)系運算符項目基礎知識邏輯運算符是執(zhí)行邏輯運算的操作符號,包括與(AND)、或(OR)、非(NOT),邏輯運算的最終結(jié)果為真(值為1)或假(值為0)。邏輯運算符見表1-6。3.關(guān)系運算符表1-6邏輯運算符項目基礎知識布爾運算符與邏輯運算符類似,不同之處在于邏輯運算的最終結(jié)果為真或假,而布爾運算的結(jié)果是一個具體數(shù)據(jù)。布爾運算符見表1-7。4.布爾運算符表1-7布爾運算符項目基礎知識常見的賦值運算符是“=”,由它又衍生出多種賦值運算符,見表1-8。5.賦值運算符表1-8賦值運算符項目基礎知識自增/自減運算符包括自增與自減運算符,見表1-9。6.自增/自減運算符表1-9自增/自減運算符項目基礎知識自增運算符++及自減運算符--的作用是讓變量的值加1或減1。但自增/自減運算符都有前置與后置之分,前置、后置決定了變量使用與計算(加1或減1)的順序。(1)自增運算符前置,如++i,是先將i的值加1,再使用加1后i
的值。(2)自增運算符后置,如i++,是先使用i當前的值,再將i的值加1。(3)自減運算符前置,如--i,是先將i的值減1,再使用減1后i的值。(4)自減運算符后置,如i--,是先使用i當前的值,再將i的值減1。項目基礎知識在一個表達式中可能包含多個由不同運算符連接起來的、具有不同數(shù)據(jù)類型的數(shù)據(jù)對象。由于表達式中有多種運算,采用不同的運算順序會得出不同的運算結(jié)果。因此,當表達式中含有多種運算時,必須使操作數(shù)按照一定的順序進行結(jié)合,這樣才能保證運算的合理性和運算結(jié)果的正確性、唯一性。7.運算符的優(yōu)先級項目基礎知識運算符的計算順序就是通常所說的優(yōu)先級,運算符的優(yōu)先級見表1-10。括號的優(yōu)先級最高,賦值運算符的優(yōu)先級最低。在同一表達式中,先計算優(yōu)先級高的運算符對應的操作數(shù),后計算優(yōu)先級低的運算符對應的操作數(shù);若參與運算的運算符為同一優(yōu)先級,則按結(jié)合性原則進行計算。項目基礎知識表1-10運算符的優(yōu)先級項目基礎知識(五)常見的程序結(jié)構(gòu)循環(huán)結(jié)構(gòu)是為程序中需要反復執(zhí)行某個功能而設置的一種結(jié)構(gòu),它通常由循環(huán)體和循環(huán)條件構(gòu)成。循環(huán)結(jié)構(gòu)根據(jù)循環(huán)條件判斷是否繼續(xù)執(zhí)行循環(huán)體。C51語言提供了3種循環(huán)結(jié)構(gòu):for語句、while語句和do-while語句。1)for語句For語句的一般形式如下:1.循環(huán)結(jié)構(gòu)項目基礎知識其中,表達式1為賦值語句,對循環(huán)變量進行初始化賦值;表達式2為關(guān)系或邏輯表達式,其值用于判斷循環(huán)條件是否成立,取值為真或假;表達式3定義循環(huán)變量在每次循環(huán)后的變化方式。例如:項目基礎知識2)while語句while語句的特點是先判斷循環(huán)條件表達式,如果表達式的值為真,就執(zhí)行循環(huán)體中的語句;如果表達式的值為假,就結(jié)束循環(huán),程序繼續(xù)執(zhí)行循環(huán)結(jié)構(gòu)外的下一條語句。其語句格式如下:項目基礎知識3)do-while語句do-while語句的特點是先執(zhí)行一遍循環(huán)體再判斷循環(huán)條件。其語句格式如下:該語句在執(zhí)行時要先執(zhí)行一次do后面的語句,然后判斷表達式的值是否為真。如果表達式的值為真,就再次執(zhí)行do后面的語句;如果表達式的值為假,就結(jié)束循環(huán)并繼續(xù)執(zhí)行循環(huán)結(jié)構(gòu)外的后續(xù)語句。項目基礎知識選擇結(jié)構(gòu)根據(jù)條件決定程序的走向,C51語言提供的選擇語句有if-else語句及switch語句。1)if-else語句if-else語句,也稱條件選擇語句。在執(zhí)行時,需要先對條件進行判斷,再根據(jù)判斷結(jié)果執(zhí)行不同的語句。其語句格式如下:2.選擇結(jié)構(gòu)該語句需要先判斷表達式的值是否成立,如果成立,則執(zhí)行語句1,否則執(zhí)行語句2。項目基礎知識有時簡單的if-else語句不能滿足實際應用,也可以使用if-else的多重條件判斷語句來編寫程序。其語句格式如下:執(zhí)行該語句時,先判斷表達式1是否成立,如果成立,就執(zhí)行語句1;如果不成立,再判斷表達式2是否成立,如果成立,就執(zhí)行語句2,否則判斷表達式3;如果表達式3成立,則執(zhí)行語句3,如不成立,就執(zhí)行語句4。項目基礎知識2)switch語句switch語句為程序的走向提供多重選擇,因而被稱為多分支選擇語句。這種選擇方式不存在優(yōu)先等級的問題。其語句格式如下:項目基礎知識當switch后面表達式的值與某一case后面的常數(shù)值相等時,就執(zhí)行該case后面的語句。如果遇到break語句,就退出switch語句。當表達式的值與所有case后面的常數(shù)值都無法匹配時,就執(zhí)行default后面的語句。在使用switch語句時要注意以下幾點。(1)每個case后面的常數(shù)值必須是互不相同的。(2)每個case和default出現(xiàn)的次序不影響程序的執(zhí)行結(jié)果。(3)如果遺忘了case后面的break語句,那么程序在執(zhí)行了當前case語句后不會退出switch語句,而是繼續(xù)執(zhí)行后續(xù)的case語句。項目基礎知識(六)數(shù)組、指針與函數(shù)1)數(shù)組的聲明數(shù)組也是一種變量,它將相同數(shù)據(jù)類型的若干個變量以同一個變量名稱來表示。數(shù)組的聲明格式如下:1.數(shù)組例如,聲明一個含有5個字符的數(shù)組:該字符數(shù)組共包含5個變量,分別是LPC[0]~LPC[4]。由于C51語言中沒有“字符串”這種數(shù)據(jù)類型,所以字符數(shù)組也常用來存放字符串。項目基礎知識2)數(shù)組的賦值聲明數(shù)組的同時也可以對其賦初值。例如:經(jīng)過上述聲明后,LPC[0]=?A?,LPC[1]=?B?,LPC[2]=?C?,LPC[3]=?D?,LPC[4]=?\0?。若聲明時不知道數(shù)組的長度,也可將數(shù)組的長度省略,交由程序處理。例如:聲明整型或浮點型數(shù)組時,如需指定其初值,可采用的賦值方式如下:項目基礎知識1)指針的定義指針是用來存放變量地址的變量,所以使用前也需要先定義。定義格式如下:2.數(shù)組例如,聲明一個名為ptr的指針:也可以將同類型的變量與指針放在一起聲明。例如:項目基礎知識與指針息息相關(guān)的運算符是“&”,該運算符的功能是取變量的地址。它可以將指定變量的地址放入指針變量。常見的語句形式如下:執(zhí)行上述語句后,a變量的地址被放入了ptr1指針變量中。該語句如果用于數(shù)組變量,可以先獲取數(shù)組的第一個元素的地址,例如:執(zhí)行上面的語句后,Num數(shù)組的首地址將被放入ptr1指針變量中。若要將Num[0]的內(nèi)容輸出到P2變量,可使用的語句如下:項目基礎知識2)指針變量的運算若先使指針變量p指向數(shù)組a(即p=a),則有以下幾種運算(p前帶*號,取指針指向的數(shù)組元素值;p前不帶*號,指向數(shù)組元素的地址,不取值)。(1)p++(或p+=1),該操作將使指針變量p指向下一個數(shù)組元素的地址,即a[1]的地址。(2)*p++,該操作先執(zhí)行*p,即先取a[0]的值;再執(zhí)行p++,將指針變量p指向下一個數(shù)組元素的地址。元素值取a[0]且不加1,指針指向的地址加1項目基礎知識(3)(*p)++,表示p所指向的元素值加1,而不是p加1。例如,p=&a[0],且a[0]=3,那么執(zhí)行完(*p)++后,a[0]=4。取到a[0]元素值后,元素值加1,指針指向的地址不變。(4)若p指向當前數(shù)組中第i
個元素,則有以下幾種運算。①*p--與a[i--]等價,相當于先執(zhí)行*p,然后再使p自減。②*(++p)與a[++i]等價,即先執(zhí)行p自加操作,再執(zhí)行*p運算。③*(--p)與a[--i]等價,即先執(zhí)行p自減操作,再執(zhí)行*p運算。項目基礎知識函數(shù)由函數(shù)頭和函數(shù)體兩部分組成。函數(shù)頭由返回值類型(類型說明符)、函數(shù)名和形式參數(shù)表組成。其中:返回值類型可以是某個數(shù)據(jù)類型;函數(shù)名是用戶為函數(shù)起的名字,用來唯一標識一個函數(shù);形式參數(shù)表可以有零個或多個變量,在進行函數(shù)調(diào)用時,實際參數(shù)將被賦值到這些變量中。函數(shù)體則是函數(shù)實現(xiàn)自身功能的一組語句。函數(shù)的一般形式如下:3.函數(shù)項目基礎知識其中,函數(shù)的返回值類型是void;函數(shù)名是Sub_name;函數(shù)的變量是x;“inti,j;”和“unsignedcharLED;”是函數(shù)中的變量聲明語句;“LED=0xff;”是函數(shù)體程序區(qū);“/*關(guān)閉LED*/”是程序注釋內(nèi)容。注意:main()函數(shù)與普通函數(shù)的結(jié)構(gòu)類似,兩者的區(qū)別在于普通函數(shù)能夠接受從函數(shù)外部傳遞的變量,即形式參數(shù),而main()函數(shù)沒有形式參數(shù)。例如:項目分析項目分析為完成本項目實訓,需要先下載安裝所需軟件Keil、Proteus。若下載安裝過程中出現(xiàn)問題,應與教師交流討論,觀看教師示范創(chuàng)建Keil工程與Proteus工程,自己再進行實際操作展示。項目實訓項目實訓單片機仿真開發(fā)流程(1)在Keil軟件中使用C語言編寫程序。(2)程序編譯通過后,生成目標文件(HEX文件)。(3)使用Proteus軟件繪制仿真電路圖。(4)電路繪制完成后,雙擊仿真電路圖中的51單片機芯片,加載HEX文件。(5)仿真運行,調(diào)試結(jié)果;仿真結(jié)果若有問題,需再次檢查程序及仿真電路設計。拓展學習提問:大家學習了C語言編寫編寫單片機程序,與前面所學的匯編語言程序比較各有什么優(yōu)缺點,你會如何選擇?實訓模塊實訓模塊一安裝Keil軟件與創(chuàng)建Keil工程訪問http://wwwkeilcom/,下載并安裝KeilμVision5(Keil3或Keil4均可)軟件,安裝完成后計算機桌面會出現(xiàn)Keil圖標,如圖1-1所示。1.安裝Keil軟件圖1-1Keil
μVision5軟件圖標實訓模塊一安裝Keil軟件與創(chuàng)建Keil工程雙擊桌面上的Keil圖標,打開其工程界面窗口,如圖1-2所示。窗口的頂部為主菜單欄。2.啟動Keil軟件圖1-2Keil工程界面窗口實訓模塊一安裝Keil軟件與創(chuàng)建Keil工程(1)File為文件菜單。(2)Edit為編輯菜單。(3)View為視圖菜單,主要包括狀態(tài)欄、工具欄、工程窗口、存儲輸出窗口。(4)Project為工程菜單,具有創(chuàng)建工程、打開工程等功能。(5)Flash為動畫菜單,具有Flash下載、擦除、配置等功能。(6)Debug為調(diào)試菜單,主要具有斷點設置、單步運行、全速運行等功能。(7)Peripherals菜單用于觀察輸出口及中斷、串行口數(shù)據(jù)傳輸時相關(guān)寄存器的數(shù)值,主要在仿真調(diào)試程序時使用。(8)Tools為工具菜單。(9)SVCS菜單主要包含Keil的版本信息。(10)Window為窗口菜單。(11)Help為幫助菜單,提供關(guān)于Keil的用法信息。實訓模塊一安裝Keil軟件與創(chuàng)建Keil工程(1)執(zhí)行“Project”→“NewμVisionProject”命令,如圖1-3(a)所示,在彈出的對話框中選擇工程保存路徑及工程名,如圖1-3(b)所示。3.創(chuàng)建
Keil工程圖1-3創(chuàng)建并設置Keil工程名稱(a)新建Keil工程命令實訓模塊一安裝Keil軟件與創(chuàng)建Keil工程圖1-3創(chuàng)建并設置Keil工程名稱(b)保存Keil工程實訓模塊一安裝Keil軟件與創(chuàng)建Keil工程(2)打開“SelectDeviceforTarget‘Target1’...”對話框,在對話框左側(cè)的列表中選擇“AT89C51”,點擊“OK”按鈕,如圖1-4所示。圖1-4
芯片選擇對話框?qū)嵱柲K一安裝Keil軟件與創(chuàng)建Keil工程(3)選擇芯片后,系統(tǒng)彈出“μVision”對話框,如圖1-5所示。該對話框用于選擇是否將啟動代碼復制到工程中。一般情況下,采用匯編語言編程時選擇“否”,采用C語言編程時選擇“是”。此處點擊“是”按鈕,完成Keil工程的創(chuàng)建。圖1-5
是否復制啟動代碼到工程中提示框?qū)嵱柲K一安裝Keil軟件與創(chuàng)建Keil工程(1)執(zhí)行“File”→“New...”命令,創(chuàng)建文件,然后點擊工具欄中的“保存”按鈕,打開“Save
As”對話框,在“文件名”文本框中輸入“demo.c”,點擊“保存”按鈕,如圖1-6所示。4.創(chuàng)建
Keil工程圖1-6
添加文件到工程欄窗口實訓模塊一安裝Keil軟件與創(chuàng)建Keil工程(2)選中“Project”窗口中的“Source
Group
1”文件夾并右擊,在彈出的快捷菜單中選擇“Add
Existing
Files
to
Group‘Source
Group
1’”選項,打開“Add
Files
to
Group‘Source
Group
1’”對話框,在“文件類型”下拉列表中選擇“C
Source
file”選項,在“名稱”列表框中選擇“demo”文件,點擊“Add”按鈕,即可將C文件添加至工程中,如圖1-7所示。圖1-7
將文件添加到工程中實訓模塊一安裝Keil軟件與創(chuàng)建Keil工程(1)雙擊工程下的“demo.c”文件,打開程序編輯界面,在代碼編輯區(qū)輸入C程序代碼,如圖1-8所示。5.設置工程參數(shù)圖1-8
輸入程序代碼實訓模塊一安裝Keil軟件與創(chuàng)建Keil工程(2)程序編輯完成后,先保存文件,然后右擊“Project”窗口中的“Target
1”文件夾圖標,在彈出的快捷菜單中選擇“Options
for
Target‘Target
1’...”選項,如圖1-9所示。圖1-9
工程設置菜單實訓模塊一安裝Keil軟件與創(chuàng)建Keil工程(3)系統(tǒng)彈出“Options
for
Target‘Target
1’”對話框,選擇“Target”選項卡,在“Xtal”文本框內(nèi)輸入開發(fā)板的晶振頻率“12.0”,如圖1-10所示。圖1-10
“Target”選項卡實訓模塊一安裝Keil軟件與創(chuàng)建Keil工程(4)切換到“Output”選項卡,選中“Create
HEX
File”復選框,點擊“OK”按鈕,如圖1-11所示,返回Keil工程界面。圖1-11
“Output”選項卡實訓模塊一安裝Keil軟件與創(chuàng)建Keil工程(5)點擊Keil快捷工具欄中的“Rebuild”按鈕(或執(zhí)行“Project”→“Rebuild
all
targetfiles”命令),開始編譯程序,程序編譯通過后的輸出信息如圖1-12所示。此時已經(jīng)創(chuàng)建了一個名為“demo.hex”的HEX文件。圖1-12
編譯信息實訓模塊二創(chuàng)建Proteus工程與設計仿真電路安裝Proteus
8軟件后,雙擊圖標打開軟件啟動界面,如圖1-13所示。圖1-13
Proteus
8啟動界面實訓模塊二創(chuàng)建Proteus工程與設計仿真電路第一步:執(zhí)行“File”→“New
Project”命令,打開“New
Project
Wizard:Start”對話框,在“Name”文本框中輸入工程名“單片機流水燈仿真實例.pdsprj”;在“Path”文本框中輸入工程的保存路徑(也可以通過“Browse”按鈕選擇保存路徑),這里將路徑設定為桌面上名為“Proteus單片機流水燈仿真實例”的空文件夾;工程類型選擇“New
Project”,點擊“Next”按鈕,如圖1-14所示。圖1-14
創(chuàng)建工程并保存實訓模塊二創(chuàng)建Proteus工程與設計仿真電路第二步:打開“New
Project
Wizard:Schematic
Design”對話框,選中“Create
a
schematic
from
the
selected
template”單選按鈕,在“Design
Templates”列表中選擇“DEFAULT”選項,如圖1-15所示。它表示創(chuàng)建一個默認的電路原理圖模板,然后點擊“Next”按鈕。圖1-15
電路原理圖模板選擇對話框?qū)嵱柲K二創(chuàng)建Proteus工程與設計仿真電路第三步:打開“New
Project
Wizard:PCB
Layout”對話框,在對話框頂部可以選擇是否創(chuàng)建一個PCB設計圖。本實訓模塊只需創(chuàng)建一個單片機的仿真電路原理圖,不需要創(chuàng)建PCB,故選中“Do
not
create
a
PCB
layout”單選按鈕。然后點擊“Next”按鈕,如圖1-16所示。圖1-16
PCB模板選擇對話框?qū)嵱柲K二創(chuàng)建Proteus工程與設計仿真電路第四步:打開“New
Project
Wizard:Firmware”對話框,選中“Create
Firmware
Project”單選按鈕,創(chuàng)建一個單片機工程。在“Family”下拉列表中選擇單片機類型為“8051”;在“Controller”下拉列表中選擇單片機子類為“80C51”;在“Compiler”下拉列表中選擇編譯軟件為“Keil
for
8051(not
configured)”。然后點擊“Next”按鈕,如圖1-17所示。圖1-17
PCB選擇是否創(chuàng)建一個單片機工程實訓模塊二創(chuàng)建Proteus工程與設計仿真電路第五步:單片機工程創(chuàng)建完成后,點擊“Finish”按鈕進入電路原理圖繪制界面,點擊左側(cè)導航欄中的“P”按鈕,如圖1-18所示,或點擊“Library”菜單,在彈出的快捷菜單中選擇“Pick
Parts”選項。圖1-18Proteus單片機電路原理圖繪制界面實訓模塊二創(chuàng)建Proteus工程與設計仿真電路第六步:打開“Pick
Devices”對話框,在“Keywords”文本框中輸入關(guān)鍵詞“LED”,在“Results”選項區(qū)將出現(xiàn)關(guān)于LED的搜索結(jié)果,選擇“LED-RED”選項,在對話框右上方即可出現(xiàn)該元器件的預覽圖,點擊“OK”按鈕,如圖1-19所示。圖1-19選擇元器件對話框?qū)嵱柲K二創(chuàng)建Proteus工程與設計仿真電路第七步:使用第六步中的方法在“Keywords”文本框中分別輸入關(guān)鍵詞“CRYSTAL”“CAP”“RES”,選擇相應的晶振、電容和電阻。添加完元器件后,修改各元器件參數(shù),并連接各元器件,如圖1-20所示。圖1-20基于單片機的LED流水燈電路原理圖實訓模塊二創(chuàng)建Proteus工程與設計仿真電路第八步:雙擊電路原理圖中的80C51芯片,打開“Edit
Component”對話框。點擊“Program
File”右側(cè)的文件夾按鈕,選擇需要導入的HEX文件,點擊“OK”按鈕,如圖1-21所示。圖1-21導入HEX文件拓展學習提問:51單片機共有111條指令,按功能可以大致分成5類,大家有認為怎么樣才能記住并熟練地應用這些指令。實訓模塊二創(chuàng)建Proteus工程與設計仿真電路第九步:返回電路原理圖界面,點擊仿真運行按鈕(或執(zhí)行“Debug”→“Run”命令),即可進行單片機控制流水燈的仿真,D1~D8就會呈現(xiàn)出流水燈效果。仿真效果如圖1-22所示。圖1-22流水燈從上到下依次點亮的仿真效果項目實訓1.愛國主義通過學習單片機芯片的發(fā)展歷程,我們應了解中國芯片的關(guān)鍵技術(shù),同時要刻苦學習,加強專研,爭取在科技前沿的關(guān)鍵技術(shù)上實現(xiàn)突破,為實現(xiàn)科技強國、人才強國貢獻自己的力量。2.堅持不懈,理性決策通過學習C51語言的循環(huán)結(jié)構(gòu),我們應發(fā)揚堅持不懈、持之以恒的精神,在生活中遇到困難不輕易放棄;通過學習選擇結(jié)構(gòu),我們應培養(yǎng)明辨是非、理性決策的能力,樹立正確的價值觀。素養(yǎng)園地評價與考核項目小結(jié)(1)單片機的概念:將具有數(shù)據(jù)處理能力的中央處理器、隨機存儲器(RAM)、只讀存儲器(ROM)、多種I/O口和中斷系統(tǒng)、定時/計數(shù)器等部件集成到一塊硅片上構(gòu)成的一個小而完善的微型計算機系統(tǒng)。(2)單片機的用途:幾乎涵蓋所有的電子產(chǎn)品,包括農(nóng)業(yè)、工業(yè)、商業(yè)等領域的電子產(chǎn)品。(3)單片機學習方法:理論基礎,應熟悉數(shù)字電路、模擬電路、C語言、匯編語言等知識;實踐基礎,需要不斷練習編程,應先看懂別人的程序,再在別人程序的基礎上修改程序,最后設計自己的程序。項目小結(jié)(4)C51語言基礎:了解關(guān)鍵字、標識符、C51語言數(shù)據(jù)類型及其范圍、運算符及其優(yōu)先級、循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)、數(shù)組與指針、函數(shù)的結(jié)構(gòu)、變量(全局變量與局部變量)的范圍等知識。(5)單片機開發(fā)工具:Keil
μVision5(程序編譯軟件)、Proteus(電路仿真軟件)。課后思考一、選擇題1.(
)是單片機程序編譯軟件。A.Multisim
B.Proteus
C.Protel
D.Keil2.
C程序書寫格式自由,一行可以有多條語句,每條語句均以(
)結(jié)尾。A.。B.;C.,
D.:3.unsignedchar數(shù)據(jù)類型的值域為(
)。A.0~65535
B.-32768~+32767C.0~255
D.-128~+1274.若x=01010011,y=11110000,則x|y=(
)。A.11110011
B.01010000C.00111111
D.00000101課后思考5.若F=15,x=6,則執(zhí)行F%=x(F=F%x)后,F(xiàn)=(
)。A.2
B.3C.4
D.56.以下語句與while(1)等效的是()。A.while(i)
B.for(i=0;i<8;i++)C.while(0)
D.for(;;)7.若數(shù)組定義為“intNum[6]={30,22,33,44,55,66};”,則Num[2]=(
)。A.22
B.30C.33
D.55課后思考二、判斷題1.main()函數(shù)可以被其他函數(shù)調(diào)用。(
)2.局部變量能在定義該變量的函數(shù)外部被調(diào)用。(
)3.語句while(條件){;}的條件為真則程序等待,條件為假則跳出循環(huán)。(
)4.switch語句中,每個case后面的常數(shù)值必須是互不相同的。(
)三、簡答題1.什么是單片機?2.單片機有何用途?四、實操練習1.創(chuàng)建Proteus工程,繪制P2口驅(qū)動8個LED交互閃爍電路原理圖。2.創(chuàng)建Proteus工程,并在元器件庫中完成電阻、LED-GREEN、AT89C51、晶振、電容元器件的查找,最后完成電路原理圖的繪制。感謝聆聽!基于I/O口的電路設計項目二單片機項目創(chuàng)建項目說明本項目介紹了51單片機I/O口P0、P1、P2、P3的內(nèi)部結(jié)構(gòu)及輸入輸出功能,設計了多個實訓模塊對I/O口功能進行實戰(zhàn)演練,幫助學生快速掌握51單片機I/O口的運用。本項目需要完成基于I/O口的汽車轉(zhuǎn)向燈閃爍電路設計,要求:當按下左轉(zhuǎn)向按鍵時,左轉(zhuǎn)向燈開始閃爍;當按下右轉(zhuǎn)向按鍵時,右轉(zhuǎn)向燈開始閃爍;當按下轉(zhuǎn)向燈關(guān)閉按鍵時,轉(zhuǎn)向燈關(guān)閉。單片機項目創(chuàng)建(1)了解51單片機I/O口的內(nèi)部結(jié)構(gòu)。(2)掌握51單片機I/O口作輸出口的使用方法。(3)掌握51單片機I/O口作輸入口的使用方法。知識目標:能力目標:(1)能夠完成I/O口作輸出口驅(qū)動外設的電路設計。(2)能夠完成I/O口作輸入口控制其他設備的電路設計。學習目標項目基礎知識項目基礎知識一、單片機I/O口51單片機的I/O口有4個,分別為P0、P1、P2、P3。其中
P1、P2和P3口是準雙向口,P0口為雙向口。(一)P0口的內(nèi)部結(jié)構(gòu)P0口某個引腳的內(nèi)部結(jié)構(gòu)如圖2-1所示。從圖2-1中可以看出,該結(jié)構(gòu)包含一個數(shù)據(jù)輸出鎖存器、兩個三態(tài)數(shù)據(jù)輸入緩沖器和數(shù)據(jù)輸出驅(qū)動電路。P0.x可以是P0.0到P0.7中的任何一位,即P0口是由8個與圖2-1相同的結(jié)構(gòu)構(gòu)成的。表2-1P0口某個引腳的內(nèi)部結(jié)構(gòu)拓展學習準雙向口是指P1、P2、P3口有固定的內(nèi)部上拉電阻,當其用作輸入口時,引腳電平被拉高;當其引腳被拉低時,單片機會產(chǎn)生拉電流,這里的拉電流是指電流從單片機往外部走。真雙向口是指P0口,因為作為輸入口時,它的引腳處于懸浮狀態(tài)。
準雙向口拓展學習鎖存器是數(shù)字電路中的一種具有記憶功能的邏輯元件(如D觸發(fā)器)。鎖存就是把信號暫存以維持某種電平狀態(tài)。在數(shù)字電路中,鎖存器可以記錄二進制數(shù)字信號0和1。
鎖存器項目基礎知識(二)P0口的內(nèi)部結(jié)構(gòu)P1口為8位準雙向口,這8位I/O口均可單獨定義為輸入或輸出口,每一位I/O口的內(nèi)部結(jié)構(gòu)如圖2-2所示。P1.x輸出數(shù)據(jù):把1(高電平)寫入鎖存器時,Q=0,T2截止,上拉電阻將電位拉至1,此時該口輸出為1;把0(低電平)寫入鎖存器時,Q=1,T2導通,此時該口輸出為0。準雙向口P1作為輸入口時,應先將鎖存器置1,這樣Q=0,T2截止,此時該位既可以由外部電路拉成低電平,也可由內(nèi)部上拉電阻拉成高電平。表2-2P1口的內(nèi)部結(jié)構(gòu)項目基礎知識(三)P2口的內(nèi)部結(jié)構(gòu)P2口不僅可以用作輸入/輸出口,而且可以和P0口一起用作外部存儲器的地址總線和數(shù)據(jù)總線。由于單片機沒有專用的地址總線和數(shù)據(jù)總線,在向外擴展存儲器和接口時,P2口和P0口可充當?shù)刂房偩€和數(shù)據(jù)總線,P2口輸出地址的高8位(A8~A15),P0口輸出地址的低8位(A0~A7)。P2口內(nèi)部結(jié)構(gòu)如圖2-3所示。表2-3P2口的內(nèi)部結(jié)構(gòu)項目基礎知識(四)P3口的內(nèi)部結(jié)構(gòu)P3口的第一功能和P1口一樣,既可作為輸入/輸出口,也能進行字節(jié)操作和位操作。在位操作模式下,每位I/O口可以單獨定義為輸入或輸出I/O口。在實際應用中,P3口第二功能的作用更為突出。為適應第二功能的需要,P3口每位引腳內(nèi)部都增加了第二功能控制邏輯,P3口的內(nèi)部結(jié)構(gòu)如圖2-4所示。表2-4P3口的內(nèi)部結(jié)構(gòu)項目基礎知識下面著重討論P3口的第二功能,P3口用于第二功能時各引腳定義如下。P3.0:串行輸入口(RXD)。P3.1:串行輸出口(TXD)。P3.2:外部中斷0(INT0)。P3.3:外部中斷1(INT1)。P3.4:定時/計數(shù)器0的外部輸入口(T0)。項目基礎知識P3.5:定時/計數(shù)器1的外部輸入口(T1)。P3.6:外部數(shù)據(jù)存儲器寫選通(WR)。P3.7:外部數(shù)據(jù)存儲器讀選通(RD)。P3口作為輸出口使用時,第二功能信號線保持高電平,與非門開通,從鎖存器到輸出口的通路暢通無阻,數(shù)據(jù)能夠正常輸出。P3口使用第二功能輸出時,鎖存器置為高電平,與非門允許第二功能輸出信號輸出。項目基礎知識二、I/O口輸入設備與輸入電路設計(一)輸入設備按鈕開關(guān)的特點是具有自動恢復(回彈)功能。常見的按鈕開關(guān)是輕觸開關(guān),如圖2-5(a)所示。按下按鈕時開關(guān)接通,松開按鈕時開關(guān)斷開,其內(nèi)部結(jié)構(gòu)如圖2-5(b)所示。按鈕開關(guān)有4個引腳,引腳1與引腳4連通,引腳2與引腳3連通。按下按鈕時,內(nèi)部開關(guān)a接通;松開按鈕時,開關(guān)a自動彈起斷開。電子電路或微型計算機所使用的按鈕開關(guān)有6mm、8mm、10mm、12mm等尺寸。表2-5按鈕開關(guān)實物及其內(nèi)部結(jié)構(gòu)1.按鈕開關(guān)項目基礎知識這類開關(guān)具有保持功能,將開關(guān)撥動到ON時,內(nèi)部的開關(guān)接通形成通路,若要斷開通路,則需要再次撥動開關(guān)。比較典型的閘刀開關(guān)是指撥開關(guān)(DIP
switch),如圖2-6(a)所示。指撥開關(guān)內(nèi)部相當于含有若干個獨立的開關(guān)。指撥開關(guān)的電路符號如圖2-6(b)所示。表2-6指撥開關(guān)實物及其電路符號2.閘刀開關(guān)項目基礎知識(二)輸入電路設計將按鈕開關(guān)接入單片機輸入口時,還需在其一端連接一個電阻再接到VCC(接上拉電阻)或GND(接下拉電阻)上,如圖2-7所示。表2-7按鈕開關(guān)作為輸入設備1.按鈕開關(guān)的輸入電路設計圖2-7中,P0.7引腳連接的按鈕開關(guān)初始狀態(tài)為開路狀態(tài),該開關(guān)與一個10kΩ的電阻串聯(lián)后連接到VCC上,此時輸入引腳保持為高電平。按下按鈕開關(guān),輸入引腳變?yōu)榈碗娖?;松開開關(guān)時,輸入引腳恢復為高電平,這樣就產(chǎn)生了一個負脈沖。項目基礎知識將閘刀開關(guān)接到單片機輸入口時,通常也會接一個上拉電阻到VCC或接一個下拉電阻到GND,如圖2-8所示。2.開關(guān)的輸入電路設計表2-8閘刀開關(guān)作為輸入設備項目基礎知識閘刀開關(guān)作為輸入設備使用時,其工作原理類似于按鈕開關(guān)。但閘刀開關(guān)兩種狀態(tài)的切換需要手動完成,即撥動開關(guān)一次能夠完成一次切換,再次撥動才能恢復開關(guān)初始狀態(tài)。點擊圖標查看
獨立按鍵接口項目基礎知識三、抖動與防抖動不管是按鈕開關(guān)還是閘刀開關(guān),在操作時,信號的高、低電平切換并不如想象中的理想。實際應用中,開關(guān)操作在很多情況下會產(chǎn)生不確定狀態(tài),這種狀態(tài)將產(chǎn)生噪聲信號,因而需要及時進行去干擾處理。1.抖動現(xiàn)象項目基礎知識如圖2-9所示,圖的上半部分為開關(guān)按下和松開時的實際狀態(tài),下半部分為理想狀態(tài)。實際應用中,開關(guān)按下和松開都將產(chǎn)生抖動,同時也會產(chǎn)生干擾信號,這種干擾信號對數(shù)字電路的影響很大,往往會導致計數(shù)錯誤。表2-9按鈕開關(guān)實物及其內(nèi)部結(jié)構(gòu)項目基礎知識利用硬件電路防抖動會增加硬件設計的成本與復雜度,故可利用軟件來防抖動。只要避開開關(guān)按下時產(chǎn)生抖動的20ms,即可達到防抖動的目的。在按下按鈕開關(guān)的瞬間,立刻執(zhí)行debouncer()防抖動函數(shù),這樣就避開了產(chǎn)生抖動的時間段。而debouncer()防抖動函數(shù)只是一個延時函數(shù)(總延時時間為20ms),其代碼如下。2.防抖動項目分析項目分析為完成本項目,需要先完成一些I/O口作輸入、輸出口的簡單實訓項目,以便掌握I/O口的使用方法。然后通過簡單的實訓模塊訓練歸納總結(jié)實踐經(jīng)驗來完成本項目的最終任務———汽車轉(zhuǎn)向燈閃爍電路設計,包括轉(zhuǎn)向燈閃爍電路硬件電路設計、汽車轉(zhuǎn)向燈閃爍電路的驅(qū)動程序編寫以及汽車轉(zhuǎn)向燈閃爍電路的功能調(diào)試。項目實訓項目實訓(1)案例一(1位輸出)。1.輸出編程案例項目實訓(2)案例二(8位輸出)。項目實訓2.輸入編程案例項目實訓實訓模塊實訓模塊一I/O口作輸出口驅(qū)動LED燈1.硬件設計圖2-10所示為霹靂燈電路原理圖。利用P3口驅(qū)動8個LED燈,當P3口某位引腳輸出0時,其對應的LED燈被點亮;當引腳輸出1時,LED燈不亮。根據(jù)此電路原理圖設計一個霹靂燈程序,使得任何時候只有1個LED燈亮。圖2-10霹靂燈電路原理圖實訓模塊一I/O口作輸出口驅(qū)動LED燈2.霹靂燈程序設計每次只點亮1個LED燈,即P3口在輸出時只能有一個引腳輸出0,其他引腳輸出1。設計程序時,可以先采用“LED<<=1;”語句實現(xiàn)使P3口的值左移7次,左移后在最低位補1;然后再使用“LED>>=1;”語句實現(xiàn)使P3口的值右移7次,右移后在最高位補1;如此循環(huán)即可實現(xiàn)霹靂燈功能。霹靂燈程序流程如圖2-11所示。圖2-11霹靂燈程序流程實訓模塊一I/O口作輸出口驅(qū)動LED燈霹靂燈程序參考代碼如下。實訓模塊一I/O口作輸出口驅(qū)動LED燈實訓模塊一I/O口作輸出口驅(qū)動LED燈實訓模塊一I/O口作輸出口驅(qū)動LED燈實訓模塊一I/O口作輸出口驅(qū)動LED燈3.仿真調(diào)試結(jié)果如圖2-12所示,調(diào)試效果截取了第1秒、第2秒(LED燈從左向右點亮)、第8秒、第9秒(LED燈從右向左點亮)的狀態(tài)。圖2-12霹靂燈仿真調(diào)試效果圖實訓模塊二I/O口作輸出口驅(qū)動無源蜂鳴器蜂鳴器(buzzer)是一種發(fā)聲裝置,可分為有源蜂鳴器與無源蜂鳴器,如圖2-13所示。圖2-13蜂鳴器蜂鳴器的“源”不是指電源,而是指振蕩源。有源蜂鳴器內(nèi)部帶有振蕩源,只要通電就可以鳴叫,所以通常用作報警提示,其優(yōu)點是程序控制方便。實訓模塊二I/O口作輸出口驅(qū)動無源蜂鳴器蜂鳴器的驅(qū)動電路如圖2-14所示。電路中三極管基極可以直接與P1、P2、P3口相連,P0口與三極管的基極相連時,可以在三極管基極上連接一個上拉電阻。圖2-13蜂鳴器的驅(qū)動電路1.硬件設計實訓模塊二I/O口作輸出口驅(qū)動無源蜂鳴器無源蜂鳴器鳴叫的關(guān)鍵是設置合適的方波,即先設置一定時長的高電平,再設置同樣時長的低電平。這里通過pulse_BZ()函數(shù)來實現(xiàn)方波的輸出。無源蜂鳴器參考代碼如下。2.無源蜂鳴器程序設計實訓模塊二I/O口作輸出口驅(qū)動無源蜂鳴器實訓模塊二I/O口作輸出口驅(qū)動無源蜂鳴器實訓模塊二I/O口作輸出口驅(qū)動無源蜂鳴器實訓模塊二I/O口作輸出口驅(qū)動無源蜂鳴器實訓模塊二I/O口作輸出口驅(qū)動無源蜂鳴器圖2-15所示為仿真調(diào)試效果。無源蜂鳴器將根據(jù)P2.0引腳輸出的高低電平鳴叫。圖2-15I/O口驅(qū)動無源蜂鳴器仿真調(diào)試效果3.仿真調(diào)試結(jié)果實訓模塊三I/O口作輸出口驅(qū)動繼電器繼電器電路原理圖如圖2-16所示。圖中,單片機P3.1引腳控制繼電器通電與斷電,每隔1s繼電器開關(guān)1次。待開關(guān)8次后,P3.0引腳控制的蜂鳴器發(fā)出2次鳴叫。圖2-16繼電器電路原理圖1.硬件設計實訓模塊三I/O口作輸出口驅(qū)動繼電器繼電器程序流程如圖2-17所示。聲明變量和函數(shù)后,先讓P3.1引腳輸出高電平0.5s,使繼電器閉合,從而形成通路點亮LED燈;然后讓P3.1引腳輸出低電平,使LED燈熄滅,持續(xù)時間也是0.5s。如此點亮LED燈8次后,使蜂鳴器鳴叫2次。以上操作不斷重復執(zhí)行即可實現(xiàn)指定的功能。圖2-17繼電器程序流程2.繼電器程序設計實訓模塊三I/O口作輸出口驅(qū)動繼電器繼電器程序參考代碼如下。實訓模塊三I/O口作輸出口驅(qū)動繼電器實訓模塊三I/O口作輸出口驅(qū)動繼電器實訓模塊三I/O口作輸出口驅(qū)動繼電器實訓模塊三I/O口作輸出口驅(qū)動繼電器實訓模塊三I/O口作輸出口驅(qū)動繼電器進入仿真狀態(tài)后,繼電器反復吸合8個周期,蜂鳴器將發(fā)出兩聲“嗶嗶”的聲音。圖2-18所示為仿真效果圖。圖2-18I/O口驅(qū)動繼電器仿真調(diào)試結(jié)果3.仿真調(diào)試結(jié)果實訓模塊四I/O口作輸出口驅(qū)動7段LED數(shù)碼管靜態(tài)顯示7段LED數(shù)碼管的a~h段分別與單片機I/O口的Px.0~Px.7相連。當需要顯示某個數(shù)字時,可根據(jù)數(shù)碼管的特點,利用程序控制Px.0~Px.7的輸出點亮顯示數(shù)字對應的段。例如,要點亮共陽數(shù)碼管數(shù)字0,就得使P0=0xc0;0xc0的二進制為11000000,也就是說,使a、b、c、d、e、f段都亮,g和h不亮,即為點亮數(shù)字0;要點亮共陽數(shù)碼管數(shù)字1,就要使P0=0xf9;0xf9的二進制為11111001,也就是說,使b、c段亮,其余段不亮,即為點亮數(shù)字1。點擊圖標查看
數(shù)碼管靜態(tài)顯示實訓模塊四I/O口作輸出口驅(qū)動7段LED數(shù)碼管靜態(tài)顯示利用P0口驅(qū)動共陽極7段LED數(shù)碼管依次顯示數(shù)字0~9,每個數(shù)字停留1s再切換。7段LED數(shù)碼管靜態(tài)顯示電路原理圖如圖2-19所示。1.硬件設計圖2-197段LED數(shù)碼管靜態(tài)顯示電路原理圖實訓模塊四I/O口作輸出口驅(qū)動7段LED數(shù)碼管靜態(tài)顯示7段LED數(shù)碼管靜態(tài)顯示程序設計流程如圖2-20所示。2.7段LED數(shù)碼管靜態(tài)顯示程序設計圖2-207段LED數(shù)碼管靜態(tài)顯示程序設計流程實訓模塊四I/O口作輸出口驅(qū)動7段LED數(shù)碼管靜態(tài)顯示編寫程序時,將數(shù)碼管的驅(qū)動信號放置在數(shù)組TAB[10]中,并通過P0口輸出要顯示數(shù)字對應的驅(qū)動信號來控制數(shù)碼管點亮,這樣數(shù)碼管就能顯示出對應的數(shù)字了。7段LED數(shù)碼管靜態(tài)顯示程序參考代碼如下。實訓模塊四I/O口作輸出口驅(qū)動7段LED數(shù)碼管靜態(tài)顯示實訓模塊四I/O口作輸出口驅(qū)動7段LED數(shù)碼管靜態(tài)顯示實訓模塊四I/O口作輸出口驅(qū)動7段LED數(shù)碼管靜態(tài)顯示圖2-21所示為7段LED數(shù)碼管在第1秒、第2秒、第3秒與第8秒顯示的數(shù)值。3.7段LED數(shù)碼管靜態(tài)顯示程序設計圖2-21
I/O口驅(qū)動共陽極7段LED數(shù)碼管靜態(tài)顯示仿真調(diào)試結(jié)果實訓模塊五I/O口作輸出口驅(qū)動8位數(shù)碼管動態(tài)顯示利用按鍵控制8位數(shù)碼管顯示日期,顯示格式為24-10-20(2024年10月20日)。實際運用中,每一時刻單片機只選通8位數(shù)碼管中的某一個數(shù)碼管,但每一個數(shù)碼管快速依次輪流顯示,由于視覺暫留效應,用肉眼看就像所有數(shù)碼管都一直顯示著。8位數(shù)碼管動態(tài)顯示電路原理圖如圖2-22所示,P0口接8位數(shù)碼管的段選,P1口接8位數(shù)碼管的位選。1.硬件設計圖2-22
8位數(shù)碼管動態(tài)顯示電路原理圖點擊圖標查看
數(shù)碼管動態(tài)顯示拓展學習人眼在觀察景物時,光信號由眼睛傳入大腦需經(jīng)過一段短暫的時間。當光停止傳入時,人眼的視覺形象并不會立即消失,這種殘留的視覺稱“后像”,這一現(xiàn)象則被稱為“視覺暫留”。
視覺暫留實訓模塊五I/O口作輸出口驅(qū)動8位數(shù)碼管動態(tài)顯示2.8位數(shù)碼管動態(tài)顯示程序設計實訓模塊五I/O口作輸出口驅(qū)動8位數(shù)碼管動態(tài)顯示實訓模塊五I/O口作輸出口驅(qū)動8位數(shù)碼管動態(tài)顯示實訓模塊五I/O口作輸出口驅(qū)動8位數(shù)碼管動態(tài)顯示實訓模塊五I/O口作輸出口驅(qū)動8位數(shù)碼管動態(tài)顯示(1)程序正常運行時結(jié)果如圖2-23所示,每一個數(shù)碼管都顯示了,這是快速輪流動態(tài)顯示。3.仿真調(diào)試結(jié)果圖2-23
8位數(shù)碼管動態(tài)顯示結(jié)果實訓模塊五I/O口作輸出口驅(qū)動8位數(shù)碼管動態(tài)顯示(2)若暫停程序運行(某時刻),則靜態(tài)顯示結(jié)果如圖2-24所示,某時刻只有一位數(shù)碼管顯示,即暫停時P1口位選選中的數(shù)碼管顯示。圖2-24
8數(shù)碼管靜態(tài)顯示結(jié)果實訓模塊六I/O口作輸入/輸出口并通過按鍵控制LED汽車大燈開關(guān)電路原理如圖2-25所示,要求其實現(xiàn)以下功能:初始狀態(tài)下,P2.0引腳所連接的LED汽車大燈不亮;按一下按鍵,則LED汽燈大燈亮;再按一下按鍵,則LED汽車大燈不亮,如此循環(huán)。1.硬件設計圖2-25
按鍵控制LED汽車大燈開關(guān)電路原理圖實訓模塊六I/O口作輸入/輸出口并通過按鍵控制LED汽車大燈開關(guān)按鍵控制LED汽車大燈開關(guān)程序設計流程如圖2-26所示。初始化時先關(guān)閉LED汽車大燈,然后判斷按鍵是否按下。如果按鍵按下,則先調(diào)用防抖動函數(shù),再切換LED汽車大燈的開關(guān)狀態(tài)。2.按鍵控制LED汽車大燈開關(guān)程序設計圖2-26
按鍵控制LED汽車大燈開關(guān)程序設計流程實訓模塊六I/O口作輸入/輸出口并通過按鍵控制LED汽車大燈
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物標志物在藥物臨床試驗中的生物標志物技術(shù)研究
- 生物材料3D打印與手術(shù)方案個性化設計
- 生物制品穩(wěn)定性試驗無菌保障措施
- 生物制劑治療患者疫苗接種策略與風險管理
- 深度解析(2026)GBT 20441.3-2010電聲學 測量傳聲器 第3部分:采用互易技術(shù)對實驗室標準傳聲器的自由場校準的原級方法
- 咨詢助理面試題及答案
- 公共政策專家面試技巧與常見問題解答
- 生殖醫(yī)學的個體化方案制定
- 深度解析(2026)《GBT 19406-2003漸開線直齒和斜齒圓柱齒輪承載能力計算方法 工業(yè)齒輪應用》
- 基于崗位的磁粉探傷工面試問題集
- 2025年風電場安全巡查合同范本
- 非謂語動詞在高考語法填空中的運用以電影哪吒為例課件高考英語一輪復習
- 2025中國海外工程營地建設市場專項調(diào)查報告
- 思想道德與法治題庫及答案2025
- GB/T 46483-2025信息技術(shù)客服型虛擬數(shù)字人通用技術(shù)要求
- 2025華能云南滇東能源有限責任公司擬錄用應屆畢業(yè)生情況筆試歷年參考題庫附帶答案詳解(3卷合一)
- 2025年抗菌藥物臨床應用考試題用答案
- 一例主動脈夾層患者護理個案匯報
- 音樂藝考政策講解
- 2025年中國大唐集團有限公司應屆畢業(yè)生招聘筆試歷年參考題庫附帶答案詳解
- 護理人員警示教育
評論
0/150
提交評論