單片機(jī)實(shí)驗(yàn)-秒表詳細(xì)步驟_第1頁
單片機(jī)實(shí)驗(yàn)-秒表詳細(xì)步驟_第2頁
單片機(jī)實(shí)驗(yàn)-秒表詳細(xì)步驟_第3頁
單片機(jī)實(shí)驗(yàn)-秒表詳細(xì)步驟_第4頁
單片機(jī)實(shí)驗(yàn)-秒表詳細(xì)步驟_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

..簡易秒表制作1子情境容:制作簡易秒表,利用按鍵構(gòu)成鍵盤實(shí)現(xiàn)秒表的啟動(dòng)、停頓與復(fù)位,利用LED數(shù)碼管顯示時(shí)間。2子情境目標(biāo):〔1〕通過簡易秒表的制作,進(jìn)一步熟悉LED數(shù)碼管與單片機(jī)的接口電路〔2〕學(xué)習(xí)定時(shí)/計(jì)數(shù)器、中斷技術(shù)的綜合運(yùn)用并會(huì)使用簡易鍵盤3知識(shí)點(diǎn)獨(dú)立式按鍵的使用:圖5-49為按鍵與單片機(jī)的連接圖。機(jī)械式按鍵再按下或釋放時(shí),由于機(jī)械彈性作用的影響,通常伴隨有一定時(shí)間的觸點(diǎn)機(jī)械抖動(dòng),然后其觸點(diǎn)才穩(wěn)定下來。其抖動(dòng)過程如圖5-50所示,抖動(dòng)時(shí)間的長短與開關(guān)的機(jī)械特性有關(guān),一般為5~10ms。在觸點(diǎn)抖動(dòng)期間檢測按鍵的通與斷狀態(tài),可能導(dǎo)致判斷出錯(cuò)。即按鍵一次按下或釋放被錯(cuò)誤地認(rèn)為是屢次操作,這種情況是不允許出現(xiàn)的。為了克制按鍵觸點(diǎn)機(jī)械抖動(dòng)所致的檢測誤判,必須采取去抖動(dòng)措施,可從硬件、軟件兩方面予以考慮。本子情境中采用軟件去抖。圖按鍵與單片機(jī)連接圖圖按鍵被按下時(shí)電壓的變化4任務(wù)步驟4.1步驟一:PROTEUS電路設(shè)計(jì),簡易秒表的原理圖如圖5-51所示。1、選取元器件①單片機(jī):AT89C51②兩位共陰極藍(lán)色數(shù)碼管:7SEG-MPX2-CC-BLUE③排阻:RESPACK-8④按鈕:BUTTON2、放置元器件、放置電源和地、連線、元器件屬性設(shè)置簡易秒表的原理圖如圖5-51所示,整個(gè)電路設(shè)計(jì)操作都在ISIS平臺(tái)中進(jìn)展。與子情景3相似,故不詳述。圖簡易秒表的原理圖4.2步驟二:源程序設(shè)計(jì)與目標(biāo)代碼文件生成〔1〕程序流程圖開場位,變量,數(shù)組,子程序聲明主程序開場位,變量,數(shù)組,子程序聲明主程序啟動(dòng)鍵是否按下"noyes按鍵防抖停頓鍵是否按下"noyes復(fù)位鍵是否按下"noyes按鍵防抖按鍵防抖開定時(shí)器關(guān)定時(shí)器秒表清零是否到20次50ms`"noyes秒表清零數(shù)碼管顯示是否到60秒`"秒加1yesno圖5-52秒表流程圖〔2〕源程序設(shè)計(jì)#include<reg52.h>#defineuintunsignedint#defineucharunsignedcharsbitkey1=P3^0;//定義"啟動(dòng)"按鈕sbitkey2=P3^1;//定義"停頓"按鈕sbitkey3=P3^2;//定義"復(fù)位"按鈕uchartemp,aa,shi,ge;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//共陰極數(shù)碼管編碼voiddisplay(ucharshi,ucharge);//聲明顯示子函數(shù)voiddelay(uintz);//聲明延時(shí)子函數(shù)voidinit();//聲明初始化函數(shù)voidmain(){ init(); //調(diào)用初始化子程序 while(1) { if(key1==0)//檢測"啟動(dòng)"按鈕是否按下 { delay(10);//延時(shí)去抖動(dòng) if(key1==0)//再次檢測"啟動(dòng)"按鈕是否按下 { while(!key1);//松手檢測,假設(shè)按鍵沒有釋放,key1始終為0,那么!key1始終為1,程序就一直停在此while語句處 TR0=1;//啟動(dòng)定時(shí)器開場工作 } } if(key2==0)//檢測"停頓"按鈕是否按下 { delay(10);//延時(shí)去抖動(dòng) if(key2==0)//再次檢測"停頓"按鈕是否按下 { while(!key2);//松手檢測 TR0=0;//關(guān)閉定時(shí)器 } } if(key3==0)//檢測"復(fù)位"按鈕是否按下 { delay(10); //延時(shí)去抖動(dòng) if(key3==0)//再次檢測"復(fù)位"按鈕是否按下 { while(!key3);//松手檢測 temp=0;//將變量temp的值清零 shi=0;//將十位清零 ge=0;//將個(gè)位清零 TR0=0;//關(guān)閉定時(shí)器 } } display(shi,ge);//調(diào)用顯示子函數(shù) }}voiddelay(uintz)//延時(shí)子函數(shù){ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voiddisplay(ucharshi,ucharge)//顯示子程序{ P2=0xbf; P0=table[shi]; delay(10); P2=0x7f; P0=table[ge]; delay(10);//使用動(dòng)態(tài)掃描的方法實(shí)現(xiàn)數(shù)碼管顯示}voidinit()//初始化子程序{ temp=0; TMOD=0x01;//使用定時(shí)器T0的方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256;//定時(shí)50ms中斷一次 EA=1;//中斷總允許 ET0=1;//允許定時(shí)器T0中斷 }voidtimer0()interrupt1{ TH0=(65536-50000)/256;//重新賦初值 TL0=(65536-50000)%256; aa++;//中斷一次變量aa的值加1if(aa==20)//中斷20次后,定時(shí)時(shí)間為20*50ms=1000ms=1s,將變量temp的值加1 { aa=0; temp++; if(temp==60)//秒表到達(dá)60s后回零 { temp=0; } shi=temp%100/10; ge=temp%10; //別離個(gè)位和十位 } }4.3步驟三:PROTEUS仿真加載目標(biāo)代碼文件,雙擊編輯窗口的AT89C51器件,在彈出屬性編輯對話框ProgramFile一欄中單擊翻開按鈕,出現(xiàn)文件瀏覽對話框,找到miaobiao.hex文件,單擊"翻開〞按鈕,完成添加文件。單擊按鈕,啟動(dòng)仿真,仿真運(yùn)行片段如下圖。按下"啟動(dòng)〞按鈕后,秒表開場計(jì)時(shí),如下圖。按下"停

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論