单片机课程设计pwm波信号发生器的研制_第1页
单片机课程设计pwm波信号发生器的研制_第2页
单片机课程设计pwm波信号发生器的研制_第3页
单片机课程设计pwm波信号发生器的研制_第4页
单片机课程设计pwm波信号发生器的研制_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

1、前言脉冲宽度调制是现代控制技术常用的一种控制信息输出,可以有效地利用数字技术控制模拟信号的技术。pwm(pulse width modulation)又称脉冲宽度调制,属于脉冲调制的一种,即脉冲幅度调制(pam)、脉冲相位调制(ppm)、脉冲宽度调制(pwm)和脉冲编码调制(pcm)。它们本来是应用于电子信息系统和通信领域的一种信号变换技术,但从六十年代中期以来后,随着电力电子技术被引入到电力变换领域,pwm技术广泛运用于各种工业电力传动领域乃至家电产品中。目前,随着微机技术日益广泛深入工业控制领域,单片机控制的pwm技术迅速发展,其突出特点是可以比较容易地选择最佳的脉冲调制频段,更重要的,由

2、于与单片机的结合,整个系统可以集成为具有更完备的保护功能、故障诊断功能和显示功能的高可靠的微型化的系统。因此,被竞相开发,前景广阔。在智能化产品开发中, 许多常用的单片机没有提供脉宽调制(pwm ) 电压信号输出功能, 而在某些特定的场合需要得到pwm信号。 pwm控制技术以其控制简单、灵活和动态响应好的优点而成为电力电子技术最广泛应用的控制方式,也是人们研究的热点。pwm控制技术一直是变频技术的核心技术之一,由于pwm可以同时实现变频变压反抑制谐波的特点,在交流传动及至其它能量变换系统中得到广泛应用。目前实现方法为采用全数字化方案,完成优化的实时在线的pwm信号输出。本文主要介绍了pwm信号

3、发生器的概念、作用及定义,分析了系统的工作原理和软硬件的设计。主要是以at89c51单片机为核心控制单元,通过对外围电路芯片的设计实现pwm输出波形的频率、电压幅值、占空比的连续调节,达到产生pwm信号目的。第一章 系统组成与工作原理1.1 系统设计内容与要求一、设计内容:pwm信号发生器的研制二、设计要求:(1) 采用定时/计数器8253(2) pwm信号的工作频率为500hz(1000hz)(3) 占空比可变且显示占空比1.2 系统组成如图1.1所示为系统的设计结构框图。此系统由89c51单片机核心控制单元、hd7279控制的显示与键盘扫描单元以及8253计数单元组成,其中还用到了74ls

4、138译码器作为单片机的片选输出来作为8253计数器的口地址控制单元,在完成89c51与8253连接的电路中还用到了74ls373地址锁存器和一些逻辑门电路组成。显示器单片机定时/计数器整形pwm图1.1 设计结构框图1.3 工作原理pwm信号发生器是通过89c51单片机对显示器模块和定时/计数器模块的控制,采用软件编程的方法,通过改变给8253计数器的写入值产生一系列幅值相等而宽度不等的脉冲,再通过一整形电路,产生规则的pwm脉冲波形,而改变8253的计数器初值是通过键盘操作实现的,同时数码管显示相应的占空比。第二章 系统硬件设计2.1 方案比较与确定方案一:直接采用51单片机to/ti定时

5、,通过软件编程产生pwm脉冲。以89c51单片机为核心控制单元,采用计数法加软件延时法,以及与按键相配合。当有按键按下后,通过键盘扫描将所按键值作为pwm信号的的占空比输入,经软件程序处理后实现pwm信号的占空比可变,并在数码管上显示相应的占空比。方案二:选用可编程芯片8253的计数器0作为pwm信号发生器,8253的计数器0工作在可重复触发单稳态方式1下,它的输出口out0产生宽度可调的pwm信号脉冲,该输出脉冲宽度为:w=n/f;输出的占空比为:p=w1(f/n); 式中,w为输出脉冲宽度,单位是秒;w1为一个周期内高电平的脉冲宽度,p为占空比;f为计数器时钟信号的频率;n为单片机为其置入

