ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:134.10KB ,
资源ID:11089365      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11089365.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的波形发生器的设计.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的波形发生器的设计.docx

1、基于单片机的波形发生器的设计 智能仪器仪表设计与调试课程设计报告 学 院:_ 电气与信息工程学院_专业班级: 学生姓名: 学 号: 设计地点(单位)_ _ _ _设计题目:_ 基于单片机的波形发生器的设计_ 完成日期: 2013 年 7月 12日 指导教师评语: _ _ _ _ 成绩(五级记分制):_ _ 指导教师(签字):_ _ 重庆科技学院课程设计任务书设计题目:基于单片机的波形发生器设计学生姓名 课程名称智能仪器仪表设计与调试专业班级 地 点 起止时间 设计内容及要求1.要求设计的波形发生器完成以下功能:1)运用单片机控制产生多种波形,这些波形包括三角波、方波、锯齿波等。2)信号发生器所

2、产生的波形的频率、幅值均为连续可调。2. 扩展功能 1)在上位机将波形实时显示出来。 2)用红外线遥控器实现上述功能。3)其它功能 设计参数1.幅值05V可调2.频率01KHz可调进度要求 1. 布置仪表设计任务、方案设计 (1天) 2. 硬件设计、制作、调试 (1天) 3. 软件设计、调试 (5天) 4. 综合测试 (1天) 5. 成果展示、答辩 (1天) 6. 撰写报告 (1天) 详见进度安排表参考资料1.程德福.智能仪器.机械工业出版社. 2009.92.胡文金. 单片机系统实训教程.重庆:重庆大学出版社,20053.梁森. 自动检测技术及应用.北京:机械工业出版社,2012其它说明.本

3、表应在每次实施前一周由负责教师填写二份,院系审批后交院系办备案,一份由负责教师留用。.若填写内容较多可另纸附后。3.一题多名学生共用的,在设计内容、参数、要求等方面应有所区别。系主任: 指导教师:聂玲目录 一、 设计任务和性能指标 11.1 设计任务 11.2 性能指标 1二、设计方案 22.1硬件选择 22.2 系统总体设计 3三、系统硬件设计 43.1 单片机的最小系统 43.2 按键电路设计 43.3 LCD显示的设计 5四、系统软件设计 64.1 主程序设计 64.2 LCD显示子程序设计 74.3 D/A转换子程序设计 7五、调试及性能分析 85.1 调试步骤 85.2 性能分析 8

4、六、心得体会 9参考文献 10附录 1 系统硬件电路图 11附录 2 程序代码 12一、 设计任务和性能指标1.1 设计任务按要求设计波形发生器并完成相关功能:(1)运用单片机控制产生多种波形,这些波形包括三角波、方波、锯齿波等。(2)信号的发生器所产生波形的频率、幅值均为连续可调。扩展功能在上位机将波形实时显示出来,用红外线遥控器实现上述功能,其它功能。1.2 性能指标 (1)幅值05V可调 (2)频率01KHz可调 二、设计方案 采用AT89C51单片机和数模转换器PCF8591实现波形的产生。波形的产生方法是用AT89C51单片机执行波形程序,向PCF8591转换器的输入端输入相应的数据

5、,从而在DA转换电路输出端再通过运放电路转换得到相应的电压波形。在AT89C51的P1口接按键控制波形的各类和波形的频率,每种波形对应一种按键方式。此方案原理简单,同时适合操作,实现起来也相对较容易。产生的三种波形的频率可由按键控制,并通过按键改变来转换不同的波形,也能够在示波器上显示出所要求的波形。波形的频率步进也可以实现调节,具有线路简单、可行性高、符合设计要求等优点。加上LCD数码显示管,从而能够在LCD上显示出频率值、幅度值信息。输出的波形也较稳定,精度较高,通过滤波电路使得系统的抗干扰性增强,电路简单,性价比高。图2.1系统组成结构框图 2.1硬件选择 (1)单片机:STC12C5A

6、I6S2是高速/低功耗/超强抗干扰的新一代8051 单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810 专用复位电路,2路PWM,8路高速10位A/D转 换(250K/S),针对电机控制,强干扰场合。 (2)PCF8591:PCF8591是一个单片集成、单独供电、低功耗、8-bit CMOS数据获取器件。PCF8591具有4个模拟输入、1个模拟输出和1个串行I2C总线接口。PCF8591的3个地址引脚A0, A1和A2可用于硬件地址编程,允许在同个I2C总线上接入8个PCF8591器件,而无需额外的硬件。在PCF8591器件上输入输出的地址、控制和数据信号都是通过双

