補充單片機應用系統(tǒng)設計實例_第1頁
補充單片機應用系統(tǒng)設計實例_第2頁
補充單片機應用系統(tǒng)設計實例_第3頁
補充單片機應用系統(tǒng)設計實例_第4頁
補充單片機應用系統(tǒng)設計實例_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 單片機應用系統(tǒng)設計實例單片機應用系統(tǒng)設計實例1. 8051系列單片機實現(xiàn)計算器功能系列單片機實現(xiàn)計算器功能2. 簡易波形發(fā)生器簡易波形發(fā)生器3. 簡易廣告屏設計簡易廣告屏設計4. 尋跡小車的設計尋跡小車的設計5. 無線呼叫系統(tǒng)設計無線呼叫系統(tǒng)設計1. 8051單片機實現(xiàn)計算器功能單片機實現(xiàn)計算器功能一一 設計目標和實現(xiàn)方法設計目標和實現(xiàn)方法v 滿足計算器要求,進行加減乘除運算;滿足計算器要求,進行加減乘除運算;v 打開計數(shù)器時,初始顯示數(shù)字為打開計數(shù)器時,初始顯示數(shù)字為0123;v 實現(xiàn)簡單的數(shù)據運算,不支持連續(xù)運算;實現(xiàn)簡單的數(shù)據運算,不支持連續(xù)運算;v 仿真和調試要用到仿真和調試要用到p

2、rotues 和和keil 軟件。軟件。二二 方案論證與設計方案論證與設計v鍵盤包括鍵盤包括0到到9十個數(shù)字鍵十個數(shù)字鍵,加減乘除四個符加減乘除四個符 號鍵號鍵,清除鍵和等號鍵,共清除鍵和等號鍵,共16 個按鍵個按鍵 ;v鍵盤選用鍵盤選用4x4行列式鍵盤行列式鍵盤結構(如下圖);結構(如下圖);v輸入模塊:輸入模塊:鍵盤掃描鍵盤掃描;v數(shù)字大小范圍為數(shù)字大小范圍為4位,位, 選用選用4個個led數(shù)碼管數(shù)碼管 顯示數(shù)據和結果;顯示數(shù)據和結果;三三 硬件電路設計硬件電路設計(1)主要器件主要器件:采用:采用8051 單片機單片機,它能夠滿它能夠滿足數(shù)據的采集、控制和數(shù)據處理的需求足數(shù)據的采集、控制

3、和數(shù)據處理的需求,顯示顯示用輸入采用按鍵方式的用輸入采用按鍵方式的4 段段led 數(shù)碼管數(shù)碼管;(2)功能和操作功能和操作:加減乘除運算和顯示。步:加減乘除運算和顯示。步驟如下:驟如下: 上電后上電后,屏幕初始化屏幕初始化,顯示顯示初始數(shù)值初始數(shù)值0123; 計算計算。依次數(shù)字鍵。依次數(shù)字鍵,符號鍵符號鍵,數(shù)字鍵數(shù)字鍵,等號鍵,等號鍵,屏幕上顯示出計算結果;屏幕上顯示出計算結果; 如果要如果要再次計算再次計算,可以按下可以按下“on/c”鍵清鍵清0,或者按下單片機的復位鍵或者按下單片機的復位鍵,重新初始化。重新初始化。四四 軟件設計軟件設計v模塊化程序設計模塊化程序設計是單片機應用中最常用的是

4、單片機應用中最常用的程序設計方法;程序設計方法;v模塊化程序設計的模塊化程序設計的中心思想中心思想是把一個復雜是把一個復雜應用程序按整體功能劃分成若干相對獨立應用程序按整體功能劃分成若干相對獨立的程序模塊的程序模塊,各模塊可以單獨各模塊可以單獨 設計設計,編程和編程和調試調試,然后組合起來;然后組合起來;v本系統(tǒng)的程序模塊主要分為本系統(tǒng)的程序模塊主要分為主程序主程序,鍵值鍵值獲取程序獲取程序和和處理子程序處理子程序等,其流程圖分別等,其流程圖分別如下圖所示:如下圖所示:主程序流程圖定時中斷子程序流程圖按鍵處理子程序流程圖主程序:主程序:void main() inint();while(1)

