数控方波发生器的设计.doc_第1页
数控方波发生器的设计.doc_第2页
数控方波发生器的设计.doc_第3页
数控方波发生器的设计.doc_第4页
数控方波发生器的设计.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

单片机应用实习报告数控方波发生器的设计 院系名称: 电气与信息工程学院 专业班级:学生姓名: 指导教师: 职 称: 黑 龙 江 工 程 学 院二一三年七月实习名称单片机应用实习实习时间2013年 6 月 24 日至 2013年 7 月 12日 共 3 周实习单位或实习地点实验楼507、730实习单位评语:(分散实习填)签字: 公章: 年 月 日指导教师评语: 成 绩指导教师签字:年 月 日实习任务书学生姓名刘善文院系电气与信息工程学院专业班级电子信息工程11-3班指导教师姓名刘海成邹海英职称讲师讲师是否外聘是 否是 否题目名称数控方波发生器的设计设计的内容、意义及技术指标要求1、 设计的意义数控方波发生器在各理工科实验中具有广泛的应用,同时在生活中的数字设备、家用电器、电子玩具等许多领域也有需求。方波信号是一种应用极为广泛的信号,它在科学研究、工程教育及生产实践中的使用非常普遍。它通常作为为标准信号,应用于电子电路的性能试验或参数测量。另外,在许多测试仪中也需要用标准的方波信号检测一些物理量。所以研究多谐振荡方波发生器具有非常重要的现实意义。2、 技术内容 核心技术为PWM技术,利用改变TOP值和OCR值来改变方波的频率和占空比,利用按键给输入,液晶显示来实现人机互动。3、 设计指标要求方波频率范围11KHz。发挥:占空比可调,频率可调。摘 要本次设计方案主要采用数字电子技术中的PWM技术,PWM是一种稳定、精确的方波发生技术,单片机通过按键给出TOP值和OCR值,通过单片机的ALE给外接的计数器74HC590方波频率,再通过改变TOP值和OCR值与计数器值经过比较器74HC85进行比较,把比较之后的值送给D触发器74HC74来实现频率的可调及占空比的可调,从而达到设计的要求。关键词:PWM;74HC590;TOP;比较值;74HC85第1章 总体设计方案1.1 总体设计方案 数控方波的设计其实就是PWM波发生器的设计。方案一:直接使用单片机的T2定时器自带的方波输出功能,根据公式,通过编程实现利用按键来改变RCAP2的值,从而改变方波的频率。方案二:利用PWM技术,由单片机内部根据相应程序实现的计算功能给出TOP值和OCR值来实现频率可调及占空比可调,计算依据公式、,本方案精确度较高,能达到实习要求。 方案一虽然能达到实习要求中对于频率的要求,且编程简单,但是却不能调节占空比,无法达到对于占空比的要求。方案二虽然比较复杂,但能完全达到实习要求,这里我们选取方案二。总方案框图如图1.1所示 图1.1总方案框图1.2 软硬件功能分析 1.硬件完成功能 硬件部分需要搭建一个PWM电路,主要元器件为计数器、比较器、锁存器,同时需要两个74HC595来扩充单片机的I/O口。计数器选取为74HC590,比较器选取四位比较器74HC85四位比较器,利用D触发器来实现最后的方波输出。按键实现TOP值和OCR值的输入,液晶实现显示频率功能。工作时由计数器给出固定的频率输出,同时单片机将TOP值和比较值的送给比较器,比较器器将结果送给D触发器,由D触发器实现最后的波形输出。 2软件完成功能赋予按键0到9的数值和TOP、OCR、CLEAR,液晶显示和初始化,当有按键输入时单片机内部经过相应的计算按顺序赋予74HC595相应的TOP值和OCR值来控制频率和占空比,输出想要的方波。3.软硬件共同完成功能及配合方法系统启动,软件实现液晶的初始化和按键的赋值,单片机从ALE口输出工作时钟给计数器,计数器开始工作,将工作数值赋予比较器,此时由按键输入TOP值和OCR值,通过编好程序计算得到需要的频率和占空比,将TOP值和比较值通过相应的程序按顺序给74HC595,74HC595通过硬件电路将得到的数值赋予比较器,比较器将数据处理之后将值送给D触发器,由D触发器输出最后的波形,同时液晶显示相应的数值。第2章 硬件电路设计2.1 单片机最小系统电路设计 本最小系统包含供电电路、复位电路、工作时钟电路、所有I/O口的上拉电阻。其中,供电电路电压为5V,采用直流电源,复位电路按键为SW-PB,工作时钟电路采用12M晶振,I/O口上拉电阻采用4.7K组排。如图2.1所示。 图2.1(a)单片机最小系统电路图图2.1(b)单片机最小系统实物图2.2 PWM电路设计 PWM该部分主要包含计数器模块、比较器模块、非门模块和触发器模块。中间的四块芯片即为比较器模块,因为没有8输入的比较器所以用4给4输入的比较器74HC85,计数器用的74HC590,最下方两块芯片为74HC595,用于扩展单片机的I/O口并将数据送入位于中间的比较器模块,右上角为非门模块。左上角为D触发器模块,D触发器用的74HC74。 具体连接方法参见图2.3(b)的电路原理图。图2.2(a)PWM方案框图 图2.2(b) PWM部分电路设计图2.2(c)PWM部分电路实物图2.3 人机接口电路设计 显示模块采用直接用单片机接口接外界液晶,用电位器调节液晶的亮度。因为考虑到系统简单,及程序的简单化,我们使用单片机接口驱动,灵活方便,减少了成本和硬件电路的复杂程度,易于修改和调试。如图2.3.1所示。 图2.3.1液晶电路图 由于需要的数值较多,按键需要的多,为了节省I/O口,因此采取反转法读取44的矩阵键盘,如图2.3.2矩阵键盘 图2.3.2按键电路图 图2.3.3液晶及按键部分实物图图2.3.4 1K频率调节占空比图2.35 1K频率调节占空比图2.3.6 1K频率调节占空比第3章 系统软件设计3.1 软件总体设计思路 软件主要需要实现按键读取,内部算法计算、液晶输出、74HC595的赋值程序。对于按键部分,由于需要的数值较多,因此采取反转法读取44的矩阵键盘,算法方面只要实现公式中的算法,能够计算出所需的TOP值和比较值即可,液晶输出参照1602液晶程序进行编程,74HC595的扩引脚功能只需一个相应的子程序即可。系统开始运行之后,当单片机内部程序检测到按键的中断子程序之后就会进行键值读取,通过按键给出TOP值和OCR值,再通过子程序赋值给74HC595,之后由硬件完成其余功能,液晶程序显示数据。3.2 主程序流程设计 编程语言为基于51单片机的C语言,主要采取条件语句和循环语句。图3.1主程序流程图3.3 按键程序设计 按键部分程序为反转法扫描程序。图3.2按键部分程序流程图3.4 液晶显示程序设计 液晶部分编程基于1602液晶程序。 图3.3液晶程序流程图3.5 中断服务子程序设计 中断子程序为读取按键改变方波频率和占空比输出的程序图3.4中断子程序流程图总结一结论 单片机通过按键给出TOP值和OCR值,单片机的ALE给外接的计数器74HC590方波频率,进行计数,再通过改变TOP值和OCR值来改变频率和占空比,将TOP值和OCR值与计数器值经过比较器74HC85进行比较,把比较之后的值送给D触发器74HC74输出方波。通过数控方波发生器的设计,我们了解了方波的发生原理,得到了预期的结果。二心得体会 在本次实习中,我和我的队友认识到了在学习中知识积累的不够,不够扎实,对数电和C语言编程的知识有许多的不足,在实习过程中,通过我和队友的团结合作,相互学习,相互帮助,在老师的指导下完成了课题的设计。在实习我们学习到了很多东西,在数电和C语言的学习有了很大的进步。只有理论知识学习的好,才能为实际工程中做下铺垫,在实践中我们才能遇到实际中遇到的许多问题,说明了我们在学习的过程中不仅要掌握好理论知识,更要有实践,只有实践和理论的结合才能更好的掌握我们所学习的知识。这个过程中,我们要有团队意识,只有一个团队团结合作,相互之间配合,才能更好的完成我们的任务,只有我们不断学习,不断的改善,不断的磨合,才能更好的配合,团队在我们实践和生活中是非常重要的。过这次的经历我们明白了,学习要有耐心,细心,不急躁,要把理论和实践相结合,而且遇到问题首先要自己尝试去解决,要学会利用网络,要具备一定的搜集资料的能力,并且要培养团队合作的能力,也让我们体会到了自己设计并制作的快乐,获益匪浅!参考文献1刘海成.单片机及应用系统设计原理与实践M.北京:北京航空航天大学出版社,2009:88-204. 2刘海成.单片机及应用原理教程M.北京:中国电力出版社,2012:69-137. 3秦进平.数字电子与EDA技术M.北京:科学出版社,2011:83-106. 4谭浩强、张基温.C语言程序设计教程M.北京:高等教育出版社,2006:60-105. 5刘鲲、孙春亮.单片机C语言入门M.北京:人民邮电出版社,2010:96-168. 6邱关源.电路M.北京:高等教育出版社,2011:82-156. 7康华光.电子技术基础M.北京:高等教育出版社,2006:101-211. 附 录附录1 总原理图图附1附录2 源程序#include reg52.h#define uchar unsigned char#define uint unsigned int/=按键定义(据实际情况定)=#define num0 13#define num1 8#define num2 9#define num3 10#define num4 4#define num5 5#define num6 6#define num7 0#define num8 1#define num9 2#define TOP 3#define OCR 7#define CLR 12/=long p,q;/用于运算的两个变量uchar d10; /显示缓存/=引脚定义=sbit LCM_RS=P35; /定义引脚sbit LCM_RW=P36; sbit LCM_E =P37; sbit MOSI1=P22;sbit CLK1=P20;sbit STCP1=P21;sbit MOSI2=P25;sbit CLK2=P23;sbit STCP2=P24;#define LCM_Data P0 #define Busy 0x80 /用于检测LCM状态字中的Busy标识 /-void Delay_ms(unsigned char t) /t ms延时unsigned int i; for(;t0;t-) for(i=0;i124;i+);/-unsigned char ReadDataLCM(void) /读数据unsigned char temp; LCM_RS = 1; LCM_RW = 1; LCM_E = 1; temp=LCM_Data; LCM_E = 0; return(temp); /-void ReadStatusLCM(void) /读状态LCM_Data = 0xFF; /输入口 LCM_RS = 0; LCM_RW = 1; LCM_E = 1; while (LCM_Data & Busy); /检测忙信号 LCM_E = 0; return ; /-void WriteDataLCM(unsigned char WDLCM) /写数据ReadStatusLCM(); /检测忙 LCM_Data = WDLCM; LCM_RS = 1; LCM_RW = 0; LCM_E = 1; /若晶振速度太高可以在这后加小的延时 LCM_E = 0; /-void WriteCommandLCM(unsigned char WCLCM, unsigned char BuysC) /写指令 /BuysC为0时忽略忙检测 if (BuysC) ReadStatusLCM(); /根据需要检测忙 LCM_Data = WCLCM; LCM_RS = 0; LCM_RW = 0; LCM_E = 1; LCM_E = 0; /-void LCMInit(void) /LCM初始化 WriteCommandLCM(0x38,0); /三次显示模式设置,不检测忙信号 Delay_ms (5); WriteCommandLCM(0x38,0); Delay_ms (1); WriteCommandLCM(0x38,1); /8位总线,两行显示,开始要求每次检测忙信号 WriteCommandLCM(0x08,1); /关闭显示 WriteCommandLCM(0x01,1); /显示清屏 WriteCommandLCM(0x06,1); /显示光标移动设置 WriteCommandLCM(0x0C,1); /显示开及光标设置 /-按指定位置显示一个字符-void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData) X &= 0xF; /限制X不能大于15,Y不能大于1 if (Y) X |= 0x40; /当要显示第二行时地址码+0x40; X |= 0x80; WriteCommandLCM(X, 1); /发送地址码 WriteDataLCM(DData); /-按指定位置显示一串字符-void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData, unsigned char num) unsigned char i; X &= 0xF; /限制X不能大于15,Y不能大于1 if (Y) X |= 0x40; /当要显示第二行时地址码+0x40; X |= 0x80; WriteCommandLCM(X, 1); /发送地址码 X&=0x0f; for(i=0;i 0xF)break; /每行最多16个字符,已经到最后一个字符 /-void display(uchar h) /h=0,display 0 row;else display 1 row uchar dis_sign=1; /运算结果高位0不显示标志 ? if(d9=0)DisplayOneChar(6,h, );/是0不显示 else dis_sign=0; DisplayOneChar(6,h,d9+0); if(d8=0) & dis_sign)DisplayOneChar(7,h, );/是0不显示 else dis_sign=0; DisplayOneChar(7,h,d8+0); if(d7=0) & dis_sign)DisplayOneChar(8,h, );/是0不显示 else dis_sign=0; DisplayOneChar(8,h,d7+0); if(d6=0) & dis_sign)DisplayOneChar(9,h, );/是0不显示 else dis_sign=0; DisplayOneChar(9,h,d6+0); if(d5=0) & dis_sign)DisplayOneChar(10,h, );/是0不显示 else dis_sign=0; DisplayOneChar(10,h,d5+0); if(d4=0) & dis_sign)DisplayOneChar(11,h, );/是0不显示 else dis_sign=0; DisplayOneChar(11,h,d4+0); if(d3=0) & dis_sign)DisplayOneChar(12,h, );/是0不显示 else dis_sign=0; DisplayOneChar(12,h,d3+0); if(d2=0) & dis_sign)DisplayOneChar(13,h, );/是0不显示 else dis_sign=0; DisplayOneChar(13,h,d2+0); if(d1=0) & dis_sign)DisplayOneChar(14,h, );/是0不显示else dis_sign=0; DisplayOneChar(14,h,d1+0);DisplayOneChar(15,h,d0+0);/-uchar Read_key(void) /读按键(反转法),无按键返回0xffuchar i,m,n,k; P1=0xf0; /行输入全为0,列给1作为输入口 n=P1&0xf0; /读列信息 if(n=0xf0)return 0xff; else Delay_ms(10); /延时去抖动 n=P1&0xf0; if(n=0xf0)return 0xff; else P1=0x0f; /列输入全为0, 行给1作为输入口m=P1&0x0f; /读行信息for(i=0;i4;i+) /按键编码,确定行号 if(m&(1i)=0) k=4*i; break; for(i=0;i4;i+) /按键编码,确定列号 if(n&(0x10i)=0)return k+i; /=int main(void) uchar i,k,n; uchar t; /t为每个运算输入刚输入第一个BCD位标志 uchar sign; /用作输入数据指示:0输入p,1输入q uchar s; /1次计算结束标志 long r; /结果 uchar negedge; Delay_ms(20); /启动等待,等LCM讲入工作状态 LCMInit(); /LCM初始化 while(1) sign=0; /开始输入第一个运算数据p t=0; /刚输入第一个BCD位标志 s=1; /1次计算正在进行 negedge=0; / WriteCommandLCM(0x01, 1);/初始高位全灭,最低位显示0 DisplayOneChar(15,1,0); for(i=0;i10;i+)di=0; while(s) /一次运算的循环体 k=Read_key(); /读取按键到变量k if(k!=0xff) /有按键按下 switch(k) case TOP: WriteCommandLCM(0x01, 1);/全灭 display(0);/p显示到上1行 if(negedge)DisplayOneChar(0,0,-); else DisplayOneChar(0,0, ); for(i=0;i10;i+)di=0; DisplayOneChar(0,0,T); DisplayOneChar(1,0,O); DisplayOneChar(2,0,P); CLK1=0; CLK1=1;break; case OCR: WriteCommandLCM(0x01, 1);/全灭 display(0);/p显示到上1行 if(negedge)DisplayOneChar(0,0,-); else DisplayOneChar(0,0, ); for(i=0;i=0)DisplayOneChar(0,0, );/清负号 else p=n; /输入第一个数的个位 else for(i=9;i0;i-)di=di-1; d0=

温馨提示

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

评论

0/150

提交评论