7、线双向I2C总线以串行的方式进行传输。 2.2 系统总体设计 本系统是用单片机来控制波形的转换以及幅值和频率的改变的,所以该系 统可以分为4个电路模块 ,下面是总体设计框图。 图2.2 系统总体设计框图三、系统硬件设计 3.1 单片机的最小系统 由于单片机最小系统只需要外围有时钟电路和复位电路即可,则单片机最小系统有着两个外围电路即可正常工作,下面是单片机的最小系统原理图。 图3.1 STC12C5AI6S2单片机最小系统 3.2 按键电路设计本实现采用4个按键来进行波形的转换、幅值的改变、频率的改变,P20键用来改变波P21、P22用来改变幅值的大小,P32用来改变频率的大小,下面是按键电路

8、图。图3.2按键电路图 3.3 LCD显示的设计 本硬件采用的是12864-12L的液晶显示屏,显示屏将波形的转化显示在显示屏上,下面是 液晶显示的电路。 图3.3 12864-12L液晶显示电路 四、系统软件设计 4.1 主程序设计 主程序内进行的是波形的切换及幅值、频率的改变,用示波器和LCD显示,将主要的写进即可,其他的就写在外面,下面是主程序流程图。 图4.1 主程序流程图4.2 LCD显示子程序设计液晶显示的程序在本程序中比较的简单,就是为了实时的显示出当前的波形是什么,用按键切换之后液晶显示也跟着变。液晶显示程序需首先初始化,再进行数据的传输,并进行字符的显示,所以写出相应的几个程

9、序即可进行LCD的显示。 图4.2 LCD显示流程图4.3 D/A转换子程序设计本程序采用PCD8591来作D/A转换器,需要将A1、A1、A2接地,单片机上的P1和P11接PCF8591上的SCL和SDA端口,AOUT接示波器,供显示D/A转换要满足I2C协议才能进行数据的传输。 void write_add(uchar date) start(); write_byte(0x90); respons(); write_byte(0x40); respons(); write_byte(date); respons(); stop(); 五、调试及性能分析 5.1 调试步骤硬件调试:检查线路

10、连接有无错误,SDA和SCL接单片机的P10和P11口,VCC接电源,CND接地,AOUT接示波器,在下载数据到单片机之后数据在传输的时候PCF8591上的一个蓝色的灯会不停的闪,说明有数据在传输,否则无数据传输。 软件调试:首先看I2C协议是否正确,否则不能传输数据,再看按键的逻辑关系是否正确,还有就是LCD的显示是否正确。 调节电源,使其输出5V电压,调整好示波器。给电路供电,观察示波器,记录各频段对应波形的情况,峰峰值。调试结果表明,该电路在要求频率范围内的大部分频率范围基本上不失真,除了在最高频率的最低频率有少许失真,其中,当频率接近10KHz时,方波高低电压跃变时出现毛刺,审过零比较

11、器的频率特性所致,另外,在最高频和最低频段,三角波出现少许弯斜,可选用频率特性更为宽的电容进行校正。 5.2 性能分析 经过一段时间运行后,可以对系统的性能进行测试。对于本波形发生器来说,用示波器可以测试其性能指标,按前面所述设计的波形发生器,能产生正弦波、三角波及方波信号,其幅值可以05V内变化,频率也可以调整。六、心得体会 在为期几周的时间里,终于顺利地完成了此次课程设计,并从中学习到了很多的知识和经验,对单片机以及C语言有了更深刻的了解。本次课程设计也发现了许多问题,此次单片机的设计硬件电路较为简单,而程序的设计在当中占据很重要的部分。这次课程设计是用STC12C5AI6S2单片机与PC

12、F8591D/A转换器来实现的波形产生与显示,所以要对这两个模块非常的熟悉。对于PCF8591需要深入的认识I2C协议的内容才能正确的传输数据。而对于单片机而需要对各个接口非常熟悉,才能保证数据的正常传输。此外还要熟练的使用示波器,对产生的波形进行调整,来得到更好的效果。它考验我们灵活的运用所学知识,培养了我们在遇到问题善于触屏的良好学习态度,使我认识到设计思路更节省了时间。灵活运用,以书本知识为基础灵活的扩展,学习前人的验,向高层次迈进。当然还是存在不足的地方,例如当频率过小的时候矩形波会有些失真,转换器转换可以加一个锁存器,放大电路设计上还有待进一步改进,使其具有更强的输出能力等。参考文献

13、1.胡文金. 单片机系统实训教程. 重庆:重庆大学出版社,20052.梁森. 自动检测技术及应用.北京:机械工业出版社,20123.程德福. 智能仪器. 机械工业出版社.2009.9 附录 1 系统硬件电路图 附录 2 程序代码#include#include#include#define uchar unsigned char#define uint unsigned intunsigned long Result,i;sbit SDA=P11; /PCF8591 接口sbit SCL=P10;unsigned int a=0; /波形采样点值unsigned int b=0;unsigne

