M8廢鼠標(biāo)四位LED做的多功能電子表教學(xué)教材_第1頁
M8廢鼠標(biāo)四位LED做的多功能電子表教學(xué)教材_第2頁
M8廢鼠標(biāo)四位LED做的多功能電子表教學(xué)教材_第3頁
M8廢鼠標(biāo)四位LED做的多功能電子表教學(xué)教材_第4頁
M8廢鼠標(biāo)四位LED做的多功能電子表教學(xué)教材_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Good is good, but better carries it.精益求精,善益求善。M8廢鼠標(biāo)四位LED做的多功能電子表-M8廢鼠標(biāo)四位LED做的多功能電子表(說明和源程序)(附上原理圖)做飯總是忘了時間,結(jié)果經(jīng)常吃糊飯,就用M8、四位LED數(shù)碼管和廢鼠標(biāo)做了個電子表。1.BASCOM編程,有電子表、鬧鐘、倒計時鬧響功能(煮飯時用這個功能,哈哈)2.四位LED顯示時間,蜂鳴器鬧響3.廢鼠標(biāo)做外殼,保留鼠標(biāo)三個鍵做模式轉(zhuǎn)換、時間、鬧鐘調(diào)整4.由于接線少,沒有做PCB板,用導(dǎo)線直接連線,用熱溶膠固定、絕緣。圖片附件:圖片附件:圖片附件:(現(xiàn)在用的這個機(jī)器沒裝protel,沒時間畫電路圖了,

2、作個簡單硬件說明:1、M8(1片),電阻8只(可選1-3k),四位7段led數(shù)碼管1只(共陽),廢鼠標(biāo)1個,28IC座1個,電池1塊,蜂鳴器1只,導(dǎo)線若干2、portd口0-7順序接led的A-G和DP,中間串8只電阻,led四個陽腳分別接portc口的1-43、portc.0接speaker;portb的0-2分別接鼠標(biāo)中、左、右的微動開關(guān),開關(guān)共地4、我沒有做pcb板,用熱溶膠絕緣固定,防止短路。幾點說明:1、使用內(nèi)振,穩(wěn)定性難以保證,若要高精度,建議用外振。2、TCNT1的值可根據(jù)試驗誤差重新計算,此程序的是理論值。3、LED數(shù)碼管耗電較大,可選用lcd數(shù)碼管4、本來只想做個倒計時表放在

3、廚房里,補來補去補成這個程序5、程序由bascom-avr1.11.7.7編譯通過,編譯大小5.14K6、剛學(xué)單片機(jī)很短時間,錯誤和遺漏請批評指點,謝謝!功能說明:1、電子表、鬧鐘、倒計時鬧響(以分鐘為單位)2、中鍵選擇模式,切換電子表和倒計時3、倒計時模式時,左鍵增加時間,右鍵減少時間,鬧響時按鍵停止,重新倒計時,按中間鍵切換到電子表模式4、電子表模式時,按先左后右鍵進(jìn)入調(diào)整鬧鐘時間,小時閃爍,左加右減,按中間鍵切換到調(diào)整分鐘,分鐘閃爍,左加右減,再按中間鍵退出返回電子表模式5、電子表模式時,按先右后左鍵進(jìn)入調(diào)整時間狀態(tài),方法同上。)$regfile=m8def.dat$crystal=80

4、00000ConfigPortb=InputConfigPortc=OutputConfigPortd=OutputConfigTimer1=Timer,Prescale=648-1us64-8us256-32us1024-128usDeclareSubCountdown()DeclareSubDisptime(byvalHhAsByte,ByvalMmAsByte)DeclareSubSettime()DeclareSubPlaymusic()DimLeddig(10)AsByteDimBsecondAsByte,TimecounterAsBitDimSet_minutesAsByteDim

