单片机原理及应用课程设计_第1页
单片机原理及应用课程设计_第2页
单片机原理及应用课程设计_第3页
单片机原理及应用课程设计_第4页
单片机原理及应用课程设计_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机原理及应用课程设计基于单片机的十二键电子琴姓名: 王晓飞 学号: 201115132 专业: 电子信息工程 班级: 1106 目录1. 目的及意义12. 相关技术介绍13. 设计方案24. 软件设计45. 仿真调试96. 总结136.1设计总结6.2个人心得一、目的及意义熟练运用Proteus软件进行电路设计,制版及仿真。完成基于单片机进行电子产品的设计实现12键电子琴的设计,通过本次试验加深对单片机课程的认识。掌握AT89C51单片机定时/计数器,I/O的应用,熟练驱动数码管显示器及按键识别的方法。培养学生正确的设计思想,理论联系实际的工作作风,严肃认真、实事求是的科学态度和勇于探索的

2、创新精神。锻炼学生自学软件的能力及分析问题、解决问题的能力。通过课程设计,使学生在理论计算、结构设计、工程绘图、查阅设计资料、标准与规范的运用和计算机应用方面的能力得到训练和提高。巩固、深化和扩展学生的理论知识与初步的专业技能。为今后从事电子技术领域的工程设计打好基础基本要求。二、相关技术、AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存

3、储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。、共阴极数码静态显示器静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O口进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点占用较多的端口、独立式按键独立式键盘的特点是:一线一键,各键相互独立,每个按键各接一条口线,通过检测输入线的电平状态

4、,可以很容易的判断出哪个按键被按下图示如下:、软件工具程序编写及编译用软件完成,硬件电路设计布线采用软件进行。三、设计方案流程图及硬件原理图Proteus软件简介Proteus软件是由英国LabCenter Electronics公司开发的EDA工具软件,由ISIS和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,ARES是一款高级的布线编辑器,它集成了高级原理布线图、混合模式SPICE电路仿真、PCB设计以及自动布线来实现一个完整的电子设计。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的

5、科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。Proteus软件的模拟仿真直接兼容厂商的SPICE模型,采用了

6、扩充的SPICE3F5电路仿真模型,能够记录基于图表的频率特性、直流电的传输特性、参数的扫描、噪声的分析、傅里叶分析等,具有超过8000种的电路仿真模型。Proteus软件支持许多通用的微控制器,如PIC、AVR、HC11以及8051;包含强大的调试工具,可对寄存器、存储器实时监测;具有断点调试功能及单步调试功能;具有对显示器、按钮、键盘等外设进行交互可视化仿真的功能。此外,Proteus可对IAR C-SPY、KEIL等开发工具的源程序进行调试。此外,在Proteus中配置了各种虚拟仪器,如示波器、逻辑分析仪、频率计,便于测量和记录仿真的波形、数据。四、软件设计#include <AT

7、89X51.H> #define key_value_1 1 /定义12个音频#define key_value_2 2#define key_value_3 3#define key_value_4 4#define key_value_5 5#define key_value_6 6#define key_value_7 7#define key_value_8 8#define key_value_9 9#define key_value_10 10#define key_value_11 11#define key_value_12 12#define key_null 0/定义

8、按键接到哪个引脚sbit io_key_1=P10;sbit io_key_2=P11;sbit io_key_3=P12;sbit io_key_4=P13;sbit io_key_5=P14;sbit io_key_6=P15;sbit io_key_7=P16;sbit io_key_8=P17;sbit io_key_9=P30;sbit io_key_10=P31;sbit io_key_11=P32;sbit io_key_12=P33;/*初始化按键引脚函数*/void Keyinit(void)io_key_1=1;io_key_2=1;io_key_3=1;io_key_4=

9、1;io_key_5=1;io_key_6=1;io_key_7=1;io_key_8=1;io_key_9=1;io_key_10=1;io_key_11=1;io_key_12=1;/*=底层函数=*/ unsigned char Keyscan(void)/本函数用于检测是哪个键被按下,并返回相应的音频if(io_key_1=0)return key_value_1;if(io_key_2=0)return key_value_2;if(io_key_3=0)return key_value_3;if(io_key_4=0)return key_value_4;if(io_key_5=0

10、)return key_value_5;if(io_key_6=0)return key_value_6;if(io_key_7=0)return key_value_7;if(io_key_8=0)return key_value_8;if(io_key_9=0)return key_value_9;if(io_key_10=0)return key_value_10;if(io_key_11=0)return key_value_11;if(io_key_12=0)return key_value_12;return key_null; sbit SPEAKER = P37;/蜂鸣器控制位