14、d int c=0;unsigned int bx_chang=0;unsigned int n=40; /频率计算值unsigned char TH;unsigned char TL;unsigned int mode=0; /0为调节幅度 1为调节频率 unsigned int fd=6; /幅度初值 3.0Vunsigned int x; /采样点的间隔unsigned int u; /lcd刷屏变量/*sbit CS =P35; /LCD接口sbit SID=P36; sbit SCLK=P37;sbit PSB=P15;/*sbit p20=P20; /波形调节sbit p21=P2

15、1; /增加 频率、幅度sbit p22=P22; /减少 频率、幅度sbit p32=P32; /频率幅度选择 /sin波形数组uchar code tosin256= 0x80,0x83,0x86,0x89,0x8D,0x90,0x93,0x96,0x99,0x9C,0x9F,0xA2,0xA5,0xA8,0xAB,0xAE, 0xB1,0xB4,0xB7,0xBA,0xBC,0xBF,0xC2,0xC5,0xC7,0xCA,0xCC,0xCF,0xD1,0xD4,0xD6,0xD8, 0xDA,0xDD,0xDF,0xE1,0xE3,0xE5,0xE7,0xE9,0xEA,0xEC,0x

16、EE,0xEF,0xF1,0xF2,0xF4,0xF5, 0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xFD,0xFC,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6, 0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEA,0xE9,0xE7,0xE5,0xE3,0xE1,0xDF,0xDD,0xDA, 0xD8,0xD6,0xD4,0xD1,0xCF,0xC

17、C,0xCA,0xC7,0xC5,0xC2,0xBF,0xBC,0xBA,0xB7,0xB4,0xB1, 0xAE,0xAB,0xA8,0xA5,0xA2,0x9F,0x9C,0x99,0x96,0x93,0x90,0x8D,0x89,0x86,0x83,0x80, 0x80,0x7C,0x79,0x76,0x72,0x6F,0x6C,0x69,0x66,0x63,0x60,0x5D,0x5A,0x57,0x55,0x51, 0x4E,0x4C,0x48,0x45,0x43,0x40,0x3D,0x3A,0x38,0x35,0x33,0x30,0x2E,0x2B,0x29,0x27, 0x25

18、,0x22,0x20,0x1E,0x1C,0x1A,0x18,0x16,0x15,0x13,0x11,0x10,0x0E,0x0D,0x0B,0x0A, 0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, 0x0A,0x0B,0x0D,0x0E,0x10,0x11,0x13,0x15,0x16,0x18,0x1A,0x1C,0

19、x1E,0x20,0x22,0x25, 0x27,0x29,0x2B,0x2E,0x30,0x33,0x35,0x38,0x3A,0x3D,0x40,0x43,0x45,0x48,0x4C,0x4E, 0x51,0x55,0x57,0x5A,0x5D,0x60,0x63,0x66,0x69,0x6C,0x6F,0x72,0x76,0x79,0x7C,0x80 ; /*void delay(unsigned int z) /延迟函数 unsigned int x,y; for(x=z;x0;x-) for(y=125;y0;y-) ; /*LCD显示函数组void SendByte(unsign

20、ed char Dbyte) /LCD字节传送 unsigned char i; CS=1; for(i=0;i8;i+) SCLK = 0; if(Dbytei)&0x80) SID=1; else SID=0; SCLK = 1; SCLK = 0; CS=0;void Lcd_WriteCmd(unsigned char Cbyte ) /LCD的数据与指令传送 delay(10); SendByte(0xf8); SendByte(0xf0&Cbyte); SendByte(0xf0&(Cbyte4); void Lcd_WriteData(unsigned char Dbyte )

21、delay(10); SendByte(0xfa); SendByte(0xf0&Dbyte); SendByte(0xf0&(Dbyte0) Lcd_WriteData(*stri); stri+; /*void delayp() /延迟函数;void delay_1ms(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-) ; /*I2C协议 void start()/开始信号 SDA=1; delayp(); SCL=1; delayp(); SDA=0; delayp(); void stop() /停止信号 SDA=0; delayp()

22、; SCL=1; delayp(); SDA=1; delayp(); void respons()/应答 相当于一个智能的延时函数 uchar i; SCL=1; delayp(); while(SDA=1)&(i250) i+; SCL=0; delayp(); void init() /初始化 SDA=1; delayp(); SCL=1; delayp(); void write_byte(uchar date) /写一字节数据 uchar i,temp; temp=date; for(i=0;i8;i+) temp=temp1; /左移一位 移出的一位在CY中 SCL=0; /只有在

23、scl=0时sda能变化值 delayp(); SDA=CY; delayp(); SCL=1; delayp(); SCL=0; delayp(); SDA=1; delayp(); void write_add(uchar date) /D/A转换 start(); write_byte(0x90); respons(); write_byte(0x40); respons(); write_byte(date); respons(); stop(); /* int main()/*主函数 TMOD = 0x01; TH0 = (65536-99000/n)/256; /定时时间 TL0 = (65536-99000/n)%256; TH1 = (65536-5000)/256; TL1 = (65536-5000)%256; EA = 1; ET0 = 1; ET1 = 1; TR0 = 1; TR1 = 1; init(); while(1) PSB=0; InitLCD(); /*显示模块 for(u=0;u=0&n40) x=14; T

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1