PWM波形.docx

上传人:b****7 文档编号:25792053 上传时间:2023-06-14 格式:DOCX 页数:24 大小:262.65KB
下载 相关 举报
PWM波形.docx_第1页
第1页 / 共24页
PWM波形.docx_第2页
第2页 / 共24页
PWM波形.docx_第3页
第3页 / 共24页
PWM波形.docx_第4页
第4页 / 共24页
PWM波形.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

PWM波形.docx

《PWM波形.docx》由会员分享,可在线阅读,更多相关《PWM波形.docx(24页珍藏版)》请在冰豆网上搜索。

PWM波形.docx

PWM波形

沈阳航空航天大学

 

课程设计报告

课程设计名称:

微机原理课程设计

课程设计题目:

可控PWM波发生器

院(系):

计算机学院

专业:

计算机科学与技术

班级:

学号:

姓名:

指导教师:

张德园

说明:

结论(优秀、良好、中等、及格、不及格)作为相关教环节考核必要依据;格式不符合要求;数据不实,不予通过。

报告和电子数据必须作为实验现象重复的关键依据。

 

学术诚信声明

本人声明:

所呈交的报告(含电子版及数据文件)是我个人在导师指导下独立进行设计工作及取得的研究结果。

尽我所知,除了文中特别加以标注或致谢中所罗列的内容以外,报告中不包含其他人己经发表或撰写过的研究结果,也不包含其它教育机构使用过的材料。

与我一同工作的同学对本研究所做的任何贡献均己在报告中做了明确的说明并表示了谢意。

报告资料及实验数据若有不实之处,本人愿意接受本教学环节“不及格”和“重修或重做”的评分结论并承担相关一切后果。

 

本人签名:

日期:

年月日

 

沈阳航空航天大学

课程设计任务书

课程设计名称

微机原理课程设计

专业

计算机科学与技术

学生姓名

赵凯敏

班级

24010102

学号

2012040101056

题目名称

可控PWM波发生器

起止日期

2015

6

29

日起至

2015

7

10

日止

课设内容和要求:

通过矩阵键盘输入数字,实现占空比可控的PWM波发生器,占空比在LCD液晶上显示;

要求画出电路原理图。

 

教研室审核意见:

教研室主任签字:

指导教师(签名)

学生(签名)

课程设计总结:

这次单片机课程设计对我来说学到的不仅是更加深入的了解单片机知识,更多的是怎样如何去设计自己的课题,怎样利用学习的知识汇编程序语言。

它不仅仅是让我们把所学的理论知识与实践相结合起来,提高自己的实际动手能力和独立思考的能力,更重要的是与老师之间的交流以及同学之间的互帮互助。

虽然我们这次花去的时间比别人多,但我相信在这同时我们学到的也会更多!

在本次课程设计的过程中,我感触最深的当属怎样去给我们的课题汇编单片机的程序语言。

由于平时对单片机知识学习得不够扎实,理解得不够透彻、一知半解,致使在运用是不能贯通,导致在设计过程中困难重重,往往无从下手,但是通过询问老师以及和同学一起探讨,最后还是一步一步的把问题给解决了。

感谢各位老师的指导,以及同学们的帮助。

 

目录

1摘要1

2设计概述2

3构件以及原理3

3.1程序流程3

3.2键盘接口电路3

3.3LED显示电路5

3.4八段数码管显示原理5

4总设计原理7

4.1PWM波形发生器的原理与功能7

4.2键盘控制原理7

4.3程序框图7

4.4显示结果9

5调试及结果分析10

5.1调试步骤及方法10

5.2实验结果10

参考文献11

附录(关键部分程序清单)12

 

1摘要

作为微型计算机的一个重要分支,单片微型计算机(简称单片机)自20世纪70年代问世以来,已广泛地应用在工业自动化、自动化检测与控制、智能仪器仪表、机电一体化设备、汽车电子、家用电器等各个方面。

本设计是一个以单片机为核心的可控PWM波发生器,通过对键盘输入电路、波形的输出电路、显示电路的设计已经程序的编程,实现通过键盘改变占空比,并显示波形频率的功能。

单片机具有性价比高、集成度高、体积小、可靠性好、控制功能强、低电压、低功耗、通用灵活等优点,广泛应用于卫星定向、汽车火化控制、交通自动管理等方面。

