报告。课程名称: 单片机课程设计报告。
课设题目: 基于单片机的**盒设计。
专业班级: 电子科学与技术0902班。
姓名: 徐万利学号: 090403038
课设时间: 2024年3月批阅时间。
指导教师: 朱建光成绩。
目录。摘要。
时间安排。第一部分:设计要求3
第二部分:方案设计3
第三部分:硬件介绍及原理图4
第四部分:程序流程图12
第五部分:系统调试12
第六部分:总结13
参考文献14
附录:程序15
摘要。本设计是一个基于stc12c5410ad单片机的**盒,依据单片机技术原理,通过硬件电路制作以及软件编译,设计制作出一个多功能**盒。该**盒主要由按键电路、复位电路、数码管显示电路以及蜂鸣器组成。
本设计利用keil编程软件对**盒源程序进行编程并调试。
时间安排:第一周: 周一至周三确定设计方案。
周四至周五画程序流程图。
第二周:周一至周二编写程序。
周三****调试程序。
周四撰写课程设计报告。
周五答辩。一、 课程设计要求。
利用i/o口产生一定频率的方波,驱动蜂鸣器,根据按键发出不同的音调,并能**一首歌。
二、 设计方案。
要想发出声音,只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的i/o反相,然后重复计时此半周期时间再对i/o反相,就可在i/o脚上得到此频率的脉冲。 具体做法如下所示 。
例如:高音(do)的音频=1109hz,周期t=1/1109s=901μs
定时器/计数器0的定时时间为:t/2=901/2μs =450μs 定时器450μs的计数值=定时时间/机器周期=450μs /0.54μs =833(时钟频率=22.
1184mhz) 装入计数器初值为65536-833=64703, 将64703装入t寄存器中,启动定时/计数器工作后,每计数833次时将产生溢出中断,进入中断服务时,每次对p2.6引脚的输出值进行取反,就可得到高音do(1109hz)的音符音频。不同的初值可以产生不同的频率。
把do re mi fa so la si分别编码为1—7,把计算出的对应音调初值储存在一个数据类型为unsigned int的数组中。
歌曲**的设计。先将歌曲的简谱进行编码,储存在一个数据类型为unsigned char 的数组中。程序从数组中取出一个数,查找到对应的音调初值赋给定时器,使之定时操作蜂鸣器,得出相应的音调。
三、 硬件介绍及原理图。
硬件原理框图:
1、stc12c5410ad
其中,其工作电压为3.5v到5.5v。ram是节,pwm是4路,程序空间大小是10k字节,有a/d转换功能,工作频率可得35m赫兹,工作温度范围-40 --85摄氏度。
其管脚说明如下所示:
2、ch451
ch451是一个整合了数码管显示驱动和键盘扫描控制以及μp监控的多功能外围芯片。ch451内置rc振荡电路,可以动态驱动8位数码管或者64位led,具有bcd译码、闪烁、移位等功能;同时还可以进行64键的键盘扫描;ch451通过可以级联的串行接口与单片机等交换数据;并且提供上电复位和看门狗等监控功能。
其管脚说明如下:
ch451的操作命令均为12位,操作命令如下:
3、按键连接方式如下:
按键**如下:
4、 数码管显示电路连接如下:
5、内部晶振电路连接如下:机器周期=12/22.1184μs
6、 扬声器链接电路如下:
四、 程序流程图。
五、 程序调试。
keil软件。我们写的汇编语言源程序要变为cpu可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编。
目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于mcs-51单片机的汇编软件有早期的a51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,keil软件是目前最流行开发mcs-51系列单片机的软件,这从近年来各**机厂商纷纷宣布全面支持keil即可看出。keil提供了包括c编译器、宏汇编、连接器、库管理和一个功能强大的**调试器等在内的完整开发方案,通过一个集成开发环境(uvision)将这些部份组合在一起。
运行keil软件需要pentium或以上的cpu,16mb或更多ram、20m以上空闲的硬盘空间、win98、nt、win2000、winxp等操作系统。
六、 总结。
将程序导入芯片,调试成功后,可任意弹奏自己想要的旋律。本课题通过制作电子琴,将几个模块很好的融合起来,对使用单片机设计简易电子琴进行了分析,并介绍了基于单片机电子琴统硬件组成。利用单片机产生不同频率来获得我们要求的音阶,最终可随意弹奏想要表达的**。
说明一首**是许多不同的音阶组成的,而每个音阶对应着不同的频率,这样我们就可以利用不同的频率的组合,即可构成我们所想要的**了,于是我们可以利用单片机的定时/计数器来产生这样方波频率信号,因此,我们只要把一首歌曲的音阶对应频率关系弄正确即可,然后我们利用功放电路来将**声音放大,同时通过显示模块来确知自己所弹的音符。
通过这次课程设计,我感觉收获了很多: 第一,通过实践,加深对单片机系列知识及其系统的认识。这个设计题目并不是新的,但从中能体现到一个系统开发设计的过程,足于让我们受益。
第二,通过设计学习到了很多软件的使用。本次设计,软件部分用到了protues进行硬件设计,用keil进行程系编译。
第三,提高了自己的动手能力。动手在一定程度上反映了一个人的能力,作为当代大学生,社会要求的我们不是只能说而不能做的人才。
参考文献。1]谭浩强著、c程序设计教程、北京:清华大学出版社、2007.7
2]李群芳,张士军,黄建编著、单片微型计算机、北京:电子工业出版社、2008.5
附录:程序。
#include<>
#define uchar unsigned char
#define uint unsigned int
sbit dout=p2^2;
sbit load=p2^3;
sbit din=p3^3;
sbit dclk=p3^4;
unsigned char code table=
unsigned int code music_freq=
65536,64703,64749,64835,64874,64948,65011,65066};/do,re,mi,fa,so,la,si高音,对应频率的定时器初值。
乐谱。unsigned char code tabmusic=
1,1,5,5,6,6,5,4,4,3,3,2,2,1,5,5,4,4,3,3,2,5,5,4,4,3,3,2,4,4,3,3,2,2,1};/一闪一闪亮晶晶。
sbit speak=p2^6; /音频输出端口。
unsigned char m=0,tt=0,tl=0,m0;
uchar flag=1; /电子琴与**盒切换标志位。
延时函数。void delay(uint a)
while(a--)
void timer0init()
tmod=0x11;
th1=music_freq[tabmusic[tl]]/256;
tl1=music_freq[tabmusic[tl]]%256;
tl0=(65536-50000)%256;
th0=(65536-50000)/256;
ea=1;et0=1;tr0=0;et1=1;tr1=0;
函数名称:外部中断0初始化说明:下降沿触发。
unsigned char ch451_read()
uchar i,value=0;
uchar temp=0x07;
if(dout==0)
{load=0;
for(i=0;i<4;i++)
din=temp&0x01;
dclk=0;
temp>>=1;
dclk=1;
load=1;
for(i=0;i<7;i++)
if(dout)value|=0x01;
value<<=1;
dclk=0;
dclk=1;
switch(value>>1)
case 0x40 : return 1;break;
case 0x43 : return 2;break;
case 0x41 : return 3;break;
case 0x42 : return 4;break;
case 0x48 : return 5;break;
case 0x4b : return 6;break;
case 0x49 : return 7;break;
单片机课程设计报告
单片机系统课程设计报告。专业 电气技术。学生姓名 朱海李威张杰。学号。指导教师 陈高燕。完成日期 2014 年 7 月 5 日。目录。1 设计任务和性能指标 1 1.1设计任务 1 2 设计方案 1 2.1方案论证 2 2.2总体设计框图 2 3 系统硬件设计 4 3.1红外线解码电路设计 4 3....
单片机课程设计报告
韶关学院。课程设计说明书 设计题目 基于单片机控制的智能交通灯设计。课程名称 微机原理与应用实训。学生姓名 学号。院系 物理与机电工程学院汽车系。专业班级 12机械制造及其自动化 5班。指导教师姓名及职称 谢杰讲师。陈锦儒助理实验师。起止时间 2015 年 3 月 2015 年 5 月。课程设计评分...
单片机课程设计报告
南京工程学院。课程设计说明书 题目实时钟芯片pcf8563的应用 课程名称单片机原理及应用a 院 系 部 中心 通信工程学院。专业电子信息工程 传感网 班级。学生姓名。学号。设计地点信息楼 c 210 指导教师。设计起止时间 2013年12月23日至 2013年12月27日。一 摘要1 二 课程设计...