




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保密協(xié)議及離職承諾
- 二零二五年度二零二五年度茶葉電商門面轉(zhuǎn)讓及運營協(xié)議
- 二零二五年度旅游度假村房屋租賃管理協(xié)議
- 二零二五年度銷售人員離職培訓(xùn)及保密協(xié)議
- 二零二五年度房屋過戶協(xié)議書:房屋抵押權(quán)解除后產(chǎn)權(quán)過戶合同
- 二零二五年度企業(yè)間信息安全保密期限合同范本
- 冷庫租賃與倉儲管理一體化服務(wù)協(xié)議2025
- 二零二五年度家居用品分銷商代理框架協(xié)議
- 勞務(wù)合同的簽訂及生效流程
- 2025年度高科技研發(fā)項目干股合作協(xié)議
- (新版)廣電全媒體運營師資格認(rèn)證考試復(fù)習(xí)題庫(含答案)
- 2024年法律職業(yè)資格考試(試卷一)客觀題試卷與參考答案
- 安全生產(chǎn)重大事故隱患排查報告表
- 統(tǒng)編版必修上冊第五《鄉(xiāng)土中國》導(dǎo)讀優(yōu)質(zhì)課件PPT
- 電纜敷設(shè)施工方案及安全措施范文
- 市場營銷課程標(biāo)準(zhǔn)
- ppt模板:信保專用中國出口信用保險公司課件
- 2021年四川省綿陽市中考物理真題及答案
- 小學(xué)音樂課后服務(wù)教學(xué)設(shè)計方案計劃
- 人教版八年級數(shù)學(xué)下冊全冊教案(完整版)教學(xué)設(shè)計
- 【畢業(yè)論文】知識競賽搶答器PLC設(shè)計
評論
0/150
提交評論