M8廢鼠標(biāo)四位LED做的多功能電子表_第1頁(yè)
M8廢鼠標(biāo)四位LED做的多功能電子表_第2頁(yè)
M8廢鼠標(biāo)四位LED做的多功能電子表_第3頁(yè)
M8廢鼠標(biāo)四位LED做的多功能電子表_第4頁(yè)
M8廢鼠標(biāo)四位LED做的多功能電子表_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、精品文檔M8廢鼠標(biāo)四位LED做的多功能電子表(說明和源程序)(附上原理圖)做飯總是忘了時(shí)間,結(jié)果經(jīng)常吃糊飯,就用M8、四位LED數(shù)碼管和廢鼠標(biāo)做了個(gè)電子表1.BASCOM編程,有電子表、鬧鐘、倒計(jì)時(shí)鬧響功能(煮飯時(shí)用這個(gè)功能,哈哈)2 .四位LED顯示時(shí)間,蜂鳴器鬧響3 .廢鼠標(biāo)做外殼,保留鼠標(biāo)三個(gè)鍵做模式轉(zhuǎn)換、時(shí)間、鬧鐘調(diào)整4 .由于接線少,沒有做PCB板,用導(dǎo)線直接連線,用熱溶膠固定、絕緣。皿圖片附件:MICKLETT"Fd"哂(IC FiPBI (OCIA)哨(SWCJE)PB) (MOS1/OC2)FBI (SCO(Ictal i/wscijPP7lXTALnaS;

2、iAV-CCAREFGNDPC4 KU:n PDL OXD)PiliCTL PN OCCKiTO) 空PDT(AtN|J(AXcD)hrn (AJXl)PCliAten pc:ADC” PC) 58十口*'PC* rtDCMmPC5SPK w精品文檔皿圖片附件:圖片附件:(現(xiàn)在用的這個(gè)機(jī)器沒裝protel,沒時(shí)間畫電路圖了,作個(gè)簡(jiǎn)單硬件說明:1、M8(1片),電阻8只(可選1-3k),四位7段led數(shù)碼管1只(共陽(yáng)),廢鼠標(biāo)1個(gè),28IC座1個(gè),電池1塊,蜂鳴器1只,導(dǎo)線若干2、portd口0-7順序接led的A-G和DP,中間串8只電阻,led四個(gè)陽(yáng)腳分別接portc口的1-43、p

3、ortc.0接speaker;portb的0-2分別接鼠標(biāo)中、左、右的微動(dòng)開關(guān),開關(guān)共地4、我沒有做pcb板,用熱溶膠絕緣固定,防止短路。幾點(diǎn)說明:1、使用內(nèi)振,穩(wěn)定性難以保證,若要高精度,建議用外振。2、TCNT1的值可根據(jù)試驗(yàn)誤差重新計(jì)算,此程序的是理論值。3、LED數(shù)碼管耗電較大,可選用lcd數(shù)碼管4、本來只想做個(gè)倒計(jì)時(shí)表放在廚房里,補(bǔ)來補(bǔ)去補(bǔ)成這個(gè)程序5、程序由bascom-avr1.11.7.7編譯通過,編譯大小5.14K6、剛學(xué)單片機(jī)很短時(shí)間,錯(cuò)誤和遺漏請(qǐng)批評(píng)指點(diǎn),謝謝!功能說明:1 、電子表、鬧鐘、倒計(jì)時(shí)鬧響(以分鐘為單位)2 、中鍵選擇模式,切換電子表和倒計(jì)時(shí)3 、倒計(jì)時(shí)模式時(shí)

4、,左鍵增加時(shí)間,右鍵減少時(shí)間,鬧響時(shí)按鍵停止,重新倒計(jì)時(shí),按中間鍵切換到電子表模式4 、電子表模式時(shí),按先左后右鍵進(jìn)入調(diào)整鬧鐘時(shí)間,小時(shí)閃爍,左加右減,按中間鍵切換到調(diào)整分鐘,分鐘閃爍,左加右減,再按中間鍵退出返回電子表模式5 、電子表模式時(shí),按先右后左鍵進(jìn)入調(diào)整時(shí)間狀態(tài),方法同上。')$regfile="m8def.dat"$crystal=8000000ConfigPortb=InputConfigPortc=OutputConfigPortd=OutputConfigTimer1=Timer,Prescale=64'8-1us64-8us256-32u

