版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、AVR實(shí)習(xí)踐教學(xué)指導(dǎo)書AVR單片機(jī)實(shí)習(xí)教學(xué)指導(dǎo)書保定電力職業(yè)技術(shù)學(xué)院動(dòng)力工程系熱自教研室2007年4月18日目錄一 自延時(shí)與數(shù)據(jù)移位(M01- M02)二 鍵控分支(M03- M04)三 自動(dòng)計(jì)數(shù)(M05- M06)四 鍵控計(jì)數(shù)(M07- M08)五、邏輯控制(M09- M10)(一) 由邏輯圖編程(二) 由邏輯命題編程六 動(dòng)態(tài)顯示與數(shù)據(jù)轉(zhuǎn)換(M11- M13)七 外中斷使用(M14- M15)八 定時(shí)/計(jì)數(shù)器使用(M16- M19)(一) 定時(shí)器設(shè)置:(二) 定時(shí)中斷控制九 定時(shí)/計(jì)數(shù)器應(yīng)用(M20- M20B)(一) 實(shí)時(shí)鐘顯示(二) 高頻測量(三) 低頻測量十 脈寬調(diào)制PWM(M21-
2、M22)十一 顯示驅(qū)動(dòng)7219集成塊使用(M23- M27)(一) 數(shù)碼顯示:8位8段數(shù)碼管巡回顯示多參數(shù)(二) 點(diǎn)陣顯示:8×8點(diǎn)陣字符漢字顯示控制十二.模數(shù)轉(zhuǎn)換A/D功能的使用(M28- M29)十三.液晶顯示器的使用(M30- M33)十四4×4矩陣鍵盤的使用(M34- M37)十五 異步通信(M38)十六 模擬比較器(M39)十七 常數(shù)設(shè)置(M40)十八 教學(xué)演示綜合測試程序(M41- M42)十九 AVR畢業(yè)論文參考課題二十 AVR畢業(yè)論文參考框架附圖1:實(shí)習(xí)系統(tǒng)連接圖附圖2:AVR芯片引腳圖附圖3:實(shí)習(xí)板電路原理圖附錄1.自定義文件頭應(yīng)用說明。附錄2:CVAVR
3、編譯器簡介:一、標(biāo)示符 二、數(shù)據(jù)類型 三、關(guān)鍵字 四、常用內(nèi)部函數(shù). 附錄3:實(shí)習(xí)命題參考程序:一、自定義文件頭程序 二、命題程序(M1- M40)三、演示程序?qū)嵺`教學(xué)說明:1命題路徑及文件名:如 D:GY1M0101(含義 高職儀表- 學(xué)號(hào)- 命題編號(hào))其中:命題 M,考題 K2考核模式及分值:1上電時(shí)狀態(tài)(20分) 2控制狀態(tài)1(30分) 3控制狀態(tài)2 (30分) 4狀態(tài)返回(20分)一、延時(shí)顯示與移位 M01.試編程序,使8個(gè)發(fā)光管和8個(gè)數(shù)碼管全部按0.5秒間隔閃光。 M01A.試編程序,使單個(gè)發(fā)光管亮按0.2秒時(shí)間間隔向左循環(huán)移動(dòng)。 M02.試編程序,使發(fā)光管按0.5秒向左逐位循環(huán)全部
4、點(diǎn)亮。M02.A試編程序,使單個(gè)數(shù)碼管顯示臺(tái)號(hào)尾數(shù)并按0.3秒時(shí)間間隔向左循環(huán)移動(dòng)。教學(xué)提示:1.I/O口設(shè)置提示:編寫程序中必須先說明I/O口的狀態(tài):如圖所示每個(gè)口有三個(gè)口地址。2.閃光提示:使數(shù)碼管閃光有3種方法1).亮滅分別延時(shí)2)使用取反語句3)使用異或語句3.內(nèi)部自延時(shí)提示:延時(shí)函數(shù) (微秒級(jí)):文件頭: #include "delay.h" 格式:delay_us(165535) delay_ms(165535)例:delay_us(100)/100微妙 delay_ms(100)/100毫秒4.發(fā)光管移位提示: char i; for (i=0;i<=8
5、;i+) PORTC =0xFF>>i; delay_ms(500);5.數(shù)碼管移位提示: char i; for (i=0;i<8;i+) PORTD = (0X80>>i); delay_ms(500);二、鍵控分支 M03.試編程序,上電后,顯示臺(tái)標(biāo)尾數(shù),發(fā)光管全滅。按左1鍵后使八個(gè)發(fā)光管向左逐個(gè)全部點(diǎn)亮,循環(huán)進(jìn)行。按右1鍵后使八個(gè)發(fā)光管向右逐個(gè)全部點(diǎn)亮,循環(huán)進(jìn)行。(0.5秒)。M04.試編程序,上電后, 0.3秒閃光顯示臺(tái)號(hào)尾數(shù),按右1鍵發(fā)光管由中間向 兩邊依次全亮,按右2鍵由兩邊向中間全亮。按左1鍵后返回顯示臺(tái)號(hào)尾數(shù)。教學(xué)提示:按鍵控制的幾種模式1.程序
6、等待按后通過:while(PIND.0=1) ;2.按住時(shí)等待或執(zhí)行預(yù)定程序:while(PIND.0=0) ;3.按一鍵后執(zhí)行預(yù)定程序時(shí)if(PIND.0= =0) while(1) 程序參考框架: if(PIND.7= =0) while(PIND.0=1)左移if(PIND.0= =0) while(PIND.7=1)右移三、自動(dòng)計(jì)數(shù) M05.試編程序,使右1數(shù)碼管間隔03秒 顯示0F不斷循環(huán)。 M06.試編程序,使兩頭數(shù)碼管09不斷循環(huán)中小于5時(shí)發(fā)光管低四位亮,等于5時(shí)全亮,大于5時(shí)高四位亮。(以上間隔0.5S) 教學(xué)提示:1.解題思路 建一個(gè)全局型單維數(shù)組變量并給出0 F對應(yīng)的數(shù)碼管
7、代碼,然后將數(shù)組值通過循環(huán)語句按順序延時(shí)賦給PB口。2.共陰極數(shù)碼管字段顯示原理3.數(shù)碼管代碼表四、鍵控計(jì)數(shù) M07.試編程序,上電后使八個(gè)發(fā)光管全滅,每按右1鍵一次使八個(gè)發(fā)光管以亮1滅零方式記一個(gè)數(shù)。M08.試編程序,每按一次左1鍵數(shù)碼管加一個(gè)數(shù),數(shù)碼管到9時(shí)歸0繼續(xù)不斷循環(huán)計(jì)數(shù)。教學(xué)提示:1.鍵控抖動(dòng)波形圖:2.鍵控計(jì)數(shù)消抖程序1 if (PIND.0=0) /等待鍵按下 while (PIND.0=0)/等待鍵松開 delay_ms(2); /前沿延時(shí)消抖 / delay_ms(2); /后沿延時(shí)消抖 PORTC- - ; /上升沿有效3.鍵控計(jì)數(shù)消抖程序2(見教材) bit p1; p
8、1=PIND.0;if(PIND.0=0&&p1=1) PORTC- - ;p1=PIND.0;delay_ms(20); 五、邏輯控制(一) 由邏輯圖編程 如果用撥動(dòng)開關(guān)左1和右1二位代表邏輯輸入A、B,發(fā)光管最高位左1位代表邏輯輸出Y,試編程序?qū)崿F(xiàn)下述邏輯關(guān)系: M09.與非邏輯M09A.同或邏輯教學(xué)提示:1.與或非邏輯圖為例(使用PA口輸入和PC口輸出)1) 文件頭中定義三個(gè)位變量:bit A,B,Y2) 輸入變量賦值: A=PINA.0; B=PINA.7;3) 變量邏輯運(yùn)算: Y=!(A|B);4) 輸出變量送出賦值: PORTC.7=Y;(二) 由邏輯命題編程 如果
9、用撥動(dòng)開關(guān)左1、左2、左3代表邏輯輸入A、B、C,發(fā)光管左1、左2、左3位指示其狀態(tài),用數(shù)碼管1和0指示輸出狀態(tài)試編程序?qū)崿F(xiàn)下述邏輯關(guān)系:M10.模擬少數(shù)服從多數(shù)表決器(三取二)。M10A.模擬舉重電子表決器(加權(quán)三取二)。說明:三個(gè)舉重裁判:一個(gè)主裁判兩個(gè)副裁判 ,主裁具有否決權(quán),即當(dāng)主裁不同意時(shí)則此舉無效。只有主裁再加上至少一個(gè)副裁同意則此舉有效。M10B.模擬電源負(fù)荷智能分配(三對二變量)。 如果用撥動(dòng)開關(guān)左1、左2、左3代表邏輯輸入A、B、C,發(fā)光管左1、左2、左3位指示其狀態(tài),用數(shù)碼管左1和右1位亮滅指示輸出YA、YB狀態(tài)試編程序?qū)崿F(xiàn)下述邏輯關(guān)系:如圖所示有3個(gè)用電戶:A1、B1、C
10、2,其中A與B用電量相同,C2則是2倍A1的用電量。這些用電戶分別由2臺(tái)發(fā)電機(jī)Y1、Y3供電,發(fā)電機(jī)Y1的最大功率等于B1的功率消耗,發(fā)電機(jī)Y3的最大功率是Y1的3倍。試用撥動(dòng)開關(guān)分別代表A1、B1、C2用電戶,用發(fā)光管代表發(fā)電機(jī)Y1、Y3運(yùn)行狀態(tài)。編寫控制程序,能根據(jù)各用電戶的啟動(dòng)與關(guān)閉情況,以最節(jié)約電能的方式自動(dòng)啟停發(fā)電機(jī)。教學(xué)提示:1.解邏輯命題步驟 1) 按命題定義變量并建真值表; 2) 由真值表直接列邏輯式并簡化邏輯式;或由真值表建卡諾圖由卡諾圖列簡化邏輯式; 3) 根據(jù)邏輯式編寫程序;2. M10.解題要點(diǎn) 按命題定義變量、建真值表、化簡如下圖:3 M10B.解題要點(diǎn) 按命題定義變
11、量、建真值表、公式化簡如下圖:M10C水箱水位自動(dòng)顯示及控制如果用撥動(dòng)開關(guān)右1、右2、右3代表水位低中高檢測開關(guān)A、B、C,發(fā)光管右1、右2、右3則指示開關(guān)狀態(tài)。數(shù)碼管顯示0- 1- 2- 3分別代表水位指示,數(shù)碼管顯示E則代表故障,如圖所示,試編程序?qū)崿F(xiàn)下述功能: 無水時(shí)數(shù)碼管顯示0,且發(fā)光管左1位0.4秒閃光報(bào)警。水位漫過A數(shù)碼管顯示1,水位漫過B數(shù)碼管顯示2,水位漫過C數(shù)碼管顯示3,且發(fā)光管左2位0.4秒閃光報(bào)警。否則數(shù)碼管顯示E表示線路故障且發(fā)光管左3位0.4秒閃光報(bào)警。 教學(xué)提示1.連接方法:在實(shí)習(xí)板上,PB口接口與數(shù)碼管字段LEDD1接口用扁平線相連,PD接口與數(shù)碼管字位LEDW1
12、接口用扁平線相連。PC口與開關(guān)插口連接,PA口紅燈插口連接。2.水箱控制流程圖參考:六、動(dòng)態(tài)顯示與轉(zhuǎn)換 M11.試編程序,使數(shù)碼管顯示:“12345678”。(M11A:08- 00- 00)。 M12.試編程序,使數(shù)碼管循環(huán)高速顯示:“00009999”當(dāng)數(shù)字小于2006時(shí)發(fā)光管低四位亮否則發(fā)光管高四位亮。M12A.試編程序,使數(shù)碼管循環(huán)顯示0000FFFF,方式為“- - 數(shù)字- - ”,當(dāng)數(shù)字小于8000時(shí)發(fā)光管單燈循環(huán)右移否則循環(huán)左移。教學(xué)提示:顯示原理及參考程序1.要顯示的數(shù)據(jù):2.顯示數(shù)據(jù)過程:3.顯示子程序void display(void) /文件名 unsigned char
13、 i; for (i=0;i<8;i+) PORTB=ledbuffi;/將緩沖區(qū)數(shù)據(jù)送PORTB口 PORTD=(1<<i); /開始顯示 delay_ms(1); /每一位顯示保持一定時(shí)間 4.BCD轉(zhuǎn)換程序 ledbuff0=tabelXX%10; ledbuff1=tabelXX/10%10; ledbuff2=tabelXX/100%10; ledbuff3=tabelXX/1000%10;語句1例: XX =1234:除10取余等于4。語句2例: XX =1234:除10取商等于123.4,再除10取余等于3。其它類推。5.HEX轉(zhuǎn)換程序 ledbuff0=tab
14、elXX%16; ledbuff1=tabelXX/16%16; ledbuff2=tabelXX/256%16; edbuff3=tabelXX/256/16%16;M13.試編程序,使點(diǎn)陣管動(dòng)態(tài)顯示“甲”字。M13A.試編程序,使點(diǎn)陣管動(dòng)態(tài)間隔約1秒輪流顯示“電”、“力”兩字。.教學(xué)提示:點(diǎn)陣動(dòng)態(tài)顯示字位與字段排列如下:如甲的代碼。七、外中斷使用 M14.試編程序,上電后,發(fā)光管不顯示,按住中斷0鍵手離開后發(fā)光管低4位亮。按住中斷1鍵手離開后發(fā)光管高4位亮。 M15.試編程序,用外中斷0和1分別控制發(fā)光管左右循環(huán)依次全部點(diǎn)亮的方向,中斷0右循環(huán),中斷1左循環(huán)。教學(xué)提示:1.中斷原理2.中斷
15、消抖程序1delay_ms(20);if(PIND.2=1)PORTC=0X0F; GIFR|=0X40;3.中斷消抖程序2while(PIND.2=0)delay_ms(20);delay_ms(20);PORTC=0X0F;八、定時(shí)/計(jì)數(shù)器使用(一) 定時(shí)器設(shè)置: M16.試編程序,用定時(shí)/計(jì)數(shù)器0查詢方式使8個(gè)發(fā)光管間隔0.5秒閃亮。 M17.用定時(shí)/計(jì)數(shù)器0中斷方式實(shí)現(xiàn)數(shù)碼管低4位顯示- 00- 到- 60- 秒循環(huán)計(jì)時(shí)。M17A.同上題,分別用定時(shí)/計(jì)數(shù)器0,64分頻,1ms時(shí)基(t),中斷方式實(shí)現(xiàn)數(shù)碼管低4位顯示- 00- 到- 60- 秒循環(huán)計(jì)時(shí)教學(xué)提示1.T0中斷原理圖:2.T
16、0查詢法初始化PORTC=0xFF;DDRC=0xFF;TCCR0=0x02;/接內(nèi)部RC震蕩器,8分頻。TCNT0=56;/計(jì)數(shù)器初裝X=FF- t/T/ 注:T為分頻后周期,t為計(jì)數(shù)器溢出周期。3.T0查詢法編程for(i=250;i>0;i- - ) /查詢次數(shù)統(tǒng)計(jì) while (!(TIFR&0x01); /查詢是否溢出 TIFR|=0x01;/清溢出位 TCNT0=56; /重新置數(shù)4.T0中斷法服務(wù)程序interrupt TIM0_OVFT0_INT()/中斷函數(shù) TCNT0=56; /預(yù)置數(shù) secdd+; /200usIf(secdd=50) secdd=0;se
17、cd+;/10msIf(secd=100) secd=0;sec+;/1sIf(sec=60) sec=0;min+;/1m(二) 定時(shí)中斷控制 用定時(shí)器0中斷方式實(shí)現(xiàn): M18.試編程序,使數(shù)碼管循環(huán)顯示59- 分59秒- 1/100秒(初始數(shù)據(jù)00- 00- 00) 。 M18A.試編程序,顯示同上,按住左1鍵暫停,手離開則繼續(xù)。 M19.試編程序,使數(shù)碼管循環(huán)顯示23 - 時(shí)59分- 59秒(初始數(shù)據(jù)08- 00- 00)。 M19A.試編程序,顯示同上 。要求小時(shí)十位無效零消隱。教學(xué)提示:在T0中斷程序中寫入秒百分之一秒(secd) 、秒(sec)、分(min)、小時(shí)(hour)變量。
18、九、定時(shí)/計(jì)數(shù)器應(yīng)用 (一) 時(shí)鐘顯示M20 試作一個(gè)實(shí)時(shí)電子鐘: 1.上電后由顯示8- 00- 00開始走時(shí)。 2.小時(shí)十位無效零消隱。3.有調(diào)時(shí)/分功能。教學(xué)提示:無效零/閃點(diǎn)參考ledbuff1=table sec/10; if (secd>50) ledbuff2=table min%10; else ledbuff2=table min%10|0x80;/閃點(diǎn) if(min/10)=0) ledbuff3=0;/無效零 else ledbuff3=table min/10; (二) 高頻測量 M20A.較高頻率的測量(1k- 10kHz)如圖所示:由555振蕩器發(fā)出方波頻率信號(hào)
19、送給MEGA16芯片的PB1口,然后經(jīng)T1計(jì)數(shù)檢測在由數(shù)碼管顯示該方波頻率數(shù)。(三) 低頻測量M20B.較低頻頻率的測量如圖所示:由T0產(chǎn)生較低頻率方波頻率信號(hào)送給MEGA16芯片的PD6口,然后經(jīng)T1捕獲后再由數(shù)碼管顯示該方波頻率數(shù)。十、脈寬調(diào)制PWMM21.試編程序,使數(shù)碼管亮度由暗逐漸變亮再逐漸變暗。M22.試編程序,使數(shù)碼管亮度分別從0- 1- 2- 3- 4- 5V電壓間隔1秒循環(huán)輸出。 教學(xué)提示:脈寬調(diào)制工作原理: 如圖所示:由內(nèi)部寄存器OCR1A(或OCR1B)控制引腳PD5(或PD6)高電平輸出的占空比,T圖為設(shè)置為快速正向輸出式的波形圖。脈寬調(diào)制原理(正向快速)十一、顯示驅(qū)動(dòng)
20、7219集成塊使用1. 集成塊驅(qū)動(dòng)顯示8位8段數(shù)碼管(使用串行口傳送方式只占用2個(gè)I/O口資源) M23.用顯示驅(qū)動(dòng)7219集成塊進(jìn)行數(shù)碼顯示1- 8數(shù)字。(使用串行口傳送方式只占用3位I/O口)M24.用顯示驅(qū)動(dòng)7219集成塊進(jìn)行數(shù)碼顯示8通道號(hào)123.45數(shù)據(jù)。(要求:學(xué)會(huì)7219兩個(gè)子程序調(diào)用)M25.用顯示驅(qū)動(dòng)7219集成塊進(jìn)行數(shù)碼顯示電子時(shí)鐘。教學(xué)提示:在實(shí)習(xí)板上,將7219W1接口與數(shù)碼管字位LEDW1接口用扁平線相連,將7219D1接口與數(shù)碼管字段LEDD1接口用扁平線相連。2. 集成塊驅(qū)動(dòng)顯示8×8點(diǎn)陣LED管M26.用顯示驅(qū)動(dòng)7219集成塊進(jìn)行顯示點(diǎn)陣漢字“光”。M
21、26A.用7219點(diǎn)陣驅(qū)動(dòng)集成塊顯示移動(dòng)的“電力”兩字。M27.用顯示驅(qū)動(dòng)7219集成塊同時(shí)進(jìn)行數(shù)字漢字顯示。教學(xué)提示:1.連接方法:在實(shí)習(xí)板上,將7219W2接口與點(diǎn)陣字位LEDW2接口用扁平線相連,將7219D2接口與點(diǎn)陣字段LEDD2接口用扁平線相連。2.7219驅(qū)動(dòng)點(diǎn)陣排列方式如圖所示:十二、模數(shù)轉(zhuǎn)換A/D功能的使用:M28.用顯示驅(qū)動(dòng)7219集成塊顯示第1通道A/D轉(zhuǎn)換數(shù)據(jù)(0- 1023對應(yīng)0- 5V)。M29.用顯示驅(qū)動(dòng)7219集成塊顯示第6通道A/D轉(zhuǎn)換數(shù)據(jù):0- 500對應(yīng)0- 5V,一階濾波(系數(shù)0.3),8次采集取均值M29A 要求同上,當(dāng)數(shù)據(jù)大于400時(shí),8發(fā)光管200
22、mS閃光。M29B 要求同上,每隔5秒顯示分別顯示0,1,6,7通道數(shù)據(jù)。教學(xué)提示:A/D轉(zhuǎn)換原理示意圖十三、液晶顯示器的使用:M30.用液晶顯示器顯示“YB0501- 臺(tái)號(hào)- 學(xué)號(hào)”。M31.用液晶顯示器顯示0000- 9999循環(huán)間隔100ms。M32.用液晶顯示器顯示“編號(hào)- A/D轉(zhuǎn)換數(shù)據(jù)”。M33.用液晶顯示器第2行中間位置顯示“小時(shí)- 分- 秒”。教學(xué)提示:可參考附錄相關(guān)函數(shù)規(guī)定。輸出字符見7位ASCII碼表:十四、4×4矩陣鍵盤的使用:(占用1個(gè)8位I/O口資源)M34.上電后,用液晶顯示4×4矩陣鍵盤按鍵數(shù)據(jù)。M35.上電后,8發(fā)光管不亮,按4×4
23、矩陣鍵盤j16發(fā)光管高4位亮,按j17發(fā)光管低4位亮,按j35后全亮,按j36后全滅。M36.用液晶顯示器顯示“小時(shí)- 分- 秒”,用矩陣鍵盤J35,J36調(diào)整時(shí)、分。M37.用矩陣鍵盤右2排改變采集通道號(hào)及采集對應(yīng)的數(shù)據(jù)。教學(xué)提示1矩陣鍵盤連接圖:2矩陣鍵盤鍵值圖(key):十五 異步通信練習(xí)M38 通過異步通信接口發(fā)送8個(gè)字節(jié)的數(shù)據(jù),接收8個(gè)字節(jié)的數(shù)據(jù),并顯示接收的數(shù)據(jù)。 教學(xué)提示在實(shí)習(xí)板上,將7219W1接口與LEDW1接口用扁平線相連,將7219D1接口與LEDD1接口用扁平線相連。使用7219芯片控制的8位8段數(shù)碼顯示器顯示時(shí)鐘。將通信接口的RXD與TXD用連接線短接,通過RS232
24、接口的異步通信單機(jī)自發(fā)自收(圖1)或雙機(jī)通信(圖2)。 圖1單機(jī)通信自發(fā)自收連接 圖2雙機(jī)通信連接十六 模擬比較器練習(xí)M39 如圖所示:先將兩電位器接入10位A/D轉(zhuǎn)換并顯示轉(zhuǎn)換值(0- 1023),調(diào)整電位器是其值分別為1/2 *1023。然后用單股插線一頭插入電位器RW0、RW1中心抽頭,另一頭插入M16芯片PB2、PB3引腳。試編程序當(dāng)PB2腳電壓值大于PB3腳電壓值時(shí)發(fā)光管LED0.4秒閃光。十七 常數(shù)設(shè)置練習(xí)M40 試用4×4矩陣鍵盤將16個(gè)整型常數(shù)保存到M16芯片中的EEROM中。十八 應(yīng)用命題教學(xué)演示 綜合演示程序1 :數(shù)碼管顯示數(shù)字- 點(diǎn)陣管顯示移動(dòng)漢字- 液晶顯示A
25、SCII碼- 發(fā)光管循環(huán)移動(dòng)。綜合演示程序2 :時(shí)鐘- 漢字- 電子音樂。十九 AVR單片機(jī)畢業(yè)論文課題參考1智能型數(shù)字定時(shí)交通燈控制系統(tǒng)2節(jié)日彩燈-時(shí)鐘-漢字-音樂系統(tǒng)3多路數(shù)據(jù)采集-巡測-選點(diǎn)-報(bào)警系統(tǒng)4水箱水位檢測-報(bào)警-顯示-控制系統(tǒng)二十AVR單片機(jī)畢業(yè)論文參考框架(基于AVR單片機(jī)的數(shù)據(jù)采集系統(tǒng))題目- 作者- 摘要- 關(guān)鍵詞- 正文:一、 概述(或引言)1 用AVR單片機(jī)實(shí)現(xiàn)數(shù)據(jù)采集的優(yōu)勢(可與傳統(tǒng)m51相比)硬件方面:例1) AVR內(nèi)部資源豐富自帶模數(shù)A/D數(shù)模D/A(PWM)轉(zhuǎn)換,使電路簡單可靠。2) AVR指令執(zhí)行速度更快是m51的幾十倍。更適合多點(diǎn)數(shù)據(jù)巡回檢測3) AVR內(nèi)
26、部有程序存儲(chǔ)器(FLASH)和數(shù)據(jù)存儲(chǔ)器(EEROM)無須向m51一樣需外加存儲(chǔ)器??蓽p少成本及簡化電路等等。軟件方面:例1) 使用高級(jí)C語言比匯編語言有更大的優(yōu)勢,尤其在數(shù)據(jù)處理方面高級(jí)語言更直觀且計(jì)算起來更方便。2) 高級(jí)語言在程序移植、功能拓展、程序解讀方面更有獨(dú)到之處等等二、AVR數(shù)據(jù)采集系統(tǒng)框圖例:輸入模塊中可增加模擬量隔離(耦合式如AD202見資料)和開關(guān)量隔離(光電式如4N31)電路等。三 、主控電路1芯片選擇可列表說明2 時(shí)鐘晶振電路3 鍵盤矩陣電路4顯示電路(可拓展點(diǎn)陣漢字顯示)5 報(bào)警電路6驅(qū)動(dòng)電路 等等四 、模擬量開關(guān)量輸入電路 1壓力差壓信號(hào)(如1151)經(jīng)I/U轉(zhuǎn)換電
27、路轉(zhuǎn)成0- 5v信號(hào)進(jìn)主控模塊2溫度信號(hào)(如熱電偶)經(jīng)mv/U轉(zhuǎn)換電路轉(zhuǎn)成0- 5v信號(hào)進(jìn)主控模塊3轉(zhuǎn)速信號(hào)、開關(guān)量可通過整形電路和光電隔離電路進(jìn)進(jìn)主控模塊等 五 、模擬量開關(guān)量輸出電路1 模擬量輸出是主控cpu進(jìn)行脈寬調(diào)制(pwm)后輸出,然后還需用運(yùn)算放大器進(jìn)行濾波緩沖隔離后轉(zhuǎn)換成電壓信號(hào)0- 5V送出。需要時(shí)還需通過電壓電流轉(zhuǎn)換電路(可使用專用集成塊:如AM462,XTR110等可參考有關(guān)資料)送出。 2開關(guān)量輸出由應(yīng)經(jīng)過光電隔離再通過驅(qū)動(dòng)電路(如可控硅,繼電器等)輸出。六 、軟件設(shè)計(jì)1軟件功能說明2軟件流程框圖3程序清單(應(yīng)有必要的注解)七 、結(jié)束語 (略) 八、參考文獻(xiàn):說明資料出處
28、 九、附錄:提供必要的表格圖形等附圖1:實(shí)習(xí)系統(tǒng)連接圖附圖2:AVR芯片引腳圖附圖3:實(shí)習(xí)板電路原理圖附錄1:自定義文件頭應(yīng)用說明1. 動(dòng)態(tài)顯示文件頭#include <dtpcd.txt>1)連接:PB-LEDD,PC-LEDW2)函數(shù):初始化init();顯示子程序disp();轉(zhuǎn)換子程序bcd(long n); hex(long n);2. 時(shí)鐘T0中斷文件頭#include <szt0.txt>1)連接:無2)函數(shù) 初始化init_t0();時(shí)間變量hour,min,sec,secd,(0.01s)secdd(0.2ms)。3. 矩陣鍵盤掃描文件頭#includ
29、e <4x4pc.txt>或#include <4x4pd.txt>1)連接:PC口或PD口-矩陣鍵盤接口2)函數(shù) 初始化 無;子程序jp();鍵值char key。4. 7219驅(qū)動(dòng)文件頭#include <7219p1.txt>或#include <7219p0.txt>1)連接:7219D1-LEDD1,7219W1-LEDW1;7219D2-LEDD2,7219W2-LEDW2;2)函數(shù):初始化spi_7219();數(shù)碼管/點(diǎn)陣管復(fù)位子程序void c_7219(char i,char j)數(shù)碼顯示子程序spi_xie(char i,ch
30、ar j) 點(diǎn)陣顯示子程序void spi_xie1(char i1,char j1,)單參數(shù)顯示子程序void x_7219(long x)時(shí)鐘顯示子程序void sz_7219(char hour,char min,char sec)多參數(shù)顯示子程序char xunce_7219(char i,int y,char n)5. 模數(shù)轉(zhuǎn)換A/D文件頭#include <abc.txt>1)連接:PA口-8電位器插口;2)函數(shù):初始化 無,數(shù)據(jù)采集子程序float adcx( char adc_input,float n)6. 脈寬調(diào)制PWM文件頭#include <pwm.t
31、xt>1)輸出:PD4口/PD5口;2)函數(shù):初始化 void init_p(void),10位,正向。3)控制OCR1A/OCR1B;7. 液晶顯示LCD文件頭#include <lcdpd.txt>1)連接:PD口-lcd插口;PDPA0-0x12,0x15,0x18,0x1b2)函數(shù):初始化 lcd_init(16);時(shí)鐘顯示子程序void sz_lcd(char hour,char min,char sec)通道數(shù)據(jù)顯示子程序char xunce_lcd(char i,long y)8. 音樂文件頭#include <qm.txt>和#include &l
32、t;muc.txt>1)連接:PA.0口-揚(yáng)聲器插針;2)函數(shù):初始化void init_m(void); 音樂子程序music(char qm);時(shí)間變量hour,min,sec,secd,(0.01s)secdd(0.2ms)附錄2:CodesionAVR編譯器簡介 一、 .標(biāo)識(shí)符:CodeVisionAVR(以下簡稱為CVAVR)的標(biāo)識(shí)符可以由字母、數(shù)字和下劃線組成,但是必須用字母或下劃線開頭,CVAVR標(biāo)識(shí)符最長只能是32個(gè)字符。二、CVAVR數(shù)據(jù)類型 三、 關(guān)鍵字: 關(guān)鍵字 用 途說 明break程序語句退出最內(nèi)層循環(huán)體bit數(shù)據(jù)類型聲明位變量case程序語句switch語句中
33、的選擇項(xiàng) char 數(shù)據(jù)類型聲明 單字節(jié)整型數(shù)或字符型數(shù)據(jù) const 存儲(chǔ)類型聲明 在程序執(zhí)行過程中不可修改的變量值continue 程序語句 退出本次循環(huán),轉(zhuǎn)向下一次循環(huán) defaut 程序語句 switch語句中的失敗選擇項(xiàng) do 程序語句 構(gòu)成dowhile循環(huán)結(jié)構(gòu) double 數(shù)據(jù)類型聲明 雙精度浮點(diǎn)數(shù)eeprom存儲(chǔ)類型聲明else 程序語句 構(gòu)成 ifelse選擇結(jié)構(gòu) enum 數(shù)據(jù)類型聲明 枚舉 extem 存儲(chǔ)類型聲明 在其他程序模塊中聲明了的全局變量flash數(shù)據(jù)類型聲明 float 數(shù)據(jù)類型聲明 單精度浮點(diǎn)數(shù) for 程序語句 構(gòu)成for循環(huán)結(jié)構(gòu) goto 程序語句 構(gòu)
34、成goto循環(huán)結(jié)構(gòu) if 程序語句 構(gòu)成if- else選擇結(jié)構(gòu) int 類據(jù)類型聲明 基本整型數(shù)interrupt中斷標(biāo)示符 long 數(shù)據(jù)類型聲明 長整型數(shù) return 程序語句 函數(shù)返回 short 數(shù)據(jù)類型聲明 短整型數(shù) signed 數(shù)據(jù)類型聲明 有符號(hào)數(shù)二進(jìn)制的最高位為符號(hào)位 sizeof 運(yùn)算符 計(jì)算表達(dá)式或數(shù)據(jù)類型的字節(jié)數(shù)sfrb字節(jié)定義sfrw字定義 static 存儲(chǔ)類型聲明 靜態(tài)變量 struct 數(shù)據(jù)類型聲明 結(jié)構(gòu)類型數(shù)據(jù) switch 程序語句 構(gòu)成switch選擇結(jié)構(gòu) typedef 數(shù)據(jù)類型聲明 重新進(jìn)行數(shù)據(jù)類型定義 union 數(shù)據(jù)類型聲明 聯(lián)合類型數(shù)據(jù) un
35、signed 數(shù)據(jù)類型聲明 無符號(hào)數(shù)據(jù) void 數(shù)據(jù)類型聲明 無類型數(shù)據(jù) volatile 數(shù)據(jù)類型聲明 聲明該變量在程序執(zhí)行中可被隱含改變 while 程序語句 構(gòu)成while和dowhile循環(huán)語句 四、CodeVsionAVR編譯器常用庫函數(shù) 1) 字符類型函數(shù) 下列函數(shù)支持ASCII字符運(yùn)算,使用這些函數(shù)之前應(yīng)當(dāng)用#include”ctypeh"預(yù)處理。(1) unsigned char isalnum(char c):如果c是數(shù)字或字母則返回1,否則返回0。(2) unsigned char isalpha(char c):如果c是字母則返回1,否則返回0。(3) uns
36、igned char isascii(char c):如果c是ASCII碼(0127)則返回1,否則返回0。(4) unsigned char iscntrl(char c):如果c是控制字符(031或127)則返回1,否則返回0。(5) unsigned char isdigit(char c):如果c是十進(jìn)制數(shù)字則返回1,否則返回0。(6) unsigned char islower(char c):如果c是小寫字母則返回1,否則返回0。(7) unsigned char isphnt(char c):如果c是一個(gè)可打印字符(32- 127)則返回1,否則返回0。(8) unsigned
37、char ispunct(char c):如果c是一個(gè)標(biāo)點(diǎn)字符(ASCII碼中除了控制字符、數(shù)字和字母以外的字符)則返回1,否則返回0。 :(9) unsigned char isspace(char c):如果c是空格、CR和HT返回1,否則返回0。(10) unsigned char isupper(char c):如果c是大寫字母則返回1,否則返回0。(11) unsigned char isxdigit(char c):如果c是16進(jìn)制數(shù)字則返回1,否則返回0。(12) chartoascii(char c):返回字符c對應(yīng)的ASCII。(13) unsigned char toint
38、(char c):把c當(dāng)做16進(jìn)制字符并返回對應(yīng)的10進(jìn)制整數(shù)(范圍:015)。(14) char tolower(char c):如果c是大寫字母則返回對應(yīng)的小寫字母,其他的字符保持不變。(15) char toupper(char c):如果c是小寫字母則返回對應(yīng)的大寫字母,其他的字符保持不變。 2) 標(biāo)準(zhǔn)輸入輸出函數(shù) 下列函數(shù)支持通過UART端口的輸入輸出(IO),使用這些函數(shù)之前應(yīng)當(dāng)用#include “stdio.h"預(yù)處理,并對相應(yīng)的端口初始化。(1) char getchar(void):使用查詢方式返回由UART接收的一個(gè)字符。(2) void putchar(cha
39、r c):使用查詢方式由UART發(fā)送一個(gè)字符c。(3) void puts(char *str):使用putchar把SRAM中以空字符o0”結(jié)束的字符串輸出,并在輸出結(jié)束后自動(dòng)插入回車符。(4) void putsf(charflash *str):使用putchar把FLASH中的以空字符“0”結(jié)束的字符串輸出,并在輸出結(jié)束后自動(dòng)插入換行符。(5) void wintf(charflash *fmtstr,argl,arg2,.)使用putchar按格式說明符輸出fmtstr字3) 標(biāo)準(zhǔn)內(nèi)存分配函數(shù) 使用這些函數(shù)之前應(yīng)當(dāng)用#include”stdlibh"預(yù)處理。(1) int
40、atoi(char *str):轉(zhuǎn)換字符串str為整型數(shù)并返回它的值,str指向字符串的起始字符必須是數(shù)字字符或小數(shù)點(diǎn),否則返回0。當(dāng)碰到字符串中第一個(gè)十進(jìn)制數(shù)字和小數(shù)點(diǎn)以外的字符時(shí),轉(zhuǎn)換結(jié)束。 (2) long int atol(char *str):轉(zhuǎn)換字符串str為長整型數(shù)并返回它的值,str指向字符串的起始字符必須是數(shù)字字符或小數(shù)點(diǎn),否則返回0。當(dāng)碰到字符串中第一個(gè)十進(jìn)制數(shù)字和小數(shù)點(diǎn)以外的字符時(shí),轉(zhuǎn)換結(jié)束。(3) void itoa(int n,char *str):轉(zhuǎn)換整型數(shù)為字符型字符串。str指向字符串的起始字符必須是數(shù)字字符或小數(shù)點(diǎn),否則返回0。當(dāng)碰到字符串中第一個(gè)十進(jìn)制數(shù)字和
41、小數(shù)點(diǎn)以外的字符時(shí),轉(zhuǎn)換結(jié)束。(4) void ltoa(longint n,char *str):轉(zhuǎn)換長整型數(shù)為字符型字符串,這個(gè)函數(shù)的原型和源代碼在ltoah文件中。(5) void ftoa(float n,unsigned char decimals,char *str):轉(zhuǎn)換浮點(diǎn)數(shù)為字符型字符串,由decimals指定字符串的長度,這個(gè)函數(shù)的原型和源代碼在ftoah文件中。(6) void ftoe(float n,unsigned chardecimals,char *str):轉(zhuǎn)換浮點(diǎn)數(shù)為字符型字符串,由decimals指定字符串的長度,字符串采用以e為底的方法,這個(gè)函數(shù)的原型和
42、源代碼在ftoeh文件中。(7) float atof(char *str):轉(zhuǎn)換字符串為浮點(diǎn)數(shù),字符串str起始字符必須是數(shù)字字符或小數(shù)點(diǎn),否則返回0。當(dāng)碰到字符串中第一個(gè)十進(jìn)制數(shù)字和小數(shù)點(diǎn)以外的字符時(shí),轉(zhuǎn)換結(jié)束。這個(gè)函數(shù)的原型和源代碼在atoh文件中。(8) int rand(void):產(chǎn)生一個(gè)032767之間的隨機(jī)數(shù)。(9) void srand(int seed):設(shè)置隨機(jī)數(shù)發(fā)生器的種子數(shù)。4) 數(shù)學(xué)函數(shù)使用這些函數(shù)之前應(yīng)當(dāng)用#include”mathh"預(yù)處理。(1) unsigned char cabs(char n):返回n的絕對值。(2) unsigned int
43、abs(char n):返回n的絕對值。(3) unsigned long labs(long int n):返回n的絕對值。(4) float fabs(float n):返回n的絕對值。(5) signed char cmax(char a,char b):返回a和b的最大值。(6) int max(inta,int b):返回a和b的最大值。(7) long int lmax(long int a, long int b):返回a和b的最大值(8) float fman(float a,float b):返回a和b的最大值。(9) char cmin(char a,char b):返回a
44、和b的最小值。(10) int min(int a,int b):返回a和b的最小值。(11) long int lmin(long int a,long int b):返回a和b的最小值。(12) float fmin(float a,float b):返回a和b的最小值。(13) char csign(char n):當(dāng)n分別為負(fù)數(shù)、0、正數(shù)時(shí),返回-1、0、1。(14) char sign(int n):當(dāng)n分別為負(fù)數(shù)、0、正數(shù)時(shí),返回-1、0、1。(15) char lsign(long int n):當(dāng)n分別為負(fù)數(shù)、0、正數(shù)時(shí),返回-1、0、1。(16) char fsign(flo
45、at n):當(dāng)n分別為負(fù)數(shù)、0、正數(shù)時(shí),返回-1、0、1。(17) unsigned char sqrt(unsigned int n):返回?zé)o符號(hào)整數(shù)n的平方根。(18) unsigned int lsqrt(unsigned long n):返回?zé)o符號(hào)長整數(shù)n的平方根。(19) float sqrt(float n):返回浮點(diǎn)數(shù)n的平方根。(20) float floor(float n):返回不大于n的最大整數(shù)。(21) float ceil(float n):返回對應(yīng)n的整數(shù),小數(shù)部分四舍五入。(22) float fmod(float n,float y):返回r/y的余數(shù)。(23)
46、 float modf(float n,float *ipart):把浮點(diǎn)數(shù)n分解成整數(shù)部分和小數(shù)部分。整數(shù)部分存放在ipart指向的變量中,小數(shù)部分應(yīng)大于或等于05而小于1,并作為函數(shù)的返回值。(24) float ldenp(float n,int enpn):返回n×2enpn。(25) float frenp(float n,int *enpn):把浮點(diǎn)數(shù)n分解成數(shù)字部分y(尾數(shù))和以2為底的指數(shù)n兩個(gè)部分,即n=y×2”,y要大于等于05小于1,y值被函數(shù)返回,而n值存放在enpn指向的變量中。(26) float enp(float n):返回e n的值。(27
47、) float log(float n):返回n的自然對數(shù)。(28) float logl0(float n):返回以10為底的n的對數(shù)。(29) float pow(float n,float y):返回ny的值。(30) float sin(float n):返回n的正弦函數(shù)值,n為弧度。(31) float cos(float n):返回n的余弦函數(shù)值,n為弧度。(32) float tan(float n):返回n的正切函數(shù)值,n為弧度。(33) float sinh(float n):返回n的雙曲正弦函數(shù)值,n為弧度。(34) float cosh(float n):返回n的雙曲余弦
48、函數(shù)值,n為弧度。(35) float tanh(float n):返回n的雙曲正切函數(shù)值,n為弧度。(36) float asin(float n):返回n的反正弦函數(shù)值,返回值為弧度,范圍在-n2- ,I2之間,n的值必須在-1 1之間。(37) float acos(float n):返回n的反余弦函數(shù)值,返回值為弧度,范圍在0n之間,n的值必須在-11之間。 (38) float atan(float n):返回n的反正弦函數(shù)值,返回值為弧度,范圍在-n2- n拉之間。(39) float atall2(float y,float n):返回yn的反正弦函數(shù)值,返回值為弧度,范圍在-之
49、間。5) 字符串函數(shù)使用這些函數(shù)之前應(yīng)當(dāng)用#includ"estringh"預(yù)處理。(1) char *strcat(char *strl,char *str2):復(fù)制字符串str2到字符串strl的結(jié)尾,返回strl的指針。(2) char *strcatfchar *strl,charflash *str2:復(fù)制FLASH中str2到strl的結(jié)尾,返回strl的指針。(3) char *stmcat(char *strl,char *str2,unsigned char n):復(fù)制str2(不含結(jié)束符NULL)的n個(gè)字符到strl的結(jié)尾,如果str2的長度比n小,則只
50、復(fù)制str2,返回strl的指針。(4) char *strncatf(char *strl,char flash *str2,unsigned char n):復(fù)制FLASH中的字符串str2(不含結(jié)束符NULL)的n個(gè)字符到strl的結(jié)尾,如果str2的長度比n小,則只復(fù)制str2,返回strl的指針。(5) char *strchr(char *str,char c):在字符串str中搜索第一個(gè)出現(xiàn)的字符c。如果成功,返回匹配字符的指針;否則返回NULL。(6) char *strrchr(char *str,char c):在字符串str中搜索最后一個(gè)出現(xiàn)的字符c。如果成功,返回匹配字
51、符的指針;否則返回NULL。(7) Signed char strpos(char *str,char c):在字符串str中搜索第一個(gè)出現(xiàn)的字符c。如果成功,返回匹配字符在字符串中的位置;否則返回-1。(8) Signed char strrpos(char *str,char c):在字符串str中搜索最后一個(gè)出現(xiàn)的c。如果成功,返回匹配字符在字符串中的位置;否則返回-1。(9) Signed char strcmp(char *strl,char *str2):比較兩個(gè)字符串。如果相同,返回0:如果strl>str2,返回值>0;如果strl<str2,返回值<0
52、。(10) Signed char strcmpf(char *strl,charflash *str2):比較SRAM中的字符串strl和Flash中的字符串str2。如果相同,返回0;如果strl>str2,返回值>0;如果strl<str2,返回值<0。 (11) Signed char stmcmp(char *strl,char *str2,unsigned char n): 比較兩個(gè)字符串的前n個(gè)字符。如果相同,返回0;如果strl>str2,返回值>0;如果strl<str2,返回值<0。(12) Signed char strnc
53、mpf(char *strl,charflash *str2,unsigned char n):比較SRAM中的字符串strl和Flash中的字符串str2的前n個(gè)字符。如果相同,返回0;如果strl>str2,返回值>0;如果strl<str2,返回值<0。(13) char *strcpy(char *dest,char *src):復(fù)制字符串src到字符串dest,返回dest的指針。(14) char *strcpyf(char *dest,charflash *src):復(fù)制Flash中的字符串src到SRAM中的字符串dest,返回dest的指針。(15) char *stmcpy(char *dest,char *str,unsigned char n):復(fù)制字符串str的前n個(gè)字符到字符串dest,返回dest的指針。(16) char *stmcpy(char *dest,char flash *src,unsigned char n):復(fù)制Flash中的字符串src的前n個(gè)字符到SRAM中的字符串dest,返回dest的指針。(17) unsign
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州電力職業(yè)技術(shù)學(xué)院《Python編程原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽幼兒師范高等專科學(xué)?!吨评湓砼c低溫工程》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025青海省建筑安全員B證(項(xiàng)目經(jīng)理)考試題庫
- 2025重慶建筑安全員B證考試題庫及答案
- 貴陽康養(yǎng)職業(yè)大學(xué)《建筑工程識(shí)圖綜合實(shí)訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州中醫(yī)藥大學(xué)《插畫創(chuàng)作》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年云南建筑安全員-B證考試題庫附答案
- 廣州醫(yī)科大學(xué)《高頻電子電路》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025海南省安全員-B證考試題庫附答案
- 2025云南省安全員-B證考試題庫及答案
- 《XL集團(tuán)破產(chǎn)重整方案設(shè)計(jì)》
- 智慧金融合同施工承諾書
- 術(shù)后甲狀旁腺功能減退癥管理專家共識(shí)
- 【7道期末】安徽省安慶市區(qū)2023-2024學(xué)年七年級(jí)上學(xué)期期末道德與法治試題(含解析)
- 2024年01月22094法理學(xué)期末試題答案
- 基金項(xiàng)目經(jīng)理招聘筆試題與參考答案(某大型集團(tuán)公司)2025年
- 2024年1月國家開放大學(xué)法律事務(wù)??啤睹穹▽W(xué)(1)》期末紙質(zhì)考試試題及答案
- 學(xué)校2024-2025學(xué)年教研工作計(jì)劃
- 漢字文化解密學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 國家開放大學(xué)電大本科《工程經(jīng)濟(jì)與管理》2023-2024期末試題及答案(試卷號(hào):1141)
- TBT3134-2023機(jī)車車輛驅(qū)動(dòng)齒輪箱 技術(shù)要求
評論
0/150
提交評論