11、#define KEY P1 unsigned char MUSIC; unsigned char STH0;unsigned char STL0;unsigned int code tab=64021,64103,64260,64400,/低音3开始 64524,64580,64684,64777, 64820,64898,64968,65030, 65058,65110,65157,65178; void delay(unsigned int z)unsigned int x,y; for(x=z;x>0;x-) for(y=2;y>0;y-);sbit P21=P21;sbi

12、t P20=P20;sbit P10=P10;sbit P11=P11;sbit P12=P12;sbit P13=P13;sbit P14=P14;sbit P15=P15;sbit P16=P16;sbit P17=P17;sbit P30=P30;sbit P31=P31;sbit P32=P32;sbit P33=P33;void main(void) unsigned char key;/显示音频字段TMOD=0x01; ET0=1; EA=1; KEY = 0xff;Keyinit();while(1)if(key=key_value_12)/3b P21=0;P0=0x4f;de

13、lay(1); P21=1; P20=0;P0=0x7c;delay(1); P20=1; if(key=key_value_11)/4b P21=0;P0=0x66;delay(1); P21=1; P20=0;P0=0x7c;delay(1); P20=1; if(key=key_value_10)/5b P21=0;P0=0x6d;delay(1); P21=1; P20=0;P0=0x7c;delay(1); P20=1; if(key=key_value_9)/6b P21=0;P0=0x7d;delay(1); P21=1; P20=0;P0=0x7c;delay(1); P20=

14、1;if(key=key_value_8)/7b P21=0;P0=0x07;delay(1); P21=1; P20=0;P0=0x7c;delay(1); P20=1; if(key=key_value_7)/1P21=0;P20=1;P0=0x06;delay(1); if(key=key_value_6)/2P21=0;P20=1;P0=0x5b;delay(1); if(key=key_value_5)/3P21=0;P20=1;P0=0x4f;delay(1); if(key=key_value_4)/4P21=0;P20=1;P0=0x66;delay(1); if(key=ke

15、y_value_3)/5P21=0;P20=1;P0=0x6d;delay(1); if(key=key_value_2)/6P21=0;P20=1;P0=0x7d;delay(1); if(key=key_value_1)/7P21=0;P20=1;P0=0x07;delay(1); key=Keyscan();if(key!=key_null)switch (key)/音频所在数列的位置case 1:/MUSIC = 11;break;/case 2:/MUSIC = 10;break;/case 3:/MUSIC = 9;break;/case 4:/MUSIC = 8;break;/c

16、ase 5:/MUSIC = 7;break;/case 6:/MUSIC = 6;break;/case 7:/MUSIC = 5;break;/case 8:/MUSIC = 4;break;/case 9:/MUSIC = 3;break;/case 10:/MUSIC = 2;break;/case 11:/MUSIC = 1;break;case 12:/MUSIC = 0;break; STH0=tabMUSIC/256; STL0=tabMUSIC%256; TR0=1;/启动计数器else SPEAKER = 1;TR0=0; void t0(void) interrupt 1

17、 using 0 TH0=STH0; TL0=STL0; SPEAKER=SPEAKER; 五、Proteus电路仿真由于Proteus具有强大的仿真功能,所以我们优先选用Proteus作为本电路图的仿真工作。在电路原理图中,我们已经将各元件安放参数调试完毕。下面就需要用示波器观察输出参考点波形。我们将第一个采样点选取在振荡电路的输出端,将第二个采样点选取在总电路的输出端。先将所有的开关打开,单击开始按钮,弹出示波器显示窗格,通过按下不同的按键改变R的值,从而改变频率进而发出不同的声音,但只能同时闭合一个开关。观察示波器输出的波形,进行仿真结果分析。1) 在蜂鸣器前面加示波器观察部分图像如下图

18、 2) Proteus软件仿真图 六、总结心得体会:通过这次课程的学习和实验操作,让我对大学期间所学的基础知识和专业知识又一次整体的把握和应用。本次试验将我们专业的很多独立的各知识点巧妙地结合在一起,电路分析,原件选取,程序设计,硬件设计等,加上新的工具软件,更是给试验仿真、调试、结果检测等带来很大的方便。实验过程中,老师少讲知识点尽量交给同学自己回忆扩展,试验也是由最基本的试验逐步增设条件,这种循序渐进的教学方法让我们在一次次突破跟调整中收获颇丰,真是知识信心双丰收啊!试验中收获的还有友情键电子琴设计包括了方面是软件设计和硬件设计;这也让我跟队友达成很高的默契,我们一起制定试验目标、分析产品的工作原理、将整体划分为多个部分,是问题简单化条理化。接下来就是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论