這是我上個(gè)月做的數(shù)字音樂盒課計(jì)全套說明書、工作原理圖及源代碼。
請(qǐng)用proteus和AD打開,均為個(gè)人原創(chuàng),高分過,評(píng)分為優(yōu),請(qǐng)大家參考并給予指教,做的不好請(qǐng)見諒!
圖2.png (218.46 KB, 下載次數(shù): 75)
下載附件
2018-7-10 11:06 上傳
原理圖.png (315.94 KB, 下載次數(shù): 57)
下載附件
2018-7-10 11:05 上傳
設(shè)計(jì)任務(wù):
1. 查閱資料,了解單片機(jī)控制單音喇叭發(fā)聲原理;
2. 設(shè)計(jì)基于單片機(jī)的電子音樂盒;
3.通過按鈕可選擇不同的音樂,切換3首音樂;
設(shè)計(jì)進(jìn)度安排:
設(shè)計(jì)時(shí)間:2周
1. 單片機(jī)語言學(xué)習(xí)3天
2. 單片機(jī)仿真軟件學(xué)習(xí)3天
3. 系統(tǒng)硬件電路設(shè)計(jì)2天
4. 系統(tǒng)軟件程序設(shè)計(jì)2天
5. 系統(tǒng)仿真調(diào)試2天
6. 編寫說明書1天
7. 答辯1天
目錄
第1章 緒論
第2章 系統(tǒng)論述
2.1 總體方案
2.2 基本原理
2.3 原理框圖
第3章 系統(tǒng)的硬件設(shè)計(jì)
3.1 單片機(jī)最小系統(tǒng)的設(shè)計(jì)
3.2 電源電路設(shè)計(jì)
3.3 直流電機(jī)驅(qū)動(dòng)電路設(shè)計(jì)
3.4 顯示模塊設(shè)計(jì)
3.5 按鈕電路設(shè)計(jì)
3.6 元件參數(shù)選擇
第4章 系統(tǒng)的軟件設(shè)計(jì)
4.1 總體方案
4.2 相關(guān)軟件介紹
4.3 應(yīng)用軟件的編制、調(diào)試
第5章 仿真結(jié)果與分析
5.1仿真電路圖
5.2 仿真結(jié)果
第6章總結(jié)
參考文獻(xiàn)
源程序代碼
第1章 緒論
隨著科學(xué)技術(shù)的進(jìn)步和社會(huì)的發(fā)展,人類所接觸的信息也在不斷增加并且日益復(fù)雜。面對(duì)浩如煙海的信息,人們已經(jīng)能夠利用計(jì)算機(jī)等工具高效準(zhǔn)確地對(duì)之進(jìn)行處理。小小的音樂盒可以給人們帶來美好的回憶,提高人們的精神文化享受。傳統(tǒng)音樂盒是機(jī)械型的,體積笨重,發(fā)音單調(diào),不能實(shí)現(xiàn)批量生產(chǎn)。本文設(shè)計(jì)的音樂盒是以單片機(jī)為核心元件的電子式音樂盒,體積小,重量輕,能演奏和旋音樂,功能多,外觀效果多彩,使用方便,并具有一定的商業(yè)價(jià)值。
第2章 系統(tǒng)論述
2.1 總體方案本次設(shè)計(jì)是一個(gè)基于AT89C51單片機(jī)的音樂盒,該音樂盒主要由按鍵電路、復(fù)位電路、時(shí)鐘電路、蜂鳴器以及顯示電路組成。使用其中兩個(gè)按鍵來控制播放和暫停另外兩個(gè)按鍵用來控制換曲。利在液晶上顯示曲目的更換,共三首音樂,蜂鳴器每播放一首歌時(shí)液晶上顯示相對(duì)應(yīng)的歌曲次序。系統(tǒng)組成框圖如圖2-1。 2.2 基本原理1)主體電路: 直流電機(jī)PWM控制模塊:這部分電路主要由89C51單片機(jī)的I/O端口、定時(shí)計(jì)數(shù)器、外部中斷擴(kuò)展等控制直流電機(jī)的加速、減速以及電機(jī)的正轉(zhuǎn)和反轉(zhuǎn),并且可以調(diào)整電機(jī)的轉(zhuǎn)速,還可以方便的讀出電機(jī)轉(zhuǎn)速的大小和了解電機(jī)的轉(zhuǎn)向,能夠很方便的實(shí)現(xiàn)電機(jī)的智能控制。 此外,還包括直流電機(jī)的直接清零、啟動(dòng)(置數(shù))、暫停、連續(xù)功能。其間是通過89C51單片機(jī)產(chǎn)生脈寬可調(diào)的脈沖信號(hào)并輸入到L298驅(qū)動(dòng)芯片來控制直流電機(jī)工作的。 2)各部分電路模塊的組成: (a)設(shè)計(jì)輸入部分:這一模塊主要是利用帶中斷的獨(dú)立式鍵盤來實(shí)現(xiàn)。 (c)設(shè)計(jì)控制部分:主要由89C51單片機(jī)的外部中斷擴(kuò)展電路組成。 (b)設(shè)計(jì)顯示部分:是直接采用SM410564四位共陽數(shù)碼管組成顯示模塊。 3)直流電機(jī)PWM控制實(shí)現(xiàn)部分: 主要由一些二極管、電機(jī)和L298直流電機(jī)驅(qū)動(dòng)模塊組成。 2.3 原理框圖1)系統(tǒng)組成:如圖2-1所示 
圖2-1 直流電機(jī)PWM調(diào)速方案 2)方案說明: 直流電機(jī)PWM調(diào)速系統(tǒng)以AT89C51單片機(jī)為控制核心,由命令輸入模塊、LED顯示模塊及電機(jī)驅(qū)動(dòng)模塊組成。采用帶中斷的獨(dú)立式鍵盤作為命令的輸入,單片機(jī)在程序控制下,定時(shí)不斷給直流電機(jī)驅(qū)動(dòng)芯片發(fā)送PWM波形,H型驅(qū)動(dòng)電路完成電機(jī)正,反轉(zhuǎn)控制;同時(shí)單片機(jī)不停的將從鍵盤讀取的數(shù)據(jù)送到LED顯示模塊去顯示,從中不僅能讀取其速度,而且能知道它的轉(zhuǎn)向。
第3章 系統(tǒng)的硬件設(shè)計(jì)
3.1 單片機(jī)最小系統(tǒng)的設(shè)計(jì)1)單片機(jī)AT89C51: AT89C51是一種帶4K字節(jié)閃爍可編程可擦出只讀存儲(chǔ)器的低電壓,高性能 CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù),與工業(yè)標(biāo)準(zhǔn)MCS-51指令集合輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且廉價(jià)的方案。 2)復(fù)位電路及時(shí)鐘電路: 復(fù)位電路和時(shí)鐘電路是維持單片機(jī)最小系統(tǒng)運(yùn)行的基本模塊。 兩種常用復(fù)位電路:上電復(fù)位和手動(dòng)復(fù)位。 其中:上電復(fù)位,如圖3-1所示;手動(dòng)復(fù)位,如圖3-2所示。  圖3-1 上電復(fù)位 圖3-2 手動(dòng)復(fù)位 有時(shí)系統(tǒng)在運(yùn)行過程中出現(xiàn)程序跑飛的情況,在程序開發(fā)過程中,經(jīng)常需要手動(dòng)復(fù)位。所以本次設(shè)計(jì)選用手動(dòng)復(fù)位。 高頻率的時(shí)鐘有利于程序更快的運(yùn)行,也有利于實(shí)現(xiàn)更高的信號(hào)采樣率,從而實(shí)現(xiàn)更多的功能。但是高速對(duì)系統(tǒng)的要求較高,而且功耗大,運(yùn)行環(huán)境苛刻。考慮到單片機(jī)本身用于控制,而并非高速信號(hào)采樣處理,所以選取合適的頻率即可。合適頻率的晶振對(duì)于選頻信號(hào)強(qiáng)度準(zhǔn)確度都有好處。 本次設(shè)計(jì)選取12.0M無源晶振接入XTAL1和XTAL2引腳。并聯(lián)2個(gè)30pF陶瓷電容幫助起振。單片機(jī)最小系統(tǒng)如圖3-3所示:
圖3-3 單片機(jī)最小系統(tǒng) 3.2 電源電路設(shè)計(jì)直流穩(wěn)壓電源的基本原理:直流穩(wěn)壓電源一般有電源變壓器T、整流濾波電路及穩(wěn)壓電路所組成,基本框圖如圖3-4所示。 
圖3-4 直流電源原理 將220V的交流電壓變換成整流濾波電路所需要的交流電壓Ui,變壓器副邊與原邊的功率比為P2/P1=n,式中n是變壓器的效率。 整流電路將交流電壓Ui變換成脈動(dòng)的直流電壓。再經(jīng)濾波電路濾除較大的波紋成分,輸出波紋較小的直流電壓U1。常用的整流濾波電路有全波整流濾波、橋式整流濾波等。 各濾波電路C滿足RL-C=(3~5)T/2,式中T為輸入交流信號(hào)周期,RL為整流濾波電路的等效負(fù)載電阻。 常用的穩(wěn)壓電路有兩種形式:一是穩(wěn)壓管穩(wěn)壓電路,二是串聯(lián)型穩(wěn)壓電路。二者的工作原理有所不同。穩(wěn)壓管穩(wěn)壓電路其工作原理是利用穩(wěn)壓管兩端的電壓稍有變化,會(huì)引起其電流有較大變化這一特點(diǎn),通過調(diào)節(jié)與穩(wěn)壓管串聯(lián)的限流電阻上的壓降來達(dá)到穩(wěn)定輸出電壓的目的。它一般適用于負(fù)載電流變化較小的場合。串聯(lián)型穩(wěn)壓電路是利用電壓串聯(lián)負(fù)反饋的原理來調(diào)節(jié)輸出電壓的。集成穩(wěn)壓電源事實(shí)上是串聯(lián)穩(wěn)壓電源的集成化。 3.3 直流電機(jī)驅(qū)動(dòng)電路設(shè)計(jì) 由于單片機(jī)P3口輸出的電壓最高才有5V,難以直接驅(qū)動(dòng)直流電機(jī)。所以我們需要使用恒壓恒流橋式2A驅(qū)動(dòng)芯片L298N來驅(qū)動(dòng)電機(jī)。 本設(shè)計(jì)所采用的L298N,可接受標(biāo)準(zhǔn)TTL邏輯電平信號(hào)VSS,VSS可接4.5~7V電壓。4腳VS接電源電壓,VS電壓范圍VIH為+2.5~46V,輸出電流可達(dá)2.5A,可驅(qū)動(dòng)電感性負(fù)載。1腳和15腳下管的發(fā)射極分別單獨(dú)引出以便接入電流采樣電阻,形成電流傳感信號(hào)。 L298可驅(qū)動(dòng)2個(gè)電動(dòng)機(jī),OUT1,OUT2和OUT3,OUT4之間可分別接電動(dòng)機(jī),本實(shí)驗(yàn)裝置我們選用驅(qū)動(dòng)一臺(tái)電動(dòng)機(jī),連接于OUT1和OUT2端口之間(電動(dòng)機(jī)在子圖中未畫出)。 此外,5,7腳接輸入控制電平,控制電機(jī)的正反轉(zhuǎn)。EnA,EnB接控制使能端,控制電機(jī)的停轉(zhuǎn)。同時(shí),需要加四個(gè)二極管在電機(jī)的兩端,防止電機(jī)反轉(zhuǎn)的時(shí)候產(chǎn)生強(qiáng)大的沖擊電流燒壞電機(jī)。具體直流電機(jī)驅(qū)動(dòng)電路,如圖3-5所示。 
圖3-5 驅(qū)動(dòng)電路 3.4 顯示模塊設(shè)計(jì)本次設(shè)計(jì)顯示模塊直接采用的是SM410564 四位共陽數(shù)碼管顯示。又因?yàn)閱纹瑱C(jī)的輸出端口輸出的電流較小,點(diǎn)亮數(shù)碼管的能力不大,所以需要采用三極管對(duì)輸出電流進(jìn)行放大,此次三極管采用的是C9013,具體放大電路如圖3-6所示: 
圖3-6 放大電路 3.5 按鈕電路設(shè)計(jì)正轉(zhuǎn)、反轉(zhuǎn)、急停、加速、減速五個(gè)開關(guān)分別與單片機(jī)的P1.0,P1.1,P1.2,P1.3,P1.4相連,然后再與地相連。急停實(shí)現(xiàn)直流電機(jī)的停轉(zhuǎn),正轉(zhuǎn)實(shí)現(xiàn)直流電機(jī)的正轉(zhuǎn),反轉(zhuǎn)實(shí)現(xiàn)直流電機(jī)的反轉(zhuǎn),加速實(shí)現(xiàn)直流電機(jī)的加速,減速實(shí)現(xiàn)直流電機(jī)的減速,其電路如圖3-7所示。 
圖3-7 控制按鈕電路 3.6 元件參數(shù)選擇1)實(shí)際計(jì)算過程 (a)變壓器選擇:變壓器選擇雙15V變壓,考慮到電流不需要太大,最大電流為1A,實(shí)際選擇變壓器輸出功率為10W,可以很好的滿足要求。 (b)整流橋:考慮到電路中會(huì)出現(xiàn)沖擊電流,整流橋的額定電流是工作電流的2~3倍。選取RS301(100V,3A)即可,實(shí)際購買過程中選擇了RS30(700V,3A)也符合設(shè)計(jì)要求。 (c)濾波電容:考慮到對(duì)紋波電壓要求比較高,故選擇了2200μF耐壓值為25V以及100μF耐壓值50v的電解電容。 (d)去耦電容:去耦電容的選擇是7812及7805芯片要求的,查手冊(cè)可知分別為0.01μF,用來濾除高頻分量防止產(chǎn)生自激。 (e)電解電容:為了防止負(fù)載產(chǎn)生沖擊電流,故在輸出端加入2200μF、耐壓值為25V的電解電容。 (f)7805支路的元件參數(shù)基本相同。 直流電源產(chǎn)生電路:12V如圖3-7所示、5V如圖3-8所示: 
圖3-7 12V電源 
圖3-8 5V電源
第4章 系統(tǒng)的軟件設(shè)計(jì) 4.1 總體方案利用P3口,編制程序輸出一串脈沖,經(jīng)放大后驅(qū)動(dòng)直流電機(jī),改變輸出脈沖的電平的持續(xù)時(shí)間,達(dá)到使電機(jī)正轉(zhuǎn)、反轉(zhuǎn)、加速、減速、停轉(zhuǎn)等目的。由軟件編程從P3.0/P3.1管腳產(chǎn)生PWM 信號(hào),經(jīng)驅(qū)動(dòng)電路輸出給電機(jī),從而控制電機(jī)得電與失電。軟件采用延時(shí)法進(jìn)行設(shè)計(jì)。單片機(jī)上電后,系統(tǒng)進(jìn)入準(zhǔn)備狀態(tài)。當(dāng)按動(dòng)啟動(dòng)按鈕后,根據(jù)P3.0為高電平時(shí)實(shí)現(xiàn)電機(jī)正轉(zhuǎn),P3.1為高電平時(shí)實(shí)現(xiàn)電機(jī)反轉(zhuǎn)。根據(jù)不同的加減速按鈕,調(diào)整P3.0/ P3.1輸出高低電平時(shí)的占空比,從而可以控制P3.0/ P3.1輸出高低電平時(shí)的有效值,進(jìn)而控制電機(jī)的加減速。 
其總體流程圖如圖4-1所示:
圖4-1 總體程序流程圖 P3.0/P3.1脈沖寬度調(diào)制器(PWM) 通道,它們產(chǎn)生可由編程決定寬度和間隔的脈沖。脈沖的間隔周期是由一個(gè)FOR循環(huán)控制,來產(chǎn)生不同的占空比。單片機(jī)產(chǎn)生的PWM信號(hào)不能直接驅(qū)動(dòng)電機(jī),這就需要設(shè)計(jì)合適的驅(qū)動(dòng)電路,用以可以間接地驅(qū)動(dòng)電機(jī),使其能夠正常運(yùn)行。為此,我們可借助于恒壓恒流橋式2A驅(qū)動(dòng)芯片L298N來完成對(duì)電動(dòng)機(jī)的驅(qū)動(dòng)。具體的設(shè)計(jì)方法是通過Keil C編程,Proteus聯(lián)合仿真來實(shí)現(xiàn)的。 4.2 相關(guān)軟件介紹1)Proteus Proteus是一種低投資的電子設(shè)計(jì)自動(dòng)化軟件,提供Schematic Drawing,SPICE仿真與PCB設(shè)計(jì)功能,這一點(diǎn)Proteus與multisim比較類似,只不過它可以仿真單片機(jī)和周邊設(shè)備,可以仿真51系列、AVR,PIC等常用的MCU,與Keil和MPLAB不同的是它還提供了周邊設(shè)備的仿真,只要給出電路圖就可以仿真,例如373,led,示波器,Proteus提供了大量的元件庫有RAM,ROM,鍵盤,馬達(dá),LED,LCD,AD/DA,部分SPI器件,部分IIC器件,編譯方面支持Keil和MPLAB,里面有大量的例子參考。 (a)Proteus可提供的仿真元件資源Proteus軟件提供了可仿真數(shù)字和模擬、交流和直流等數(shù)千種元器件和多達(dá)30多個(gè)元件庫; (b)Proteus可提供的仿真儀表資源虛擬儀器儀表的數(shù)量、類型和質(zhì)量,是衡量仿真軟件實(shí)驗(yàn)室是否合格的一個(gè)關(guān)鍵因素。在Proteus軟件中,理論上同一種儀器可以在一個(gè)電路中隨意的調(diào)用; (c)除了現(xiàn)實(shí)存在的儀器外,Proteus還提供了一個(gè)圖形顯示功能,可以將線路上變化的信號(hào),以圖形的方式實(shí)時(shí)地顯示出來; (d)Proteus還提供了比較豐富的測試信號(hào)用于電路的測試。這些測試信號(hào)包括模擬信號(hào)和數(shù)字信號(hào)。 2)Keil Keil是德國開發(fā)的一個(gè)51單片機(jī)開發(fā)軟件平臺(tái),最開始只是一個(gè)支持C語言和匯編語言的編譯器軟件。后來隨著開發(fā)人員的不斷努力以及版本的不斷升級(jí),使它已經(jīng)成為了一個(gè)重要的單片機(jī)開發(fā)平臺(tái),不過KEIL的界面并不是非常復(fù)雜,操作也不是非常困難,很多工程師的開發(fā)的優(yōu)秀程序都是在KEIL的平臺(tái)上編寫出來的�?梢哉f它是一個(gè)比較重要的軟件,熟悉他的人很多很多,用戶群極為龐大,要遠(yuǎn)遠(yuǎn)超過偉福等廠家軟件用戶群,操作有不懂的地方只要找相關(guān)的書看看,到相關(guān)的單片機(jī)技術(shù)論壇問問,很快就可以掌握它的基本使用了。 (a)Keil的UVision2可以進(jìn)行純粹的軟件仿真(仿真軟件程序,不接硬件電路),也可以利用硬件仿真器,搭接上單片機(jī)硬件系統(tǒng),在仿真器中載入項(xiàng)目程序后進(jìn)行實(shí)時(shí)仿真; (b)可以使用UVision2的內(nèi)嵌模塊Keil Monitor-51,在不需要額外的硬件仿真器的條件下,搭接單片機(jī)硬件系統(tǒng)對(duì)項(xiàng)目程序進(jìn)行實(shí)時(shí)仿真; (c)uVision2調(diào)試器具備所有常規(guī)源極調(diào)試,符號(hào)調(diào)試特性以及歷史跟蹤,代碼覆蓋,復(fù)雜斷點(diǎn)等功能。DDE界面和shift語言支持自動(dòng)程序測試。 4.3 應(yīng)用軟件的編制、調(diào)試使用Keil 軟件工具時(shí),項(xiàng)目開發(fā)流程和其它軟件開發(fā)項(xiàng)目的流程極其相似。 1)創(chuàng)建一個(gè)項(xiàng)目,從器件庫中選擇目標(biāo)器件,配置工具設(shè)置; 2)用C語言或匯編語言創(chuàng)建源程序; 3)用項(xiàng)目管理器生成應(yīng)用; 4)修改源程序中的錯(cuò)誤; 5)測試,連接應(yīng)用。 第5章 仿真結(jié)果與分析5.1仿真電路圖如圖5-1所示: 圖5-1 仿真電路圖 5.2 仿真結(jié)果1)半速運(yùn)行狀態(tài),運(yùn)行結(jié)果如圖5-1所示:  圖5-1 電機(jī)半速運(yùn)行 2)按下急停鍵,停止運(yùn)行如圖5-2所示: 
圖5-2 電機(jī)停止運(yùn)行 3)按下加速鍵,加速運(yùn)行如圖5-3所示: 
圖5-3 電機(jī)加速運(yùn)行 4)按下減速鍵,減速運(yùn)行如5-4所示: 
圖5-4 電機(jī)減速運(yùn)行 按下反轉(zhuǎn)鍵,反轉(zhuǎn)運(yùn)行如圖5-5所示: 
圖5-5 電機(jī)反向運(yùn)行
第6章總結(jié)這次課程設(shè)計(jì),運(yùn)用AT89C51單片機(jī)為核心硬件,設(shè)計(jì)了直流電機(jī)的轉(zhuǎn)速控制系統(tǒng)。實(shí)現(xiàn)了對(duì)直流電機(jī)的停止、加速、減速、正轉(zhuǎn)、反轉(zhuǎn)等多種控制功能,基本滿足設(shè)系統(tǒng)計(jì)的要求。同時(shí),在驅(qū)動(dòng)芯片和電動(dòng)機(jī)的連接之間我有加入續(xù)流二極管,在電機(jī)反向運(yùn)轉(zhuǎn)時(shí)進(jìn)行續(xù)流,避免燒壞電機(jī)及其他元件。在此設(shè)計(jì)中P0口作為輸出端口,我們?cè)赑0口接入了排阻使電路復(fù)位后P0口輸出的為高電平。 通過本次課程設(shè)計(jì),學(xué)習(xí)與掌握了AT98C51單片機(jī)的基本原理及其各種應(yīng)用,對(duì)它的各種硬件接口與軟件設(shè)計(jì)方法有較深入的認(rèn)識(shí)。對(duì)自動(dòng)控制系統(tǒng)的動(dòng)、靜態(tài)性能及其控制有了一定的認(rèn)識(shí)。本設(shè)計(jì)重點(diǎn)在于應(yīng)用,因此在設(shè)計(jì)過程中使自己的動(dòng)手能力得到鍛煉,同時(shí)提高了解決實(shí)際問題的能力 感謝兩周以來每一位指導(dǎo)過自己的同學(xué)和老師,謝謝他們給自己的知識(shí),以及在專業(yè)知識(shí)和學(xué)習(xí)方法方面給我的許多的指導(dǎo)和啟發(fā),使我受益匪淺。謝謝他們的教導(dǎo),謝謝他們幫我成長。
單片機(jī)源程序如下:
- <font color="rgb(0, 0, 0)"><font color="rgb(0, 0, 0)">#include<at89x51.h>
- #define unchar unsigned char
- #define unint unsigned int
- unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,
- 0x99,0x92,0x82,0xf8,
- 0x80,0x90,0x88,0x83,
- 0xc6,0xa1,0x86,0x84,0xff,0xbf}; //顯示代碼
- unsigned char dispbitcode[]={0xfe,0xfd,0xfb,0xf7}; //位選口
- unsigned char dispbuf[4]={0,0,0,0};
- unsigned char dispbitcnt;
- unint mstcnt;
- unint i;
-
- unint count=0;
- unchar tp=0;
- void ledshow();
- void keyscan();
- void delay();
- void just();
- void turn();
- void motorstop();
- void speedup();
- void speeddown();
-
- void main(void)
- {
- P3_0=1;
- P3_1=0;
- dispbuf[0]=16;
- TMOD=0x02;
- TH0=0x06;
- TL0=0x06;
- TR0=1;
- ET0=1;
- EA=1;
- while(1)
- {
- ledshow();//數(shù)碼管顯示
- keyscan();//鍵盤掃描
- }
- }
- //延時(shí)10ms程序
- void delay()
- {
- unsigned char i,j;
- for(i=20;i>0;i--)
- for(j=248;j>0;j--);
- }
- //鍵盤掃描程序
- void keyscan()
- {
- unchar temp=0;
- P1=0xff;
- if((P1&0x1f)!=0x1f)
- {
- delay();
- if((P1&0x1f)!=0x1f)
- {
- temp=P1&0x1f;
- switch(temp)
- {
- case 0x1e:
- just();break;
- case 0x1d:
- turn();break;
- case 0x1b:
- motorstop();break;
- case 0x17:
- speedup();break;
- case 0x0f:
- speeddown();break;
- }
- }
- }
- while((P1&0x1f)!=0x1f);
- }
- //數(shù)碼管顯示程序
- void ledshow()
- {
- P0=dispcode[dispbuf[dispbitcnt]];
- P2=dispbitcode[dispbitcnt];
- dispbitcnt++;
- if(dispbitcnt==4)
- {
- dispbitcnt=0;
- }
-
- P2=0x01;P0=dispcode[dispbuf[0]];
- for(i=0;i<700;i++);
-
- P2=0x02;P0=dispcode[dispbuf[1]];
- for(i=0;i<700;i++);
-
- P2=0x04;P0=dispcode[dispbuf[2]];
- for(i=0;i<700;i++);
-
- P2=0x08;P0=dispcode[dispbuf[3]];
- for(i=0;i<700;i++);
-
- dispbuf[1]=tp/100;
- dispbuf[2]=(tp%100)/10;
- dispbuf[3]=tp%10;
- }
- //中斷服務(wù)程序
- void t0(void) interrupt 1 using 0
- {
- mstcnt++;
- if(mstcnt==8)
- {
- mstcnt=0;
- P0=dispcode[dispbuf[dispbitcnt]];
- P2=dispbitcode[dispbitcnt];
- dispbitcnt++;
- if(dispbitcnt==4)
- {
- dispbitcnt=0;
- }
- }
- if(count>100)
- count=0;
- if(count>tp)
- P3_7=0;
- else P3_7=1;
- count++;
- }
- void just()
- {
- P3_0=1;
- P3_1=0;
- dispbuf[0]=16;
- }
- void turn()
- {
- P3_0=0;
- P3_1=1;
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
以上內(nèi)容的Word格式文檔51黑下載地址:
數(shù)字音樂盒全套說明書及源代碼.doc
(349.5 KB, 下載次數(shù): 246)
2020-6-14 23:15 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|