




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、燕山大学单片机课程设计说明书 燕山大学课 程 设 计 说 明 书 题 目: 方波发生器 学 院: 电气工程学院 年级专业: 10级检测1班 学 号: 100103020012 学生姓名: 李潇 指导教师: 孟 宗 教师职称: 副教授 燕山大学课程设计(论文)任务书院(系):电气工程学院 基层教学单位:仪器科学与工程系 学 号100103020012学生姓名李潇专业(班级)10检测1班设计题目方波发生器设计技术参数设计一个以单片机为核心的方波发生器,通过键盘可以改变方波的占空比和频率,并显示波形的频率。设计要求设计键盘输入电路、波形的输出电路、显示电路(4位数码管);编制相应的程序。工作量设计的
2、内容满足课程设计的教学目的与要求,设计题目的难度和工作量适合学生的知识和能力状况,工作量饱满。工作计划查阅资料进行设计准备、设计硬件电路、编制程序,编制程序、验证设计、撰写任务书。参考资料单片微型计算机接口技术及其应用 张淑清 国防工业出版社单片机原理及应用技术 张淑清 国防工业出版社单片机应用技术汇编指导教师签字基层教学单位主任签字说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。目录第1章 摘要.2第2章 引言.2第3章 设计概述.2第4章 方案介绍.3第5章 构建以及原理.3 5.1程序流程.3 5.2键盘接口电路.4 5.3 LED显示电路.6 5.4八段数码管原理.7第六
3、章 总设计原理.8 6.1方波发生器的原理与功能.8 6.2 键盘控制原理.9 6.3 程序框图.9 6.4 方波波形显示.11第七章 程序设计.13第八章 心得体会.29参考文献.29第一章 摘要 作为微型计算机的一个重要分支,单片微型计算机(简称单片机)自20世纪70年代问世以来,已广泛地应用在工业自动化、自动化检测与控制、智能仪器仪表、机电一体化设备、汽车电子、家用电器等各个方面。本设计是一个以单片机为核心的方波发生器,通过对键盘输入电路、波形的输出电路、显示电路的设计已经程序的编程,实现通过键盘改变方波占空比和频率,并显示波形频率的功能。第二章 引言单片机具有性价比高、集成度高、体积小
4、、可靠性好、控制功能强、低电压、低功耗、通用灵活等优点,广泛应用于卫星定向、汽车火化控制、交通自动管理等方面。Inter公司的mcs-51单片机虽然仍然是6位的单片机,但其功能有很大的增强,此外他还具有品种全、兼容性强、软硬件资料丰富等有点,因为此应用十分广泛,直到现在mcs-51仍为单片机中的主流机型,也是高档单片机的基础。本课题讨论的方波发生器的核心就是 51系列单片机。第三章 设计概述 基于单片机的占空比可调方波发生器的设计,是通过单片机控制一个有特殊功能的信号发生芯片,可以产生一系列有规律的幅度和频率可调的波形。通过键盘可以改变方波的占空比和频率,并显示波形的频率。设计的基本要求是:设
5、计键盘输入电路、波形的输出电路、显示电路(4位数码管);编制相应程序。使用按键来进行调节频率和占空比,不同的频率及占空比可以使用不同的按键来实现,而以键盘扫描来实现各键的不同功能;显示部分使用LED数码管来实现。由此即可构成一个最小单片机应用系统。第四章 方案介绍基于MCS51单片机8051芯片所设计的可以实现键位与数字动态显示的一种频率,占空比可调方波发生器。设四位数码管显示频率范围为1HZ-9999HZ,可任意取10HZ、25HZ、50HZ、100Hz、200Hz,占空比任意取20%、40%、50%、60%、80%等值。通过对键盘上按键的操作完成对所取频率值,占空比的调用,以达到改变当前频
6、率值,占空比的目的,并使用其八段数码管显示。单片机对键位进行扫描,确定键位的输入,根据程序设计要求,数码管显示频率以及占空比的数值,方波发生器输出以数码管显示的数值为频率和占空比的方波。基于以上思路,可进行如下功能扩展:由于伟福2000仿真实验箱共有6位数码管,显示频率用其中4位,余下2位进行占空比显示。键盘部分使用4*4键盘中的其中4个按键,其功能分别为:频率增大、频率减小、占空比增大、占空比减小。按键每按下一次,当前频率或占空比转向下一选定的频率或占空比值。单片机通过输出方波控制数码管的显示,数码管显示当前所调换到的频率及占空比,并向外输出所示频率和占空比的方波。最后,可采用示波器观察方波
7、波形。 第五章 构件以及原理5.1程序流程简单的流程为:主程序扫描键盘,将设置信息输入,处理后,输出到LED显示器显示。单片机用到了定时器0,分别进行频率与占空比的定时,工作在方式1。计算定时器初值的公式如下:N=2m - FOSC/12 × T根据计算定时器初值的公式,所要装入的初值。频率及占空比的显示电路由74374和74245构成的驱动电路和LED数码显示管组成,利用六个数码管来显示,有四位是用来显示频率的,有两位是显示占空比的。此电路的键盘由四个功能键(调节频率与占空比的增减)组成,其特殊之处在于利用外部中断实现键盘扫描。功能键有两种种状态,一种为正顺序调换,根据所取值顺向增
8、大的特点,此时为增大调节;另一种为逆顺序调换,同理,此时为减小调节。频率和占空比各有一组增大及减小的功能键。5.2.键盘接口电路方案一:独立式键盘一个具有4个按键的独立式键盘,每一个按键的一端都接地,另一端接MEGA16的I/O口。独立式键盘每一按键都需要一根I/O线,占用MEGA16的硬件资源较多。因此独立式键盘只适合按键较少的场合。键盘是一组按键或开关的集合,键盘接口向计算机提供被按键的代码。特点:使用方便、结构复杂、成本高。方案二:矩阵式键盘我们采用4×4矩阵式键盘,矩阵式键盘由多个按键组成的开关矩阵,当键盘上没有键闭合时,所有的行线和列线断开,行线呈高电平。当键盘上某一个键闭
9、合时,该键所对应的行线与列线短路。例如,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
10、这一列上有无键闭合。(4)以此类推,最后使列线Y3为低电平,其余的列线为高电平,检查Y3这一列上是否有键闭合。这种逐行逐列的扫描键盘状态的过程称为对键盘的一次扫描。CPU对键盘的扫描可以采取程序控制的随机方式,CPU空闲时才扫描键盘;也可以采取定时控制方式,每隔一段时间,CPU对键盘扫描一次;还可以采用中断方式,当键盘上有键闭合时,向CPU请求中断,CPU响应键盘发出的中断请求,对键盘进行扫描,以识别哪一个键处于闭合状态,并对键输入信息作相应处理。5.3LED显示电路方案一: 静态显示方式当显示器显示某一个字符的时候,相应的发光二极管恒定地导通或截止。例如,7段LED显示器显示数字0时,a、b
11、、c、d、e、f段恒定导通,g段恒定截止。这种显示方式每一位都需要一个8段位输出控制。静态显示时,较小的电流能得到较高的亮度,且字符不闪烁,系统运行过程中,在需要更新显示内容时,CPU才去执行显示更新子程序,这样既节约了CPU的时间,又提高了CPU的工作效率。其不足之处是占用硬件资源较多,每个LED数码管需要独占8条输出线。随着显示器位数的增加,需要的I/O口线也将增加。当显示位数较少时,采用静态显示的方法是合适的。方案二: 动态显示方式当位数较多时,用静态显示所需的I/O口太多,不太经济,一百采用动态显示方法,即用扫描法一位一位的轮流点亮显示器的各个位,对于显示器的每一位来说,每隔一段时间电
12、量一次,利用人眼的视觉暂留效应可以看到整个动态显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度即与导通电流有关,也与点亮时间和时间间隔的比值有关。调整电流和时间参数,可以得到亮度较高且较稳定的显示。动态显示方式中,若显示器的位数不大于8位,则控制显示器各位公共极的电位使他们轮流点亮只需一个I/O口(称扫描口);传送显示器的各位所显示的段选码也需一个8位I/O口(称段数据口)。由于8051单片机本身提供的I/O口有限,因此我们选择方案二动态扫描方式。扫描方式中在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的约1MS,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的
13、印象就是一组稳定的显示数据,不会有闪烁感。节约了电能,节省 了I/O口。5.4八段数码管原理数码管内部由8个发光发光二极管组成,排成一个8字,可以组成0到9数字以及A-F字符的表示形式。、 图2 八段数码管引脚图 图3 八位数码管原理图 表1 显示数字及其所对应的代码显示数字1234程序输入数06H5BH4FH66H显示数字5678程序输入数6DH7DH07H7FH显示数字90AB程序输入数6FH3FH77H7CH显示数字CDEF程序输入数39H5EH79H71H 图4 键盘及数码管显示电路第六章 总设计原理6.1、方波发生器的原理与功能方波发生器的总体原理方框图如下图所示: 图5 总原理方框
14、图由于系统的要求不高,比较单一,再加上我们是通过定时器来调节频率的,这样仅用键盘、8051芯片及数码显示管便可完成设计,达到所要求实现的功能。6.2键盘控制原理通过键盘的控制,实现频率和占空比的变化。本设计选用前四个数码管显示频率,后两个数码管显示占空比。其中,用a键和b键控制占空比的变化:每按一下a键,占空比就按照调高的顺序正向变化一个数字,每按一下b键,占空比就反向变化。用c键和d键控制频率的变化,每按一下c键频率就按着调高的顺序正向变化到下一个数值;每按一下d键,频率就反向变化到另一个数值。表2 频率-占空比-按键对照表频率占空比cdaD+上_下+上_下6.3程序框图 图6 程序框图初始
15、化后单片机产生初值,将初值以动态扫描的方式显示于八段数码管 ,同时还对键盘进行实时扫描。在扫描后,单片机读取键值,并将键值通过数码管模块显示出来,方波发生器输出该频率,占空比的方波. 表3 频率(HZ)-程序代码对照表编辑代码100H3FH06H3FH显示频率1(HZ)0010编辑代码200H3FH5BH6DH显示频率2(HZ)0025编辑代码300H3FH6DH3FH显示频率3(HZ)0050编辑代码400H06H3FH3FH显示频率4(HZ)0100编辑代码500H5BH3FH3FH显示频率5(HZ)0200表4 占空比(%)-代码对照表编辑代码15BH3FH显示占空比(%)20编辑代码2
16、66H3FH显示占空比(%)40编辑代码36DH3FH显示占空比(%)50编辑代码47DH3FH显示占空比(%)60编辑代码57FH3FH显示占空比(%)806.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%第7章 程序设计OUTBIT EQU 08002H ; 位控制口OUTSEG EQU 08004H ; 段控制口IN EQU 08001H ; 键盘读入口Frequency DATA 30H ; 频率等级缓冲区Du
17、ty DATA 31H ; 占空比等级缓冲区TH0_HIGH DATA 32H ; 高电平计数缓冲区,给定时器TH0赋值TL0_HIGH DATA 33H ; 高电平计数缓冲区,给定时器TL0赋值TH0_LOW DATA 34H ; 低电平计数缓冲区,给定时器TH0赋值TL0_LOW DATA 35H ; 低电平计数缓冲区,给定时器TL0赋值Flag DATA 36H ; 高电平低电平转换标志OFFSET DATA 37H; 用来存储偏移量LEDBUF DATA 60H ; 显示缓冲区ORG 0000H LJMP INITORG 000BH LJMP TIMER0ORG 0010HKeyTab
18、le: ; 键码定义 DB 16H, 15H, 14H, 0FFH DB 13H, 12H, 11H, 10H DB 0DH, 0CH, 0BH, 0AH ; 0AH占空比调高,对应键盘上的A键 DB 0EH, 0CH, 0BH, 09H ; 0BH占空比调低,对应键盘上的B键 DB 0FH, 02H, 05H, 08H ; 0CH频率调高,对应键盘上的C键 DB 00H, 01H, 04H, 07H ; 0DH频率调低,对应键盘上的D键FrenqLevel: ; 频率占空比转换表格 ;TH0_HIGH,TL0_HIGH,TH0_LOW,TL0_LOWDB 0D8H, 0F0H, 063H,
19、0C0H ;10HZ DUTY20%DB 0B1H, 0E0H, 08AH, 0D0H ;10HZ DUTY40%DB 09EH, 058H, 09EH, 058H ;10HZ DUTY50%DB 08AH, 0D0H, 0B1H, 0E0H ;10HZ DUTY60%DB 063H, 0C0H, 0D8H, 0F0H ;10HZ DUTY80%DB 0F0H, 060H, 0C1H, 080H ;25HZ DUTY20%DB 0E0H, 0C0H, 0D1H, 020H ;25HZ DUTY40%DB 0D8H, 0F0H, 0D8H, 0F0H ;25HZ DUTY50%DB 0D1H,
20、020H, 0E0H, 0C0H ;25HZ DUTY60%DB 0C1H, 080H, 0F0H, 060H ;25HZ DUTY80%DB 0F8H, 030H, 0E0H, 0C0H ;50HZ DUTY20%DB 0F0H, 060H, 0E8H, 090H ;50HZ DUTY40%DB 0ECH, 078H, 0ECH, 078H ;50HZ DUTY50%DB 0E8H, 090H, 0F0H, 060H ;50HZ DUTY60%DB 0E0H, 0C0H, 0F8H, 030H ;50HZ DUTY80%DB 0FCH, 018H, 0F0H, 060H ;100HZ DUT
21、Y20%DB 0F8H, 030H, 0F4H, 048H ;100HZ DUTY40%DB 0F6H, 03CH, 0F6H, 03CH ;100HZ DUTY50%DB 0F4H, 048H, 0F8H, 030H ;100HZ DUTY60%DB 0F0H, 060H, 0FCH, 018H ;100HZ DUTY80%DB 0FEH, 00CH, 0F8H, 030H ;200HZ DUTY20%DB 0FCH, 018H, 0FAH, 024H ;200HZ DUTY40%DB 0FBH, 01EH, 0FBH, 01EH ;200HZ DUTY50%DB 0FAH, 024H, 0
22、FCH, 018H ;200HZ DUTY60%DB 0F8H, 030H, 0FEH, 00CH ;200HZ DUTY80%DutyMAP:DB 5BH, 66H, 6DH, 7DH, 7FH ;数码管上显示的占空比数字20% 40% 50% 60% 80%FrenqMAP:DB 3FH,06H,3FH ;10HZ 对应的显示码DB 3FH,5BH,6DH ;25HZDB 3FH,6DH,3FH ;50HZDB 06H,3FH,3FH ;100HZDB 5BH,3FH,3FH ;200HZINIT:MOV SP, #40H;更改堆栈指针,避免堆栈与工作寄存器区发生冲突MOV TMOD, #
23、01H ;定时器0方式1MOV TH0_HIGH, #0D8HMOV TL0_HIGH, #0F0HMOV TH0_LOW, #063HMOV TL0_LOW, #0C0HMOV TH0, TH0_LOW;先输出低电平定时器初值 MOV TL0, TL0_LOWMOV Frequency, #00H ;频率初值为10HZMOV Duty, #00H ;占空比初值为20% MOV LEDBuf+5, #3FHMOV LEDBuf+4, #5BHMOV LEDBuf+3, #3FHMOV LEDBuf+2, #06HMOV LEDBuf+1, #3FHMOV LEDBuf, #3FHSETB EA
24、 ;cpu开放中断SETB ET0 ;T0中断允许SETB TR0 ;允许T0计数Main: CALL DisplayLED ; 显示 CALL TestKey ; 是否有键键入 JZ Main ; 无键键入, 继续显示 CALL GetKey ; 有键键入,读入键码 CALL Keyfuction ; 有键键入,调用相应的功能 CALL Changestate ; 根据占空比等级,频率等级的改变转变状态 LJMP MainDisplayLED: ; 显示子程序 MOV R0, #LEDBUF MOV R1, #06H ; 共6个八段管 MOV R2, #20H ; 从左边开始显示Displa
25、yLOOP: MOV DPTR, #OUTBIT MOV A, #00H MOVX DPTR, A ; 关所有八段管 MOV A, R0 MOV DPTR, #OUTSEG MOVX DPTR, A MOV DPTR, #OUTBIT MOV A, R2 MOVX DPTR, A ; 显示一位八段管 MOV R6, #01H CALL DELAY MOV A, R2 ; 显示下一位 RR A MOV R2, A INC R0 DJNZ R1, DisplayLOOP ;循环6次displayloop RETTestKey: ; 检测是否有按键按下 MOV DPTR, #OUTBIT MOV A
26、, #00H MOVX DPTR, A ; 输出线置为0 MOV DPTR, #IN MOVX A, DPTR ; 读入键状态 CPL A ANL A, #0FH ; 高四位不用保留低四位 RETGetKey: ; 有键按下读取键值 MOV DPTR, #OUTBIT MOV P2, DPH MOV R0, #LOW(IN) MOV R1, #20H MOV R2, #06HKeyLoop: MOV A, R1 ; 找出键所在列 CPL A MOVX DPTR, A CPL A RR A MOV R1, A ; 下一列 MOVX A, R0 CPL A ANL A, #0FH ;保留低4位 J
27、NZ GetKeynum ; 该列有键入A不为零 有输入则转移 DJNZ R2, KeyLoop ;循环6次 MOV R2, #0FFH ; 没有键按下, 返回 0FFH SJMP ExitGetKeynum: ; 键值 = 列 X 4 + 行,扫描键盘值 MOV R1, A ;暂存a MOV A, R2 DEC A RL A RL A MOV R2, A ; R2 = (R2-1)*4 MOV A, R1 ; R1中为读入的行值 MOV R1, #04HGetKeynumLoop: RRC A ; 移位找出所在行 JC Exit ;进位标志cy=1转移 INC R2 ; R2 = R2+ 行
28、值 DJNZ R1, GetKeynumLoopExit: MOV A, R2 ; 取出键码 MOV DPTR, #KeyTable MOVC A, A+DPTR MOV R2, A ; 取出键码给R2WaitRelease: MOV DPTR, #OUTBIT ; 等键释放 CLR A MOVX DPTR, A MOV R6, #0AH CALL Delay CALL TestKey JNZ WaitRelease MOV A, R2 RETKeyfuction: MOV B, A ;保存返回的键值 XRL A, #0AH ;对键值进行判断 JZ Key1 ;A键按下 MOV A, B XR
29、L A, #0BH ;对键值进行判断 JZ Key2 ;B键按下 MOV A, B XRL A, #0CH ;对键值进行判断 JZ Key3 ;C键按下 MOV A, B XRL A, #0DH ;对键值进行判断 JZ Key4 ;D键按下 JMP KeyEndKey1: MOV A, Duty XRL A, #04H ;占空比等级是否到4 JZ KEY1_1 INC Duty ;占空比等级调高 JMP KeyEndKey1_1: MOV Duty,#04H ;占空比等级为4,不能再提高 JMP KeyEndKey2: MOV A, Duty XRL A, #00H ;占空比等级是否到0 JZ
30、 KEY2_1 DEC Duty ;占空比等级调高 JMP KeyEndKey2_1: MOV Duty,#00H JMP KeyEndKey3: MOV A, Frequency XRL A, #04H ;频率等级是否到4 JZ KEY3_1 INC Frequency ;频率等级调高 JMP KeyEndKEY3_1: MOV Frequency,#04H ;频率等级为4,不能再提高 JMP KeyEndKey4: MOV A, Frequency XRL A, #00H ;频率等级是否到0 JZ KEY4_1 DEC Frequency ;频率等级调低 JMP KeyEndKEY4_1:
31、 MOV Frequency,#00HKeyEnd: RETChangestate: MOV A,Frequency MOV B,#03H MUL AB MOV B, A ;将频率等级乘上3的偏移量 MOV DPTR,#FrenqMAP MOVC A, A+DPTR MOV LEDBuf+1, A MOV A, B INC A MOV B, A MOVC A, A+DPTR MOV LEDBuf+2, A MOV A, B INC A MOV B, A MOVC A, A+DPTR MOV LEDBuf+3, A MOV A, DUTY MOV DPTR,#DutyMAP MOVC A, A+
32、DPTR MOV LEDBuf+4, A MOV LEDBuf+5, #3FHDutychange: CLR TR0 MOV A, Frequency MOV B, #14H MUL AB ; 将频率等级乘上20的偏移量 MOV OFFSET, A ; 将得到的频率的偏移量保存 MOV A, DUTY MOV B, #04H MUL AB ; 将占空比等级乘上4的偏移量 ADD A,OFFSET ; 得到总的偏移量,频率偏移+占空比偏移 MOV OFFSET,A MOV DPTR,#FrenqLevel ; 查表找出相应的占空比与频率对应的初值 MOVC A, A+DPTR MOVTH0_HIGH, A INC OFFSET MOV A, OFFSET MOVC A, A+DPTR MOVTL0_HIGH, A INC OFFSET MOV A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 有效护理计划制定试题及答案
- 深度剖析2025年卫生资格考试的试题及答案
- 医学研究设计试题及答案解析
- 2025年医师考试值得深入的问题试题及答案
- 行政管理2025年必考知识网点试题及答案
- 行政管理公共预算试题及答案
- 构建执业药师知识体系的试题及答案
- 主管护师临床案例处理试题及答案
- 临床药学服务模式创新探讨试题及答案
- 2025年文化创新试题及答案
- 微机考试试题及答案
- 《甲烷吸附储存技术》课件
- 少先队理论测试题及答案
- 2024年河北省临漳县事业单位公开招聘村务工作者笔试题带答案
- (市质检)莆田市2025届高中毕业班第四次教学质量检测试卷英语试卷(含答案解析)
- 2025物业管理服务承包合同范本
- 企业所得税课件
- 2025年高考政治核心知识总结
- 2025广西中马钦州产业园区投资控股集团限公司招聘49人易考易错模拟试题(共500题)试卷后附参考答案
- 托管中心晚辅老师培训
- 兼职顾问服务合同范本
评论
0/150
提交评论