5、SAsSingleDimIAsInteger,PAsInteger,NAsIntegerDimKAsBit,DotflashAsBit,CountmarkAsBit,EnalarmAsBitDimTimeflashAsByteDimMyhourAsByte,MyminuteAsByteDimAlarmhourAsByte,AlarmminuteAsByteDimHAsByte,MAsBytePortb=&HFFPortd=&HFFPortc=0Tcnt1h=&H0B賦定時器初始值3036Tcnt1l=&HDCCounter1=&H0BDCOsccal=&HB8各芯片有不同校驗值Readeepr

6、omSet_minutes,0讀已存的倒計時設(shè)定分鐘RestoreLeddata讀LED顯示位碼(0-9)ForP=1To10ReadLeddig(p)NextMyhour=11Myminute=11Timeflash=2OnTimer1Tim1_isrEnableTimer1EnableInterruptsDo=顯示時間=此部分不要用DIDPTIME子程序,容易出現(xiàn)閃爍感P=MyminuteMod10P=P+1Portc=&B00010Portd=Leddig(p)顯示分鐘個位Waitms5S=Myminute/10P=Fix(s)P=P+1Portc=&B00100Portd=Leddig

7、(p)顯示分鐘十位Waitms5P=MyhourMod10P=P+1Portc=&B01000Portd=Leddig(p)顯示小時個位IfDotflash=1Then閃爍小時和分鐘中間兩個分位點SetPortd.71秒鐘亮滅1次ElseResetPortd.7EndIfWaitms5S=Myhour/10P=Fix(s)P=P+1Portc=&B10000Portd=Leddig(p)顯示小時十位Waitms5=切換倒計時=IfPinb.0=0Then轉(zhuǎn)換鍵(鼠標(biāo)中間鍵)按下切換倒計時DoLoopUntilPinb.0=1CallCountdownEndIf=鬧時設(shè)置=IfPinb.1=0T

8、hen先左后右兩鍵同時按下DoCallDisptime(myhour,Myminute)LoopUntilPinb.1=1OrPinb.2=0IfPinb.2=0ThenDoLoopUntilPinb.1=1AndPinb.2=1等待都抬起ReadeepromAlarmhour,1讀存儲的設(shè)定鬧時ReadeepromAlarmminute,2H=Alarmhour:M=AlarmminuteCallSettime()alarmhour,Alarmminute)Alarmhour=H:Alarmminute=MWriteeepromAlarmhour,1存儲鬧時WriteeepromAlarmm

9、inute,2EndIfEndIf=時間設(shè)置=IfPinb.2=0ThenDoCallDisptime(myhour,Myminute)LoopUntilPinb.1=0OrPinb.2=1IfPinb.1=0Then先右后左兩鍵同時按下DoLoopUntilPinb.1=1AndPinb.2=1等待都抬起H=Myhour:M=MyminuteCallSettime()myhour,Myminute)Bsecond=0重置時間Myhour=H:Myminute=MEndIfEndIf=鬧鐘響=IfAlarmhour=MyhourAndAlarmminute=MyminuteThenIfAlar

10、mhour0AndAlarmminute0ThenIfEnalarm=0Then若按鍵退出,防止在本分鐘內(nèi)重復(fù)播放CallPlaymusicEnalarm=1EndIfEndIfEndIfLoopEndSubDisptime(hAsByte,MAsByte)IfTimeflash=0OrTimeflash=2ThenTIMEFLASH是時間閃爍設(shè)定特征值P=MmMod10P=P+1Portc=&B00010Portd=Leddig(p)顯示分鐘個位Waitms5S=Mm/10P=Fix(s)P=P+1Portc=&B00100Portd=Leddig(p)顯示分鐘十位Waitms5EndIfI

11、fTimeflash=1OrTimeflash=2ThenP=HhMod10P=P+1Portc=&B01000Portd=Leddig(p)顯示小時個位IfDotflash=1Then閃爍兩個點SetPortd.7ElseResetPortd.7EndIfWaitms5S=Hh/10P=Fix(s)P=P+1Portc=&B10000Portd=Leddig(p)顯示小時十位Waitms5EndIfEndSubSubSettime()DoIfPinb.1=0Then設(shè)置小時Waitms200H=H+1IfH23Then左鍵加,右鍵減。H=0EndIfEndIfIfPinb.2=0ThenWa

