1、执行部件电路:包括喇叭、状态指示灯。二、方案论证及选择1、电子琴部分由于市场上有许多的电子琴,从而想用单片机来实现电子琴的功能和音乐盒,通过7个按键代替市场上电子琴的按键,最后一个按键用来播放音乐。音乐是由不同的频率所产生的声音,通过控制时间来给喇叭送电平,从而使喇叭发出不同的响声,在通过查找歌曲的音符,做成一个音符表。通过按按键在由程序控制表的取的次序从而让喇叭发播放音乐。通过滑动变阻器控制喇叭声音大小。2、测温部分 测温部分是基于DS18B20温度传感器的探测,然后实时传输给数码显示器。并且设有温度报警系统。当外界温度高于50或者低于-20时状态指示灯亮,蜂鸣器发出警报。3、计数部分 RR
2、0加一,RR1减一,RR2加十,RR减十.第三部分 电路设计与参数选择一、 单片机最小系统电路设计和元件的选择第四部分 软件设计部分一、#include hardware.hintrins.h#define uchar unsigned char#define uint unsigned int uchar TempTH0,TempTL0,bian;/临时的Th0和Tl0 ,修改定时器中断时间用的变量uchar YinFu,JiePai,shu,shu1,TimeSec=10;static uchar temp;uchar code TabMusic7340;bit Flag,ZF;/0:电子
3、琴,1:音乐盒uchar code seg=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x01;void delay5(uchar);bit init_ds18b20(void);uchar readbyte(void);void writebyte(uchar);uchar retemp(void);void wenxx(void);void Delay05ms(uchar Delay05msData);void Delay10ms(uchar Delay10msData);void FunKeyScan(void);/电子琴程序vo
4、id FunPlay(void);/音乐盒播放程序void Display(uchar temp);void xianshi(void);void main(void)uchar i;TempTH0=0x00;TempTL0=0x00;TH0=TempTH0;TL0=TempTL0;TMOD=0x01;TR0=0;ET0=1;EX0=1; /0EX1=1; /1IT0=1;PX1=1;EA=1;ABC=0x00;temp=retemp();Delay05ms(1);while(1) while(shu=2) xianshi(); while(shu=1) TR0=0; if(i=0)temp=
5、retemp(); if(+i=200)i=0; Display(temp); wenxx(); while(shu=0) if(Flag=0)/电子琴 if(PKey!=0xff) /发现按键按下 FunKeyScan();/检测键盘并修改定时时间 TR0=1; /发出声音 else /如果发现按键弹起,则关闭声音 TR0=0; shu1=bian+1; Display(shu1); else /音乐盒功能 i=0; while(TabMusicbiani!=255)&(shu=0)/检查是否到了歌曲结束 YinFu=TabMusicbiani+;/取得音符, JiePai=TabMusic
6、biani+;/取得节拍 FunPlay(); /根据音符控制定时器的频率 Delay10ms(JiePai*30);/根据节拍控制频率的持续时间 if(Flag=0) break;/如果发现不是音乐盒状态,退出 Flag=0; /自动播放结束,则自动转为电子琴状态 void Display(uchar temp) if(temp9) wen = segtemp/10; / 输出十位 dian1=1; Delay05ms(2); /延时5ms dian1=0; wen=0xff; dian2=1; wen = segtemp%10; / 输出个位 dian2=0; /*-精确延时5us子程序-
7、*/ void delay5(uchar n) do _nop_(); n-; while(n);/*-初始化函数-*/bit init_ds18b20(void)/检测到DS18B20返回0 没检测到DS18B20则返回1 DQ=1; DQ=0; delay5(100);/延时500US delay5(12);/延时60US if(DQ=0)/检测到DS18B20则为0 while(DQ=0);/等待DS18B20释放总线 return 0;/检测到DS18B20则为0 else return 1;/没检测到DS18B20则返回1/*-读取一字节函数-*/uchar readbyte(voi
8、d) uchar i=0; uchar date=0; for (i=8;i0;i-) DQ =0; delay5(1); DQ =1; /15微秒内拉释放总线 date=1; if(DQ) date|=0x80; delay5(11); return(date);/*-写一字节函数-*/void writebyte(uchar dat) for(i=8; DQ =0; DQ =dat&0x01;/写1 在15微秒内拉低 delay5(12); /写0 拉低60微秒 DQ = 1; dat delay5(5);/*-读取温度函数-*/uchar retemp(void) uchar a,b;
9、uchar t; while(init_ds18b20(); writebyte(0xCC); writebyte(0x44); Delay05ms(16); writebyte(0xBE); a=readbyte(); b=readbyte(); a=4; b t=b|a; if(b&0x80) ZF=0;/表示负温度 t=t+1; /温度在寄存器中为12位,分辨率为0.0625 else ZF=1; return(t);void wenxx(void) if(!ZF) wendu=1;=20) wendu1=1; else wendu1=0; if(ZF) wendu=0;=50)void
10、 FunKeyScan(void)switch(PKey)case 0xfe:TempTH0=0xfc;TempTL0=0x8f;bian=0;break;case 0xfd:TempTL0=0xef;bian=1;case 0xfb:TempTH0=0xfd;TempTL0=0x45;bian=2;case 0xf7:TempTL0=0x6c;bian=3;case 0xef:TempTL0=0xb4;bian=4;case 0xdf:TempTL0=0xf4;bian=5;case 0xbf:TempTH0=0xfe;TempTL0=0x2d;bian=6;default :void Fu
11、nPlay(void)switch(YinFu)case 11:TempTH0=0xf9;TempTL0=0x1e;TR0=1;case 12:TempTL0=0xde;case 13:TempTH0=0xfa;TempTL0=0x8a;case 14:TempTL0=0xd8; /11-17 表示低音音符case 15:TempTH0=0xfb;TempTL0=0x68;case 16:TempTL0=0xe8;case 17:TempTL0=0x5a;case 21:case 22:case 23:case 24: /21-27 中音符case 25:case 26:case 27:cas
12、e 31:TempTL0=0x47;case 32:TempTL0=0x77;case 33:TempTL0=0xa2;case 34:TempTL0=0xb6;case 35:TempTL0=0xda; /31-37 表示高音音符case 36:TempTL0=0xfa;case 37:TempTH0=0xff;TempTL0=0x16;void FunTimer0() interrupt 1POut=!POut;void Delay05ms(uchar Delay05msData)uchar i,j;for(i=0;iDelay05msData;i+) for(j=0;j167;j+);v
13、oid Delay10ms(uchar Delay10msData)Delay10msData; Delay05ms(20);void FunEx0(void) interrupt 0Delay05ms(60);if(PEX0=0)Flag=!Flag;void FunEx1(void) interrupt 2Delay05ms(46);if(PEX1=0) shu+;if(shu=3)shu=0; / TabMusic 偶数位为音符/0 :休止符,200:表示歌曲结束。/奇数 0-10 表示音符的持续时间,比如,5表示500ms。uchar code TabMusic7340=16,1,17
14、,1,21,1,23,1,22,1,21,2,22,1,0,2,16,1,17,2,21,2,17,2,15,1,0,2,16,1,17,2,21,1,0,1,22,1,23,2,17,1,0,2,16,1,17,1,21,1,25,1,23,1,21,1,22,1,0,2,16,1,17,1,21,1,0,1,22,1,23,1,17,1,0,1,16,1,26,1,26,1,26,1,26,1,31,1,27,1,27,1,26,1,26,1,25,1,23,1,25,1,26,1,21,1,21,1,0,2,16,1,26,1,26,1,26,1,26,1,31,1,27,1,26,1,
15、26,1,25,1,25,1,26,1,27,1,23,1,23,1,23,1,0,2,16,1,26,1,25,1,26,1,26,1,31,1,27,1,27,1,26,1,26,1,25,1,23,1,25,1,25,1,27,1,26,1,0,2,26,1,27,1,31,1,31,1,31,1,31,1,31,1,27,1,26,1,26,1,26,1,25,1,23,1,25,1,25,1,27,1,26,1,0,4,255, /116,1,16,1,15,2,16,1,23,1,23,2,22,1,23,1,22,1,22,1,22,1,21,1,16,2,0,2,16,1,0,
16、2,16,1,16,1,15,1,16,1,21,2,22,1,23,1,25,1,26,2,23,1,0,1,23,1,25,1,23,1,26,1,27,1,26,1,26,1,25,1,23,2,23,1,21,1,22,1,0,1,23,1,23,1,25,1,26,2,22,1,22,1,23,1,22,1,23,2,22,1,15,1,22,1,21,2,16,1,0,1,16,1,0,1,16,1,16,1,15,2,16,1,23,1,23,2,22,1,23,1,22,1,22,1,22,1,16,2,16,1,0,1,16,1,16,1,15,1,16,1,21,2,22,
17、1,23,1,25,1,26,2,23,1,0,1,23,1,0,1,23,1,25,1,23,2,26,1,27,1,26,1,25,1,23,1,23,1,21,1,22,1,22,1,23,1,23,1,0,1,23,1,22,1,23,1,25,1,25,2,22,1,22,1,23,1,22,1,23,2,22,1,15,1,22,1,21,1,16,1,0,1,16,1,0,1,26,2,23,1,25,1,31,1,32,1,31,1,26,2,25,1,26,1,31,1,26,1,25,1,26,1,25,1,23,1,0,4,255, /226,1,25,1,25,1,23
18、,1,25,1,0,2,26,1,25,1,23,1,22,1,21,1,21,1,0,2,16,1,21,1,22,1,23,1,25,1,0,1,23,1,22,1,21,1,23,1,22,1,22,1,0,2,26,1,25,1,25,1,23,1,25,1,0,2,26,1,25,1,23,1,22,1,21,1,0,2,16,1,21,1,22,1,23,1,25,1,0,2,23,1,22,1,21,1,16,1,21,1,22,1,21,1,21,1,26,1,25,1,25,1,23,1,25,1,0,2,26,1,25,1,0,4,255, /323,1,25,1,23,1
19、,22,1,23,1,22,1,23,1,23,1,22,1,16,1,21,1,23,1,22,1,22,1,21,1,16,1,21,1,22,1,23,1,25,1,22,1,23,1,26,1,25,1,15,1,22,1,21,1,22,1,21,1,16,1,21,1,22,1,23,1,25,1,22,1,23,1,26,1,25,1,25,1,23,1,0,1,22,1,23,1,22,1,21,1,25,1,26,1,23,1,16,1,25,1,23,1,22,1,23,1,23,1,25,1,31,1,25,1,26,1,0,1,26,1,25,1,23,1,23,1,2
20、5,1,25,1,23,1,25,1,26,1,31,1,32,1,31,1,25,1,23,1,22,1,25,1,23,1,23,1,0,1,23,1,25,1,31,1,25,1,26,1,31,1,32,1,31,1,25,1,23,1,25,1,31,1,26,1,23,1,22,1,23,1,25,1,33,1,32,1,32,1,31,1,0,1,31,1,0,1,23,1,25,1,32,1,32,1,0,1,32,1,0,1,32,1,31,1,0,1,31,1,0,1,31,1,0,1,31,1,0,1,31,1,0,1,31,1,0,1,0,4,255, /415,1,2
21、1,2,23,1,25,2,21,1,17,2,23,1,25,1,0,1,25,1,26,1,27,1,31,2,26,1,26,1,25,1,25,1,0,1,0,1,23,1,22,1,21,2,21,1,21,1,23,1,22,1,21,2,21,1,21,1,23,1,22,1,21,2,21,1,21,1,22,1,23,1,22,1,21,1,16,1,22,1,23,1,22,1,0,1,0,1,15,1,22,2,16,1,17,1,21,1,22,1,21,1,0,1,0,1,23,1,25,1,23,2,22,1,21,1,25,1,17,1,0,1,0,1,16,1,
22、17,1,16,2,17,1,16,2,15,1,23,1,0,1,0,1,25,1,23,2,22,1,21,1,25,1,17,1,0,1,0,1,16,1,17,1,21,2,21,1,21,1,22,1,23,1,22,1,0,1,0,1,15,1,21,2,23,1,25,2,21,1,17,2,23,1,25,2,25,1,26,2,27,1,31,2,26,1,26,1,25,1,25,1,0,1,23,1,22,1,21,2,21,1,21,1,23,1,22,1,21,2,21,1,21,1,22,1,23,1,22,2,16,1,17,1,21,1,22,1,21,1,0,1,0,1,0,4,255, /521,1,21,1,16,1,15,1,16,1,21,1,21,1,22,1,23,1,0,1
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1