6、的计数值。pwm的频率由gate0上所加的信号频率决定;在计数器0的gate0端输入一定频率的方波,该频率由计数器1的out1输出产生,再由89c51的ale锁存信号给clk1和clk0同步的时钟脉冲,最后改变计数器值n产生连续可调的pwm信号。如图2.1所示。键盘pwm信号825389c51hd7279数码管图2.1 系统原理框图分析:由于单片机本身内部具有计数及定时功能,方案一与方案二相比方案一直接使用单片机内部芯片功能产生pwm脉宽调制波形算法实现简单,成本低廉。但是受单片机端口数量及单片机工作频率(主要为晶振频率)的限制,单片机无法实现多路控制;单片机搭建的电路抗干扰性较差,易受感性负

7、载的影响,电路的稳定性较低;单片机利用程序实现pwm脉宽调制波形,程序执行存在相对延迟现象,尽管单次延迟时间很小,但是延迟时间的累积会对较为复杂的控制产生难以估量的影响。考虑到必须保证系统的稳定性,所以本设计采用方案二实现。2.2 单元电路设计2.2.1 振荡电路单片机需要不断地提供时钟脉冲,这个时钟脉冲就是由振荡电路提供的,它是由一个石英晶振、两个反馈电容组成,振荡电路是计算机的心脏,它控制着计算机的工作节奏。晶振频率多在1.2mhz12mhz 之间选取,工业上常用的是6m和12m,而本次专业课设用的晶振频率是11.0592mhz,反馈电容的取值一般在5pf30pf 之间选择,这里我们选用是

8、30pf的反馈电容,它的作用有两个:一是驱动振荡器工作,二是对振荡器的频率f 起微调作用,反馈电容值越大,振荡器的频率就越小,二者成反比。如图3.2所示。2.2.2 复位电路 单片机需要复位以后才能正常工作,复位的目的就是使单片机处于一个基准点,在这个基准点,程序将会从c51的main主行数的第一条语句开始执行。一般来说复位电路有两种,一种是手动复位,另一种是上电复位,本设计采用的是常用的的上电复位,复位过程很简单,在电源刚刚合上时,电流经过电阻对电解电容充电,这样在电阻上就形成了一个电压,对于单片机来说,这个电压就是复位电压。经过若干毫秒以后,电解电容器被充满电,这时电阻就没有电流流过,电阻

9、两端也就没有电压,单片机的复位脚ret电压恢复为零,复位工作结束,单片机开始工作。在本次设计中选用的是10uf的电解电容,10k的电阻以及5v的外接电压。如图2.2所示。图2.2 单片机振荡电路与复位电路图2.2.3 定时/计数器8253模块电路本模块是此次设计的核心模块,是利用可编程计数器8253与89c51单片机的特殊连接所实现的。一片8253共有3个独立通道,各通道共有6种工作方式,其中方式1(可编程序单稳)的工作性能是:当控制字装入控制寄存器后,out变高,在gate输入信号的上升沿以后的整个技术过程中,out变低,一旦技术结束则out变高。下一次gate上升沿触发,out再一次变低,

10、输出一定宽度的负脉冲。若在out为低时写入新的计数值,则在下一次触发之前将不影响单稳脉冲宽度。由8253可编程序单稳工作特性可知,每启动一次,定时时间由计数值而定。该特性适合本次设计pwm波形的工作要求。单片机向8253的通道0赋值给方式1的控制字及计数值t0,out0输出为高电平,但计数器0未启动不工作,这时通道处于等待状态,等待gate0的上升沿到来。单片机向8253的通道1赋值给方式1的控制字及计数值t1,out1输出由低变高,因而在gate0端得到一个上升触发脉冲启动通道0定时,在定时中out0变为低电平,这时8253开始进入双定时器互相触发启动的工作状态。在通道0第一次定时结束,ou

11、t0输出变高,是gate1端得到一个上升触发脉冲启动通道1定时,而通道0处于等待状态。当时钟频率为f0,调宽脉冲周期为t(t=t+t)时,则有: t0=f*t, t1=f*t (1)当t用t与t取代时,可得: t1=f*(t-t) (2)由此看来,当需要得到宽度为t的调宽脉冲时,必须给通道0置计数值为t0,通道1置计数值为t1,当需要调整脉宽时,只需按式(1)和式(2)重新计算t0和t1,置入各对应通道,输出波形后自动得到调整,从而实现了占空比可变的脉宽调制的目的在这里单片机除了需要给8253定时/计数器 8位数据以外,还需用到74ls373地址锁存器对单片机的地址进行锁存,由于74ls373

