单片机矩形波发生器.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机矩形波发生器

单片机系统应用设计 题目:周期脉宽可控式矩形波发生器 (AT89C51) 摘要:矩形波发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。本次设计使用AT89C51单片机构成产生矩形波信号,波形的周期和脉宽可以用程序改变,具有线路简单,结构紧凑等优点。本设计添加了按钮控制和显示功能,可通过按钮设定周期和脉宽,并通过数码管显示出周期和脉宽。设计中如有不足之处请指导老师给与指正。 关键词:51单片机 矩形波 周期 脉宽 功能介绍: (1)矩形波发生器技术指标 波形:矩形波 幅值电压:5V 最小脉宽:10ms 最大周期:2s (2)操作设计:上电后,系统初始化,脉宽数码显示4个0,周期数码管显示4个0,四个按钮分别控制脉宽的加10ms减10ms,和周期的加10ms减10ms,数码管即时显示当前脉宽和周期。 设计思路:方波信号由P3.0引脚发出,分别用AT89C51单片机的两个定时器T0和T1控制方波的脉宽和周期,设置两定时器均为工作方式1,同样写入计数初值0D8F0H,开放中断,允许T0和T1中断,使定时器定时10ms产生定时中断,另外分别用R3和R4寄存器存放定时中断次数,初始状态设P3.0为高电平,定时器T0溢出R3次后信号变为低电平,定时器T1溢出R4次后信号变为高电平,通过两个按钮对R3和R4进行加一和减一操作,实现脉宽和周期的增减,脉宽增按钮接在P0.0引脚,脉宽减按钮接在P0.1引脚,周期增按钮接在P0.2引脚,周期减按钮接在P0.3引脚。在P1和P2口接八个数码管,动态显示脉宽和周期,用查表指令使各数码管显示0~9的十进制数,其中P1口产生控制位选信号,P2口产生控制段码信号。 具体设计: 硬件设计,见硬件结构图。 单片机的内部时钟用12MHZ的晶振电路产生,这样没一个机器周期为1微秒。复位信号由TL7705芯片产生。EA引脚接高电平。P0口第四位分别接四个控制按钮,各串联10K ,上拉电阻,当按键按下,先P0引脚输入高电平。按钮MU接P0.0,控制脉宽增加,按钮MD接P0.1,控制脉宽减少,按钮ZU接P0.2,控制周期增加,按钮ZD接P0.3,控制周期减少。P2引脚接八个数码管的公共端,用于产位选信号,八个数码管的段引脚并联在P2口,P2口产生段选信号。P1.0~P1.3接的四位数码管显示脉宽,P1.4~P1.7接的四位数码管显示周期。 软件设计 (1)主程序和初始化程序的设计 单片机上电或复位后由入口地址进入主程序,主程序指定了单片机运行的流程。首先要条用初始化程序,对单片机进行初始化,然后指定P3.0信号输出的初始状态为高电平,启动定时器,然后调用键盘子程序和数码显示子程序,不断循环扫描。 初始化程序中要设置堆栈空间,设置T0和T1于工作方式1,初值均设08DF0H,开放中断,允许T0和T1中断,设置P0,P1和P2的初始状态为各位全0,设置T0和T1的中断次数初值R3=0,R4=0,再另八个数码管全部显示0。 指定片内单元存放要显示的数字0,设置40H~43H存放脉宽显示数,45H~47H存放周期显示,将40H~47H全部清零,定义TAB表格存放0~9十个数的共阳极显示段码,用查表指令取0的显示段码,送P2口显示,用静态显示显示0。 主程序: ORG 00H LJMP MAIN ORG 0BH LJMP INT0_SUB ORG 1BH LJMP INT1_SUB ORG 0100H MAIN:LCALL CSH_SUB ;调用初始化至程序 SETB P3.0 ;设置输出信号初始状态 SETB TR0 SETB TR0 ;启动定时器 SM_SUB:LCALL KS_SUB LCALL DISP_SUB LJMP SM_SUB ;扫描键盘和显示数码 初始化子程序 CSH_SUB:MOV SP,#6FH ;堆栈空间 MOV TMOD,#11H ;两定时器工作方式1 MOV TH0,#0D8H MOV TL0,#0F0H MOV TH1,#0D8H MOV TL1,#0F0H ;两定时器装定时10ms初值 MOV IE,#8AH ;开放允许中断 MOV P0,#0 MOV P1,#0FFH MOV P2,#0 ;设P0,P1,P2初始状态 MOV DPTR,#TAB ;表格首地址送DPTR MOV A,#0 ;向A送初始值 MOVC A,@A+DPTR ;查表取数 MOV R5,#7 ;设循环次数 MOV R0,#40H ;设源操作数

文档评论(0)

xjj2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档