还剩15页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
单片机课程设计C语言在这上面扑了一周四川职业技术学院课程设计报告波形发生器课程单片机应用技术C语言系别电子电气工程系专业应用电子专业班级09电技2班姓名刘壹刘辉张大勇学号300621指导老师成友才刘宸完成时间2011-06-24四川职业技术学院课程设计任务书题目波形发生器所属系部电子电气工程系所属专业应用电子技术所属班级09电技2班指导教师成友才刘宸学生姓名刘壹刘辉张大勇学号300621
一、课程设计论文内容与要求包括设计或研究内容、主要指标与技术参数,并根据课题性质对学生提出具体要求设计要求设计一个波形发生器,可输出正弦波、锯齿波、方波;波形电压峰值5Vp-p;可用按键调整输出频率100-1000Hz步进100Hz
二、原始依据包括设计或论文的工作基础、研究条件、应用环境、工作目的等要求设计一个波形发生器并用proteus仿真能得到完整波形
三、主要参考文献
1.成友才、朱永金,《单片机应用技术C语言》,中国劳动社会保障出版社,2007;
2.王静霞,《单片机应用技术C语言版》,电子工业出版社,
20093.…指导教师审核意见签名年月日注任务书必须由指导教师和学生互相交流后,由指导老师下达课程设计论文给学生,最后同学生课程论文等其它材料一起存档四川职业技术学院课程设计论文综合评定表题目波形发生器所属班级09电技2班指导教师姓名成友才学生姓名刘壹刘辉张大勇职称讲师学号300621部门电子电气工程系指导教师评语指导教师年月日课程设计成绩总评成绩年月日目录
1.系统概述
2.元器件选择及功能介绍
2.1认识单片机
2.2AT89C
51.
2.3数模转换器DAC
08322.3运算放大器LM
3583.硬件设计
3.1硬件清单
3.2单片机最小系统
3.2D/A转换接口电路的设计
3.4波形选择的设计
4.软件设计
4.1软件设计思想
4.2主程序设计
4.3键盘扫描子程序
4.4各种波形的生成
5.制作与调试
5.1元器件安装的基本要求
5.2电路调试
5.3测试结果
6.设计的心得体会
7.参考文献
8.附件
8.1波形发生器仿真图
8.2波形发生器程序
1.系统概述本设计是波形发生器,它能输出正弦波、锯齿波、方波三种基本波形输出的每一种波形有十种可调频率方案如下利用AT89C51单片机,采用程序设计方法产生正弦波、锯齿波、方波三种波形,再通过D/A转换器DAC0832将数字信号转换成模拟信号,滤波放大,最终由示波器显示出来,通过键盘来控制三种波形的类型选择、频率变化,最终输出显示其各自的类型以及数值图1硬件方案框
2.元器件选择及功能介绍波形发生器所用到的元器件主要有AT89C
51、DAC
0832、共阳极数码管、运算放大器、电阻、电容、晶振等
2.1认识单片机单片机就是在一块硅片上集成了CPU、存储器、输入、输出接口、振荡电路、计数器等的一块集成电路单片机最小系统就是能让单片机工作起来的一个最基本的组成电路
2.2AT89C51AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机单片机的可擦除只读存储器可以反复擦除100次该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案
1.主要特性·与MCS-51兼容·4K字节可编程闪烁存储器·全静态工作0Hz-24MHz·三级程序存储器锁定·128*8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路
2.管脚说明图2AT89C51引脚图VCC供电电压GND接地P0口P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流当P1口的管脚第一次写1时,被定义为高阻输入P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高P1口P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故在FLASH编程和校验时,P1口作为第八位地址接收P2口P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写1时,其管脚被内部上拉电阻拉高,且作为输入并因此作为输入时,P2口的管脚被外部拉低,将输出电流这是由于内部上拉的缘故P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位在给出地址1时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容P2口在FLASH编程和校验时接收高八位地址信号和控制信号P3口P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流当P3口写入1后,它们被内部上拉为高电平,并用作输入作为输入,由于外部下拉为低电平,P3口将输出电流ILL这是由于上拉的缘故P3口也可作为AT89C51的一些特殊功能口,如下表所示P3口管脚备选功能P
3.0RXD串行输入口P
3.1TXD串行输出口P
3.2/INT0外部中断0P
3.3/INT1外部中断1P
3.4T0记时器0外部输入P
3.5T1记时器1外部输入P
3.6/WR外部数据存储器写选通P
3.7/RD外部数据存储器读选通P3口同时为闪烁编程和编程校验接收一些控制信号RST复位输入当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间/PSEN外部程序存储器的选通信号在由外部程序存储器取指期间,每个机器周期两次/PSEN有效但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现/EA/VPP当/EA保持低电平时,则在此期间外部程序存储器0000H-FFFFH,不管是否有内部程序存储器注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器在FLASH编程期间,此引脚也用于施加12V编程电源VPPXTAL1反向振荡放大器的输入及内部时钟工作电路的输入XTAL2来自反向振荡器的输出振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出该反向放大器可以配置为片内振荡器石晶振荡和陶瓷振荡均可采用如采用外部时钟源驱动器件,XTAL2应不接有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度
2.3数模转换器DAC0832DAC0832是美国数据公司的8位双缓冲D/A转换器,片内带有数据锁存器,可与通常的微处理器直接接口电路有极好的温度跟随性使用CMOS电流开关和控制逻辑来获得低功耗和低输出泄漏电流误差其主要技术指标如下电流建立时间1μsVREF输入端电压±25V分辨率8位功率耗能200mW最大电源电压VDD17VDAC0832的引脚信号如图3所示图3DAC0832的引脚信号D/A转换器的主要特性指标包括以下几方面1分辨率指最小输出电压对应的输入数字量只有最低有效位为1与最大输出电压对应的输入数字量所有有效位全为1之比如N位D/A转换器,其分辨率为1/2N-1在实际使用中,表示分辨率大小的方法也用输入数字量的位数来表示2线性度用非线性误差的大小表示D/A转换的线性度并且把理想的输入输出特性的偏差与满刻度输出之比的百分数定义为非线性误差3转换精度D/A转换器的转换精度与D/A转换器的集成芯片的结构和接口电路配置有关如果不考虑其他D/A转换误差时,D/A的转换精度就是分辨率的大小,因此要获得高精度的D/A转换结果,首先要保证选择有足够分辨率的D/A转换器同时D/A转换精度还与外接电路的配置有关,当外部电路器件或电源误差较大时,会造成较大的D/A转换误差,当这些误差超过一定程度时,D/A转换就产生错误4温度系数在满刻度输出的条件下,温度每升高1℃,输出变化的百分数定义为温度系数5电源抑制比对于高质量的D/A转换器,要求开关电路及运算放大器所用的电源电压发生变化时,对输出电压影响极小通常把满量程电压变化的百分数与电源电压变化的百分数之比称为电源抑制比6工作温度范围一般情况下,影响D/A转换精度的主要环境和工作条件因素是温度和电源电压变化由于工作温度会对运算放大器加权电阻网络等产生影响,所以只有在一定的工作范围内才能保证额定精度指标较好的D/A转换器的工作温度范-40℃~85℃之间,较差的D/A转换器的工作温度范围在0℃~70℃之间
2.4运算放大器LM358LM358内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,适合于电源电压很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关特性1内部频率补偿2直流电压增益高约100dB3单位增益频带宽约1MHz4电源电压范围宽单电源3-30V;双电源±
1.5-±15V5低功率电流,适合于电池供电6低输入偏流7低输入失调电压和失调电路8共模输入电压范围宽,包括接地9差模输入电压范围宽,等于电源电压范围10输出电压摆幅大0至Vcc-
1.5V
3.硬件设计
3.1硬件清单AT89C51一只DAC0832一只下载插座一个按键三个单片机电路板一块LM358运放一只20pF电容两只22uF电解电容一只12MHz晶振一只10K电阻一只二极管一只连接导线若干
3.2单片机最小系统维持单片机运行的最简单的配置系统是构成单片机的最小应用系统由于晶振、开关等器件无法集成到AT89C51芯片内部,由这些器件所构成的晶振电路和复位电路是单片机工作所必要的两个基本电路对于
8051、8751片内有RAM、EPROM的系统来讲,单片机与晶振电路及开关、电阻、电容等构成的复位电路组成单片机最小系统其电路图如4所示图4单片机最小系统电路图
3.2D/A转换接口电路的设计P2口作输出输出八位二进制数字信号,送给DAC0832数模转换器进行处理其电路图如5所示图5D/A转换接口电路电路图DAC0832数模转换器将P2口输出的数字信号变成连续变化的电流信号,这个电流信号经运算放大器变成电压信号输出DAC0832数模转换器的基准电压为5V,其电压变化范围为-5V~+5V图6DAC0832与运放连接示意图
3.4波形选择的设计P3口的引脚P
3.2作波形选择端口,P
3.3作频率的增加端口其电路图如7所示图7按键选择波形、频率电路图
4.软件设计
4.1软件设计思想在硬件设计的基础上进行软件编程用户通过按键选择需要输出何种波形在编程时输入数据点或描述波形的表达式,由软件实现对输入波形的量化处理,得到波形数据,经计算转换成任意波形发生器硬件所要求的格式,存入波形数据存储器中在控制电路的控制下,地址发生器以一定的速率、方式把波形数据存储区中的波形数据送给DA芯片,经转换产生量化的数字电压波形,再经过滤波等信号处理,由运放送出用户所需要幅值和频率的模拟信号
4.2主程序设计主程序的功能是负责各种波形的显示并读出各种波形的频率其程序流程图如图8所示图8主程序的流程图
4.3键盘扫描子程序AT89C51周期性扫描按键,最终输出端由扫描到的按键决定其流程图如图9所示图9按键扫描流程图
4.4各种波形的生成AT89C51先通过周期性查表得到波形的频率再通过DA0832传输不同的数据产生不同的电压最后通过电容滤波产生不同的波形波形数据产生子程序是定时器T0的中断程序当定时器计数溢出时,发生一次中断当发生中断时,单片机将按次序将波形数据表中波形数据一一送入DAC0832DAC082再根据输入的数据大小输出对应的电压其流程图如图10所示图10波形生成的流程图三种波形的仿真波形图如下图11正弦波图形图12锯齿波图形图13方波图行
5.制作与调试
5.1元器件安装的基本要求元器件安装应遵循先小后大、先低后高、先易后难、先一般元器件后特殊元器件的基本原则对于电容器等产式插装元器件,应保留适当的引线引线太短会造成元器件焊接时因过热而损坏;太长会降低元器件稳定性或者引起短路一般要求离电路板面2mm左右安装水平插装的元器件时,标记号应向上,且方向一致,以便观察插装集成电路插座时应注意1脚的位置,以便焊上后很难拿下来
5.2电路调试元器件都焊接完毕后,最好先用肉眼检视一切焊点,是否有假焊、虚焊或者焊料用的太多而造成与临界近的线短路,电源与地线是否短路,彻底查清楚后,才可以通电测试测试所用的仪器;5V稳压电源MF500型万用表、示波器在焊完所有元件进行上电调试后,发现电路存在问题硬件仿真环境Proteus
7.7本系统的硬件仿真主要分两部分波形显示AT89C51先通过周期性查表得到波形的频率再通过DA0832传输不同的数据产生不同的电压最后通过电容滤波产生不同的波形得到的频率由波形由示波器显示软件调试环境KeiluVision2编制的程序投入实际运行前,用手工或编译程序等方法进行测试,修正语法错误和逻辑错误的过程然后是程序流程的检查,避免出现死循环其中,包括跳转指令、选择、结束、中断指令的使用是否正确经过上面两个阶段的理论分析,将系统硬件连接时,避免出现连接错误最后是对系统进行功能检验,系统查询的数据是否正确,符合预期分析,进行检查,以及一些功能键的使用是否正常
5.3测试结果各项指标均达到要求测试数据如下
1、产生正弦波、锯齿波、方波基本实现,通过按键SB1转换波形;
2、三种波形的频率都可调100-1000Hz,步进100Hz,通过SB2实现;
6.设计的心得体会通过这次课程设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了本学期的学习成果,进一步加深了我对专业知识的了解和认识以及动手的能力虽然在这次设计中对于所学知识的运用和衔接还不够熟练,作品完成的还不是很出色但是我将在以后的工作和学习中继续努力、不断完善这个设计是对我们过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础
7.参考文献
[1]朱永金、成友才,单片机应用技术C语言,中国劳动社会保障出版社,2007;
[2]王静霞,《单片机应用技术C语言版》,电子工业出版社,2009
[3]何立兵,单片机高级教程,北京航空航天大学出版社,2001;
[4]陈明荧,8051单片机基础教程,科学出版社,2003年;
[5]陶砂,单片机-原理、操作、实验、应用,航空工业出版社,1996年;
[6]李广第,单片机基础,北京航空航天大学出版社,1999年
8.附件
8.1波形发生器仿真图图14电路仿真图
8.2波形发生器程序#includeAT89X
52.Hunsignedcharflagbx;bittime;unsignedcharcodesin_tab={1251281311341381411441471501531561591621651681711741771801821851881911931961982012032062082112132152172192212232252272292312322342352372382392412422432442452462462472482482492492502502502502502502502502492492482482472462462452442432422412392382372352342322312292272252232212192172152132112082062032011981961931911881851821801771741711681651621591561531501471441411381341311281251221191161121091061031009794918885827976737068656259575452494744423937353331292725232119181615131211987654432211000000001122344567891112131516181921232527293133353739424447495254575962656870737679828588919497100103106109112116119122};//正弦波一个周期按250个点取值unsignedcharkno;intf;voidDAC0832unsignedcharx{P2=x;}voiddelay10ms{unsignedcharij;fori=20;i0;i--forj=250;j0;j--;}voidmain{unsignedchari;TMOD=0X02;TH0=TL0=256-40;//晶振为12MHz时定时为40usET0=1;IT0=1;IT1=1;EX0=1;EX1=1;EA=1;flag=0;f=100;n=250;o=1;TR0=1;while1{i=o*k;switchflag//判断标志{case0//DAC08320;bx=0;break;case1//状态1输出正弦波bx=sin_tab[i];//DAC0832sin_tab[i];break;case2//状态2输出锯齿波bx=i;//DAC0832i;break;case3//状态3输出方波ifk=n/2{bx=250;//DAC0832250;}else{bx=0;//DAC08320;}break;default break;}}}voidtime0interrupt1//40us{ifk=nk=0;elsek++;P2=bx;//DAC0832D;//置时间标志}voidint0interrupt0{delay10ms;ifINT0==0{flag++;ifflag==4flag=0;}}voidint1interrupt2{delay10ms;ifINT1==0{f+=100;o++;ifo10o=1;iff1000f=100;n=25000/f;}}特别声明1资料来源于互联网,版权归属原作者2资料内容属于网络意见,与本账号立场无关3如有侵权,请告知,立即删除。