12、内部是由8个d触发器构成的,在这里其中的两个触发器输出q1和q2是8253中的a0和a1的输入信号,使得8253得到正确的控制口地址和计数器口地址,这也是8253计数器正常工作所必须的。其次是单片机的p2.5作为8253的片选信号,以此来进一步确定8253的口地址,8253的读写信号分别由单片机的读写信号直接给予,然后是ale地址所存信号给8253的clk1和clk0送同步时钟信号,最后通过out1的输出脉冲打开gate0,使得out0经过一个反相器后得到我们最终所需的pwm脉冲信号。如图2.3所示。图2.3 定时/计数器8253控制电路图2.2.4 键盘及显示电路hd7279a 只需要4 根

13、线(cs、clk、data、key)与at89c51 相连,仅仅使用单片机的p1.0p1.3 口,大大节省了cpu 的端口资源,大大简化系统电路,即可实现键盘接口功能。由于hd7279a 内部含有去抖动电路,软件编程时不需要键盘的消抖动程序,而且hd7279a 的控制指令也使得软件编程更简单。选用hd7279a 芯片作为驱动接键盘矩阵。扫描键盘时,如果有键按下,直接通过读键盘数据指令即可在lcd 上显示键入的键值,而不需要通过at89c51 口线来控制键盘输入值。所以选择hd7279 作为驱动芯片的键盘电路。常用的数码管显示器由八个发光二极管组成,其中七个发光二极管a-g控制七个段的亮或暗,另

14、一个控制一个小数点的亮和暗,这种笔画式的七段显示器控制简单,使用方便,而且字符较亮,价格适宜,所以选择数码管显示.如图2.4所示。图2.4 键盘与显示控制电路图第三章 系统软件设计3.1 编程语言的选择mcs-51 编程语言常用的有两种,一种是汇编语言,另一种是c 语言。c 语言是一种结构化语言,在大多数情况下其机器代码生成效率和汇编语言相当。汇编语言的机器代码生成效率很高,汇编语言的开发效率高,可以充分地利用片内的资源。具有直接和硬件打道、执行代码的效率高等特点,可以做到c语言所不能做到的一些事情,例如对时钟要求很严格时,使用汇编语言成了唯一的选择。汇编在延时和中断时有很大的作用,有时c是没

15、有办法做到的 。综合以上汇编语言的优点,本次设计选择汇编语言对51单片机进行软件编程。3.2 7279键盘功能设计 表3-1 7279键盘功能设计32107654设置/确认983.3 存储单元及关键字介绍3.3.1 存储单元介绍表3-2 存储单元介绍dfffh8253控制口地址dffdh8253计数器1地址dffch8253计数器0地址50h,51h8253计数器0的计数初值存储单元48h,49h,4ah键入的占空比存储单元40h,41h,42h,43h,44h,45h,46h,47h显示缓冲区3.3.2 关键字介绍表3-3 关键字介绍main主程序key读键值子程序stfs发送一字节子程序s

16、tjs接收一字节子程序display7279显示子程序dis_deal初始化显示处理子程序int_72797279初始化子程序pwm_dealpwm的占空比数据处理子程序pwm_outpwm的输出子程序dis_deal1修改后的显示处理子程序tv4键入占空比子程序tab07279键值表tab0到9及good和nice字型码3.4 软件设计系统总框图程序开始运行时对存储区及7279初始化,判断是否有按键按下,无键按下,重新进行键盘扫描;有键按下,判断是哪个键按下,并进行相应的操作,整个程序是以at89c51单片机为核心控制单元,通过ale不断给8253计数器时钟信号,以及与按键相配合,通过对数码

