单片机课设方波发生器_第1页
单片机课设方波发生器_第2页
单片机课设方波发生器_第3页
单片机课设方波发生器_第4页
单片机课设方波发生器_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

-/燕山大学课程设计说明书题 目: 方波发生器学院:电气工程学院年级专业:10级检测1班学号:100103020012学生姓名:李潇指导教师:孟宗教师职称:副教授-/燕山大学课程设计(论文)任务书院(系):电气工程学院 基层教学单位:仪器科学与工程系精品文档放心下载学号 100103020012 学生姓名 李潇 专业(班级) 10检测1班谢谢阅读设计题目方波发生器设 设计一个以单片机为核心的方波发生器,通过键盘可以改变方波的占空比和频感谢阅读计 率,并显示波形的频率。技术参数设计键盘输入电路、波形的输出电路、显示电路(4位数码管);编制设相应的程序。精品文档放心下载计要求工设计的内容满足课程设计的教学目的与要求,设计题目的难度和工作作量适合学生的知识和能力状况,工作量饱满。精品文档放心下载量工作查阅资料进行设计准备、设计硬件电路、编制程序,编制程序、验证计设计、撰写任务书。感谢阅读划参单片微型计算机接口技术及其应用张淑清国防工业出版社考单片机原理及应用技术张淑清国防工业出版社资单片机应用技术汇编谢谢阅读料指导教师签字 基层教学单位主任签字说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。谢谢阅读-/目录第一章摘要 2第二章引言 2第三章设计概述 2第四章方案介绍 3第五章构建以及原理 35.1程序流程 35.2键盘接口电路 45.3LED显示电路 65.4八段数码管原理 7第六章总设计原理 86.1方波发生器的原理与功能 86.2键盘控制原理 96.3程序框图 96.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段恒定导通,谢谢阅读段恒定截止。这种显示方式每一位都需要一个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显示数字及其所对应的代码显示数字1234程序输入数06H5BH4FH66H显示数字5678程序输入数6DH7DH07H7FH显示数字90AB-/程序输入数6FH3FH77H7CH显示数字CDEF程序输入数39H5EH79H71H图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)-程序代码对照表编辑代码100H3FH06H3FH显示频率1(HZ)0010编辑代码200H3FH5BH6DH显示频率2(HZ)0025编辑代码300H3FH6DH3FH显示频率3(HZ)0050编辑代码400H06H3FH3FH显示频率4(HZ)0100编辑代码500H5BH3FH3FH-/显示频率5(HZ)0200表4占空比(%)-代码对照表编辑代码15BH3FH显示占空比(%)20编辑代码266H3FH显示占空比(%)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%第七章程序设计OUTBIT

EQU08002H ;位控制口OUTSEG

EQU08004H ;段控制口IN

EQU08001H

;键盘读入口Frequency

DATA30H

;频率等级缓冲区Duty

DATA31H

;占空比等级缓冲区TH0_HIGH

DATA32H

;高电平计数缓冲区,给定时器TH0赋-/值TL0_HIGH DATA33H ;高电平计数缓冲区,给定时器TL0赋精品文档放心下载值TH0_LOW DATA34H ;低电平计数缓冲区,给定时器TH0赋精品文档放心下载值TL0_LOW DATA35H ;低电平计数缓冲区,给定时器TL0赋精品文档放心下载值FlagOFFSETLEDBUF

DATA36H ;高电平低电平转换标志DATA37H ;用来存储偏移量DATA60H ;显示缓冲区ORG0000HLJMPINITORG000BHLJMPTIMER0ORG0010HKeyTable:;键码定义DB16H,15H,14H,0FFHDB13H,12H,11H,10HDB0DH,0CH,0BH,0AH;0AH占空比调高,对应键盘上的A键DB0EH,0CH,0BH,09H;0BH占空比调低,对应键盘上-/B键DB 0FH,02H,05H,08H;0CH频率调高,对应键盘上的C感谢阅读键DB 00H,01H,04H,07H ;0DH频率调低,对应键盘上的感谢阅读键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 ;25HZDB3FH,6DH,3FH ;50HZDB06H,3FH,3FH ;100HZDB5BH,3FH,3FH ;200HZ-/INIT:MOV SP,#40H ;更改堆栈指针,避免堆栈与工作寄精品文档放心下载存器区发生冲突MOVTMOD,#01H;定时器0方式1MOVTH0_HIGH,#0D8HMOVTL0_HIGH,#0F0HMOVTH0_LOW,#063HMOVTL0_LOW,#0C0HMOVTH0,TH0_LOW;先输出低电平定时器初值MOVTL0,TL0_LOWMOVFrequency,#00H;频率初值为10HZMOVDuty,#00H;占空比初值为20%MOVLEDBuf+5,#3FHMOVLEDBuf+4,#5BHMOVLEDBuf+3,#3FHMOVLEDBuf+2,#06HMOVLEDBuf+1,#3FHMOVLEDBuf,#3FHSETBEA;cpu开放中断SETBET0;T0中断允许SETBTR0;允许T0计数Main:CALLDisplayLED;显示-/CALLTestKey;是否有键键入JZMain;无键键入,继续显示CALLGetKey;有键键入,读入键码CALLKeyfuction;有键键入,调用相应的功能CALLChangestate;根据占空比等级,频率等级的改变转变状态LJMP MainDisplayLED: ;显示子程序MOV R0,#LEDBUFMOV R1,#06H ;共6个八段管MOV R2,#20H ;从左边开始显示DisplayLOOP:MOV DPTR,#OUTBITMOV A,#00HMOVX @DPTR,A ;关所有八段管MOV A,@R0MOV DPTR,#OUTSEGMOVX @DPTR,AMOV DPTR,#OUTBITMOV A,R2MOVX @DPTR,A