12、itms200IfH=0ThenH=24EndIfH=H-1EndIfIfDotflash=1Then設(shè)定小時閃爍Timeflash=0ElseTimeflash=2EndIfCallDisptime(h,M)IfPinb.0=0Then按中間鍵轉(zhuǎn)換為設(shè)置分鐘DoLoopUntilPinb.0=1Waitms200DoIfPinb.1=0Then左鍵加,右鍵減。Waitms200M=M+1IfM59ThenM=0EndIfEndIfIfPinb.2=0ThenWaitms200IfM=0ThenM=60EndIfM=M-1EndIfIfDotflash=1ThenTimeflash=1Else

13、Timeflash=2EndIfCallDisptime(h,M)IfPinb.0=0Then退出DoLoopUntilPinb.0=1Waitms200Timeflash=2ExitSubEndIfLoopEndIfLoopEndSubSubCountdown()倒計時子程序以分為單位ReadeepromSet_minutes,0本程序設(shè)置最大值為99分鐘可根據(jù)自己喜好自行修改Portc=0Portd=1Countmark=1DoPortc.2=0Portc.1=1P=Set_minutesMod10取余顯示個位P=P+1Portd=Leddig(p)Waitms10Portc.1=0S=S

14、et_minutes/10取整顯示十位S=Fix(s)P=Sgn(s)Portc.2=PP=S+1Portd=Leddig(p)Waitms10IfPinb.1=0ThenWaitms200Set_minutes=Set_minutes+1IfSet_minutes99ThenSet_minutes=1EndIfWriteeepromSet_minutes,0EndIfIfPinb.2=0ThenWaitms200Set_minutes=Set_minutes-1IfSet_minutes=0ThenSet_minutes=99EndIfWriteeepromSet_minutes,0EndI

15、fIfPinb.0=0Then按中間鍵退出切換到時間模式DoLoopUntilPinb.0=1Countmark=0ExitSubEndIfIfSet_minutes=0ThenK=1CallPlaymusic到時后音樂鬧響ReadeepromSet_minutes,0Portc=0K=0EndIfLoopEndSubSubPlaymusic()鬧向音樂子程序ForN=1To100RestoreMusicdataDoReadI:I=I*3調(diào)整兩參數(shù)使音樂聽起來舒服些ReadP:S=P*0.32:P=Fix(s)IfI=0AndP=0ThenExitDoEndIfIfPinb.1=0OrPinb

16、.2=0Then按左或右鍵退出DoLoopUntilPinb.1=1AndPinb.2=1Waitms200ExitForEndIfSoundPortc.0,I,PWaitms100IfCountmark=0ThenCallDisptime(myhour,Myminute)EndIfLoopWait2NextNEndSubTim1_isr:中斷程序0.5秒Tcnt1h=&H0B3036Tcnt1l=&HDCCounter1=&H0BDCDotflash=NotDotflashTimecounter=NotTimecounterIfTimecounter=0ThenIncrBsecondIfBs

17、econd=60ThenIfCountmark=1ThenDecrSet_minutesEndIfBsecond=0Myminute=Myminute+1IfMyminute=60ThenMyhour=Myhour+1Myminute=0EndIfIfMyhour=24ThenMyhour=0EndIfEnalarm=0EndIfEndIfIfK=1ThenPortc.1=NotPortc.1Portc.2=NotPortc.2Portc.3=NotPortc.3Portc.4=NotPortc.4EndIfReturnLeddata:LED數(shù)字碼(0-9)Data&B11000000,&B11111001,&B10100100,&B10110000,&B10011001Data&B10010010,&B10000010,&B11111000,&B10000000,&B10010000Musicdata:兩只老虎的音樂,摘自張茂清那本書P166Data100%,956%,100%,865%,100%,759%,100%,956%Data100%,956%,100%,865%,100%,

溫馨提示

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

評論

0/150

提交評論