17、管显示占空比的改变,给计数器0口不同的输出,从而实现设计要求。因此整个系统设计的流程图如图3.1所示。开始调7279初始化子程序判断是否有键按下调读键盘子程序调显示子程序判断第二个键是否按下将十进制占空比转化为二进制调延时子程序产生pwm波 n y n y图 3.1程序流程图第四章 实验调试与测试结果分析4.1 调试过程中主要用到的仪器和工具数字万用表 一个稳压电源 一个示波器 一台4.2 实验调试过程 采用keilc51编译器进行源程序编译及仿真调试,同时进行硬件电路板的设计制作。硬件电路制作完毕,用万用表检测有无短路开路等现象,确定硬件电路没有问题后,用示波器的串口线与硬件电路相连,运行程

18、序进行调试。在软件调试过程中,发现程序运行没有错误,但在输入占空比数值后,按下确认键不能在数码管上显示修改后的占空比值,得不到想要的实验结果。而后凭借着流程图,一步一步地检查程序的走向,最终发现原来是程序中判断是否按下确认键后,没有调用显示程序。当加入显示子程序后,运行程序实现了预期的实验结果。4.3 测试结果分析制作完成后,将8253计数器0的out0端连接示波器上。上电后,7279显示器初始化显示“good050“字样,示波器上显示稳定的占空比为50%的方波。按下“设置/确认” 键后,显示器上第6个数码管开始闪烁,即提示可以修改此数值。选择一个数字键按下,若选择“1“或比”1“大的数字键,

19、则这个数码管仍然闪烁,即提示输入错误;若选择”0“数字键,则第六个数码管消闪并显示了”0“,同时第七个数码管开始闪烁,这个“0”即作为占空比的百位值。接着输入数字,此时可以选择”0“到”9“中的任意一个数字作为占空比的十位值(比如“2”),按下后第七个数码管消闪并显示了所按下的数字,同时第八个数码管开始闪烁。与第七个数码管一样按下一个数字键作为占空比的个位值(比如“5”),第八个数码管则显示所按下的数字,但不消闪,直到再次按下“设置/确认”键后,第八个数码管消闪。此时修改完成,显示器上显示“nice025”,即占空比变为25%,从操作中可以发现提供修改的占空比范围为0%-99%。再观察示波器上

20、的波形及相应测量参数,可以得出输出的pwm波占空比的确变为25%,达到设计要求。结论单片机的应用系统由硬件和软件所组成。硬件主要指单片机扩展的存储器,输入/输出设备等硬件部件机器,而软件是各种工作程序的总称。只有硬件和软件紧密配合,协调一致,才能组成高性能的单片机应用系统。对于本次专业课程设计pwm波的研制,是简单的单片机应用系统,采用顺序设计方法。回顾起此次单片机课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在这三周的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。体会最深刻的一点就是理论

21、与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到了一些问题,同时也发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说对单片机汇编语言掌握得不好,对hd7279的模块的工作原理掌握得不够熟练,对设计一个单片机系统所需要的思路和方法不明确等等。通过这次专业课程设计之后,一定把以前所学过的知识重新温故。专业课程设计是培养学生综合运用所学专业知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考

22、察过程。随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学生来说掌握单片机的开发技术是十分重要的。参考文献1韩成、张延伟主编.拿来就用单片机.北京:人民邮电出版社,20082 楼然苗、李光飞.单片机课程设计指导.北京:北京航空航天大学出版社,20073 王福瑞等.单片机测控系统设计大全.北京:北京航空航天大学出版社,19994苏凯,刘庆国.mcs-51系列单片机系统原理与设计.北京:冶金工业出版5邬宽明.单片机外围器件实用手册.北京:北京航空航天大学出版社,19986徐建军主编.mcs-51系统单片机应用及接口技术.

23、北京:人民邮电出版社,20037姜至海、刘连鑫主编.单片微型计算机原理及应用.北京:机械工业出版社,20078 蔡明文、冯先成. 单片机课程设计. 武汉:华中科技大学出版社 , 20079 房小翠、王金凤. 单片机实用系统设计技术.北京:国防工业出版社,1996附录a系统设计程序代码如下:org 0000hljmp mainmain:mov sp,#67h acall init_7279 ;7279初始化l1:acall pwm_deal ;pwm的占空比数据处理 acall pwm_out ;pwm输出 acall dis_deal ;显示处理l2:acall display ;7279显示

