




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、硬件課程設(shè)計(jì)實(shí)踐報(bào)告題 目: 硬件課程設(shè)計(jì) 班 級(jí): 學(xué) 號(hào): 姓 名: 指導(dǎo)教師: 目錄實(shí)驗(yàn)一一、 開(kāi)發(fā)背景4二、 系統(tǒng)總體方案及設(shè)計(jì)42.1 基本原理.42.2樂(lè)理知識(shí)簡(jiǎn)述.5三、 音樂(lè)播放器硬件電路的設(shè)計(jì)和調(diào)試3.1硬件原理電路的設(shè)計(jì)63.2電路原理圖7四、 軟件編程設(shè)計(jì)與測(cè)試4.1編程思路簡(jiǎn)述.74.2編程方案設(shè)計(jì).8五、 心得體會(huì) 11實(shí)驗(yàn)二一、 開(kāi)發(fā)背景.12二、 數(shù)字時(shí)鐘的硬件設(shè)計(jì).12三、 數(shù)字時(shí)鐘的軟件設(shè)計(jì).3.1主程序流程圖.143.2鬧鐘檢測(cè)程序流程框圖.163.3音樂(lè)程序流程圖.173.4顯示子程序流程圖.17四、核心代碼4.1初始化代碼.184.2時(shí)鐘芯片模塊代碼.1
2、94.3音樂(lè)模塊代碼.204.4顯示程序代碼.224.5按鍵程序代碼.234.6主程序代碼.26五、焊接工藝總結(jié)27六、心得體會(huì)28一、 開(kāi)發(fā)背景近年來(lái)隨著計(jì)算機(jī)在社會(huì)領(lǐng)域的滲透, 單片機(jī)的應(yīng)用正在不斷地走向深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)日新月益更新,在實(shí)時(shí)檢測(cè)和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片往是作為一個(gè)核心部件來(lái)使用,智能儀器就是以單片機(jī)為核心開(kāi)發(fā)的一系列產(chǎn)品。隨著科技的發(fā)展,智能儀器和單片機(jī)被各個(gè)領(lǐng)域所重視,工業(yè)方面、冶金方面都存在著許多控制難題,為了提高工作效率這就需要智能儀器和單片機(jī)技術(shù)的快速發(fā)展,為了提高本科生的設(shè)計(jì)創(chuàng)新能力開(kāi)設(shè)了智能儀器和單片機(jī)的課程設(shè)計(jì)。本設(shè)計(jì)的目的是培養(yǎng)理論聯(lián)系實(shí)
3、際的學(xué)習(xí)方法以及獨(dú)立解決工程實(shí)際問(wèn)題的能力,主要內(nèi)容是利用89C51單片機(jī)及其他一些器件來(lái)構(gòu)成音樂(lè)播放器。二、系統(tǒng)總體方案和設(shè)計(jì)2.1 基本原理聲音是通過(guò)振動(dòng)產(chǎn)生的。單片機(jī)對(duì)某一引腳以一定的頻率循環(huán)置1置0,該引腳便產(chǎn)生一定頻率的方波,方波通過(guò)放大,作用于一定的物理實(shí)件(揚(yáng)聲器),就產(chǎn)生了一定頻率的聲音。若改變輸出方波的頻率,產(chǎn)生的聲音隨之改變。通過(guò)控制輸出方波的時(shí)間長(zhǎng)短,聲音的長(zhǎng)短也可以得到控制,因此,根據(jù)樂(lè)譜,以類(lèi)似的音及同樣的節(jié)拍,單片機(jī)就可以產(chǎn)生電子音樂(lè)。音樂(lè)的播放模式及選擇可以通過(guò)按鍵的輸入得以實(shí)現(xiàn)。為簡(jiǎn)便起見(jiàn),以一定的頻率方波產(chǎn)生的音在其每個(gè)周期內(nèi)高低幅值得時(shí)間各占一半因此,輸出引
4、腳在每個(gè)方波周期內(nèi)要?jiǎng)幼鲀纱危阂淮紊撸淮谓档?。即輸出引腳的頻率是原音頻率的兩倍。方波的產(chǎn)生由定時(shí)器控制。定時(shí)器T0工作在定時(shí)方式1,改變TH0及TL0,產(chǎn)生不同的音頻頻率。必須考慮到中斷響應(yīng)時(shí)間的影響,尤其在高音部分,若忽略中斷響應(yīng)時(shí)間,會(huì)使音頻頻率比標(biāo)準(zhǔn)值低幾十Hz,相當(dāng)于1/4音程,很容易聽(tīng)出來(lái),對(duì)低音部分影響不大。一般中斷響應(yīng)時(shí)間為36個(gè)機(jī)器周期,經(jīng)過(guò)反復(fù)試驗(yàn)取5個(gè)機(jī)器周期作為校正最為恰當(dāng),表1中所給的定時(shí)初值就是考慮中斷響應(yīng)后的定時(shí)常數(shù)。另外,為避免T1中斷可能引起雜音,應(yīng)將定時(shí)器T0中斷設(shè)為高優(yōu)先級(jí)。這樣編寫(xiě)出來(lái)的程序播放的音與標(biāo)準(zhǔn)音叉進(jìn)行差頻校音,非常準(zhǔn)確和諧。音樂(lè)播放器的基本
5、硬件電路有六部分組成:?jiǎn)纹瑱C(jī)、時(shí)鐘與復(fù)位電路、選擇按鍵輸入電路、音頻發(fā)生器、音頻放大器和揚(yáng)聲器。音樂(lè)播放器硬件電路設(shè)計(jì)框圖如圖所示。2.2樂(lè)理知識(shí)簡(jiǎn)述1、數(shù)組之中的奇數(shù)位數(shù)據(jù)(下劃線的數(shù)組)實(shí)現(xiàn)了對(duì)聲音頻率的控制。2、數(shù)組之中的偶數(shù)位數(shù)據(jù)(沒(méi)有下劃線的數(shù)據(jù))實(shí)現(xiàn)了對(duì)于每一個(gè)聲音頻率的延時(shí)時(shí)長(zhǎng)的控制,即對(duì)應(yīng)樂(lè)譜圖上面的節(jié)拍數(shù);3、另外,經(jīng)本人分析之后,我們需要知道的就是:這里的程序其實(shí)就是使用了不同的聲音頻率實(shí)現(xiàn)對(duì)于低音、中音、高音的do、re、mi、fa、sol、la、si,共21個(gè)音的控制。數(shù)組中的數(shù)值 0x60,0x55,0x4c,0x48,0x40,0x39,0x33, 對(duì)應(yīng)低音:do、
6、re、mi、fa、sol、la、si數(shù)組中的數(shù)值0x30,0x2b,0x26,0x24,0x20,0x1c,0x19,對(duì)應(yīng)中音:do、re、mi、fa、sol、la、si數(shù)組中的數(shù)值0x18,0x15,0x13,0x12,0x10,0x0e,0x0d, 對(duì)應(yīng)高音:do、re、mi、fa、sol、la、si4、使用延時(shí)時(shí)長(zhǎng)來(lái)實(shí)現(xiàn)了對(duì)于音樂(lè)節(jié)拍數(shù)的控制:5、樂(lè)譜知識(shí)補(bǔ)充:(1)樂(lè)譜上面數(shù)字上畫(huà)點(diǎn)為高音,下畫(huà)點(diǎn)為低音,例如: 為高音, 為低音(2)一個(gè)音符本身為一拍,加下劃線后為1/2 拍,下加等號(hào)為1/4 拍;(3)音符后加-或.表示延長(zhǎng):加-延長(zhǎng)一拍,加.延長(zhǎng)原來(lái)的1/2。三、音樂(lè)播放器硬件電路
7、的設(shè)計(jì)和調(diào)試3.1 硬件原理電路的設(shè)計(jì) 音頻發(fā)生與放大電路3.2 電路原理圖四、軟件編程設(shè)計(jì)與測(cè)試4.1 編程思路簡(jiǎn)述要產(chǎn)生音頻信號(hào),只要算出某一音頻的周期(頻率的倒數(shù)),將此周期除以2即為半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)此半周期時(shí)間,計(jì)時(shí)到后取反輸出,重復(fù)此過(guò)程即得到此頻率的聲音信號(hào)。此信號(hào)從P3.0腳輸出。定時(shí)器T0工作在定時(shí)方式1,改變TH0及TL0,產(chǎn)生不同的音頻頻率。必須考慮到中斷響應(yīng)時(shí)間的影響,尤其在高音部分,若忽略中斷響應(yīng)時(shí)間,會(huì)使音頻頻率比標(biāo)準(zhǔn)值低幾十Hz,相當(dāng)于1/4音程,很容易聽(tīng)出來(lái),對(duì)低音部分影響不大。一般中斷響應(yīng)時(shí)間為36個(gè)機(jī)器周期,經(jīng)過(guò)反復(fù)試驗(yàn)取5個(gè)機(jī)器周期作為校正最為恰
8、當(dāng),表2.1中所給的定時(shí)初值就是考慮中斷響應(yīng)后的定時(shí)常數(shù)。另外,為避免T1中斷可能引起雜音,應(yīng)將定時(shí)器T0中斷設(shè)為高優(yōu)先級(jí)。這樣編寫(xiě)出來(lái)的程序播放的音與標(biāo)準(zhǔn)音叉進(jìn)行差頻校音,非常準(zhǔn)確和諧。本設(shè)計(jì)中單片機(jī)晶振頻率為11.0592MHz。每個(gè)音符使用兩個(gè)字節(jié)。低位字節(jié)(偶地址)代表音級(jí),00H表示不發(fā)音(休止符),01H30H依次表示的音級(jí)為c、c、d、d、e、f、a3、a3、b3 ,詳見(jiàn)表2.1。高位字節(jié)(奇地址)代表音符的時(shí)值(拍數(shù)),00H0FH依次表示拍數(shù)為1/8拍(0.10s)8拍(6.40s),見(jiàn)表2.2。樂(lè)曲的結(jié)束標(biāo)志是兩個(gè)字節(jié):0FFH,0FFH。設(shè)計(jì)延時(shí)程序125ms,來(lái)控制節(jié)拍
9、,并在延時(shí)中判斷是否有停止鍵按下,以便隨時(shí)停止音樂(lè)。改變延時(shí)程序的延遲時(shí)間,即可實(shí)現(xiàn)歌曲的快慢演奏。主程序的任務(wù)是按順序讀取數(shù)據(jù)表中的字節(jié),根據(jù)情況調(diào)用音級(jí)子程序和演唱子程序,啟動(dòng)定時(shí)器T0;通過(guò)延時(shí)控制節(jié)拍,并循環(huán)回音級(jí)子程序,等待演唱完畢。要編寫(xiě)的樂(lè)譜按要求以音符字節(jié)數(shù)據(jù)表的形式存放在程序中,改變樂(lè)曲就是通過(guò)改變?cè)摂?shù)據(jù)表的內(nèi)容來(lái)實(shí)現(xiàn)的。主程序的任務(wù)是按順序讀取數(shù)據(jù)表中的字節(jié),根據(jù)情況調(diào)用音級(jí)子程序和音長(zhǎng)子程序,啟動(dòng)定時(shí)器T0;根據(jù)定時(shí)器T1應(yīng)中斷的次數(shù),啟動(dòng)定時(shí)器T1。數(shù)據(jù)表讀完后,根據(jù)所設(shè)置的循環(huán)演奏次數(shù)決定是否結(jié)束程序。音級(jí)子程序的任務(wù)是取出字節(jié)中的音級(jí)部分,分析TH0和TL0中應(yīng)送入
10、何值,送給33H,34H。演唱子程序的任務(wù)是取出對(duì)應(yīng)頻率值,并乘以2,啟動(dòng)T0,實(shí)現(xiàn)發(fā)音。之后執(zhí)行延時(shí)程序,體現(xiàn)節(jié)拍,依此循環(huán),直到音樂(lè)結(jié)束。定時(shí)器T0的中斷服務(wù)程序任務(wù)是取反P3.0輸出產(chǎn)生方波,重新為T(mén)H0,TL0送初值。定時(shí)器T1的中斷服務(wù)程序任務(wù)是:判斷計(jì)數(shù)完成否,給373的控制端高或低電平,從而實(shí)現(xiàn)數(shù)據(jù)輸出或禁止,達(dá)到二極管亮滅閃爍的效果。當(dāng)樂(lè)曲較長(zhǎng)時(shí)(超過(guò)254個(gè)字節(jié)),數(shù)據(jù)表指針溢出,應(yīng)及時(shí)修改基址寄存器DPTR內(nèi)容,即數(shù)據(jù)表的表頭指針。4.2編程方案設(shè)計(jì)#include <reg52.h>#define uint unsigned int#define uchar
11、unsigned charsbit voice=P14;uchar code sound=0xff, 0x40,0x40,0x40,0x20,0x4c,0x20,0x26,0x20,0x2b,0x20,0x2b,0x40,0x30,0x40, 0x30,0x20,0x4c,0x20,0x20,0x40,0x20,0x40,0x39,0x40,0x40,0x20,0x4c,0x20, 0x40,0x20,0x30,0x20,0x30,0x20,0x30,0x20,0x2b,0x40,0x2b,0x20,0x30,0x20, 0x26,0x20,0x2b,0x40,0x2b,0x20,0x26,0
12、x40,0x26,0x20,0x20,0x20,0x20,0x40, 0x26,0x20,0x2b,0x20,0x30,0x40,0x30,0x20,0x2b,0x20,0x30,0x20,0x39,0x40, 0x39,0x20,0x39,0x20,0x26,0x20,0x2b,0x60,0x30,0x60,0x39,0x40,0x39,0x40, 0x39,0x40,0x26,0x20,0x2b,0x60,0x30,0x60,0x39,0x40,0x39,0x40,0x26,0x20, 0x30,0x20,0x2b,0x40,0x2b,0x40,0xff,0x40,0xff,0x40,0x
13、00, ;uchar zdjs=0, jp;del(yj);void main(void) uint dpjs=0; uchar yj; TMOD=0x01,IE=0x82; TH0=0xd8, TL0=0xef; TR0=1;while(1) zdjs=0; dpjs+; yj=sounddpjs; dpjs+; jp=sounddpjs; while(zdjs!=jp) if(yj!=0xff) if(yj!=0) voice=!voice; del(yj); else dpjs=0; break; else voice=0; del(jp); time0() interrupt 1 us
14、ing 1 TH0=0xd8, TL0=0xef; zdjs+; del(yj) uchar yj2=2; while(yj!=0) while(yj2!=0) yj2-; yj2=2; yj-; 五、心得體會(huì) 通過(guò)本次對(duì)音樂(lè)播放器的設(shè)計(jì)與制作,讓我詳細(xì)的了解了關(guān)于音樂(lè)播放器的原理和設(shè)計(jì)理念,同時(shí)我更進(jìn)一步的了解了各個(gè)芯片的結(jié)構(gòu),掌握了各個(gè)芯片的工作原理和具體使用方法。在連接單片機(jī)外部電路的實(shí)驗(yàn)中,如熟悉邏輯電路和各個(gè)引腳的功能,那么電路出錯(cuò)時(shí)便能準(zhǔn)確地找出錯(cuò)誤并及時(shí)修正。 實(shí)驗(yàn)二一、開(kāi)發(fā)背景數(shù)字鐘是實(shí)現(xiàn)對(duì)“時(shí)”、“分”、“秒”數(shù)字顯示的計(jì)時(shí)裝置,廣泛用于個(gè)人家庭、車(chē)站、碼頭、辦公室等公共場(chǎng)所
15、,成為人們生活中不可缺少的必需品,由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛使用,數(shù)字鐘的精度、穩(wěn)定度遠(yuǎn)遠(yuǎn)超過(guò)老式機(jī)械鐘。與傳統(tǒng)機(jī)械鐘相比,它具有走時(shí)準(zhǔn)確、顯示直觀無(wú)機(jī)械傳動(dòng)裝置等優(yōu)點(diǎn)。它以其小巧,價(jià)格低廉,走時(shí)精度高,使用方便,便于集成化而受到了人們的歡迎并很快走進(jìn)了千家萬(wàn)戶。因此,研究數(shù)字鐘,有著非?,F(xiàn)實(shí)的意義。二、數(shù)字時(shí)鐘的硬件設(shè)計(jì) 本設(shè)計(jì)采用STC89C52RC單片機(jī)設(shè)計(jì)一個(gè)數(shù)字電子鐘,通過(guò)兩個(gè)4位一體LED數(shù)碼管顯示時(shí)、分、秒,并設(shè)有6個(gè)按鍵。電路分為6部分,分別為復(fù)位電路、鍵盤(pán)電路、時(shí)鐘電路、蜂鳴器電路、顯示電路和控制電路。復(fù)位電路采用按鍵復(fù)位方式。鍵盤(pán)電路采用獨(dú)立式鍵盤(pán)。時(shí)鐘電
16、路用12MHz的晶振產(chǎn)生時(shí)鐘信號(hào)。蜂鳴器電路由三極管與蜂鳴器組成。顯示電路采用8個(gè)三極管驅(qū)動(dòng)兩個(gè)4位LED顯示??刂齐娐凡捎?位的STC89C52RC單片機(jī)作為CPU。STC89C52RC是整個(gè)系統(tǒng)的核心,本項(xiàng)目一共使用的STC89C52RC的端口有P1、P0、P2口及P3口,其中P0接數(shù)碼管的段控制,P2用于接數(shù)碼管的位控制,實(shí)現(xiàn)時(shí)鐘的顯示。STC89C52RC使用的是12MHz的無(wú)源晶振,其振蕩周期是時(shí)鐘周期的12倍,因此每一條單周期指令的執(zhí)行時(shí)間是1us;使用P3口來(lái)實(shí)現(xiàn)鍵盤(pán)的操作功能。在程序中對(duì)鍵盤(pán)的控制采用的是掃描的方式,在需要得到鍵盤(pán)輸入時(shí),就每200毫秒對(duì)鍵盤(pán)進(jìn)行一次掃描,以次來(lái)
17、避免鍵盤(pán)的過(guò)快反應(yīng)從而出現(xiàn)紊亂現(xiàn)象。STC89C52中的P3.2、P3.3、P3.4、P3.5及P1.6口實(shí)現(xiàn)了整個(gè)系統(tǒng)的五個(gè)控制鍵,這五個(gè)控制鍵分別是“設(shè)置”、“加一”、“減一”、“換屏”和“鬧鐘開(kāi)關(guān)”,這五個(gè)控制鍵是整個(gè)系統(tǒng)中的總控制鍵。同樣,這五個(gè)控制鍵也是使用掃描的方式進(jìn)行判斷的。但是這五個(gè)控制鍵不需要使用專(zhuān)門(mén)的解碼,而是直接使用低電平的判斷方式來(lái)進(jìn)行控制。STC89C52RC中的P1.4用于控制蜂鳴器。本系統(tǒng)基本框如圖所示:復(fù)位電路鍵盤(pán)電路蜂鳴器電路時(shí)鐘電路STC89C52RC控制電路顯示電路時(shí)鐘芯片電路 共陽(yáng)數(shù)碼管管腳圖 數(shù)碼管顯示電路三、數(shù)字時(shí)鐘的軟件設(shè)計(jì)3.1 主程序流程圖 N
18、Y開(kāi)始主程序及DS1302初始化動(dòng)態(tài)掃描顯示判斷T1定時(shí)是否發(fā)生5次?讀一次DS1302的計(jì)數(shù)值判斷鬧鈴是否發(fā)生,temp=1?鬧鈴音樂(lè)響YN將由DS1302讀的BCD碼進(jìn)行轉(zhuǎn)化主程序流程框圖3.2讀DS1302中斷及鬧鐘檢測(cè)程序流程框圖鬧鐘標(biāo)志位TEMP置1T1中斷返回YT1 60ms中斷發(fā)生判斷中斷次數(shù)是否為3?中斷次數(shù)清零,調(diào)用讀DS1302子程序,讀出時(shí)、分、秒、年、月、日、星期7個(gè)字節(jié),并且重置T1定時(shí)60ms初值開(kāi)始判斷鬧鈴設(shè)置時(shí)和當(dāng)前時(shí)間是否一致?YNN中斷服務(wù)程序流程圖3.3 音樂(lè)程序流程圖初始化T1簡(jiǎn)譜碼指針清0簡(jiǎn)譜碼送 DPTR查表music_tab 簡(jiǎn)譜碼送A結(jié)束碼?取高
19、4位(音符碼)取低4位(節(jié)拍碼)暫存R2音符碼為0?停止計(jì)數(shù)器YN不發(fā)音Y計(jì)數(shù)值送DPTR取相應(yīng)計(jì)數(shù)值定時(shí)器1計(jì)數(shù)按R2常數(shù)延時(shí)P1.4取反,節(jié)拍時(shí)間到?重置T1計(jì)數(shù)器指向下一個(gè)簡(jiǎn)譜碼YN音樂(lè)程序流程圖3.4 顯示子程序流程圖開(kāi)始讀數(shù)據(jù),分離高位和低位置段碼偏移量和位選碼查表并送出顯示延時(shí)1ms,并指向下一個(gè)偏移量8個(gè)數(shù)碼管顯示完?YESNO 顯示子程序流程圖四、核心代碼4.1初始化代碼uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /七段共陽(yáng)管顯示定義("0","1"
20、;,"2","3","4","5","6","7","8","9")uchar day,mon,year,week; /定義年月日-星期uchar hour,min,sec; /定義時(shí)分秒uchar h_clock,m_clock,s_clock; /定義鬧鐘的時(shí)分秒uchar or,clock_b,sn,bjcs;/*定義各變量地址*/#define w_s 0x80#define w_m 0x82#define w_h 0x84#d
21、efine w_d 0x86#define w_mon 0x88#define w_year 0x8c#define w_week 0x8a#define r_s 0x81#define r_m 0x83 #define r_h 0x85#define r_day 0x87#define r_mon 0x89#define r_year 0x8d#define r_week 0x8b#define w_wp 0x8e4.2時(shí)鐘芯片模塊代碼void write_c(uchar dat) /DS1302寫(xiě)入 uchar i; for(i=0;i<8;i+) sclk=0; io=dat&am
22、p;0x01; dat=dat>>1; sclk=1; void write_ds(uchar add,uchar dat) /寫(xiě)數(shù)據(jù) rst =0; sclk=0; rst=1; write_c(add); write_c(dat); rst=0; io=1; sclk=1;uchar read_ds(uchar add) /讀數(shù)據(jù) uchar i,value; rst=0; sclk=0; rst=1; write_c(add); for(i=0;i<8;i+) value>>=1; sclk=0; if(io) value=value|0x80; sclk=
23、1; sclk=1; value=(value/16)*10+value%16; /10進(jìn)制轉(zhuǎn)換為16進(jìn)制 return value;/*設(shè)置時(shí)鐘芯片函數(shù)*/void init_ds1302() write_ds(w_wp,0x00);/打開(kāi)寄存器輸入 write_ds(w_h,0x00); /設(shè)置24制 write_ds(w_year,0x11);/設(shè)置初始年份:2011年 write_ds(w_mon,0x12);/設(shè)置初始月份:12月 write_ds(w_d,0x16);/設(shè)置初始日期:15日 write_ds(w_week,0x05);/設(shè)置初始星期:星期2 write_ds(w_h
24、,0x11);/設(shè)置初始時(shí)鐘:12點(diǎn)00分00秒 write_ds(w_m,0x58); write_ds(w_s,0x57); write_ds(w_wp,0x80); /關(guān)閉寄存器輸入4.3音樂(lè)模塊代碼unsigned char c=0; /c為節(jié)拍常數(shù)變量unsigned char code music_tab =0x18, 0x30, 0x1C , 0x10, 0x20, 0x40, 0x1C , 0x10, 0x18, 0x10, 0x20 , 0x10, 0x1C, 0x10, 0x18 , 0x40, 0x1C, 0x20, 0x20 , 0x20, 0x1C, 0x20, 0x
25、18 , 0x20, 0x20, 0x80, 0xFF , 0x20, 0x30, 0x1C, 0x10 , 0x18, 0x20, 0x15, 0x20 , 0x1C, 0x20, 0x20, 0x20 , 0x26, 0x40, 0x20, 0x20 , 0x2B, 0x20, 0x26, 0x20 , 0x20, 0x20, 0x30, 0x80 , 0xFF, 0x20, 0x20, 0x1C , 0x10, 0x18, 0x10, 0x20 , 0x20, 0x26, 0x20, 0x2B , 0x20, 0x30, 0x20, 0x2B , 0x40, 0x20, 0x20, 0x
26、1C , 0x10, 0x18, 0x10, 0x20 , 0x20, 0x26, 0x20, 0x2B , 0x20, 0x30, 0x20, 0x2B , 0x40, 0x20, 0x30, 0x1C , 0x10, 0x18, 0x20, 0x15 , 0x20, 0x1C, 0x20, 0x20 , 0x20, 0x26, 0x40, 0x20 , 0x20, 0x2B, 0x20, 0x26 , 0x20, 0x20, 0x20, 0x30 , 0x80, 0x20, 0x30, 0x1C , 0x10, 0x20, 0x10, 0x1C , 0x10, 0x20, 0x20, 0x
27、26 , 0x20, 0x2B, 0x20, 0x30 , 0x20, 0x2B, 0x40, 0x20 , 0x15, 0x1F, 0x05, 0x20 , 0x10, 0x1C, 0x10, 0x20 , 0x20, 0x26, 0x20, 0x2B , 0x20, 0x30, 0x20, 0x2B , 0x40, 0x20, 0x30, 0x1C , 0x10, 0x18, 0x20, 0x15 , 0x20, 0x1C, 0x20, 0x20 , 0x20, 0x26, 0x40, 0x20 , 0x20, 0x2B, 0x20, 0x26 , 0x20, 0x20, 0x20, 0x
28、30 , 0x30, 0x20, 0x30, 0x1C , 0x10, 0x18, 0x40, 0x1C , 0x20, 0x20, 0x20, 0x26 , 0x40, 0x13, 0x60, 0x18 , 0x20, 0x15, 0x40, 0x13 , 0x40, 0x18, 0x80, 0x00;/格式為: 頻率常數(shù), 節(jié)拍常數(shù), 頻率常數(shù), 節(jié)拍常數(shù),Void int0() interrupt 1 /采用中斷0 控制節(jié)拍 TH0=0xd8; TL0=0xef; c-;void delays (unsigned char m) /控制頻率延時(shí) unsigned i=3*m; while
29、(-i);void delaysms(unsigned char a) /豪秒延時(shí)子程序 while(-a); void music() unsigned char p,m; /m為頻率常數(shù)變量 unsigned char i=0; TMOD&=0x0f; TMOD =0x01; TH0=0xd8;TL0=0xef; IE=0x82; play: while(k5=0) a: p=music_tabi; if(p=0x00) /如果碰到結(jié)束符,延時(shí)1秒,回到開(kāi)始再來(lái)一遍 i=0; delaysms(1000); goto play; else if(p=0xff) /若碰到休止符,延時(shí)
30、100ms,繼續(xù)取下一音符 i=i+1; delaysms(100); TR0=0; goto a; else /取頻率常數(shù)和節(jié)拍常數(shù) m=music_tabi+; c=music_tabi+; TR0=1; /開(kāi)定時(shí)器1 while(c!=0) fm=fm,delays(m); /等待節(jié)拍完成, 通過(guò)P1口輸出音頻 TR0=0; /關(guān)定時(shí)器1 4.4顯示程序代碼void dis_t() /顯示時(shí)間函數(shù) sec=read_ds(r_s); min=read_ds(r_m); hour=read_ds(r_h); v_time(); if(h_clock=read_ds(r_h)&&am
31、p;(m_clock=read_ds(r_m)&&(s_clock=read_ds(r_s)&&clock_b) /鬧鈴時(shí)間 music(); sec=read_ds(r_s); min=read_ds(r_m); hour=read_ds(r_h); v_time(); if(read_ds(r_m)=00)&&(read_ds(r_s)=00) feng(1); void dis_d() /顯示日期函數(shù) day=read_ds(r_day); mon=read_ds(r_mon); year=read_ds(r_year); week=rea
32、d_ds(r_week); view_d(); if(h_clock=read_ds(r_h)&&(m_clock=read_ds(r_m)&&(s_clock=read_ds(r_s)&&clock_b) music(); if(read_ds(r_m)=00)&&(read_ds(r_s)=00) /整點(diǎn)報(bào)時(shí) feng(1); 4.5按鍵程序代碼void key_time() /按鍵程序 uchar temp,kk; if(k1=0) delay(10); if(k1=0) while(k1=0); sn+;if(sn=1)
33、kk=read_ds(r_s); temp=kk/10*16+kk%10; write_ds(w_wp,0x00); /禁止寫(xiě)保護(hù) write_ds(w_s,temp); /時(shí)鐘暫停 write_ds(w_wp,0x80); /允許寫(xiě)保護(hù) switch(sn) case 1: if(k2=0) delay(10); if(k2=0) while(k2=0); kk=read_ds(r_s); temp=(kk+1)/10*16+(kk+1)%10; if(temp>=96) temp=0; write_ds(w_wp,0x00); /禁止寫(xiě)保護(hù) write_ds(w_s,temp); /
34、秒初始化 write_ds(w_wp,0x80); /允許寫(xiě)保護(hù) if(k3=0) delay(10); if(k3=0) while(k3=0); kk=read_ds(r_s); temp=(kk-1)/10*16+(kk-1)%10; if(temp=0) temp=89; write_ds(w_wp,0x00); /禁止寫(xiě)保護(hù) write_ds(w_s,temp); /秒初始化 write_ds(w_wp,0x80); /允許寫(xiě)保護(hù) break; case 2: if(k2=0) delay(10); if(k2=0) while(k2=0); kk=read_ds(r_m); tem
35、p=(kk+1)/10*16+(kk+1)%10; if(temp>=96) temp=0; write_ds(w_wp,0x00); /禁止寫(xiě)保護(hù) write_ds(w_m,temp); /分初始化 write_ds(w_wp,0x80); /允許寫(xiě)保護(hù) if(k3=0) delay(10); if(k3=0) while(k3=0); kk=read_ds(r_m); temp=(kk-1)/10*16+(kk-1)%10; if(temp=0) temp=89; write_ds(w_wp,0x00); /禁止寫(xiě)保護(hù) write_ds(w_m,temp); /分初始化 write_
36、ds(w_wp,0x80); /允許寫(xiě)保護(hù) break; case 3 : if(k2=0) delay(10); if(k2=0) while(k2=0); kk=read_ds(r_h); temp=(kk+1)/10*16+(kk+1)%10; if(temp>=36) temp=0; write_ds(w_wp,0x00); /禁止寫(xiě)保護(hù) write_ds(w_h,temp); /時(shí)初始化 write_ds(w_wp,0x80); /允許寫(xiě)保護(hù) if(k3=0) delay(10); if(k3=0) while(k3=0); kk=read_ds(r_h); temp=(kk-1)/10*16+(kk-1)%10; if(temp=0) temp=35; write_ds(w_wp,0x00); /禁止寫(xiě)保護(hù) write_ds(w_h,temp); /時(shí)初始化 write_ds(w_wp,0x80); /允
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能制造企業(yè)生產(chǎn)管理人才招聘與智能制造協(xié)議
- 二零二五年度立體停車(chē)設(shè)備研發(fā)與委托運(yùn)營(yíng)管理合同
- 二零二五年度航空航天就業(yè)勞動(dòng)合同
- 二零二五年度叉車(chē)安全風(fēng)險(xiǎn)評(píng)估與整改合同
- 圍城深度解讀與評(píng)析征文
- 新產(chǎn)品市場(chǎng)推廣策略及執(zhí)行方案
- 工業(yè)自動(dòng)化控制系統(tǒng)設(shè)計(jì)與維護(hù)服務(wù)協(xié)議
- 《天文觀測(cè)與天體物理學(xué)習(xí)計(jì)劃》
- 行業(yè)市場(chǎng)深度調(diào)研分析
- 互聯(lián)網(wǎng)+三農(nóng)營(yíng)銷(xiāo)模式創(chuàng)新案例集
- H3C-CAS虛擬化平臺(tái)詳細(xì)介紹
- 藥房品種類(lèi)別及數(shù)量清單
- 玻璃工藝學(xué)第4章 玻璃的性質(zhì)
- 四川省藥械集中采購(gòu)及醫(yī)藥價(jià)格監(jiān)測(cè)平臺(tái)操作指引
- 機(jī)關(guān)檔案管理工作培訓(xùn)PPT課件
- 大學(xué)生安全教育課件(ppt共41張)
- 初中物理人教版八年級(jí)下冊(cè) 第1節(jié)牛頓第一定律 課件
- 網(wǎng)站培訓(xùn)內(nèi)容trswcm65表單選件用戶手冊(cè)
- 監(jiān)理大綱(范本)
- 空調(diào)系統(tǒng)維保記錄表格模板
- 打印版-圓與二次函數(shù)綜合題精練(帶答案)
評(píng)論
0/150
提交評(píng)論