5、if(key)pkey();按鍵處理子程序:按鍵處理子程序:void pkey() switch(key) case zero: modify_led(0);break; case one: modify_led(1);break; case two: modify_led(2);break; case three: modify_led(3);break; case four: modify_led(4);break; case five: modify_led(5);break; case six: modify_led(6);break; case seven: modify_led(7

6、);break; case eight: modify_led(8);break; case nine: modify_led(9);break; case clear: key_ptr=3;modify_led(17);op1=op2=0;break; case add: key_ptr=3;modify_led(10);break; case sub: key_ptr=3;modify_led(11);break; case mux: key_ptr=3;modify_led(12);break; case div: key_ptr=3;modify_led(13);break; case

7、 equ: key_ptr=3;modify_led(14);break; default:break; key=0;void modify_led(uchar x) if(key_ptr=3)led0=led1=led2=space; else led0=led1; led1=led2;led2=led3; led3=x;key_ptr-; if(x=0) op1=op1*10+x; else if(x=10&x8; tl0=(65536-2500)&0 xff; if(key_port&0 xf0)!=0 xf0) /有鍵按下 if(key_port=xkey) ckey+; /去抖動 i

8、f(ckey10)key=xkey; ckey=0; else xkey= key_port;ckey=0; wx_port=0 xff; dm_port=dmledwx_ptr; /更新段碼wx_port=(190ns;ile:數(shù)據鎖存允許控制信號輸入線數(shù)據鎖存允許控制信號輸入線,高電平有效;高電平有效;cs:片選信號輸入線片選信號輸入線,低電平有效;低電平有效;wr1:數(shù)據鎖存器寫選通輸入線數(shù)據鎖存器寫選通輸入線,負脈沖有效;負脈沖有效; xfer:數(shù)據傳輸控制信號輸入線數(shù)據傳輸控制信號輸入線,低電平有效;低電平有效;wr2:dac寄存器選通輸入線,負脈沖有效;寄存器選通輸入線,負脈沖有效

9、;iout1:電流輸出端電流輸出端1,其值隨其值隨dac寄存器的內容線性寄存器的內容線性 變化;變化;iout2:電流輸出端電流輸出端2,其值與其值與iout1值之和為一常數(shù);值之和為一常數(shù); rfb:反饋信號輸入線:反饋信號輸入線,改變改變 rfb端外接電阻值可調端外接電阻值可調 整轉換滿量程精度;整轉換滿量程精度; vcc:電源輸入端電源輸入端,vcc的范圍的范圍 為為+5v+15v; vref:基準電壓輸入線基準電壓輸入線,vref 的范圍的范圍-10v+10v;agnd:模擬信號地模擬信號地 dgnd:數(shù)字信號地數(shù)字信號地dac0832管腳圖二二 軟件設計軟件設計主程序流程圖外部中斷子

10、程序流程圖定時器中斷子程序流程圖主要程序舉例主要程序舉例正弦波離散輸出表:正弦波離散輸出表:uchar code sine_tab256=/輸出電壓從0到最大值(正弦波1/4部分)0 x80,0 x83,0 x86,0 x89,0 x8d,0 x90,0 x93,0 x96,0 x99,0 x9c,0 x9f,0 xa2,0 xa5,0 xa8,0 xab,0 xae,0 xb1,0 xb4,0 xb7,0 xba,0 xbc,0 xbf,0 xc2,0 xc5,0 xc7,0 xca,0 xcc,0 xcf,0 xd1,0 xd4,0 xd6,0 xd8,0 xda,0 xdd,0 xdf,

11、0 xe1,0 xe3,0 xe5,0 xe7,0 xe9,0 xea,0 xec,0 xee,0 xef,0 xf1,0 xf2,0 xf4,0 xf5,0 xf6,0 xf7,0 xf8,0 xf9,0 xfa,0 xfb,0 xfc,0 xfd,0 xfd,0 xfe,0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,/輸出電壓從最大值到0(正弦波1/4部分)0 xff,0 xff,0 xff,0 xff,0 xff,0 xff,0 xfe,0 xfd,0 xfd,0 xfc,0 xfb,0 xfa,0 xf9,0 xf8,0 xf7,0 xf6,0 xf5,0 x

12、f4,0 xf2,0 xf1,0 xef, 0 xee,0 xec,0 xea,0 xe9,0 xe7,0 xe5,0 xe3,0 xe1,0 xde,0 xdd,0 xda,0 xd8,0 xd6,0 xd4,0 xd1,0 xcf,0 xcc,0 xca,0 xc7,0 xc5,0 xc2,0 xbf,0 xbc,0 xba,0 xb7,0 xb4,0 xb1,0 xae,0 xab,0 xa8,0 xa5,0 xa2,0 x9f,0 x9c,0 x99 ,0 x96,0 x93,0 x90,0 x8d,0 x89,0 x86,0 x83,0 x80,/輸出電壓從0到最小值(正弦波1/4部

13、分)0 x80,0 x7c,0 x79,0 x76,0 x72,0 x6f,0 x6c,0 x69,0 x66,0 x63,0 x60,0 x5d,0 x5a,0 x57,0 x55,0 x51,0 x4e,0 x4c,0 x48,0 x45,0 x43,0 x40,0 x3d,0 x3a,0 x38,0 x35,0 x33,0 x30,0 x2e,0 x2b,0 x29,0 x27,0 x25,0 x22,0 x20,0 x1e,0 x1c,0 x1a,0 x18,0 x16 ,0 x15,0 x13,0 x11,0 x10,0 x0e,0 x0d,0 x0b,0 x0a,0 x09,0 x

14、08,0 x07,0 x06,0 x05,0 x04,0 x03,0 x02,0 x02,0 x01,0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,/輸出電壓從最小值到0(正弦波1/4部分)0 x00,0 x00,0 x00,0 x00,0 x00,0 x00,0 x01,0 x02 ,0 x02,0 x03,0 x04,0 x05,0 x06,0 x07,0 x08,0 x09,0 x0a,0 x0b,0 x0d,0 x0e,0 x10,0 x11,0 x13,0 x15 ,0 x16,0 x18,0 x1a,0 x1c,0 x1e,0 x20,0 x22,0 x2

15、5,0 x27,0 x29,0 x2b,0 x2e,0 x30,0 x33,0 x35,0 x38,0 x3a,0 x3d,0 x40,0 x43,0 x45,0 x48,0 x4c,0 x4e,0 x51,0 x55,0 x57,0 x5a,0 x5d,0 x60,0 x63,0 x66 ,0 x69,0 x6c,0 x6f,0 x72,0 x76,0 x79,0 x7c,0 x80;正弦波輸出程序:正弦波輸出程序:#define dadata p0 /da數(shù)據端口void sine_out() /正弦波輸出dadata=sine_tabwavecount+;da_s1=0; /打開8位輸入

16、寄存器da_s1=1; /關閉8位輸入寄存器主程序:主程序:void main()uchar i=0; da_s2=0; /使dac寄存器處于直通狀態(tài) dadata=0; da_s1=1; /關閉8位輸入寄存器 init_lcd();waveform=0; tmod=0 x01; /設置定時器0為16位工作方式 it0=1; /設置外部中斷0為下降沿觸發(fā) et0=1; /開定時器中斷 ex0=1; ea=1; while(1) 定時中斷子程序:定時中斷子程序:void timer0() interrupt 1th0=thtemp;tl0=tltemp;if(waveform=0) sine_o

17、ut();else if(waveform=1) triangle_out();else if(waveform=2) square_out();外部中斷子程序:外部中斷子程序:void key_int0() interrupt 0uchar keytemp; uint total_freq; /總頻率 ea=0; tr0=0; /關總中斷與定時器 delay(5); /延時 if(key=0) /有按鍵按下而引發(fā)中斷 keytemp=p3&0 xf0; /檢測按鍵狀態(tài) switch(keytemp) case 0 xe0:/選擇波形 waveform+; if(waveform2) wave

18、form=0;break; case 0 xd0: wavefreqwaveform+; if(wavefreqwaveform10) wavefreqwaveform=1; break; case 0 xb0: wavefreqwaveform-; if(wavefreqwaveform1) /移動間隔時間;取值0-255 a=0; b+=2; if(b=512) b=0; for(i=0;i64;i+) lie=i;hang0=0 x00; hang1=0 x00; for(i=0;i64;i+) lie=i; for(k=0;k5;k+) hang0=tablej+b; hang1=ta

19、blej+b+1; delay(2); hang0=0 x00; hang1=0 x00; /清屏 j+=2; a+; 4. 尋跡小車的設計尋跡小車的設計一一 功能介紹功能介紹 本循跡小車將實現(xiàn)本循跡小車將實現(xiàn)自動尋跡并沿黑線走向自動尋跡并沿黑線走向行進行進的功能。的功能。 小車由前后小車由前后兩個電機兩個電機分別控制分別控制前輪轉彎前輪轉彎及及后輪前進后輪前進驅動,其中前輪由小型舵機帶動,使驅動,其中前輪由小型舵機帶動,使得系統(tǒng)減少了機械部分設計,使小車的轉向控得系統(tǒng)減少了機械部分設計,使小車的轉向控制數(shù)字化,易于單片機進行控制。后輪使用普制數(shù)字化,易于單片機進行控制。后輪使用普通直流電機,

20、通過通直流電機,通過pwm信號調節(jié)小車前進車信號調節(jié)小車前進車速。速。系統(tǒng)原理圖二二 硬件介紹硬件介紹(1) 舵機簡介舵機簡介 舵機舵機是一種位置伺服的驅動器,適用于是一種位置伺服的驅動器,適用于角度不斷變化并可以保持的控制系統(tǒng)。小型角度不斷變化并可以保持的控制系統(tǒng)。小型舵機的舵機的工作電壓工作電壓一般為一般為4.8v或或6v,轉速轉速一般一般為為0.22/60度或度或0.18/60度。度。工作原理工作原理:控制信號進入信號調制芯片控制信號進入信號調制芯片,獲得獲得直流偏置電壓直流偏置電壓;基準電路產生周期基準電路產生周期20ms,寬度寬度1.5ms的的基準信號基準信號;將直流偏置電壓與電位器

21、的電壓比較獲得電壓差將直流偏置電壓與電位器的電壓比較獲得電壓差輸出;輸出;最后最后,電壓差的正負輸出到電機驅動芯片決定電電壓差的正負輸出到電機驅動芯片決定電機的正反轉;機的正反轉;以以180度角度伺服為例,對應的控制關系是:度角度伺服為例,對應的控制關系是: 0.5ms-0度;度; 2.0ms-135度;度; 1.0ms-45度;度; 2.5ms-180度;度; 1.5ms-90度;度;(2) 黑線檢測傳感器的介紹黑線檢測傳感器的介紹 小車黑線檢測小車黑線檢測用用紅外發(fā)射對管紅外發(fā)射對管作為傳感器。作為傳感器。其其工作原理工作原理為:發(fā)射端發(fā)射紅外光,接收端接為:發(fā)射端發(fā)射紅外光,接收端接收物

22、體反射信號,因為各種顏色對光的吸收和收物體反射信號,因為各種顏色對光的吸收和反射程度不同,黑色吸收紅外光,使得反射信反射程度不同,黑色吸收紅外光,使得反射信號很弱,而白色反射紅外光使得反射信號相對號很弱,而白色反射紅外光使得反射信號相對發(fā)射信號損耗不大,接收端再將反射信號轉換發(fā)射信號損耗不大,接收端再將反射信號轉換為相應的電壓信號。傳感器的接收信號再經過為相應的電壓信號。傳感器的接收信號再經過信號處理電路(如下頁圖)信號處理電路(如下頁圖)輸送給單片機。輸送給單片機。黑線信號檢測電路(3) 電機驅動原理簡介電機驅動原理簡介 小車后輪采用小車后輪采用小型直流電機小型直流電機,采用,采用pwm信信

23、號驅動號驅動l298n電機驅動芯片進行控制。電機驅動芯片進行控制。 l298n 為雙全橋步進電機專用驅動芯片,為雙全橋步進電機專用驅動芯片,內部包含內部包含4信道邏輯驅動電路信道邏輯驅動電路,是一種二相是一種二相 和四和四相步進電機的專用驅動器相步進電機的專用驅動器,可同時驅動可同時驅動2個二相個二相或或1個四相個四相步進電機。步進電機。 此芯片可直接由單片機此芯片可直接由單片機的的io端口來提供模擬時序信號,其電機驅動基端口來提供模擬時序信號,其電機驅動基本原理如下頁圖所示。本原理如下頁圖所示。電機驅動電路三三 軟件程序介紹軟件程序介紹 這次設計由于這次設計由于單片機單片機89s52內部內部

24、不帶有不帶有pwm生成生成模塊,模塊,故采用定時故采用定時器與端口電平翻轉器與端口電平翻轉來實現(xiàn)來實現(xiàn)pwm。 右圖是小車運右圖是小車運行的程序流程圖。行的程序流程圖。主程序:主程序:main()uchar receive,ek1=7,ek2=7; pulse=0;highh=(uchar)(16384-high)/256+192); highl=(uchar)(16384-high)%256); lowh=(uchar)(high/256+200);lowl=(uchar)(high%256);ie=0 x8a; tmod=0 x11; th0=0 x00; tl0=0 x00; th1=0