24、子程序 acall key cjne a,#0ffh,l4 ;判断有无键按下ljmp l2l4:cjne a,#0ah,l2 ;判断是否按下设置键 acall tv4 sjmp l1;pwm的占空比数据处理pwm_deal:mov r7,#02hmov r0,#4ahmov a,r0l6:mov b,#0ah mul ab ;十进制占空比转化为二进制 dec r0add a,r0djnz r7,l6mov b,#25h mul abmov 50h,amov a,bmov 51h,aret;pwm的输出pwm_out:mov dptr,#0dfffh mov a,#74h ;计数器1,方式2,二

25、进制计数movx dptr,amov dptr,#0dffdh;mov a,#74h ;out1 输出 500hz的方波,计数器1的初值为0e74h movx dptr,amov a,#0ehmovx dptr,amov dptr,#0dfffhmov a,#32h ;计数器0,方式1,二进制计数 movx dptr,amov dptr,#0dffchmov a,50h ;out0 输出脉宽可调的频率为500hz的脉冲,计数器0的初值为键入值,存在50h,51h单元里 movx dptr,amov a,51h movx dptr,aret;初始化显示处理dis_deal:mov 40h,#09

26、h ;上电后,前五个数码管显示good mov 41h,#10hmov 42h,#10hmov 43h,#11hmov 44h,#0bhmov 45h,4ah ;最后三个数码管所显示的占空比值存于48h-4ah单元中mov 46h,49hmov 47h,48hret;修改后显示处理dis_deal1:mov 40h,#0ch ;按下确认键后,前五个数码管显示nice mov 41h,#0dhmov 42h,#0ehmov 43h,#0fhmov 44h,#0bh mov 45h,4ah ;最后三个数码管所显示的占空比值存于48h-4ah单元中mov 46h,49hmov 47h,48h ret

27、;键入占空比 tv4:mov b,a clr p1.0 mov a,#88h ;7279闪烁指令 acall stfs mov a,#0fbh ;第六个数码管闪烁 acall stfs setb p1.0 mov a,bacall dis_deal1 ;显示结果处理acall display ;7279显示子程序 acall key ;键入第一个值 cjne a,#01h,m1 ;与1比较,不能大于等于1 m1:jc m2 ljmp tv4 m2:mov 4ah,a ;将第一个值存于4ah单元中 mov b,a clr p1.0 mov a,#88h acall stfsmov a,#0fdh

28、 ;第七个数码管闪烁 acall stfs setb p1.0mov a,bl12:acall dis_deal1 ;显示结果处理 acall display ;7279显示子程序 acall key ;键入第二个值 cjne a,#0ah,l11 ;与10比较,不能大于等于10l11:jnc l12 mov 49h,a ;将第二个值存于49h单元中 mov b,a clr p1.0 mov a,#88h acall stfsmov a,#0feh ;第八个数码管闪烁 acall stfs setb p1.0 mov a,b l13:acall dis_deal1 acall display

29、acall key ;键入第三个值 cjne a,#0ah,l14 ;与10比较,不能大于等于10 l14:jnc l13 mov 48h,a ;将第三个值存于48h单元中 l15:acall dis_deal1 acall display acall key cjne a,#0ah,l16 ;判断确认键是否按下 mov b,aclr p1.0 mov a,#88h acall stfsmov a,#0ffh ;取消闪烁 acall stfs setb p1.0 mov a,b acall dis_deal1 ;修改后的最终结果显示处理 acall display ;7279显示最终结果 sj

30、mp l18 l16:sjmp l15 l18:ret;显示部分display:mov r5,#08h ;显示子程序,显示8个字符,显缓区40h-47h mov r0,#40h ;显缓区首址 mov r1,#97h ;命令字控制显示的数码管 dl1:clr p1.0 mov r6,#0ch dl2:djnz r6,dl2 mov a,r1 ;发送命令字 acall stfs; mov r6,#06h dl3:djnz r6,dl3 ;延时 mov a,r0 add a,#0dh movc a,a+pc ;查表 acall stfs ;发送显示内容 mov r6,#02h dl4:djnz r6,dl4 ;延时setb p1.0 inc r0 dec r1 djnz r5,dl1 ; 循环次数 ret tab: db 7eh,30h,6dh,79h,33h,5bh,5fh,70h,7fhdb 7bh,00h,01h,76h,30h,4e

温馨提示

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

评论

0/150

提交评论