;显示一位八段管-/MOV R6,#01HCALL DELAYMOV A,R2 ;显示下一位RR AMOV R2,AINC R0DJNZ R1,DisplayLOOP ;循环6次displayloop谢谢阅读RETTestKey: ;检测是否有按键按下MOV DPTR,#OUTBITMOV A,#00HMOVX @DPTR,A ;输出线置为0MOV DPTR,#INMOVX A,@DPTR ;读入键状态CPL AANL A,#0FH ;高四位不用保留低四位RETGetKey: ;有键按下读取键值-/MOVDPTR,#OUTBITMOVP2,DPHMOVR0,#LOW(IN)MOVR1,#20HMOVR2,#06HKeyLoop:MOVA,R1;找出键所在列CPLAMOVX@DPTR,ACPLARRAMOVR1,A;下一列MOVX A,@R0CPL AANL A,#0FHJNZ GetKeynum

;保留低4位;该列有键入A不为零有输入则转移DJNZ R2,KeyLoop ;循环6次MOV R2,#0FFH

;没有键按下,

返回

0FFHSJMP Exit-/GetKeynum:;键值=列X4+行,扫描键盘值MOVR1,A;暂存aMOVA,R2DECARLARLAMOVR2,A;R2=(R2-1)*4MOVA,R1;R1中为读入的行值MOVR1,#04HGetKeynumLoop:RRCA;移位找出所在行JCExit;进位标志cy=1转移INCR2;R2=R2+行值DJNZR1,GetKeynumLoopExit:MOV A,R2 ;取出键码MOV DPTR,#KeyTableMOVC A,@A+DPTRMOV R2,A ;取出键码给R2WaitRelease:MOV DPTR,#OUTBIT ;等键释放CLR AMOVX @DPTR,A-/MOV R6,#0AHCALL DelayCALL TestKeyJNZ WaitReleaseMOV A,R2RETKeyfuction:MOV

B,A

;保存返回的键值XRL

A,#0AH

;对键值进行判断JZ

Key1

;A键按下MOV

A,BXRL

A,#0BH

;对键值进行判断JZ

Key2

;B键按下MOV

A,BXRL

A,#0CH

;对键值进行判断JZ

Key3

;C键按下MOV

A,BXRL

A,#0DH

;对键值进行判断JZ

Key4

;D键按下-/JMP KeyEndKey1:MOVA,DutyXRLA,#04H

;占空比等级是否到4JZ KEY1_1INCDuty

;占空比等级调高JMPKeyEndKey1_1:MOVDuty,#04HJMPKeyEnd

;占空比等级为4,不能再提高Key2:MOVA,DutyXRLA,#00H

;占空比等级是否到0JZ KEY2_1DECDuty

;占空比等级调高JMPKeyEndKey2_1:MOVDuty,#00HJMPKeyEndKey3:MOVA,FrequencyXRLA,#04H

;频率等级是否到4-/JZ KEY3_1INCFrequency

;频率等级调高JMPKeyEndKEY3_1:MOVFrequency,#04H

;频率等级为4,不能再提高JMPKeyEndKey4:MOVA,FrequencyXRLA,#00H

;频率等级是否到0JZ KEY4_1DECFrequency

;频率等级调低JMPKeyEndKEY4_1:MOVFrequency,#00HKeyEnd:RETChangestate:MOV A,FrequencyMOV B,#03HMUL ABMOV B,A

;将频率等级乘上3的偏移量-/MOV DPTR,#FrenqMAPMOVCA,@A+DPTRMOV LEDBuf+1,AMOV A,BINC AMOV B,AMOVCA,@A+DPTRMOV LEDBuf+2,AMOV A,BINC AMOV B,AMOVCA,@A+DPTRMOV LEDBuf+3,AMOV A,DUTYMOV DPTR,#DutyMAPMOVCA,@A+DPTRMOV LEDBuf+4,AMOV LEDBuf+5,#3FHDutychange:CLR TR0-/MOV A,FrequencyMOV B,#14HMUL AB

;将频率等级乘上20的偏移量MOV OFFSET,A ;将得到的频率的偏移量保存感谢阅读MOV A,DUTYMOV B,#04HMUL AB

;将占空比等级乘上4的偏移量ADD A,OFFSET ;得到总的偏移量,频率偏移+占谢谢阅读空比偏移MOV OFFSET,AMOV DPTR,#FrenqLevel ;查表找出相应的占精品文档放心下载空比与频率对应的初值MOVCA,@A+DPTRMOVTH0_HIGH,AIN

温馨提示

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

评论

0/150

提交评论