Inter公司的mcs-51单片机虽然仍然是6位的单片机,但其功能有很大的增强,此外他还具有品种全、兼容性强、软硬件资料丰富等有点,因为此应用十分广泛,直到现在mcs-51仍为单片机中的主流机型,也是高档单片机的基础。

本课题讨论的方波发生器的核心就是51系列单片机。

 

2设计概述

基于单片机的占空比可调PWM波形发生器的设计,是通过单片机控制一个有特殊功能的信号发生芯片,可以产生一系列有规律的幅度和频率可调的波形。

通过键盘可以改变占空比。

设计的基本要求是:

设计键盘输入电路、波形的输出电路、显示电路(4位数码管);编制相应程序。

使用按键来进行输入占空比,不同的占空比可以使用不同的按键来实现,而以键盘扫描来实现各键的不同功能;显示部分使用LED数码管来实现。

由此即可构成一个最小单片机应用系统。

基于MCS—51单片机8051芯片所设计的可以实现键位与数字动态显示的一种频率,占空比可调方波发生器。

设占空比任意取20%、40%、50%、60%、80%等值。

通过对键盘上按键的操作完成对占空比的调用,以达到改变当前占空比的目的,并使用其八段数码管显示。

单片机对键位进行扫描,确定键位的输入,根据程序设计要求,数码管显示占空比的数值,PWM波形发生器输出以数码管显示的数值为占空比的波。

基于以上思路,可进行如下功能扩展:

由于仿真实验箱共有6位数码管,2位进行占空比显示。

键盘部分使用4*4键盘中的其中2个按键,其功能分别为:

占空比增大、占空比减小。

按键每按下一次,当前占空比转向下一选定的占空比值。

单片机控制数码管的显示,数码管显示当前所调换到的占空比,并向外输出所示占空比的波。

最后,可采用示波器观察波形。

 

3构件以及原理

3.1程序流程

简单的流程为:

主程序扫描键盘,将设置信息输入,处理后,输出到LED显示器显示。

单片机用到了定时器0,进行占空比的定时,工作在方式1。

计算定时器初值的公式如下:

N=2^m-FOSC/12×T

根据计算定时器初值的公式,所要装入的初值。

占空比的显示电路由74374和74245构成的驱动电路和LED数码显示管组成,利用数码管来显示,有两位显示占空比。

此电路的键盘由两个功能键(调节占空比的增减)组成,其特殊之处在于利用外部中断实现键盘扫描。

功能键有两种种状态,一种为正顺序调换,根据所取值顺向增大的特点,此时为增大调节;另一种为逆顺序调换,同理,此时为减小调节。

占空比有一组增大及减小的功能键。

3.2键盘接口电路

方案一:

独立式键盘

一个具有4个按键的独立式键盘,每一个按键的一端都接地,另一端接MEGA16的I/O口。

独立式键盘每一按键都需要一根I/O线,占用MEGA16的硬件资源较多。

因此独立式键盘只适合按键较少的场合。

键盘是一组按键或开关的集合,键盘接口向计算机提供被按键的代码。

特点:

使用方便、结构复杂、成本高。

方案二:

矩阵式键盘

我们采用4×4矩阵式键盘,矩阵式键盘由多个按键组成的开关矩阵,当键盘上没有键闭合时,所有的行线和列线断开,行线呈高电平。

当键盘上某一个键闭合时,该键所对应的行线与列线短路。

例如,K0键按下闭合时,行线X0和列线Y0短路,此时X0的电平由Y0的电平所决定。

其按键识别可用扫描法完成。

具体方法如下:

(1)把行线接到微机的输入口,列线接到微机的输出口,则在微机的控制下,使列线Y0位低电平0,其余3根列线Y1、Y2、Y3都为高电平1.

(2)然后微机通过输入口读取行线的状态,如果X0、X1、X2、X3都为高电平,则Y0这一列线上没有键闭合;如果读出的行线状态不完全为高电平,则为低电平的行线和Y0相交的键处于闭合状态。

(3)如果Y0这一列上没有键闭合,接着使列线Y1为低电平,其余列线为高电平。

用同样的方法检查Y1这一列上有无键闭合。

(4)以此类推,最后使列线Y3为低电平,其余的列线为高电平,检查Y3这一列上是否有键闭合。

这种逐行逐列的扫描键盘状态的过程为对键盘的扫描.。

