【正文】
21 秒,所以,完全能夠滿足復(fù)位的時(shí)間要求。調(diào)整時(shí)間時(shí),按下 “設(shè)置 ”鍵,小時(shí)數(shù)開(kāi)始閃爍,表示設(shè)置小時(shí)數(shù),第一次輸入數(shù)字鍵調(diào)整十位,第二次輸入數(shù)字鍵調(diào)整個(gè)位,再次按下 “設(shè)置 ”鍵,分鐘數(shù)開(kāi)始閃爍,第一次輸入數(shù)字鍵調(diào)整十 位,第二次輸入數(shù)字鍵調(diào)整個(gè)位,再次按下 “設(shè)置 ”鍵,退出調(diào)整,數(shù)碼管不再閃爍。 LED 顯示電路。計(jì)數(shù)器 對(duì)兩 個(gè) 脈沖源之一進(jìn)行計(jì)數(shù),每輸入 1 個(gè)脈沖,計(jì)數(shù)值加 1, TH0(或 TH1)和 TL0(或 TL1)是用來(lái)存放所計(jì)脈沖個(gè)數(shù)的寄存器。在單片機(jī)中,也采用類似的方法,稱為預(yù)置計(jì)數(shù)初值法。即對(duì)內(nèi)部時(shí)鐘脈沖計(jì)數(shù)就是定時(shí)功能,對(duì)外部輸入脈沖計(jì)數(shù)就是計(jì)數(shù)功能。當(dāng)訪問(wèn)外部擴(kuò)展存儲(chǔ)器時(shí),可作為地址總線低 8位與數(shù)據(jù)總線的分時(shí)復(fù)用口。 P2口可驅(qū)動(dòng) 4個(gè) TTL 負(fù)載。 unsigned char count,count_f,sec,min,hour,alarm_min,alarm_hour。 buf[1]=tab[sec/10]。 buf[7]=0xff。 } else { buf[3]=tab[alarm_hour%10]。i=7。 delay(100)。 //行作輸出,列作輸入 temp=P1。 break。 break。 break。 //返回按鍵號(hào),帶返回值的函數(shù)的應(yīng)用 if (keyNum10) //按下的是數(shù)字鍵 { if (set==1) //小時(shí)數(shù)值調(diào)整 { if (ge_shi) { hour=hour/10*10+keyNum。 ge_shi=!ge_shi。 } else { if (keyNum6) { alarm_min=keyNum*10+alarm_min%10。 TH0=0x3c。 button( )。 } } } void timer_0( ) interrupt 1 //定時(shí)器 0 中斷函數(shù) { TH0=0x3c。 hour++。 case 3:flash_h=!flash_h。 Proteus 從原理圖設(shè)計(jì)到 PCB 設(shè)計(jì),再到電路板完成的流程如圖 11 所示。 基于單片機(jī)的音樂(lè)數(shù)字鐘的設(shè)計(jì)與仿真 35 圖 118 Keilμ V3 的啟動(dòng)界面 Proteus 與 Keil 軟件實(shí)現(xiàn) 仿真運(yùn)行 在進(jìn)行模擬電路、數(shù)字電路仿真時(shí),只需點(diǎn)擊仿真運(yùn)行按鈕 就可 以了。 基于單片機(jī)的音樂(lè)數(shù)字鐘的設(shè)計(jì)與仿真 37 致謝 經(jīng)過(guò) 一 個(gè)來(lái)來(lái)月的忙碌和學(xué)習(xí),本次畢業(yè)設(shè)計(jì)已經(jīng)接近尾聲,作為一個(gè)大專 生的畢業(yè)設(shè)計(jì),由于經(jīng)驗(yàn)的匱乏,難免有許多考慮不周全的地方,如果沒(méi)有導(dǎo)師 的督促指導(dǎo),以及一起工作的同學(xué)們的支持,想要完成這個(gè)設(shè)計(jì)是難以想象的。此次畢業(yè)設(shè)計(jì)才會(huì) 順利完成。 由于過(guò)分的自信,我以為構(gòu)思也有了寫(xiě)程 序應(yīng)該是相對(duì)容易的。 Keil 提供了包括 C編譯器、 宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案,通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境( uVision)將這些部份組合在一起。 目前, Proteus 仿真系統(tǒng)支持的主流單片機(jī)有 ARM 8051/52 系列, AVR 系列、 PIC 系列、 HC11 系列等,它支持的第三方軟件開(kāi)發(fā)、編譯和調(diào)試環(huán)境有 Keil μVision2/ MPLAB等。 case 2:flash_m=!flash_m。 min++。alarm_min==min) { sounder=0。 sounder=1。 //保證每次都是先調(diào)整十位再調(diào)整個(gè)位 } if (keyNum==10) //鬧鐘開(kāi)啟和關(guān)閉 { flag_alarm=!flag_alarm。 } } } if (set==4) //鬧鐘分鐘數(shù)值調(diào)整 { if (ge_shi) { alarm_min=alarm_min/10*10+keyNum。 ge_shi=!ge_shi。 } button() { unsigned char keyNum。 break。 break。 break。 if (P1!=0xf0) //判斷是否有按鍵按下 { delay(1000)。 } if (flag_alarm) { P2=01。 buf[1]=tab[alarm_min/10]。 if (flash_h) //分鐘閃爍標(biāo)志 { buf[3]=0xff。 } buf[5]=0xbf。 unsigned char buf[8]。 sbit key2=P1^7。 P2口為 8位準(zhǔn)雙向 I/O 端口,可作為通用 I/O 端口使用,內(nèi)部具有上拉電阻,作為輸入端口時(shí)應(yīng)先將端口的輸出鎖存器置 1。 1) P0口:對(duì)應(yīng) ~ 。后 1 個(gè)模擬開(kāi)關(guān)受控制信號(hào)的控制,它決定了脈沖是否加到計(jì)數(shù)器輸入端,即決定了加 1 計(jì)數(shù)器的運(yùn)行與關(guān)閉。如果定時(shí)少于 65536μs,怎么為呢?這就好比一個(gè)空的水瓶,要滴 1 萬(wàn)滴水才會(huì)滴滿溢出,我們?cè)陂_(kāi)始滴水之前先放入一些水,就不需要1 萬(wàn)滴了。 MCS51 單片機(jī)的定時(shí) /計(jì)數(shù)器的結(jié)構(gòu)如圖 613 所示。揚(yáng)聲器作為輸出部分按照鍵盤給單片機(jī)的指令發(fā)出樂(lè)曲。一首樂(lè)曲演奏的原理是不同音階分別對(duì)應(yīng)不同的頻率單片機(jī)輔以相應(yīng)的接口來(lái)設(shè)計(jì)音樂(lè)播放器。 基于單片機(jī)的音樂(lè)數(shù)字鐘的設(shè)計(jì)與仿真 22 圖 66 數(shù)字時(shí)鐘數(shù)碼管顯示格式 圖 67 鍵盤按鍵定義示意圖 2. 仿真電路圖 數(shù)字時(shí)鐘電路如圖 68 所示。當(dāng)人為按下按鈕時(shí),則 Vcc 的 +5V 電平就會(huì)直接加到 RST 端。 無(wú)論用戶使用哪種類型的單片機(jī) ,總要涉及到單片機(jī)復(fù)位電路的設(shè)計(jì)。當(dāng)接通電源后( ~15V 直流工作電壓) ,多諧振蕩器起振 ,輸出 ~ 的音頻信號(hào),阻抗匹配器推動(dòng)壓電蜂鳴片發(fā)聲。 當(dāng) 8051單片 機(jī)的 P0口 總線負(fù) 載達(dá)到 或超過(guò) P0最大負(fù) 載能力 時(shí) , 必 須 接入 74LS245等總 線驅(qū)動(dòng) 器。 case 0x77:第 3 行第 3 個(gè)按鍵的功能代碼 。 case 0x7b:第 2 行第 3 個(gè)按鍵的功能代碼 。 case 0x7d:第 1 行第 3 個(gè)按鍵的功能代碼 。 case 0x7e:第 0 行第 3 個(gè)按鍵的功能代碼 。 //讀取列值 P1=0x0f。這樣當(dāng) 1 個(gè)鍵被按下時(shí),必定讀得一對(duì)唯一的行值和列值,根據(jù)這一對(duì)值即可確定閉合鍵。 break。 case 0x7b:第 2 行第 3 個(gè)按鍵的功能代碼 。 break。 } P1=0xfd。 //掃描第 0 行 switch (P1) { case 0xee:第 0 行第 0 個(gè)按鍵的功能代碼 。 ( 1)逐行掃描法 逐行掃描法是識(shí)別閉合鍵的常用方法,在硬件電路上要求行線作輸出、列線作輸入,列線上要有上拉電阻。 同樣,如果是接于 P0 口,必須要有上拉電阻,如果接于 P P2 或 P3 口,上拉電阻可以省略。 圖 419 動(dòng)態(tài)掃描顯示示意圖 在數(shù)碼管輪流顯示的過(guò)程中,每個(gè)數(shù)碼管被點(diǎn)亮的時(shí)間為 1ms 左右,雖然各位數(shù)碼管并非同時(shí)點(diǎn)亮,但由于人眼的視覺(jué)暫留效應(yīng),主觀感覺(jué)各位數(shù)碼管同時(shí)在顯示。每個(gè)數(shù)碼管的 8 個(gè)筆段分別與一個(gè) 8 位 I/O 口相連, I/O 口只要有段碼輸出,相應(yīng)字符即顯示出來(lái),并保持不變,直到 I/O 口輸出新的段碼,其示意圖如圖 417 所示。采用 12MHz 數(shù)碼管字形段碼 共陰型和共陽(yáng)型的 LED 數(shù)碼管各筆劃段名和安排位置是相同的,分別用 a、 b、 c、 d、e、 f、 g 和 dp 表示,如圖 415( a)所示。 在輪流點(diǎn)亮掃描過(guò)程中 每位顯示器的點(diǎn)亮?xí)r間是極為短暫的 約 1ms 左右 但 由于人的視覺(jué)暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng) 盡管實(shí)際上各位顯示器并非同時(shí)點(diǎn) 亮 但只要掃描的速度足夠快 給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù) 不會(huì)有閃爍感。 靜態(tài)顯示是顯示驅(qū)動(dòng)電路具有輸出鎖存功能 單片機(jī)將要顯示的數(shù)據(jù)送出后不再 控制 LED 直到下次顯示時(shí)再傳送一次新的顯示數(shù)據(jù)。 ( 4)從各發(fā)光段電極連接方式分有共陽(yáng)極和共陰極兩種。石晶振蕩和陶瓷振蕩均可采用。在 FLASHALE 1/6。 P2 口當(dāng)用于外部程序存儲(chǔ)器或 16 位地址外 P2 口輸出地址的高八位。片內(nèi)振蕩器和時(shí)鐘電路 2 管腳說(shuō)明 圖 VCC GND 圖 P0 P0 口為一個(gè) 8 位漏級(jí)開(kāi)路雙向 I/O 8TTL 門電流。 4K 字節(jié)可編程閃爍存儲(chǔ)器 1000 寫(xiě) /擦循環(huán) 10年 0Hz24Hz 以往由繼電器接觸器控制,模擬電路、數(shù)字電路實(shí)現(xiàn)的大部分控制功能,現(xiàn)在都能夠使用單片機(jī)通過(guò)軟件的方式來(lái)實(shí)現(xiàn),這種以軟件取代硬件并能夠提高系統(tǒng)性能的微控制技術(shù),隨著單片機(jī)應(yīng)用的推廣普及,不斷發(fā)展,日益完善。單片機(jī)示意圖如圖 134 所示。 課設(shè)準(zhǔn)備中根據(jù)具體的要求,查找資料,然后根據(jù)已經(jīng)學(xué)過(guò)的始終程序編寫(xiě)定時(shí)鬧鐘的程序,依據(jù)程序利用 Proteus 軟件進(jìn)行了仿真實(shí)驗(yàn),對(duì)出現(xiàn)的問(wèn)題進(jìn)行分析和反復(fù)修改原程序,最終得到正確并符合要求的結(jié)果。 5 2 單片機(jī)系統(tǒng)的硬件設(shè)計(jì) 系統(tǒng)構(gòu)成 芯片的介紹 關(guān)鍵詞 單片機(jī) /設(shè)計(jì) /開(kāi)發(fā) /調(diào)試 基于單片機(jī)的音樂(lè)數(shù)字鐘的設(shè)計(jì)與仿真 2 Music based on single chip microputer digital clock design and simulation ABSTRACT In recent years, along with the puter peration in the field of society and the development of large scale integrated circuit, SCM applications are constantly go, because it has strong function, small volume, low power consumption, cheap, reliable work, convenient use, etc, therefore particularly suitable for related to the control system, more and more widely used in automatic control, intelligent instruments, meters, data acquisition, military products and household appliances and other fields, the microcontroller is often used as a core ponent, in according to the specific hardware structure, and in bination with the software according to the characteristics of the specific application object, to be improved. Microcontroller is short for single chip microputer, with the development of integrated circuit technology manufacturing plete puter functions of ponents can be integrated on a chip. Such a chip has all or most of the function of the puter, known as the single chip microputer, referred to as single chip microputer. KEY WORDS SCM,design,development,debugging 基于單片機(jī)的音樂(lè)數(shù)字鐘的設(shè)計(jì)與仿真 3 目錄 摘要 9 數(shù)碼管顯示模塊分析 與傳統(tǒng)的機(jī)械式相比,用單片機(jī)設(shè)計(jì)的音樂(lè) 數(shù)字鐘 體積更小巧