STC單片機(jī)教學(xué)系統(tǒng)編程指導(dǎo)書(shū)-深大_第1頁(yè)
STC單片機(jī)教學(xué)系統(tǒng)編程指導(dǎo)書(shū)-深大_第2頁(yè)
STC單片機(jī)教學(xué)系統(tǒng)編程指導(dǎo)書(shū)-深大_第3頁(yè)
STC單片機(jī)教學(xué)系統(tǒng)編程指導(dǎo)書(shū)-深大_第4頁(yè)
STC單片機(jī)教學(xué)系統(tǒng)編程指導(dǎo)書(shū)-深大_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

圖4.7是STC15系列單片機(jī)的ADC邏輯圖,從圖中可以看出,ADC0-7的模擬量輸入通過(guò)模擬多路開(kāi)關(guān)傳送到比較器,在比較器中將數(shù)/模轉(zhuǎn)換器(DAC)提供的模擬量與輸入的模擬量進(jìn)行比較,將比較結(jié)果保存到逐次比較寄存器作為轉(zhuǎn)換結(jié)果。A/D轉(zhuǎn)換結(jié)束后,最終的轉(zhuǎn)換結(jié)果保存到結(jié)果奇存器ADC_RES和ADC_RESL,同時(shí),ADC控制奇存器ADCCONTR中的A/D轉(zhuǎn)換結(jié)束標(biāo)志位ADC_FLAG置位,以供程序查詢(xún)。圖STYLEREF1\s4.SEQ圖\*ARABIC\s17STC15系列單片機(jī)ADC邏輯電路如果設(shè)置ADRJ=0,可以使用下面公式計(jì)算10位轉(zhuǎn)換結(jié)果:ADC_RES如果設(shè)置ADRJ=1,可以使用下面公式計(jì)算10位轉(zhuǎn)換結(jié)果:ADC_RESL式中,Vin為模擬輸入通道的輸入電壓,V4.3.2程序示例:A/D電壓檢測(cè)下面給出使用單片機(jī)片上ADC模塊測(cè)量工作電源電壓Vcc的程序,經(jīng)實(shí)際測(cè)試,輸出數(shù)值約為4.86,電壓讀數(shù)隨USB接口的松緊變化而上下浮動(dòng)。程序分析:使用ADC通道0檢測(cè)電源電壓,并采用查詢(xún)法逐次查詢(xún)ADC轉(zhuǎn)換結(jié)果,然后控制數(shù)碼管最右側(cè)三位顯示電壓數(shù)值。#defineMAIN_Fosc 11059200L #include "STC15Fxxxx.H"#defineDIS_DOT 0x20#defineDIS_BLACK 0x10#defineDIS_ 0x11#defineP1n_pure_input(bitn) P1M1|=(bitn), P1M0&=~(bitn)#defineLED_TYPE0x00 //數(shù)碼管類(lèi)型,0x00共陰,0xFF共陽(yáng)#define Timer0_Reload (65536UL-(MAIN_Fosc/1000)) //Timer0中斷頻率,1000次/秒u8codet_display[]={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,//0-9A-F 0x00,0x40,0x76,0x1E,0x70,0x38,0x37,0x5C,0x73,0x3E,0x78,0x3d,0x67,0x50,0x37,0x6e,//全黑-HJKLNoPUtGQrMy 0xBF,0x86,0xDB,0xCF,0xE6,0xED,0xFD,0x87,0xFF,0xEF,0x46//0.1.2.3.4.5.6.7.8.9.-1};u8codeT_COM[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //位碼sbit P_HC595_SER=P4^0; //pin14 SER datainputsbit P_HC595_RCLK=P5^4; //pin12 RCLk store(latch)clocksbit P_HC595_SRCLK=P4^3; //pin11 SRCLK Shiftdataclocku8 LED8[8]; //顯示緩沖u8 display_index; //顯示位索引bit B_1ms; //1ms標(biāo)志u8 msecond;u16 Get_ADC10bitResult(u8channel); //channel=0~7voidmain(void){ u8 i; u16 j; //設(shè)置為準(zhǔn)雙向口 P0M1=0; P0M0=0; P1M1=0; P1M0=0; P2M1=0; P2M0=0; P3M1=0; P3M0=0; P4M1=0; P4M0=0; P5M1=0; P5M0=0; P6M1=0; P6M0=0; P7M1=0; P7M0=0; display_index=0; P1ASF=0; //對(duì)內(nèi)部基準(zhǔn)做ADC ADC_CONTR=0xE0; //90T,ADCpoweron AUXR=0x80; //定時(shí)器0設(shè)為:不分頻,16位自動(dòng)重載 TH0=(u8)(Timer0_Reload/256); TL0=(u8)(Timer0_Reload%256); ET0=1; //Timer0interruptenable TR0=1; //Tiner0run EA=1; //打開(kāi)總中斷 for(i=0;i<8;i++) LED8[i]=0x10; //上電消隱 while(1){ if(B_1ms){ //1ms到 B_1ms=0; if(++msecond>=200){ //200ms到 msecond=0; for(j=0,i=0;i<16;i++) j+=Get_ADC10bitResult(0); //讀內(nèi)部基準(zhǔn)ADC,P1ASF=0,讀0通道 j=(u32)128000UL*16/j; //ADC=1024*Uref/Ux,則Ux=1024*Uref/ADC=1024*1.25/ADC=1280/ADC LED8[5]=j/100+DIS_DOT; //顯示MCU電壓值,計(jì)算時(shí)放大了100倍,電壓有兩位小數(shù). LED8[6]=(j%100)/10; LED8[7]=j%10; } } }}//查詢(xún)法讀一次ADC結(jié)果.u16 Get_ADC10bitResult(u8channel){//channel=0~7 ADC_RES=0; ADC_RESL=0; ADC_CONTR=(ADC_CONTR&0xe0)|0x08|channel; //啟動(dòng)ADC NOP(4); while((ADC_CONTR&0x10)==0) ; //等待ADC轉(zhuǎn)換結(jié)束 ADC_CONTR&=~0x10; //清除ADC結(jié)束標(biāo)志 return (((u16)ADC_RES<<2)|(ADC_RESL&3));}voidSend_595(u8dat){ u8 i; for(i=0;i<8;i++){ dat<<=1; P_HC595_SER=CY; P_HC595_SRCLK=1; P_HC595_SRCLK=0; }}voidDisplayScan(void){ Send_595(~LED_TYPE^T_COM[display_index]); //輸出位碼 Send_595(LED_TYPE^t_display[LED8[display_index]]); //輸出段碼 P_HC595_RCLK=1; P_HC595_RCLK=0; //鎖存輸出數(shù)據(jù) if(++display_index>=8) display_index=0; //8位結(jié)束回0}voidtimer0(void)interruptTIMER0_VECTOR{ DisplayScan(); //1ms掃描顯示一位 B_1ms=1; //1ms標(biāo)志}4.3.4實(shí)驗(yàn)任務(wù)實(shí)驗(yàn)?zāi)康模菏煜eilC整體編程環(huán)境以及MCU程序開(kāi)發(fā)流程;了解A/D模塊的工作原理以及編程結(jié)構(gòu);學(xué)習(xí)A/D模塊的編程技術(shù)。實(shí)驗(yàn)內(nèi)容:基本實(shí)驗(yàn)1:使用單片機(jī)內(nèi)部的A/D轉(zhuǎn)換功能實(shí)現(xiàn)ADC鍵盤(pán),鍵盤(pán)一共有4個(gè)有效按鈕,分別對(duì)應(yīng)4盞LED。當(dāng)按下按鈕1時(shí),切換第1盞LED燈的熄滅或亮起狀態(tài);其他按鈕的控制規(guī)律與此類(lèi)似。(提示:可用P1ASF=0x10;設(shè)置引腳P1.4為ADC模擬輸入端口)基本實(shí)驗(yàn)2:設(shè)計(jì)程序?qū)崿F(xiàn)ADC鍵盤(pán),鍵盤(pán)一共有10個(gè)有效按鈕,分別對(duì)應(yīng)0-9共10個(gè)數(shù)字,用戶(hù)按下按鍵后,數(shù)碼管顯示相應(yīng)數(shù)字?;緦?shí)驗(yàn)3:設(shè)計(jì)程序?qū)崿F(xiàn)ADC鍵盤(pán),令數(shù)碼管高四位與低四位作為兩個(gè)獨(dú)立計(jì)數(shù)器的顯示器。初始狀態(tài)下,兩個(gè)計(jì)數(shù)器都是0,數(shù)碼管顯示“00000000”,按鍵0、1分別為高四位的加、減按鍵,按鍵2、3分別為低四位的加、減按鍵。當(dāng)計(jì)數(shù)器為0時(shí),減按鍵無(wú)效。4.4單片機(jī)綜合實(shí)驗(yàn)(3學(xué)時(shí))實(shí)驗(yàn)?zāi)康模菏煜eilC51編程開(kāi)發(fā)環(huán)境和單片機(jī)程序的開(kāi)發(fā)流程;考察綜合運(yùn)用單片機(jī)知識(shí),解決較復(fù)雜問(wèn)題的能力。自行完成設(shè)計(jì)性實(shí)驗(yàn),培養(yǎng)獨(dú)立創(chuàng)新意識(shí)。實(shí)驗(yàn)內(nèi)容:反應(yīng)測(cè)試游戲請(qǐng)使用2個(gè)按鍵、3位數(shù)碼管、1盞LED指示燈,實(shí)現(xiàn)反映測(cè)試游戲功能。游戲規(guī)則如下:設(shè)置1個(gè)準(zhǔn)備按鈕、1個(gè)停止按鈕。游戲開(kāi)始時(shí)按住準(zhǔn)備按鈕,等待一段時(shí)間后(由程序隨機(jī)確定),點(diǎn)亮LED燈并立即開(kāi)始計(jì)時(shí),3位數(shù)碼管動(dòng)態(tài)顯示持續(xù)時(shí)間。用戶(hù)應(yīng)迅速釋放被按下的準(zhǔn)備按鈕,按下停止按鈕。當(dāng)停止鍵被按下時(shí),計(jì)數(shù)立即停止,數(shù)碼管中顯示的數(shù)字保持不變作為反應(yīng)時(shí)間。當(dāng)準(zhǔn)備按鈕被再次按下時(shí),計(jì)時(shí)顯示清零,游戲重新開(kāi)始。乒乓球游戲請(qǐng)使用4個(gè)按鍵、2位數(shù)碼管、4盞LED指示燈,實(shí)現(xiàn)兵乓球游戲功能。4個(gè)按鍵分別定義為“左擊球”、“右擊球”、“開(kāi)始比賽”、“游戲重置”;亮起的LED表示乒乓球的位置,數(shù)碼管顯示當(dāng)前雙方的比分。游戲規(guī)則如下:按下1個(gè)按鍵后,游戲開(kāi)始,此時(shí)如果按動(dòng)左擊球鍵,則最左邊的LED亮起,并且從左邊開(kāi)始不斷向右邊移動(dòng),當(dāng)最右側(cè)的LED亮起時(shí),如果此時(shí)右擊球鍵按下,則LED從右邊又不斷向左邊移動(dòng),如果提前按下了“右擊球”按鈕,或者LED燈到達(dá)左邊之后還沒(méi)按下“右擊球”按鈕,則左邊數(shù)碼管加1。同理如果左邊出現(xiàn)了失誤,右側(cè)數(shù)碼管加1。每局游戲結(jié)束后,再次按下“開(kāi)始比賽”鍵,重新開(kāi)始新一輪比賽,但比分保持。在球打向右邊的過(guò)程中,“左擊球”鍵沒(méi)有作用,反之亦然。在游戲過(guò)程中如果按下了“游戲重置”鍵則游戲停止并且比分清零。有能力的同學(xué)可以考慮在每一次球被擊打后,小幅提高球的移動(dòng)速度,以增加游戲的對(duì)抗性和趣味性。自行設(shè)計(jì)實(shí)驗(yàn)要求使用中斷、AD轉(zhuǎn)換和I/O引腳基本操作,具有一定的趣味性并保證一定的實(shí)現(xiàn)難度??偨Y(jié)單片機(jī)原理實(shí)驗(yàn)課程是電子科學(xué)、測(cè)控技術(shù)及自動(dòng)化等專(zhuān)業(yè)學(xué)生的重要實(shí)踐課程,也是培養(yǎng)動(dòng)手能力、創(chuàng)新能力、適應(yīng)能力、團(tuán)隊(duì)合作等綜

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論