CPU对键盘的扫描可以采取程序控制的随机方式,CPU空闲时才扫描键盘;也可以采取定时控制方式,每隔一段时间,CPU对键盘扫描一次;还可以采用中断方式,当键盘上有键闭合时,向CPU请求中断,CPU响应键盘发出的中断请求,对键盘进行扫描,以识别哪一个键处于闭合状态,并对键输入信息作相应处理。

其按键识别可用扫描法完成。

具体方法如下

图3.1键盘控制LED连接原理图

3.3LED显示电路

方案一:

静态显示方式

当显示器显示某一个字符的时候,相应的发光二极管恒定地导通或截止。

例如,7段LED显示器显示数字0时,a、b、c、d、e、f段恒定导通,g段恒定截止。

这种显示方式每一位都需要一个8段位输出控制。

静态显示时,较小的电流能得到较高的亮度,且字符不闪烁,系统运行过程中,在需要更新显示内容时,CPU才去执行显示更新子程序,这样既节约了CPU的时间,又提高了CPU的工作效率。

其不足之处是占用硬件资源较多,每个LED数码管需要独占8条输出线。

随着显示器位数的增加,需要的I/O口线也将增加。

当显示位数较少时,采用静态显示的方法是合适的。

方案二:

动态显示方式

当位数较多时,用静态显示所需的I/O口太多,不太经济,一百采用动态显示方法,即用扫描法一位一位的轮流点亮显示器的各个位,对于显示器的每一位来说,每隔一段时间电量一次,利用人眼的视觉暂留效应可以看到整个动态显示,但必须保证扫描速度足够快,字符才不闪烁。

显示器的亮度即与导通电流有关,也与点亮时间和时间间隔的比值有关。

调整电流和时间参数,可以得到亮度较高且较稳定的显示。

动态显示方式中,若显示器的位数不大于8位,则控制显示器各位公共极的电位使他们轮流点亮只需一个I/O口(称扫描口);传送显示器的各位所显示的段选码也需一个8位I/O口(称段数据口)。

由于8051单片机本身提供的I/O口有限,因此我们选择方案二——动态扫描方式。

扫描方式中在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的约1MS,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

节约了电能,节省了I/O口。

3.4八段数码管显示原理

数码管内部由8个发光发光二极管组成,排成一个8字,可以组成0到9数字以及A-F字符的表示形式。

图3.1八段数码管引脚图图3.2八位数码管原理图

表3.1显示数字及其所对应的代码

显示数字

1

2

3

4

程序输入数

06H

5BH

4FH

66H

显示数字

5

6

7

8

程序输入数

6DH

7DH

07H

7FH

显示数字

9

0

A

B

程序输入数

6FH

3FH

77H

7CH

显示数字

C

D

E

F

程序输入数

39H

5EH

79H

71H

图3.3键盘及数码管显示电路

4总设计原理

4.1PWM波形发生器的原理与功能

波形发生器的总体原理方框图如下图所示:

占空比数据占空比数据

 

图4.1总原理方框图

由于系统的要求不高,比较单一,再加上我们是通过定时器来调节频率的,这样仅用键盘、8051芯片及数码显示管便可完成设计,达到所要求实现的功能。

4.2键盘控制原理

通过键盘的控制,实现占空比的变化。

本设计选用后两个数码管显示占空比。

其中,用a键和b键控制占空比的变化:

每按一下a键,占空比就按照调高的顺序正向变化一个数字,每按一下b键,占空比就反向变化。

表4.1占空比---按键对照表

占空比

A

B

+上

_下

4.3程序框图

 

图4.2程序框图

PWM即脉冲宽度调制(英语:

PulseWidthModulation,缩写为PWM),简称脉宽调制,是将模拟信号转换为脉波的一种技术,一般转换后脉波的周期固定,但脉波的占空比会依模拟信号的大小而改变。

模拟信号能否使用PWM进行编码调制,仅依赖带宽,这即意味着只要有足够的带宽,任何模拟信号值均可以采用PWM技术进行调制编码,一般而言,负载需要的调制频率要高于10Hz,在实际应用中,频率约在1kHz到200kHz之间。

本次课程设计使用通用定时器Timer1/2产生PWM选择连续计数模式可以产生PWM波形。

具体设计思路为:

初始化后单片机产生初值,将初值以动态扫描的方式显示于八段数码管,同时还对键盘进行实时扫描。

在扫描后,单片机读取键值,并将键值通过数码管模块显示出来,PWM波形发生器输出该占空比的方波.

表4.2占空比(%)-代码对照表

编辑代码1

5BH

3FH

