单片机 系统设计.docx
《单片机 系统设计.docx》由会员分享,可在线阅读,更多相关《单片机 系统设计.docx(12页珍藏版)》请在冰点文库上搜索。
单片机系统设计
单片机系统设计
——多功能电子时钟的设计
姓名:
******
学号:
201205310110
班级:
2012级***本科
指导教师:
郑桂兴
2013年7月4日
摘要
本系统采用INTEL的80C51BH单片机作为主控芯片,硬件使用了一个蜂鸣器、7个发光二极管作为指示灯和一个8键的键盘;软件采用了PZISP自动下载软件对程序进行下载,同时使用Keil3-Full编写程序,实现了一个七键的电子琴与指示灯相结合的简易设计,以方便人们从视觉和听觉上分辨音符。
关键词:
蜂鸣器、发光二极管、PZISP自动下载软件、Keil3-Full、
电子琴
目录
一、前言……………………………………………………………………………………………4
1.1开发背景简介……………………………………………………………………………4
1.2本文所做的主要工作…………………………………………………………………….4
二、硬件以及软件的设计与实现…………………………………………………………………5
2.1硬件设计思想……………………………………………………………..………….….5
2.2电路设计…………………………………………………………………………...…….5
2.3程序设计………………………………………………………………………..………..7
三、全部源代码……………………………………………………………………………………8
四、运行结果……………………………………………………………………………………10
五、总结…………………………………………………………………………………………10
六、参考文献……………………………………………………………………………………..11
一、前言
1.1开发背景简介
乐音听起来有的高,有的低,这就叫音高,音高是由发音物体振动频率的高低决定的,频率高声音就高,频率低,声音就低,不同音调的乐音是用C、D、E、F、G、A、B表示的,这7个字母就是乐音的音名,它们一般依次唱成DO、RE、MI、FA、SO、LA、SI,这是唱曲时乐音的发音,所以叫唱名。
而这七个音符对应着不同的频率,这样就可以利用不同频率的组合,加以与拍数对应的延时,构成音乐。
本设计主要是通过对电子琴主体部分的电路进行模仿设计,达到电子琴的固有的基本功能,故叫简易电子琴。
利用定时器可发出不同频率的脉冲经蜂鸣器驱动电路放大滤波后,就会发出不同的音调。
声音的频率范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的高电平或低电平,则在该口线上就能产生一定频率的矩形波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制高、低电平的持续时间,就能改变输出频率,从而改变音调。
1.2本文所做的主要工作
1、发生器件的选择:
发生器件比较多,例如喇叭、蜂鸣器、电铃等。
这次发声元件采用蜂鸣器。
2、按键部分:
因为只用来发DO、RE、MI、FA、SO、LA、SI这七个音,所以采用8键的键盘。
3、指示灯部分:
采用发光二极管,分别标号1~7,用来代表七个音符。
二、硬件以及软件的设计与实现
2.1硬件设计思想
使用Intel的80C51BH芯片的单片机进行仿真设计,利用PZISP自动下载软件把程序下载到单片机芯片中,P0口与按键连接,通过P0口对单片机输入按键状态,通过P2口控制七个LED灯的亮灭。
从而实现按键对指示灯和蜂鸣器的控制。
2.2电路设计
按键与LED灯的连接图:
蜂鸣器电路图:
外部接线图:
2.3程序设计
利用Uv3软件进行程序设计,建立项目与文件,并进行编译与连接和调试
流程图:
三、全部源代码
/************************************************************
//系统功能:
简易电子琴
//编写时间:
2013年7月4日
//编写人:
杜善玉
/************************************************************/
#include
#include
unsignedcharKEY;
//变量的定义和函数声明
intcodeYinfu[]={64578,64686,64778,64821,64898,64968,65029};
sbitbeep=P1^5;
sbitRELAY=P1^4;
sbitK1=P0^0;sbitK2=P0^1;sbitK3=P0^2;
sbitK4=P0^3;sbitK5=P0^4;sbitK6=P0^5;
sbitK7=P0^6;
voiddelay()//延时程序,输入一次i加1直至240
{
inti;
for(i=0;i<240;i++);
}
//中断程序,定时器赋值
voidplay()interrupt1
{
TH0=Yinfu[KEY]/256;
TL0=Yinfu[KEY]%256;
beep=~beep;
}
//定义各音符,并判断哪个键按下
unsignedcharscan()
{
unsignedcharres;
switch(P0)
{
case0xfd:
res=0;break;
case0xfb:
res=1;break;
case0xf7:
res=2;break;
case0xef:
res=3;break;
case0xdf:
res=4;break;
case0xbf:
res=5;break;
case0x7f:
res=6;break;
}
returnres;
}
//按键亮灯程序
voidmain()
{
TMOD=0x01;
IE=0x82;
while
(1)
{
P2=0xff;
if(K1==0)
P2=0xfe;
if(K2==0)
P2=0xfd;
if(!
K3)
P2=0xfb;
if(!
K4)
P2=0xf7;
if(!
K5)
P2=0xef;
if(!
K6)
P2=0xdf;
if(!
K7)
P2=0xbf;
if(P0!
=0xff)
{
delay();
if(P0!
=0xff)//判断键是否松开
{
KEY=scan();
TR0=1;
}
}
else
{
TR0=0;
beep=1;
}
delay();
}
}
四、运行结果
五、总结
简易电子琴的设计有众多的方法,此次选择了以单片机为基础的简易电子琴,促使自己巩固单片机以及C语言方面的知识。
以单片机为基础辅以外部设备设计的简易电子琴,它可以被制造成一个电子产品,应用方便,可以广泛的应用与我们的日常生活中。
基于单片机原理的电子琴大大简化了以前传统的音乐产生电路,使得元件得到减少,生产成本降低而且性能也得到了提高,并且耗能也降低。
伴随着科技水平的提高,电子产品朝着节能、使用寿命长,故障发生频率低、体积小、功能强大等方面迅速发展,而单片机的发展必然会促使其发展。
通过此次的设计,是我对单片机的发展及应用有了更加深入的了解。
六、参考文献
[1]MCS-51系列单片机系统及其应用(第二版),蔡美琴,高等教育出版社,2005
[2]C程序设计(第三版),谭浩强著,清华大学出版社,2007