单片机课设 方波发生器.docx
- 文档编号:15341290
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:27
- 大小:1.16MB
单片机课设 方波发生器.docx
《单片机课设 方波发生器.docx》由会员分享,可在线阅读,更多相关《单片机课设 方波发生器.docx(27页珍藏版)》请在冰点文库上搜索。
单片机课设方波发生器
燕山大学
课程设计说明书
题目:
方波发生器
学院:
电气工程学院
年级专业:
10级检测1班
学号:
************
******************************
******************************
教师职称:
副教授
燕山大学课程设计(论文)任务书
院(系):
电气工程学院基层教学单位:
仪器科学与工程系
学号
100103020012
学生姓名
李潇
专业(班级)
10检测1班
设计题目
方波发生器
设
计
技
术
参
数
设计一个以单片机为核心的方波发生器,通过键盘可以改变方波的占空比和频率,并显示波形的频率。
设
计
要
求
设计键盘输入电路、波形的输出电路、显示电路(4位数码管);编制相应的程序。
工
作
量
设计的内容满足课程设计的教学目的与要求,设计题目的难度和工作量适合学生的知识和能力状况,工作量饱满。
工
作
计
划
查阅资料进行设计准备、设计硬件电路、编制程序,编制程序、验证设计、撰写任务书。
参
考
资
料
单片微型计算机接口技术及其应用张淑清国防工业出版社
单片机原理及应用技术张淑清国防工业出版社
单片机应用技术汇编
指导教师签字
基层教学单位主任签字
说明:
此表一式四份,学生、指导教师、基层教学单位、系部各一份。
第一章摘要...........................................2
第二章引言...........................................2
第三章设计概述.......................................2
第四章方案介绍.......................................3
第五章构建以及原理...................................3
5.1程序流程.....................................3
5.2键盘接口电路.................................4
5.3LED显示电路.................................6
5.4八段数码管原理...............................7
第六章总设计原理.....................................8
6.1方波发生器的原理与功能.......................8
6.2键盘控制原理................................9
6.3程序框图....................................9
6.4方波波形显示...............................11
第七章程序设计......................................13
第八章心得体会......................................29
参考文献.............................................29
第一章摘要
作为微型计算机的一个重要分支,单片微型计算机(简称单片机)自20世纪70年代问世以来,已广泛地应用在工业自动化、自动化检测与控制、智能仪器仪表、机电一体化设备、汽车电子、家用电器等各个方面。
本设计是一个以单片机为核心的方波发生器,通过对键盘输入电路、波形的输出电路、显示电路的设计已经程序的编程,实现通过键盘改变方波占空比和频率,并显示波形频率的功能。
第二章引言
单片机具有性价比高、集成度高、体积小、可靠性好、控制功能强、低电压、低功耗、通用灵活等优点,广泛应用于卫星定向、汽车火化控制、交通自动管理等方面。
Inter公司的mcs-51单片机虽然仍然是6位的单片机,但其功能有很大的增强,此外他还具有品种全、兼容性强、软硬件资料丰富等有点,因为此应用十分广泛,直到现在mcs-51仍为单片机中的主流机型,也是高档单片机的基础。
本课题讨论的方波发生器的核心就是51系列单片机。
第三章设计概述
基于单片机的占空比可调方波发生器的设计,是通过单片机控制一个有特殊功能的信号发生芯片,可以产生一系列有规律的幅度和频率可调的波形。
通过键盘可以改变方波的占空比和频率,并显示波形的频率。
设计的基本要求是:
设计键盘输入电路、波形的输出电路、显示电路(4位数码管);编制相应程序。
使用按键来进行调节频率和占空比,不同的频率及占空比可以使用不同的按键来实现,而以键盘扫描来实现各键的不同功能;显示部分使用LED数码管来实现。
由此即可构成一个最小单片机应用系统。
第四章方案介绍
基于MCS—51单片机8051芯片所设计的可以实现键位与数字动态显示的一种频率,占空比可调方波发生器。
设四位数码管显示频率范围为1HZ-9999HZ,可任意取10HZ、25HZ、50HZ、100Hz、200Hz,占空比任意取20%、40%、50%、60%、80%等值。
通过对键盘上按键的操作完成对所取频率值,占空比的调用,以达到改变当前频率值,占空比的目的,并使用其八段数码管显示。
单片机对键位进行扫描,确定键位的输入,根据程序设计要求,数码管显示频率以及占空比的数值,方波发生器输出以数码管显示的数值为频率和占空比的方波。
基于以上思路,可进行如下功能扩展:
由于伟福2000仿真实验箱共有6位数码管,显示频率用其中4位,余下2位进行占空比显示。
键盘部分使用4*4键盘中的其中4个按键,其功能分别为:
频率增大、频率减小、占空比增大、占空比减小。
按键每按下一次,当前频率或占空比转向下一选定的频率或占空比值。
单片机通过输出方波控制数码管的显示,数码管显示当前所调换到的频率及占空比,并向外输出所示频率和占空比的方波。
最后,可采用示波器观察方波波形。
第五章构件以及原理
5.1程序流程
简单的流程为:
主程序扫描键盘,将设置信息输入,处理后,输出到LED显示器显示。
单片机用到了定时器0,分别进行频率与占空比的定时,工作在方式1。
计算定时器初值的公式如下:
N=2^m-FOSC/12×T
根据计算定时器初值的公式,所要装入的初值。
频率及占空比的显示电路由74374和74245构成的驱动电路和LED数码显示管组成,利用六个数码管来显示,有四位是用来显示频率的,有两位是显示占空比的。
此电路的键盘由四个功能键(调节频率与占空比的增减)组成,其特殊之处在于利用外部中断实现键盘扫描。
功能键有两种种状态,一种为正顺序调换,根据所取值顺向增大的特点,此时为增大调节;另一种为逆顺序调换,同理,此时为减小调节。
频率和占空比各有一组增大及减小的功能键。
5.2.键盘接口电路
方案一:
独立式键盘
一个具有4个按键的独立式键盘,每一个按键的一端都接地,另一端接MEGA16的I/O口。
独立式键盘每一按键都需要一根I/O线,占用MEGA16的硬件资源较多。
因此独立式键盘只适合按键较少的场合。
键盘是一组按键或开关的集合,键盘接口向计算机提供被按键的代码。
特点:
使用方便、结构复杂、成本高。
方案二:
矩阵式键盘
我们采用4×4矩阵式键盘,矩阵式键盘由多个按键组成的开关矩阵,当键盘上没有键闭合时,所有的行线和列线断开,行线呈高电平。
当键盘上某一个键闭合时,该键所对应的行线与列线短路。
例如,K0键按下闭合时,行线X0和列线Y0短路,此时X0的电平由Y0的电平所决定。
图1键盘控制LED连接原理图
其按键识别可用扫描法完成。
具体方法如下:
(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响应键盘发出的中断请求,对键盘进行扫描,以识别哪一个键处于闭合状态,并对键输入信息作相应处理。
5.3.LED显示电路
方案一:
静态显示方式
当显示器显示某一个字符的时候,相应的发光二极管恒定地导通或截止。
例如,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口。
5.4.八段数码管原理
数码管内部由8个发光发光二极管组成,排成一个8字,可以组成0到9数字以及A-F字符的表示形式。
、
图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
图4键盘及数码管显示电路
第六章总设计原理
6.1、方波发生器的原理与功能
方波发生器的总体原理方框图如下图所示:
图5总原理方框图
由于系统的要求不高,比较单一,再加上我们是通过定时器来调节频率的,这样仅用键盘、8051芯片及数码显示管便可完成设计,达到所要求实现的功能。
6.2键盘控制原理
通过键盘的控制,实现频率和占空比的变化。
本设计选用前四个数码管显示频率,后两个数码管显示占空比。
其中,用a键和b键控制占空比的变化:
每按一下a键,占空比就按照调高的顺序正向变化一个数字,每按一下b键,占空比就反向变化。
用c键和d键控制频率的变化,每按一下c键频率就按着调高的顺序正向变化到下一个数值;每按一下d键,频率就反向变化到另一个数值。
表2频率---占空比---按键对照表
频率
占空比
c
d
a
D
+上
_下
+上
_下
6.3程序框图
图6程序框图
初始化后单片机产生初值,将初值以动态扫描的方式显示于八段数码管,同时还对键盘进行实时扫描。
在扫描后,单片机读取键值,并将键值通过数码管模块显示出来,方波发生器输出该频率,占空比的方波.
表3频率(HZ)-程序代码对照表
编辑代码1
00H
3FH
06H
3FH
显示频率1(HZ)
0
0
1
0
编辑代码2
00H
3FH
5BH
6DH
显示频率2(HZ)
0
0
2
5
编辑代码3
00H
3FH
6DH
3FH
显示频率3(HZ)
0
0
5
0
编辑代码4
00H
06H
3FH
3FH
显示频率4(HZ)
0
1
0
0
编辑代码5
00H
5BH
3FH
3FH
显示频率5(HZ)
0
2
0
0
表4占空比(%)-代码对照表
编辑代码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
6.4方波波形显示
图6.4.1频率50HZ占空比60%
图6.4.2频率100Hz占空比50%
图6.4.3频率50Hz占空比50%
图6.4.4频率25Hz占空比20%
图6.4.5频率25Hz占空比20%
第七章程序设计
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键
DB0FH,02H,05H,08H;0CH频率调高,对应键盘上的C键
DB00H,01H,04H,07H;0DH频率调低,对应键盘上的D键
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%
DB0F0H,060H,0C1H,080H;25HZDUTY20%
DB0E0H,0C0H,0D1H,020H;25HZDUTY40%
DB0D8H,0F0H,0D8H,0F0H;25HZDUTY50%
DB0D1H,020H,0E0H,0C0H;25HZDUTY60%
DB0C1H,080H,0F0H,060H;25HZDUTY80%
DB0F8H,030H,0E0H,0C0H;50HZDUTY20%
DB0F0H,060H,0E8H,090H;50HZDUTY40%
DB0ECH,078H,0ECH,078H;50HZDUTY50%
DB0E8H,090H,0F0H,060H;50HZDUTY60%
DB0E0H,0C0H,0F8H,030H;50HZDUTY80%
DB0FCH,018H,0F0H,060H;100HZDUTY20%
DB0F8H,030H,0F4H,048H;100HZDUTY40%
DB0F6H,03CH,0F6H,03CH;100HZDUTY50%
DB0F4H,048H,0F8H,030H;100HZDUTY60%
DB0F0H,060H,0FCH,018H;100HZDUTY80%
DB0FEH,00CH,0F8H,030H;200HZDUTY20%
DB0FCH,018H,0FAH,024H;200HZDUTY40%
DB0FBH,01EH,0FBH,01EH;200HZDUTY50%
DB0FAH,024H,0FCH,018H;200HZDUTY60%
DB0F8H,030H,0FEH,00CH;200HZDUTY80%
DutyMAP:
DB5BH,66H,6DH,7DH,7FH;数码管上显示的占空比数字20%40%50%60%80%
FrenqMAP:
DB3FH,06H,3FH;10HZ对应的显示码
DB3FH,5BH,6DH;25HZ
DB3FH,6DH,3FH;50HZ
DB06H,3FH,3FH;100HZ
DB5BH,3FH,3FH;200HZ
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
MOVR1,#06H;共6个八段管
MOVR2,#20H;从左边开始显示
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
RE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机课设 方波发生器 单片机 方波 发生器