显示占空比(%)

2

0

编辑代码2

66H

3FH

显示占空比(%)

4

0

编辑代码3

6DH

3FH

显示占空比(%)

5

0

编辑代码4

7DH

3FH

显示占空比(%)

6

0

编辑代码5

7FH

3FH

显示占空比(%)

8

0

4.4显示结果

图4.3显示结果

5调试及结果分析

5.1调试步骤及方法

在开始的时候,每次都没有结果显示。

于是通过单步调试,通过查看各个寄存器中的值,来验证各模块是否正常跳转以及模块的正确性。

结果,在数据中断中没有中断产生。

经过调试,可以正常显示预定的占空比的值,但是无法对占空比进行调节。

经过思考发现,问题出在数据显示模块,每次显示完第一次预定的值以后没有对数码管进行清空,所以显示出现问题。

之后,修改程序,在每次显示之前对数码管进行清空操作。

问题得到解决。

5.2实验结果

本设计已经基本满足任务书的要求。

现将结果简单介绍如下:

1.当按下实验箱上的“A”时,显示的占空比值增加,在示波器上可以显示出对应占空比的波形。

2.当按下实验箱上的“B”时,显示的占空比值减小,同时在示波器上可以显示出对应占空比的波形。

 

参考文献

[1]高富平,张楚.电子商务法[M].北京:

北京大学出版社,2002

[2]HuangSC,HuangYM,ShiehSM.Vibrationandstabilityofarotatingshaftcontainingatransersecrack[J],JSoundandVibration,1993,162(3):

387-401.

[3]电子工业出版社.单片机设计与应用[M].

[4]谢自美.电子线路设计•实验•测试.:

华中科技大学出版社,2008

[5]陈小忠.单片机实用接口技术子程序[M].人民邮电出版社,2005

[6]龚尚福.微机原理与接口技术[M].西安:

西安电子科技大学出版社,2003

[7]王忠民.微型计算机原理[M].西安:

西安电子科技大学出版社,2003

[8]赵晓安,MCS-51单片机原理及应用,天津大学出版社,2001

[9]李全利,单片机原理及接口技术,北京:

高等教育出版社,2001

 

附录(关键部分程序清单)

OUTBITEQU08002H;位控制口

OUTSEGEQU08004H;段控制口

INEQU08001H;键盘读入口

FrequencyDATA30H;频率等级缓冲区

DutyDATA31H;占空比等级缓冲区

TH0_HIGHDATA32H;高电平计数缓冲区,给定时器TH0赋值

TL0_HIGHDATA33H;高电平计数缓冲区,给定时器TL0赋值

TH0_LOWDATA34H;低电平计数缓冲区,给定时器TH0赋值

TL0_LOWDATA35H;低电平计数缓冲区,给定时器TL0赋值

FlagDATA36H;高电平低电平转换标志

OFFSETDATA37H;用来存储偏移量

LEDBUFDATA60H;显示缓冲区

ORG0000H

LJMPINIT

ORG000BH

LJMPTIMER0

ORG0010H

KeyTable:

;键码定义

DB16H,15H,14H,0FFH

DB13H,12H,11H,10H

DB0DH,0CH,0BH,0AH;0AH占空比调高,对应键盘上的A键

DB0EH,0CH,0BH,09H;0BH占空比调低,对应键盘上的B键

 

FrenqLevel:

;频率占空比转换表格

;TH0_HIGH,TL0_HIGH,TH0_LOW,TL0_LOW

DB0D8H,0F0H,063H,0C0H;10HZDUTY20%

DB0B1H,0E0H,08AH,0D0H;10HZDUTY40%

DB09EH,058H,09EH,058H;10HZDUTY50%

DB08AH,0D0H,0B1H,0E0H;10HZDUTY60%

DB063H,0C0H,0D8H,0F0H;10HZDUTY80%

DutyMAP:

DB5BH,66H,6DH,7DH,7FH;数码管上显示的占空比数字20%40%50%60%80%

INIT:

MOVSP,#40H;更改堆栈指针,避免堆栈与工作寄存器区发生冲突

MOVTMOD,#01H;定时器0方式1

MOVTH0_HIGH,#0D8H

MOVTL0_HIGH,#0F0H

MOVTH0_LOW,#063H

MOVTL0_LOW,#0C0H

MOVTH0,TH0_LOW;先输出低电平定时器初值

MOVTL0,TL0_LOW