25、 x00;tl1=0 x00;tr0=1; /啟動t0tr1=1; /啟動t1for(;) /* for(i=0;i1120) b=1120;if(b710) b=710ek2=ek1void interrupt_t0(void) interrupt 1if(flag1=0) th0=(uchar)(16384-b)/256+192); tl0=(uchar)(16384-b)%256);a=b;flag1=1;rudder=1;elseth0=(uchar)(a/256+184); tl0=(uchar)(a%256rudder=0;flag1=0;tf0=0;tf1=0;void inte

26、rrupt_t1(void) interrupt 3if(flag2=0)th1=highh; tl1=highl; pulse=1; /p1.1管腳電平跳變flag2=1; elseth1=lowh;tl1=lowl;pulse=0; /p1.1管腳電平跳變flag2=0;tf1=0;tf0=0;5. 無線呼叫系統(tǒng)設計無線呼叫系統(tǒng)設計一一 硬件設計硬件設計 本系統(tǒng)采用本系統(tǒng)采用nrf2401作為無線呼叫功能芯片,作為無線呼叫功能芯片,進行無線數(shù)據傳輸。進行無線數(shù)據傳輸。 nrf2401是單片射頻收發(fā)芯片,工作于是單片射頻收發(fā)芯片,工作于2.42.5ghz ism頻段,芯片內置頻率合成器、頻段

27、,芯片內置頻率合成器、功率放大器、晶體振蕩器和調制器等功能模塊,功率放大器、晶體振蕩器和調制器等功能模塊,輸出功率和通信頻道可通過程序進行配置。輸出功率和通信頻道可通過程序進行配置。 芯片能耗非常低,以芯片能耗非常低,以-5dbm的功率的功率發(fā)射發(fā)射時,工作電流只有時,工作電流只有10.5ma,接收時工作電流接收時工作電流只有只有18ma,多種低功率工作模式,節(jié)能設計,多種低功率工作模式,節(jié)能設計更方便。其更方便。其duoceivertm技術使技術使nrf2401可可以使用同一天線,同時接收兩個不同頻道的數(shù)以使用同一天線,同時接收兩個不同頻道的數(shù)據。據。nrf2401適用于多種無線通信的場合。適用于多種無線通信的場合。二二 軟件設計軟件設計 無線呼叫系統(tǒng)的軟件設計分為三個模塊,無線呼叫系統(tǒng)的軟件設計分為三個模塊,包括包括主程序主程序,nrf2401發(fā)送模塊發(fā)送模塊和和nrf2401接收模塊接收模塊,相關的流程圖如下:,相關的流程圖如下: nrf2401 shockburst方式發(fā)送流程圖和接收流程圖主程序:主程序:void main(void) delayms(1000); /開機延時 nrf2401_data0 = 0; init_rs232(); /串口初始化 ti=1; /串口發(fā)射有效 nrf2401_config

溫馨提示

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

評論

0/150

提交評論