单片机音乐倒数计时器c语言,音乐倒数计时器单片机课程设计报告
《音樂倒數計時器單片機課程設計報告》由會員分享,可在線閱讀,更多相關《音樂倒數計時器單片機課程設計報告(13頁珍藏版)》請在人人文庫網上搜索。
1、音樂倒是計時器一、設計要求利用STC89C51單片機結合字符型LCD顯示器設計一個簡易的倒數計數器,可用來煮方便面、煮開水或小睡片刻等。做一小段時間倒計數,當倒計數為0時,則發出一段音樂聲響,通知倒計數終了,該做應當做的事。同時輸出控制一個繼電器吸合,繼電器驅動一個3W的大功率LED燈,亮度可以由單片機控制從50%100%連續可調。定時鬧鐘的基本功能如下。n 字符型LCD(162)顯示器。n 顯示格式為“TIME 分分:秒秒”。n 用4個按鍵操作來設置當前想要倒計數的時間。一旦按下鍵則開始倒計數,當計數為0時,發出一陣音樂聲。1、程序執行后工作指示燈LED閃動,表示程序開始執行,按下操作鍵K1。
2、K4動作如下。K1可調整倒計數的時間160分鐘。K2設置倒計數的時間為5分鐘,顯示“0500”。K3設置倒計數的時間為10分鐘,顯示“1000”。K4設置倒計數的時間為20分鐘,顯示“2000”。2、復位后LCD的畫面應能顯示倒計時的分鐘和秒數,此時按K1鍵則在LCD上顯示出設置畫面。此時,若:a. 按操作鍵K2增加倒計數的時間1分鐘。b. 按操作鍵K3減少倒計數的時間1分鐘。c. 按操作鍵K4設置完成。二、系統硬件說明2.1:音樂倒是計時器要實現一種由單片機控制的帶LCD顯示的倒數計時器,單片機工作于12MHZ時鐘頻率,使用其定時/計數器T0,改變計數值TH0和TL0可以產生不同頻率的脈沖信。
3、號。該設計具有5個功能按鍵,用戶可以通過這些按鍵設置定時時間和選擇控制定時,倒計數為零時,可通過揚聲器將音樂播放出來。系統結構圖如下圖所示。振蕩電路復位電路蜂鳴器輸出電路89C52芯片LCD顯示電路按鍵控制電路2.2 AT89C52AT89C52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內含2個外中斷口,3個16位可編程定時計數器,2個全雙工串行通信口,2個讀寫口線,AT89C52可以按照常規方法進行編程,但不可以在線編程(S系列的才支持在線編程)。其將通用的微處理器和Flash存儲器結合在一起,特別是可反復擦寫的Flash存儲器可有效地降低開發成本。主要特性:兼容MCS51指。
4、令系統 8k可反復擦寫(1000次)Flash ROM 32個雙向I/O口 256x8bit內部RAM 3個16位可編程定時/計數器中斷 時鐘頻率0-24MHz 2個串行中斷 可編程UART串行通道 2個外部中斷源 共8個中斷源 2個讀寫中斷口線 3級加密位 低功耗空閑和掉電模式 2.3電路原理圖如下:2.4電路仿真圖如下:三、系統軟件設計音樂倒數計時器軟件設計關鍵是實現音樂的播放。利用定時計數器,通過載入不同的計數初值,產生頻率不同的方波,輸入到蜂鳴器(SOUNER)中,使其發出頻率不同的聲音。本設計中單片機晶振為11.0592MHz,通過計算各音階頻率,可得1、2、3、4、5、6、7共7個。
5、音應賦給定時器的初值為64580、64684、64777、64820、64898、64968、65030。通過K1K5開關進行控制時間設置來完成其基本功能,當倒計時為零時,通過通過蜂鳴器放出一段音樂。3.1系統基本流程圖如下:3.2 部分程序如下:#include#include#define time 100#define uint unsigned int#define uchar unsigned char uint flag,flag0,flag1,flag2,flag3,flag4,flag5,minute,second=60;int t=0,flag6=0;uchar num,j,。
6、i,k=0,time_H,time_L,times,m,n,p;uchar code table=TIME 00:00;uchar code FREQH=0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,/低音0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC,/1,2,3,4,5,6,7,!0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,/高音0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF;/超高音uchar code FREQL= 0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB。
7、6, /低音 0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, /1,2,3,4,5,6,7,i 0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, /高音 0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16; /超高音 uchar code MUSIC=3,2,2,3,2,2,3,2,4,3,2,2,3,2,2,3,2,4,3,2,2,5,2,2,1,2,3,2,2,1,3,2,4,4,2,2,4,2,2,4,2,3,4,2,2,4,2,2,3,2,2,3,2,2,3,2,1,3,2,1,3,2,。
8、2,2,2,2,2,2,2,1,2,2,2,2,2,5,2,3,5,1,2,5,1,2,3,2,2,2,2,2,1,2,2,5,1,3,5,1,1,5,1,1,5,1,2,3,2,2,2,2,2,1,2,2,6,1,3,6,1,2,6,1,2,4,2,2,3,2,2,2,2,2,6,1,3,6,1,2,0,0,0 ;sbit key1=P33;sbit key2=P34;sbit key3=P35;sbit key4=P36;sbit key5=P37;sbit P1_0=P10;sbit RS=P25;sbit RW=P26;sbit E=P27;sbit led_red=P13;void 。
9、write_time(uint addr,uint date);void delay(uint z) /延時函數/uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void delay1(unsigned char d) /us延時 while(-d);void delay2(unsigned char d) /延時1mSwhile(d-) delay1(245);delay1(245);void delay3(uchar d) /延時125ms,4/4拍for(m=0;m0)minute=minute-1;write_time(7,minute); if(key。
10、4=0|key5=0)delay(150);if(key4=0|key5=0)flag1=0;flag=1;TR0=1;void KEY2() /按鍵2/minute=5;write_time(7,minute);while(flag2)if(key5=0)delay(time);if(key5=0)flag2=0;flag=1;TR0=1;void KEY3() /按鍵3minute=10;write_time(7,minute);while(flag3)if(key5=0)delay(time);if(key5=0)flag3=0;flag=1;TR0=1;void KEY4() /按鍵4。
11、minute=20;write_time(7,minute);while(flag4)if(key5=0) delay(150);if(key5=0) flag4=0;flag=1;TR0=1;void write_time(uint addr,uint date) /lcd1602初始化uint ge,shi;ge=date%10;shi=date/10;write_com(0x80+addr);write_date(0x30+shi);write_date(0x30+ge);if(addr=7&date=0)j=1;if(j=1&addr=10&date=0)flag0=1;TR0=0;T。
12、R1=1;flag5=1; /flag5=1void init()P3=0xff;RW=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x80);TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=0xfc;TL1=0x44;ET1=1;ET0=1;TR0=1;EA=1;flag0=1;for(num=0;num0)minute=minute-1;write_time(7,minute);if(second=0)k=1;second=59;int main(。
13、)init();while(1)while(flag0)start();counter();while(flag5)TMOD=0x10; /置定時器1工作方式1EA=1; /打開全局中斷ET1=1; /打開定時1中斷while(1i=0; while(i140) /音樂數組長度 ,循環播放 n=MUSICi+7*MUSICi+1-1; / 去音符振蕩頻率所需數據time_H=FREQHn;time_L=FREQLn;times=MUSICi+2; /節拍時長i=i+3;Song(); return 0;void inter0() interrupt 1 /中斷T0TH0=(65536-50000)/256;TL0=(65536-50000)%256 ;t+;if(t=20)flag6=1;void inter1() interrupt 3 /中斷T1TR1=0; P1_0=!P1_0;TH1=time_H;TL1=time_L;TR1=1。
總結
以上是生活随笔為你收集整理的单片机音乐倒数计时器c语言,音乐倒数计时器单片机课程设计报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 清华北大计算所自动化所计算机夏令营详细攻
- 下一篇: css-边框(border)