MOVFrequency,#00H;频率初值为10HZ

MOVDuty,#00H;占空比初值为20%

MOVLEDBuf+5,#3FH

MOVLEDBuf+4,#5BH

MOVLEDBuf+3,#3FH

MOVLEDBuf+2,#06H

MOVLEDBuf+1,#3FH

MOVLEDBuf,#3FH

SETBEA;cpu开放中断

SETBET0;T0中断允许

SETBTR0;允许T0计数

Main:

CALLDisplayLED;显示

CALLTestKey;是否有键键入

JZMain;无键键入,继续显示

CALLGetKey;有键键入,读入键码

CALLKeyfuction;有键键入,调用相应的功能

CALLChangestate;根据占空比等级,频率等级的改变转变状态

LJMPMain

DisplayLED:

;显示子程序

MOVR0,#(LEDBUF+4)

MOVR1,#02H;共6个八段管

MOVR2,#02H;从左边开始显示

DisplayLOOP:

MOVDPTR,#OUTBIT

MOVA,#00H

MOVX@DPTR,A;关所有八段管

MOVA,@R0

MOVDPTR,#OUTSEG

MOVX@DPTR,A

MOVDPTR,#OUTBIT

MOVA,R2

MOVX@DPTR,A;显示一位八段管

MOVR6,#01H

CALLDELAY

MOVA,R2;显示下一位

RRA

MOVR2,A

INCR0

DJNZR1,DisplayLOOP;循环6次displayloop

RET

TestKey:

;检测是否有按键按下

MOVDPTR,#OUTBIT

MOVA,#00H

MOVX@DPTR,A;输出线置为0

MOVDPTR,#IN

MOVXA,@DPTR;读入键状态

CPLA

ANLA,#0FH;高四位不用保留低四位

RET

GetKey:

;有键按下读取键值

MOVDPTR,#OUTBIT

MOVP2,DPH

MOVR0,#LOW(IN)

MOVR1,#20H

MOVR2,#06H

KeyLoop:

MOVA,R1;找出键所在列

CPLA

MOVX@DPTR,A

CPLA

RRA

MOVR1,A;下一列

MOVXA,@R0

CPLA

ANLA,#0FH;保留低4位

JNZGetKeynum;该列有键入A不为零有输入则转移

DJNZR2,KeyLoop;循环6次

MOVR2,#0FFH;没有键按下,返回0FFH

SJMPExit

GetKeynum:

;键值=列X4+行,扫描键盘值

MOVR1,A;暂存a

MOVA,R2

DECA

RLA

RLA

MOVR2,A;R2=(R2-1)*4

MOVA,R1;R1中为读入的行值

MOVR1,#04H

GetKeynumLoop:

RRCA;移位找出所在行

JCExit;进位标志cy=1转移

INCR2;R2=R2+行值

DJNZR1,GetKeynumLoop

Exit:

MOVA,R2;取出键码

MOVDPTR,#KeyTable

MOVCA,@A+DPTR

MOVR2,A;取出键码给R2

WaitRelease:

MOVDPTR,#OUTBIT;等键释放

CLRA

MOVX@DPTR,A

MOVR6,#0AH

CALLDelay

CALLTestKey

JNZWaitRelease

MOVA,R2

RET

Keyfuction:

MOVB,A;保存返回的键值

XRLA,#0AH;对键值进行判断

JZKey1;A键按下

MOVA,B

XRLA,#0BH;对键值进行判断

JZKey2;B键按下

JMPKeyEnd

Key1:

MOVA,Duty

XRLA,#04H;占空比等级是否到4

JZKEY1_1

INCDuty;占空比等级调高

JMPKeyEnd

Key1_1:

MOVDuty,#04H;占空比等级为4,不能再提高

JMPKeyEnd

Key2:

MOVA,Duty

XRLA,#00H;占空比等级是否到0

JZKEY2_1

DECDuty;占空比等级调高

JMPKeyEnd

Key2_1:

MOVDuty,#00H

JMPKeyEnd

KeyEnd:

RET

Changestate:

MOVA,DUTY

MOVDPTR,#DutyMAP

MOVCA,@A+DPTR

MOVLEDBuf+4,A

MOVLEDBuf+5,#3FH

Dutychange:

CLRTR0

MOVA,DUTY

MOVB,#04H

MULAB;将占空比等级乘上4的偏移量

ADDA,OFFSET;得到总的偏移量,频率偏移+占空比偏移

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

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

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