}
Temp_T = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);//计算计数Sound_Temp_TH0 = Temp_T/256; Sound_Temp_TL0 = Temp_T%6; TH0 = Sound_Temp_TH0;
TL0 = Sound_Temp_TL0 + 12; //加12是对中断延时的补偿
//算出是几分音符
//算出音符类型(0普通1连音2顿音) //算出连音音符演奏的长度(多少个10ms)
器初值
SLen=LengthTab[Length]; XG=Length/10; FD=Length/100; LDiv=LDiv0/SLen; if (FD==1) else { }
if(LDiv2!=0) {
TR0=1;
for(i=LDiv1;i>0;i--) { }
while(TF1==0);
TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TF1=0;
LDiv1=LDiv;
LDiv2=LDiv-LDiv1;
if(SL==0) LDiv1=0;
LDiv=LDiv+LDiv/2;
if(XG==0) else
LDiv1=LDiv/2;
else
if(XG!=1)
//算出普通音符的演奏长度
if (SLen<=4)
LDiv1=LDiv-LDiv4;
LDiv1=LDiv*SOUND_SPACE;
//算出顿音的演奏长度
//算出不发音的长度
if (SL!=0)
//发规定长度的音
22
}
}
}
TR0=0; BeepIO=0; for(i=LDiv2;i>0;i--) { }
while(TF1==0);
TH1 = Sound_Temp_TH1; TL1 = Sound_Temp_TL1; TF1=0;
//音符间的间隔
Point+=2; Tone=Sound[Point]; Length=Sound[Point+1];
BeepIO = 0;
5、电路仿真调试
5.1 原理图的绘制
仿真平台为Proteus软件,Proteus软件是世界上著名的EDA工具(仿真软件),能完成原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件,是目前最好的仿真单片机及外围器件的工具。
PROTEUS电路设计是在PROTEUS ISIS环境中绘制的,该编辑环境具有良好的人机交互界面,功能强大极易上手。首先通过桌面进入主程序,绘制原来图的主要任务是从元件库中选取绘制电路所需要的元件。可以通过点击选择器顶端左侧的“P”或者通过命令打开,我们常用的是按钮;在查找到并放置完所有需要的器件后,我们需要接着连接元件,即在PROTEUS ISIS的编辑窗口布线。PROTEUS ISIS中没有布线模式,但用户可以在任意时刻放置连线和编辑连线。在完成绘制所需的电路图前,用户需要放置并连接断轴。在电路原理图中放置两种通用的端子,一种是接地端子一种是电源端子。当在PROTEUS ISIS编辑窗口放置元件时,每一元件都有唯一的元件标号及元件值与之对应。原件号是PROTEUS ISIS的实时注释功能自动标注的,这一功能可在菜单中设置选择是否开启。PROTEUS ISIS中也支持块操作,当用户需要对电路中的某一部分进行操作时,可以使用该功能。系统共支持块移动、块复制、块旋转、块删除等实用功
23
能,充分利用这些功能可以极大的提高我们绘图的效率。我们绘制完所有的元件后,最后进行统一标注,PROTEUS ISIS支持注释功能,可以把我们所绘制的原理图中的器件根据我们的需要添加上特殊的注释,以表示特定的含义。根据设计电路绘制完后的电路图如图6.1所示。
5.2仿真结果
图 10 仿真图
通过Protues仿真结果,这次课程设计的要求已全部满足。
24
参考文献
[1]阎石.数字电子技术基础(第四版)[M].高等教育出版社.1998.11 [2]张毅刚等.MCS-51单片机应用设计.哈尔滨工业电子出版社,1996 [3]何立民.单片机应用技术选编.北京航空航天大学出版社,2000 [4]张友德等.单片微型机原理应用与实验,复旦大学出版社,1996 [5]邬宽明.单片机外围器件实用手册.北京航空航天大学出版社,1998
25
附录
键盘扫描头文件: #ifndef _key_H_ #define _key_H_
#define uchar unsigned char uchar k;
void delay1(void) //延时程序 { }
void Getch ( ) { uchar X,Y,Z; }
LCD显示头文件 #ifndef _lcdshow_H_ #define _lcdshow_H_ #define uchar unsigned char #define uint unsigned int
26
uchar i,j; for(i=20;i>0;i--) for(j=248;j>0;j--);
P1=0xff;
P1=0xf3; //先对P0置数 行扫描 if(P1!=0xf3) //判断是否有键按下
{ }
delay1(); //延时,软件去干扰 if(P1!=0xf3) //确认按键按下X = P3; { }
X=P1; //保存行扫描时有键按下时状态 P1=0xfc; //列扫描
Y=P1; //保存列扫描时有键按下时状态 Z=X|Y; //取出键值
switch ( Z ) //判断键值(那一个键按下) { }
case 0xf9: k=0; break; //对键值赋值 case 0xf5: k=1; break; case 0xfa: k=2; break; case 0xf6: k=3; break;
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库基于单片机的电子音乐盒的设计 - 图文(6)在线全文阅读。
相关推荐: