版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1,單片機(jī)應(yīng)用技術(shù),主講:桂紹勇,項(xiàng)目一:交通燈控制系統(tǒng),知 識(shí) 要 點(diǎn),1.初步認(rèn)識(shí)單片機(jī),了解AVR系列單片機(jī)內(nèi)部基本結(jié)構(gòu)和工作原理; 2.理解ATmega16單片機(jī)內(nèi)部資源組成; 3.理解輸入檢測、輸出控制原理; 4.理解LCD顯示原理; 5.掌握LED顯示原理,SPI接口通訊原理。,技 能 目 標(biāo),1.能說出單片機(jī)的基本結(jié)構(gòu)、工作原理、作用及應(yīng)用場合; 2.能利用單片機(jī)檢測信號(hào)輸入和控制信號(hào)輸出; 3.能獨(dú)立使用軟、硬件開發(fā)工具設(shè)計(jì)單片機(jī)控制系統(tǒng); 4.能進(jìn)行簡單項(xiàng)目應(yīng)用的需求分析、方案設(shè)計(jì)與實(shí)施、項(xiàng)目評(píng)估等工作。,1.1 項(xiàng)目設(shè)計(jì)說明 1.2 子任務(wù)一:開關(guān)控制指示燈 1.3 子任務(wù)
2、二:交通燈控制 1.4 子任務(wù)三:LCD參數(shù)顯示 1.5 子任務(wù)四:參數(shù)設(shè)置 1.6 子任務(wù)五:LED數(shù)碼管顯示 1.7 項(xiàng)目設(shè)計(jì)與實(shí)現(xiàn) 1.8 小結(jié),目 錄,1.1 項(xiàng)目設(shè)計(jì)說明,1. 設(shè)計(jì)目的: 掌握人機(jī)界面的應(yīng)用方法。 2. 設(shè)計(jì)內(nèi)容: 利用單片機(jī)設(shè)計(jì)并實(shí)現(xiàn)公路十字路口交通燈的控制系統(tǒng)。,討論: 如何實(shí)現(xiàn)該項(xiàng)目? 燈怎么點(diǎn)亮? 怎么延時(shí)? 怎么變燈? ,CPU,1.1.1 計(jì)算機(jī)體系結(jié)構(gòu),一、馮諾依曼體系結(jié)構(gòu) 也稱 普林斯頓 結(jié)構(gòu)。,1、馮諾依曼型計(jì)算機(jī)邏輯結(jié)構(gòu)的三層含義: 計(jì)算機(jī)包含:運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備5大基本部件; 計(jì)算機(jī)內(nèi)部采用二進(jìn)制形式表示指令和數(shù)據(jù); 事
3、先將編好的程序和數(shù)據(jù)存入存儲(chǔ)器中,計(jì)算機(jī)工作時(shí)能夠自動(dòng)高速地從存儲(chǔ)器中提取指令并執(zhí)行。,為何計(jì)算機(jī)中采用二進(jìn)制?(1)二進(jìn)制的0和1兩個(gè)數(shù)碼,在電子電路中很容易用電壓的高低和脈沖的有無來表示實(shí)現(xiàn);(2)二進(jìn)制數(shù)的運(yùn)算規(guī)律簡單,易于電路實(shí)現(xiàn);(3)邏輯判斷方便,0和1正好與邏輯“假”和“真”對(duì)應(yīng), 為計(jì)算機(jī)實(shí)現(xiàn)邏輯運(yùn)算和程序中邏輯判斷提供了便利條件。,2、運(yùn)算器 執(zhí)行部件。是進(jìn)行信息加工、算術(shù)運(yùn)算和邏輯運(yùn)算的場所,核心是算術(shù)邏輯單元ALU(Arithmetic Logical Unit)。 3、控制器 是計(jì)算機(jī)的指揮控制中心??刂坪蛥f(xié)調(diào)整機(jī)各部件有條不紊的自動(dòng)工作。 4、輸入設(shè)備 將人熟悉的信息
4、轉(zhuǎn)換成機(jī)器內(nèi)部能夠識(shí)別的二進(jìn)制信息。 5、輸出設(shè)備 將計(jì)算機(jī)處理信息的結(jié)果轉(zhuǎn)換成人或其它機(jī)器能夠識(shí)別的信息形式。,6、存儲(chǔ)器 是馮.諾依曼原理的核心,用于存放程序和數(shù)據(jù)的部件。,內(nèi)存儲(chǔ)器(主存):少,快; 外存儲(chǔ)器(輔存):多,慢; Cache(高速緩沖存儲(chǔ)器):用于解決CPU與內(nèi)存之間的速度不匹配; 主存由若干各存儲(chǔ)單元組成,每個(gè)單元可存放若干二進(jìn)制信息(一般是字節(jié)的偶數(shù)倍)。全部存儲(chǔ)單元統(tǒng)一編號(hào),稱為地址。(地址與存儲(chǔ)單元一一對(duì)應(yīng),CPU按單元地址來訪問每一存儲(chǔ)單元。) 指令數(shù)碼化以后,就可以和數(shù)據(jù)一樣放入存儲(chǔ)器,存儲(chǔ)器的任何位置既可以存放數(shù)據(jù)也可以存放指令,不過一般將指令和數(shù)據(jù)分開存放。
5、,二、哈佛結(jié)構(gòu) 哈佛結(jié)構(gòu)是一種將程序指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)分開的存儲(chǔ)器結(jié)構(gòu)。,三、指令系統(tǒng) 一臺(tái)計(jì)算機(jī)的全部機(jī)器指令的集合構(gòu)成了指令系統(tǒng)。 1、CISC(復(fù)雜指令集) 2、RISC(精簡指令集) Intel的Pentium系列和AMD的K6系列都經(jīng)過RISC改良,以RISC為核心,通過譯碼器轉(zhuǎn)換為對(duì)外CISC結(jié)構(gòu)。,1.1.2 單片機(jī)及其發(fā)展,一、單片機(jī) 將運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備以及輸出設(shè)備集成在一顆芯片(IC)上的半導(dǎo)體器件。,將許多原來分離的部件都集中在一顆芯片上。,二、單片機(jī)與單片機(jī)系統(tǒng),三、單片機(jī)的開發(fā)語言,C、C+、Basic,ASM、MASM,四、單片機(jī)的發(fā)展 1974年,美
6、國Fairchild公司研制出世界上第一臺(tái)單片機(jī)F8。 第一代第四代單片機(jī)。,1.1.3 單片機(jī)的特點(diǎn)與應(yīng)用,一、單片機(jī)的特點(diǎn) 控制系統(tǒng)在線應(yīng)用 軟硬件結(jié)合 應(yīng)用現(xiàn)場環(huán)境惡劣 二、單片機(jī)的應(yīng)用領(lǐng)域 自動(dòng)控制 (如汽車、數(shù)控裝置) 智能儀表 數(shù)據(jù)采集 (電表) 計(jì)算機(jī)外設(shè) (打印機(jī)、交換機(jī)) 民用電器 (MP3、洗衣機(jī)) 軍事裝置,課外作業(yè)一: 1.通過互聯(lián)網(wǎng)、書籍等手段,了解并列舉至少三家單片機(jī)廠家以及其最具代表性單片機(jī)型號(hào); 2.通過互聯(lián)網(wǎng)、書籍等手段,了解至少三種單片機(jī)應(yīng)用的場合及應(yīng)用實(shí)例。,1.1.4 AVR系列單片機(jī),一、AVR系列單片機(jī)簡介 AVR單片機(jī)是美國Atmel公司1997年
7、推出的精簡指令集(RISC)單片機(jī)。AVR(Advance RISC)。 二、AVR系列的系統(tǒng)結(jié)構(gòu),1.中央處理器(CPU) 運(yùn)算器 控制器,2、數(shù)據(jù)存儲(chǔ)器 RAM(AVR中用的是SRAM)、EEPROM 二者的含義、作用、及之間的區(qū)別。 3、程序存儲(chǔ)器 Flash(可擦寫1000次以上) 4、定時(shí)/計(jì)數(shù)器 T/C0、T/C1、T/C2 5、并行I/O,6、串行I/O UART(異步串行)、SPI(主/從同步收/發(fā)) 7、中斷控制系統(tǒng) 內(nèi)部中斷和外部中斷 中斷系統(tǒng)的作用 8、時(shí)鐘系統(tǒng) 9、總線 數(shù)據(jù)總線(8bit)、指令總線(16bit),三、AVR系列單片機(jī)的選型,ATmega16是一款RI
8、SC低功耗CMOS的8位高性能單片機(jī)。接近1MIPS/MHz的性能。 CMOS (Complementary Metal Oxide Semiconductor 互補(bǔ)金屬氧化物半導(dǎo)體) 16位指令總線,8位數(shù)據(jù)總線 MIPS(每秒百萬條指令),1.1.5 ATmega16芯片詳解,一、ATmega16芯片外觀,mil:千分之一寸,二、ATmega16內(nèi)部結(jié)構(gòu),三、ATmega16芯片封裝與引腳功能,ATmega16有44腳的TQFP封裝和40腳的PDIP封裝兩種。,教材P23頁。,未完待續(xù)。,1.2 子任務(wù)一 開關(guān)控制指示燈,任務(wù)要求: 利用ATmega16/32單片機(jī)來實(shí)現(xiàn)開關(guān)對(duì)LED點(diǎn)亮與
9、熄滅的控制功能。,推薦電路:,1.2.1 并行接口概述,單片機(jī)控制外部設(shè)備時(shí),常常向外部設(shè)備輸出控制命令(輸出),或檢測外部設(shè)備工作狀態(tài)(輸入)。此時(shí),單片機(jī)的I/O端口起到重要的作用。 串行通訊:信息的各bit數(shù)據(jù)被逐位通過一條信道(引腳)按順序傳送的通訊方式。 并行通訊:各bit數(shù)據(jù)按照字長通過多條信道同時(shí)傳送的通訊方式。,一、并行輸入工作原理 并行輸入接口某一位的簡化電路如圖所示:,010111,通過RP控制數(shù)據(jù)的讀入: 1、RP0時(shí),三態(tài)門為高阻態(tài),數(shù)據(jù)總線無輸入; 2、RP1時(shí),三態(tài)門輸出等于輸入,數(shù)據(jù)從引腳被讀入數(shù)據(jù)總線。,二、并行輸出工作原理 并行輸出接口某一位的簡化電路如圖4-
10、2所示:,通過WP控制數(shù)據(jù)的輸出: 1、WP0時(shí),數(shù)據(jù)鎖存器Q不受D影響,輸出無效; 2、WP1時(shí),輸出端Q等于輸入端D,數(shù)據(jù)輸出到引腳。,上拉管(電阻)的作用: 1、穩(wěn)定輸出; 2、增強(qiáng)驅(qū)動(dòng)能力; 3、抗干擾; ,三、并行輸入/出接口工作原理 并行輸入/出某一位的簡化接口電路如圖所示:,圖3: I/O接口等效電路,三態(tài)門1,三態(tài)門2,緩沖驅(qū)動(dòng)器,方向鎖存器,引腳,上拉管,三態(tài)門3,緩沖器,數(shù)據(jù)總線,數(shù)據(jù)鎖存器,輸入電路 (等效于圖1),輸出電路 (等效于圖2),控制電路,Atmega16單片機(jī)有A、B、C、D四個(gè)8位并行I/O接口。 一、I/O控制寄存器(宏) 當(dāng)A、B、C、D接口用于數(shù)據(jù)I
11、/O口時(shí),通過DDRx、PORTx和PINx三個(gè)宏控制接口的輸入與輸出(其中x為A、B、C或D)。,注:PINx為只讀。,其中: DDRx為接口數(shù)據(jù)方向寄存器,用來定義通訊方向(輸入/輸出); PORTx為接口數(shù)據(jù)寄存器,用來輸出數(shù)據(jù); PINx用來讀取接口數(shù)據(jù)(只讀)。,1.2.2 ATmega16并行I/O資源,1.DDRx 當(dāng)DDRx的某位為0時(shí),送到方向鎖存器的輸出端為0,相應(yīng)位(引腳)只能作輸入; 當(dāng)DDRx的某位為1時(shí),送到方向鎖存器的輸出端為1,相應(yīng)位(引腳)只能作輸出。 2.PORTx 端口作輸出時(shí):PORTx的某位為0時(shí),表示初始電平為低電平,反之為高電平; 端口作輸入時(shí):P
12、ORTx的某位為0時(shí),表示不啟用內(nèi)部上拉電阻,反之為啟用。 3.PINx 當(dāng)DDRx的某位為0時(shí),表示輸入為低電平狀態(tài),反之為高電平狀態(tài)。,如程序段: char a; a=0 x11; /00010001 DDRA=0 xFF; /PA口的8腳都作輸出 PORTA=a; /將a的值通過PA口輸出 又如: char a; DDRC=0 x0; /PC口作為輸入 PORTC=0 x0F; /低4位使用內(nèi)部上拉電阻,高4位不使用 a=PINC; /讀取C口的值到變量a,二、端口的控制,1.以端口為單位,如程序段: DDRA.0=0; /將PA口第0腳設(shè)置為輸入 DDRC.2=1; /將PC口第2腳都
13、作輸出 PORTC.2=0; /PC口第2腳輸出低電平 PORTA.0=1; /PA口第0腳使用內(nèi)部上拉電阻 又如: bit a=1, b=0; DDRB.4=b; /PC口的第4腳作為輸入 PORTC.2=b; /從PC口第2腳輸出變量b的值 b=PINA.0; /讀取PA口第0腳的值到變量b,2.以引腳為單位,bit:CodeVisionAVR C中專用的位變量,三、位運(yùn)算(補(bǔ)充) 位運(yùn)算符有: DDRA=0 x0F;,問題: 如果按圖中那樣設(shè)置,則會(huì)自動(dòng)生成(初始化)語句是什么?,3.代碼自動(dòng)生成 在上述CodeWizardAVR代碼生成器對(duì)話框中,將各項(xiàng)參數(shù)設(shè)置完畢后,可以選擇File
14、|Generate,Save and Exit菜單項(xiàng),自動(dòng)生成源程序文件和工程了。 在生成過程中,文件保存對(duì)話框會(huì)提示你輸入3個(gè)將要被保存的文件的文件名,分別為C源程序文件名、工程文件名、代碼向?qū)募?,它們的擴(kuò)展名對(duì)應(yīng)分別為:*.C、*.prj、*.cwp。,小竅門!,要通過工程得到單片機(jī)可以運(yùn)行的可執(zhí)行文件,需要經(jīng)歷以下步驟: 一、編譯 可以選擇Project|Compile菜單命令,或F9鍵或點(diǎn)擊工具欄中的 按鈕,編譯器會(huì)馬上對(duì)程序進(jìn)行編譯。 二、可執(zhí)行文件的生成 可以選擇Project|Make菜單命令,或ShiftF9鍵或點(diǎn)擊工具欄中的 按鈕,生成項(xiàng)目的可執(zhí)行文件(*.hex)。,1
15、.2.6 項(xiàng)目的編譯與生成,用CodeVisionAVR C生成了可執(zhí)行文件*.hex后,必須將程序?qū)懭耄ü袒┰趩纹瑱C(jī)中才能運(yùn)行。 一、下載工具 典型下載工具是廣州雙龍公司的“SLISP”。,1.2.7 程序下載與運(yùn)行,二、程序的下載 選擇好PC端下載接口、下載速度、目標(biāo)芯片型號(hào)后,可以點(diǎn)擊“Flash存儲(chǔ)器”欄的“文件打開”按鈕選擇欲寫入的HEX文件;之后又將彈出如圖“空閑存儲(chǔ)器填充”對(duì)話框: 選擇“填充FF”,確定。 最后,在保證PC機(jī)的相應(yīng)端口與目標(biāo)系統(tǒng)連線完好,且目標(biāo)系統(tǒng)處于工作狀態(tài)的前提下,點(diǎn)擊“編程”按鈕,即可將可執(zhí)行文件下載(固化)到芯片中。 有關(guān)“編程選項(xiàng)”、“配置熔絲”等設(shè)
16、置將在后續(xù)章節(jié)中祥述。,1.2.8 Proteus仿真平臺(tái),Proteus軟件是英國Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。,一、軟件界面,菜單欄,工具欄,預(yù)覽窗,原理圖編輯區(qū),模型選擇工具欄,仿真調(diào)試,當(dāng)前元件列表,二、編輯原理圖,1.放置元件 2.連線 3.編輯元件屬性,仿真程序文件,時(shí)鐘頻率,三、仿真,運(yùn)行,單步運(yùn)行,暫停,停止,一、在Proteus中繪制原理圖,二、利用CodeVisionAVR C編寫程序,#include bit k; main()
17、 DDRC.3=0; PORTC.3=1; DDRD.3=1; /*無限循環(huán)檢測與輸出*/ while(1) k=PINC.3; PORTD.3=k; /將k變量的內(nèi)容取反后,送給PD3口 ,問題: 1.第一行是什么? 2.main函數(shù)中前三句是什么意思? 3.為什么要進(jìn)行無限循環(huán)?,包含單片機(jī)對(duì)應(yīng)的頭文件,三、下載程序,觀察、分析運(yùn)行結(jié)果,四、拓展,1.實(shí)現(xiàn)正邏輯的開關(guān)控制功能; 2.將開關(guān)接到PB6,指示燈接到PA3,實(shí)現(xiàn)功能。,五、填寫教學(xué)檢查表,1.3 子任務(wù)二 交通燈控制,任務(wù)要求: 用LED模擬實(shí)現(xiàn)十字路口交通燈控制系統(tǒng)。控制方式: (1)東西方向:紅燈65秒,綠燈40秒,黃燈5秒
18、; (2)南北方向:紅燈45秒,綠燈60秒,黃燈5秒。,討論: 子任務(wù)一的方法能借鑒嗎? 怎么延時(shí)? 怎么控制變燈? ,一、Proteus原理圖,1.3.1 開關(guān)組控制發(fā)光管組,共陽極,二、編寫程序,#include void main() DDRC=0 x00; /定義PC口為輸入口 PORTC=0 x00; /不使用內(nèi)部上拉電阻 DDRD=0 xff; /定義PD口為輸出口 While(1) PORTD=PINC; /無限循環(huán),把輸入送到輸出 ,問題: 這段程序的關(guān)鍵在哪里?怎么解釋?,三、仿真調(diào)試,一、Proteus原理圖,1.3.2 延時(shí)控制發(fā)光管,二、延時(shí)功能的實(shí)現(xiàn),CodeVisi
19、onAVR C中,通過兩個(gè)函數(shù)實(shí)現(xiàn)延時(shí)功能: 1. void delay_ms(unsigned int n); 2. void delay_us(unsigned int n);,注意: 在程序開始的位置,必須包含: #include ,問題: 誰來說說這段程序的含義?,三、編寫程序?qū)崿F(xiàn)功能,#include #include void main() DDRC.0=1; While(1) PORTC.0=PORTC.0; delay_ms(1000); ,一、在Proteus中繪制原理圖,控制邏輯:,二、利用CodeVisionAVR C編寫程序,#include #include main
20、() DDRC=0XFF; /定義PC口為輸出口 while(1) PORTC=0XEE; /東西方向紅燈亮,南北方向綠燈亮 delay_ms(60000); /延時(shí)60秒 PORTC=0XDE; /東西方向紅燈亮,南北方向黃燈亮 delay_ms(5000); /延時(shí)5秒 PORTC=0XF5; /東西方向綠燈亮,南北方向紅燈亮 delay_ms(40000); /延時(shí)40秒 PORTC=0XF3; ; /東西方向黃燈亮,南北方向紅燈亮 delay_ms(5000); /延時(shí)5秒 ,三、下載程序,觀察、分析運(yùn)行結(jié)果,四、拓展,1.改變延時(shí)時(shí)間實(shí)現(xiàn)功能(比如最長延時(shí)90秒); 2.彩燈循環(huán)控制
21、。,五、填寫教學(xué)檢查表,1.4 子任務(wù)三 LCD參數(shù)顯示,任務(wù)要求: 在單色LCD液晶顯示器上顯示文字。,討論: LCD是什么? LCD有哪些種類? 怎么顯示? ,一、LCD種類,1.4.1 LCD介紹,按顏色:單色、彩色 按成像模式:字符、點(diǎn)陣 按分辨率:VGA、SVGA、XGA、WXGA、WUXGA,二、字符型LCD的應(yīng)用,可以有8位和4位兩種數(shù)據(jù)操作模式。 采用4位模式時(shí),只需用到模塊的D4D7引腳。,1.4.2 字符型LCD應(yīng)用,一、Proteus仿真環(huán)境下的1602液晶模塊,2.CodeVisionAVR C的應(yīng)用,(1)lcd_init初始化函數(shù),作用: 初始化液晶模塊。函數(shù)形參是
22、需設(shè)定的最大顯示列數(shù)。,(2)lcd_clear清屏函數(shù),作用:清除液晶屏顯示。,(3)lcd_gotoxy光標(biāo)定位函數(shù),作用:將光標(biāo)定位到形參(x,y)指定的位置。 調(diào)用lcd_init或lcd_clear函數(shù)后,默認(rèn)光標(biāo)位置為(0,0)。,(4)lcd_putchar顯示字符函數(shù),作用:在當(dāng)前光標(biāo)定位顯示形參指定的字符(ASCII)。,調(diào)用此函數(shù)后,光標(biāo)自動(dòng)向后移動(dòng)一個(gè)字符位置。,(5)lcd_puts字符串顯示函數(shù),作用:在當(dāng)前光標(biāo)定位顯示形參指定的字符串(RAM)。 調(diào)用此函數(shù)后,光標(biāo)自動(dòng)向后移動(dòng)字符串長度個(gè)位置。,(6)lcd_putsf字符串顯示函數(shù),作用:在當(dāng)前光標(biāo)定位顯示形參指
23、定的字符串(flash)。 調(diào)用此函數(shù)后,光標(biāo)自動(dòng)向后移動(dòng)字符串長度個(gè)位置。,此兩函數(shù)區(qū)別: 1.實(shí)參存儲(chǔ)位置不同; 2.常量作實(shí)參時(shí),只能用lcd_putsf。,一、在Proteus中繪制原理圖,二、利用CodeVisionAVR C編寫程序,#include #include /定義變量_lcd_port 為PC口,因PORTC的口地址是0X15 #asm .equ _lcd_port=0 x15 #endasm char *sss=” AVR”; /定義RAM中的字符串變量 char flash *aaa=” 16”;/定義flash中的字符串變量 void main(void) lcd
24、_init(16);/初始化LCD為16列2行 lcd_gotoxy(2,0);/定位在0行2列 lcd_putsf(“Hello ”);/顯示字符串 lcd_puts(sss);/顯示RAM中的字符串變量 lcd_putsf(aaa);/顯示flash中的字符串變量 while (1); ,一、在Proteus中繪制原理圖,二、利用CodeVisionAVR C編寫程序,#include #include /定義LCD連接到PC口 /LCD可連到任何一個(gè)口,PA口為0X1B,PB口為0X18,PC口為0X15,PD口為0X12 #asm .equ _lcd_port=0 x15 #endas
25、m void XianShi_uint (unsigned int shu) char j,lcd5; /申請(qǐng)一個(gè)有6個(gè)元素的字符型數(shù)組和兩個(gè)字符型循環(huán)變量 lcd0=shu/10000+0 x30; /將數(shù)的萬位轉(zhuǎn)變?yōu)锳SCII碼存放在lcd0 lcd1=shu/1000%10+0 x30; /將數(shù)的千位轉(zhuǎn)變?yōu)锳SCII碼存放在lcd1 lcd2=shu/100%10+0 x30; /將數(shù)的百位轉(zhuǎn)變?yōu)锳SCII碼存放在lcd2 lcd3=shu/10%10+0 x30; /將數(shù)的十位轉(zhuǎn)變?yōu)锳SCII碼存放在lcd3 lcd4=shu%10+0 x30;/將數(shù)的個(gè)位轉(zhuǎn)變?yōu)锳SCII碼存放在lc
26、d4 for(j=0;j5;j+) /從第一個(gè)數(shù)開始送顯示 lcd_putchar(lcdj); main() lcd_init(16); xianshi_uint(123); while(1); ,由向?qū)?三、下載程序,觀察、分析運(yùn)行結(jié)果,四、拓展,1.改變成PD端口驅(qū)動(dòng)顯示LCD; 2.編寫一個(gè)通用的,在LCD上顯示數(shù)據(jù)的函數(shù)。,五、填寫教學(xué)檢查表,1.5 子任務(wù)四 參數(shù)設(shè)置技術(shù),任務(wù)要求: 通過鍵盤輸入某個(gè)參數(shù),并將其保存在單片機(jī)的EEPROM中。,討論: “鍵盤”是什么? 怎么讀取按鍵值? 怎么存儲(chǔ)EEPROM? ,一、單鍵處理,1.5.1 按鍵處理,抖動(dòng)時(shí)間一般為510毫秒。如果
27、每間隔20毫秒檢測一次按鍵的狀態(tài),即可消除抖動(dòng)影響。,char j; DDRD=0 xFF;/定義PD口為輸出口 DDRB=2;/00000010 PORTB=1;/00000001 j=PINB;/j存放PB口上次的值 while(1) if( (PINB.0=0) /延時(shí)20毫秒 ,在Proteus仿真環(huán)境和實(shí)驗(yàn)裝置上實(shí)現(xiàn)。,問題: 這是對(duì)按鍵動(dòng)作的哪一個(gè)階段進(jìn)行判斷?,二、矩陣鍵盤,行,列,此時(shí)如果無鍵按下,PINB將為0 xF0,逐列進(jìn)行判斷: if(PINB.4=0) else if(PINB.5=0) else if(PINB.6=0) else if(PINB.7=0),PORT
28、B=0 xFD;,DDRB=0 x0F; PORTB=0 xF0;,PORTB=0 xFE;,再進(jìn)行逐列判斷: if(PINB.4=0) else if(PINB.5=0) else if(PINB.6=0) else if(PINB.7=0),unsigned char JianZhi() unsigned char k; DDRB = 0 x0F; /設(shè)置PB口低4位為輸出,高4位為輸入 PORTB = 0 xF0; /PB口高4位接內(nèi)部上拉電阻,低4位輸出0 delay_us(10);/等待接口變化穩(wěn)定 if(PINB=0 xF0) return 0 xFF; /如果高4位輸入為全高,表
29、示無鍵按下,返回0 xFF for(k=0;k4;k+) PORTB= (1k); /將1左移k位后取反,使PB口的K行輸出0 delay_us(10); if(PINB.4=0) return(k*4+0); /檢查k行0列的鍵 else if(PINB.5=0) return(k*4+1); /檢查k行1列的鍵 else if(PINB.6=0) return(k*4+2); /檢查k行2列的鍵 else if(PINB.7=0) return(k*4+3);/檢查k行3列的鍵 ,#define uchar unsigned char #define uint unsigned int,一
30、、無符號(hào)整型參數(shù)設(shè)置,1.5.2 參數(shù)設(shè)置,int x=0;,按數(shù)字鍵:x=x*10+鍵值,按退格鍵:x=x/10,按確定鍵:返回x的值,int SheZhi(uint z) uchar j,jian; / j作循環(huán)控制變量,jian存放上次鍵值 uint x; /x用來存放修改參數(shù)的絕對(duì)值,y用來存放修改的參數(shù) lcd_clear(); XianShi_uint(z); delay_ms(1000); x=0; j=1; jian=0 xff; /假定檢查鍵之前,無鍵按下 while(j)/j=1時(shí)循環(huán),j=0時(shí)退出循環(huán) delay_ms(20);/去鍵抖動(dòng) if(jian=0 xff) /
31、數(shù)字鍵處理,else if(JianZhi()=12) x=x/10; /刪除鍵處理 else if(JianZhi()=14)j=0;/直接退出鍵處理,返回z變量 else if(JianZhi()=15)j=0;z=x;/確定鍵處理,將修改值y返回 jian=JianZhi();/保存當(dāng)前的鍵值,以便下次比較 lcd_clear(); /清除屏幕顯示 Lcd_uint(x);/顯示修改過的參數(shù) /設(shè)置結(jié)束 return z; ,一、在Proteus中繪制原理圖,二、利用CodeVisionAVR C編寫程序,三、下載程序,觀察、分析運(yùn)行結(jié)果,eeprom uint dong=10, nan
32、=12;,四、填寫教學(xué)檢查表,1.6 子任務(wù)五 LED數(shù)碼管顯示技術(shù),任務(wù)要求: 通過7219控制七段數(shù)碼管顯示東、南方向的時(shí)間。,討論: 7219是什么? 什么是7段數(shù)碼管? 怎么顯示? ,字型表,P37頁。,a,b,c,d,e,f,g,dp,共陰極,數(shù)據(jù)端,公共端,0,1,0,0,1,1,1,1,思考:共陽極呢?,1.6.1 認(rèn)識(shí)七段數(shù)碼管,4位數(shù)碼管,#include #include void main(void) DDRD=0XFF; DDRC=0XFF; while (1) PORTD=0Xff;/關(guān)顯示 PORTC=0Xff; /送8.的字型碼 PORTD=0XfE;/第一位顯示
33、 delay_ms(1); PORTD=0Xff;/關(guān)顯示 PORTC=0X06; /送1的字型碼 PORTD=0Xfd; /第二位顯示 delay_ms(1); PORTD=0Xff; /關(guān)顯示 PORTC=0X5B; /送2的字型碼 PORTD=0Xfb; /第三位顯示 delay_ms(1); PORTD=0Xff; /關(guān)顯示 PORTC=0X4f; /送3的字型碼 PORTD=0Xf7; /第四位顯示 delay_ms(1); ,在Proteus仿真環(huán)境和實(shí)驗(yàn)裝置上實(shí)現(xiàn)。,拓展: 1.加長間隔延時(shí)會(huì)怎樣? 2.顯示12.34。,弊端: 1.軟件動(dòng)態(tài)掃描; 2.浪費(fèi)資源。,1.6.2 認(rèn)
34、識(shí)MAX7219,MAX7219,教材:P39頁。,特點(diǎn): 1.硬件動(dòng)態(tài)掃描; 2.可控制8位數(shù)碼管; 3.SPI(Serial Peripheral Interface-串行外設(shè)接口)通訊接口。,MAX7219的SPI控制協(xié)議:,(1)位顯示命令(命令字:0 x010 x08) 如:,(2)譯碼方式命令(命令字:0 x09) 如:,小數(shù)點(diǎn)不參與譯碼。,結(jié)合命令字0 x010 x08: 1.當(dāng)命令值的D7位為1時(shí),小數(shù)點(diǎn)(DP)點(diǎn)亮; 2.當(dāng)命令值的D7位為0時(shí),小數(shù)點(diǎn)(DP)不亮。,如:,(3)亮度調(diào)節(jié)命令(命令字:0 x0A) 如:,命令值的取值范圍為:0 x000 x0F。0最暗,0 x
35、0F最亮。,(4)動(dòng)態(tài)掃描位數(shù)命令(命令字:0 x0B) 如:,命令值的取值范圍為:0 x000 x07,對(duì)應(yīng)設(shè)定18位。,(5)停機(jī)/工作命令(命令字:0 x0C),命令值的D0位為0表示MAX7219停機(jī),D0=1時(shí)表示正常工作。,如:,(6)顯示測試命令(命令字:0 x0F),命令值的D0位為0表示按設(shè)定模式正常工作,D0=1時(shí)MAX7219將按最大亮度接通顯示。,1.6.3 單片機(jī)的SPI應(yīng)用,一、SPI通訊原理,01011101 00111101,SPI Bus Master Input/Slave Output SPI總線主機(jī)輸入/ 從機(jī)輸出,ATmega16中: MISO - P
36、B6 MOSI - PB5 SCK - PB7 - PB4,Max7219中: MISO - DIN MOSI SCK - CLK - LOAD,二、ATmega16與Max7219的SPI通訊應(yīng)用,三、ATmega16中的SPI控制寄存器,SPE,DORD,MSTR,CPOL,CPHA,SPR1,SPR0,SPIE,SPCR,SPIE:SPI中斷使能,1、SPCRSPI控制寄存器,SPE:SPI功能使能,DORD:數(shù)據(jù)次序 1:低位優(yōu)先 0:高位優(yōu)先,MSTR:主/從選擇 1:主SPI 0:從SPI,CPOL:同步信號(hào)(SCK)極性,CPHA:數(shù)據(jù)采樣相位(時(shí)刻) 1:SCK結(jié)束沿采樣 0:SCK起始沿采樣,SPR1、SPR0:SCK速率選擇 P43頁,表117 Fosc系統(tǒng)時(shí)鐘頻率。,WCOL,-,-,-,-,-,SPI2X,SPIF,SPSR,SPIF:SPI中斷標(biāo)志 串行發(fā)送結(jié)束后,SPIF 將被置位(1)。,2、SPSRSPI狀態(tài)寄存器,WCOL:寫沖突標(biāo)志位,SPI2X:SPI倍率,LSB,MSB,3、SPDRSPI數(shù)據(jù)寄存器,SPI通訊的數(shù)據(jù)將從SPDR中讀/寫。,SPDR,四、自定義控制函數(shù),#define uchar unsigned char void spi_xie(uchar i,uchar j) /PB.7(SCK)、PB.5(MO
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療診斷、監(jiān)護(hù)及治療設(shè)備制造考核試卷
- 二零二五年度跨境電子商務(wù)平臺(tái)運(yùn)營承包合同2篇
- 合同簽訂授權(quán)委托書
- 2025年滬教版七年級(jí)歷史下冊(cè)月考試卷含答案
- 2025年北師大新版八年級(jí)地理上冊(cè)月考試卷含答案
- 2025年外研版三年級(jí)起點(diǎn)選擇性必修3歷史下冊(cè)階段測試試卷
- 2025年度暖通工程綠色建材采購合同4篇
- 二零二五版景區(qū)導(dǎo)覽門牌定制服務(wù)合同4篇
- 2025版南京市房產(chǎn)局推廣的房屋抵押權(quán)設(shè)立合同模板4篇
- 二零二五年度農(nóng)膜行業(yè)人才培養(yǎng)與交流合同3篇
- DB32-T 4444-2023 單位消防安全管理規(guī)范
- 臨床三基考試題庫(附答案)
- 合同簽訂執(zhí)行風(fēng)險(xiǎn)管控培訓(xùn)
- DB43-T 3022-2024黃柏栽培技術(shù)規(guī)程
- 九宮數(shù)獨(dú)200題(附答案全)
- 人員密集場所消防安全管理培訓(xùn)
- 《聚焦客戶創(chuàng)造價(jià)值》課件
- PTW-UNIDOS-E-放射劑量儀中文說明書
- JCT587-2012 玻璃纖維纏繞增強(qiáng)熱固性樹脂耐腐蝕立式貯罐
- 典范英語2b課文電子書
- 員工信息登記表(標(biāo)準(zhǔn)版)
評(píng)論
0/150
提交評(píng)論