5、s1024-128usDeclareSubCountdown()DeclareSubDisptime(byvalHhAsByte,ByvalMmAsByte)DeclareSubSettime()DeclareSubPlaymusic()DimLeddig(10)AsByteDimBsecondAsByte,TimecounterAsBitDimSet_minutesAsByteDimSAsSingleDimIAsInteger,PAsInteger,NAsIntegerDimKAsBit,DotflashAsBit,CountmarkAsBit,EnalarmAsBitDimTimeflas

6、hAsByteDimMyhourAsByte,MyminuteAsByteDimAlarmhourAsByte,AlarmminuteAsByteDimHAsByte,MAsBytePortb=&HFFPortd=&HFFPortc=0'Tcnt1h=&H0B'Tcnt1l=&HDCCounter1=&H0BDCOsccal=&HB8ReadeepromSet_minutes,0RestoreLeddataForP=1To10ReadLeddig(p)NextMyhour=11Myminute=11Timeflash=2OnTim

7、er1Tim1_isrEnableTimer1EnableInterrupts賦定時(shí)器初始值'3036各芯片有不同校驗(yàn)值讀已存的倒計(jì)時(shí)設(shè)定分鐘讀LED顯示位碼(0-9)Do'=顯示時(shí)間=P=MyminuteMod10P=P+1Portc=&B00010Portd=Leddig(p)'Waitms5S=Myminute/10P=Fix(s)P=P+1Portc=&B00100Portd=Leddig(p)'Waitms5此部分不要用DIDPTIME子程序,容易出現(xiàn)閃爍感顯示分鐘個(gè)位顯示分鐘十位P=MyhourMod10P=P+1Portc=&

8、;B01000Portd=Leddig(p)顯示小時(shí)個(gè)位IfDotflash=1ThenSetPortd.7ElseResetPortd.7EndIfWaitms5閃爍小時(shí)和分鐘中間兩個(gè)分位點(diǎn)'1秒鐘亮滅1次S=Myhour/10P=Fix(s)P=P+1Portc=&B10000Portd=Leddig(p)Waitms5顯示小時(shí)十位'=切換倒計(jì)時(shí)=IfPinb.0=0Then'DoLoopUntilPinb.0=1CallCountdownEndIf轉(zhuǎn)換鍵(鼠標(biāo)中間鍵)按下切換倒計(jì)時(shí)'=鬧時(shí)設(shè)置=IfPinb.1=0ThenDoCallDisptim

9、e(myhour,Myminute)LoopUntilPinb.1=1OrPinb.2=0IfPinb.2=0ThenDoLoopUntilPinb.1=1AndPinb.2=1先左后右兩鍵同時(shí)按下等待都抬起精品文檔ReadeepromAlarmhour,1'讀存儲(chǔ)的設(shè)定鬧時(shí)ReadeepromAlarmminute,2H=Alarmhour:M=AlarmminuteCallSettime()'alarmhour,Alarmminute)Alarmhour=H:Alarmminute=MWriteeepromAlarmhour,1'存儲(chǔ)鬧時(shí)WriteeepromAla

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

11、AndAlarmminute=MyminuteThenIfAlarmhour<>0AndAlarmminute<>0Then, 防止在本分鐘內(nèi)重復(fù)播放IfEnalarm=0Then'若按鍵退出CallPlaymusicEnalarm=1EndIfEndIfEndIfLoopEndSubDisptime(hAsByte,MAsByte)是時(shí)間閃爍設(shè)定特征值IfTimeflash=0OrTimeflash=2Then'TIMEFLASHP=MmMod10P=P+1Portc=&B00010Portd=Leddig(p)'顯示分鐘個(gè)位Waitm

