【正文】
21 秒,所以,完全能夠滿足復(fù)位的時間要求。調(diào)整時間時,按下 “設(shè)置 ”鍵,小時數(shù)開始閃爍,表示設(shè)置小時數(shù),第一次輸入數(shù)字鍵調(diào)整十位,第二次輸入數(shù)字鍵調(diào)整個位,再次按下 “設(shè)置 ”鍵,分鐘數(shù)開始閃爍,第一次輸入數(shù)字鍵調(diào)整十 位,第二次輸入數(shù)字鍵調(diào)整個位,再次按下 “設(shè)置 ”鍵,退出調(diào)整,數(shù)碼管不再閃爍。 LED 顯示電路。計數(shù)器 對兩 個 脈沖源之一進行計數(shù),每輸入 1 個脈沖,計數(shù)值加 1, TH0(或 TH1)和 TL0(或 TL1)是用來存放所計脈沖個數(shù)的寄存器。在單片機中,也采用類似的方法,稱為預(yù)置計數(shù)初值法。即對內(nèi)部時鐘脈沖計數(shù)就是定時功能,對外部輸入脈沖計數(shù)就是計數(shù)功能。當訪問外部擴展存儲器時,可作為地址總線低 8位與數(shù)據(jù)總線的分時復(fù)用口。 P2口可驅(qū)動 4個 TTL 負載。 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。 //返回按鍵號,帶返回值的函數(shù)的應(yīng)用 if (keyNum10) //按下的是數(shù)字鍵 { if (set==1) //小時數(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 //定時器 0 中斷函數(shù) { TH0=0x3c。 hour++。 case 3:flash_h=!flash_h。 Proteus 從原理圖設(shè)計到 PCB 設(shè)計,再到電路板完成的流程如圖 11 所示。 基于單片機的音樂數(shù)字鐘的設(shè)計與仿真 35 圖 118 Keilμ V3 的啟動界面 Proteus 與 Keil 軟件實現(xiàn) 仿真運行 在進行模擬電路、數(shù)字電路仿真時,只需點擊仿真運行按鈕 就可 以了。 基于單片機的音樂數(shù)字鐘的設(shè)計與仿真 37 致謝 經(jīng)過 一 個來來月的忙碌和學(xué)習(xí),本次畢業(yè)設(shè)計已經(jīng)接近尾聲,作為一個大專 生的畢業(yè)設(shè)計,由于經(jīng)驗的匱乏,難免有許多考慮不周全的地方,如果沒有導(dǎo)師 的督促指導(dǎo),以及一起工作的同學(xué)們的支持,想要完成這個設(shè)計是難以想象的。此次畢業(yè)設(shè)計才會 順利完成。 由于過分的自信,我以為構(gòu)思也有了寫程 序應(yīng)該是相對容易的。 Keil 提供了包括 C編譯器、 宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境( uVision)將這些部份組合在一起。 目前, Proteus 仿真系統(tǒng)支持的主流單片機有 ARM 8051/52 系列, AVR 系列、 PIC 系列、 HC11 系列等,它支持的第三方軟件開發(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)整個位 } if (keyNum==10) //鬧鐘開啟和關(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) //分鐘閃爍標志 { buf[3]=0xff。 } buf[5]=0xbf。 unsigned char buf[8]。 sbit key2=P1^7。 P2口為 8位準雙向 I/O 端口,可作為通用 I/O 端口使用,內(nèi)部具有上拉電阻,作為輸入端口時應(yīng)先將端口的輸出鎖存器置 1。 1) P0口:對應(yīng) ~ 。后 1 個模擬開關(guān)受控制信號的控制,它決定了脈沖是否加到計數(shù)器輸入端,即決定了加 1 計數(shù)器的運行與關(guān)閉。如果定時少于 65536μs,怎么為呢?這就好比一個空的水瓶,要滴 1 萬滴水才會滴滿溢出,我們在開始滴水之前先放入一些水,就不需要1 萬滴了。 MCS51 單片機的定時 /計數(shù)器的結(jié)構(gòu)如圖 613 所示。揚聲器作為輸出部分按照鍵盤給單片機的指令發(fā)出樂曲。一首樂曲演奏的原理是不同音階分別對應(yīng)不同的頻率單片機輔以相應(yīng)的接口來設(shè)計音樂播放器。 基于單片機的音樂數(shù)字鐘的設(shè)計與仿真 22 圖 66 數(shù)字時鐘數(shù)碼管顯示格式 圖 67 鍵盤按鍵定義示意圖 2. 仿真電路圖 數(shù)字時鐘電路如圖 68 所示。當人為按下按鈕時,則 Vcc 的 +5V 電平就會直接加到 RST 端。 無論用戶使用哪種類型的單片機 ,總要涉及到單片機復(fù)位電路的設(shè)計。當接通電源后( ~15V 直流工作電壓) ,多諧振蕩器起振 ,輸出 ~ 的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。 當 8051單片 機的 P0口 總線負 載達到 或超過 P0最大負 載能力 時 , 必 須 接入 74LS245等總 線驅(qū)動 器。 case 0x77:第 3 行第 3 個按鍵的功能代碼 。 case 0x7b:第 2 行第 3 個按鍵的功能代碼 。 case 0x7d:第 1 行第 3 個按鍵的功能代碼 。 case 0x7e:第 0 行第 3 個按鍵的功能代碼 。 //讀取列值 P1=0x0f。這樣當 1 個鍵被按下時,必定讀得一對唯一的行值和列值,根據(jù)這一對值即可確定閉合鍵。 break。 case 0x7b:第 2 行第 3 個按鍵的功能代碼 。 break。 } P1=0xfd。 //掃描第 0 行 switch (P1) { case 0xee:第 0 行第 0 個按鍵的功能代碼 。 ( 1)逐行掃描法 逐行掃描法是識別閉合鍵的常用方法,在硬件電路上要求行線作輸出、列線作輸入,列線上要有上拉電阻。 同樣,如果是接于 P0 口,必須要有上拉電阻,如果接于 P P2 或 P3 口,上拉電阻可以省略。 圖 419 動態(tài)掃描顯示示意圖 在數(shù)碼管輪流顯示的過程中,每個數(shù)碼管被點亮的時間為 1ms 左右,雖然各位數(shù)碼管并非同時點亮,但由于人眼的視覺暫留效應(yīng),主觀感覺各位數(shù)碼管同時在顯示。每個數(shù)碼管的 8 個筆段分別與一個 8 位 I/O 口相連, I/O 口只要有段碼輸出,相應(yīng)字符即顯示出來,并保持不變,直到 I/O 口輸出新的段碼,其示意圖如圖 417 所示。采用 12MHz 數(shù)碼管字形段碼 共陰型和共陽型的 LED 數(shù)碼管各筆劃段名和安排位置是相同的,分別用 a、 b、 c、 d、e、 f、 g 和 dp 表示,如圖 415( a)所示。 在輪流點亮掃描過程中 每位顯示器的點亮?xí)r間是極為短暫的 約 1ms 左右 但 由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應(yīng) 盡管實際上各位顯示器并非同時點 亮 但只要掃描的速度足夠快 給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù) 不會有閃爍感。 靜態(tài)顯示是顯示驅(qū)動電路具有輸出鎖存功能 單片機將要顯示的數(shù)據(jù)送出后不再 控制 LED 直到下次顯示時再傳送一次新的顯示數(shù)據(jù)。 ( 4)從各發(fā)光段電極連接方式分有共陽極和共陰極兩種。石晶振蕩和陶瓷振蕩均可采用。在 FLASHALE 1/6。 P2 口當用于外部程序存儲器或 16 位地址外 P2 口輸出地址的高八位。片內(nèi)振蕩器和時鐘電路 2 管腳說明 圖 VCC GND 圖 P0 P0 口為一個 8 位漏級開路雙向 I/O 8TTL 門電流。 4K 字節(jié)可編程閃爍存儲器 1000 寫 /擦循環(huán) 10年 0Hz24Hz 以往由繼電器接觸器控制,模擬電路、數(shù)字電路實現(xiàn)的大部分控制功能,現(xiàn)在都能夠使用單片機通過軟件的方式來實現(xiàn),這種以軟件取代硬件并能夠提高系統(tǒng)性能的微控制技術(shù),隨著單片機應(yīng)用的推廣普及,不斷發(fā)展,日益完善。單片機示意圖如圖 134 所示。 課設(shè)準備中根據(jù)具體的要求,查找資料,然后根據(jù)已經(jīng)學(xué)過的始終程序編寫定時鬧鐘的程序,依據(jù)程序利用 Proteus 軟件進行了仿真實驗,對出現(xiàn)的問題進行分析和反復(fù)修改原程序,最終得到正確并符合要求的結(jié)果。 5 2 單片機系統(tǒng)的硬件設(shè)計 系統(tǒng)構(gòu)成 芯片的介紹 關(guān)鍵詞 單片機 /設(shè)計 /開發(fā) /調(diào)試 基于單片機的音樂數(shù)字鐘的設(shè)計與仿真 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 基于單片機的音樂數(shù)字鐘的設(shè)計與仿真 3 目錄 摘要 9 數(shù)碼管顯示模塊分析 與傳統(tǒng)的機械式相比,用單片機設(shè)計的音樂 數(shù)字鐘 體積更小巧