12、s5S=Mm/10P=Fix(s)P=P+1Portc=&B00100Portd=Leddig(p)'顯示分鐘十位Waitms5EndIf精品文檔P=HhMod10P=P+1Portc=&B01000Portd=Leddig(p)IfDotflash=1ThenSetPortd.7ElseResetPortd.7EndIfWaitms5顯示小時(shí)個(gè)位閃爍兩個(gè)點(diǎn)S=Hh/10P=Fix(s)P=P+1Portc=&B10000Portd=Leddig(p)Waitms5EndIf顯示小時(shí)十位EndSubSubSettime()DoIfPinb.1=0ThenWait

13、ms200H=H+1IfH>23ThenH=0EndIfEndIfIfPinb.2=0Then設(shè)置小時(shí)左鍵加,右鍵減。精品文檔Portc.2 = 0精品文檔Waitms200IfH=0ThenH=24EndIfH=H-1EndIfIfDotflash=1ThenTimeflash=0ElseTimeflash=2EndIfCallDisptime(h,M)IfPinb.0=0ThenDoLoopUntilPinb.0=1Waitms200DoIfPinb.1=0ThenWaitms200M=M+1IfM>59ThenM=0EndIfEndIfIfPinb.2=0ThenWaitms

14、200IfM=0ThenM=60EndIfM=M-1EndIfIfDotflash=1ThenTimeflash=1設(shè)定小時(shí)閃爍按中間鍵轉(zhuǎn)換為設(shè)置分鐘左鍵加,右鍵減。ElseTimeflash=2EndIfCallDisptime(h,M)IfPinb.0=0Then'退出DoLoopUntilPinb.0=1Waitms200Timeflash=2ExitSubEndIfLoopEndIfLoopEndSub倒計(jì)時(shí)子程序以分為單位本程序設(shè)置最大值為 99 分鐘可根據(jù)自己喜好自行修改SubCountdown()ReadeepromSet_minutes,0Portc=0Portd=1C

15、ountmark=1DoPortc.1=1P=Set_minutesMod10P=P+1Portd=Leddig(p)Waitms10Portc.1=0S=Set_minutes/10S=Fix(s)P=Sgn(s)Portc.2=PP=S+1Portd=Leddig(p)Waitms10IfPinb.1=0ThenWaitms200Set_minutes=Set_minutes+1IfSet_minutes>99ThenSet_minutes=1EndIfWriteeepromSet_minutes,0EndIfIfPinb.2=0ThenWaitms200Set_minutes=Se

16、t_minutes-1IfSet_minutes=0ThenSet_minutes=99EndIfWriteeepromSet_minutes,0EndIfIfPinb.0=0ThenDoLoopUntilPinb.0=1Countmark=0ExitSubEndIfIfSet_minutes=0ThenK=1取余顯示個(gè)位取整顯示十位按中間鍵退出切換到時(shí)間模式精品文檔精品文檔CallPlaymusicReadeepromSet_minutes,0Portc=0K=0EndIfLoopEndSub到時(shí)后音樂鬧響SubPlaymusic()鬧向音樂子程序ForN=1To100RestoreMusi

17、cdataDoReadI:I=I*3調(diào)整兩參數(shù)使音樂聽起來舒服些ReadP:S=P*0.32:P=Fix(s)IfI=0AndP=0ThenExitDoEndIfIfPinb.1=0OrPinb.2=0Then按左或右鍵退出DoLoopUntilPinb.1=1AndPinb.2=1Waitms200ExitForEndIfSoundPortc.0,I,PWaitms100IfCountmark=0ThenCallDisptime(myhour,Myminute)EndIfLoopWait2NextNEndSubTim1_isr:' Tcnt1h = &H0B' Tcn

18、t1l = &HDCCounter1 = &H0BDCDotflash = Not DotflashTimecounter = Not Timecounter中斷程序 0.5 秒'3036IfTimecounter=0ThenIncrBsecondIfBsecond=60ThenIfCountmark=1ThenDecrSet_minutesEndIfBsecond=0Myminute=Myminute+1IfMyminute=60ThenMyhour=Myhour+1Myminute=0EndIfIfMyhour=24ThenMyhour=0EndIfEnalarm=0EndIfEndIfIfK=1ThenPortc.1=NotPortc.1Portc.2=NotPortc.2Portc.

溫馨提示

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

評(píng)論

0/150

提交評(píng)論