基于定时器计数器的单片机仿真和C语言开发

上传人:宝路 文档编号:21345166 上传时间:2017-11-23 格式:DOC 页数:22 大小:782.32KB
返回 下载 相关 举报
基于定时器计数器的单片机仿真和C语言开发_第1页
第1页 / 共22页
基于定时器计数器的单片机仿真和C语言开发_第2页
第2页 / 共22页
基于定时器计数器的单片机仿真和C语言开发_第3页
第3页 / 共22页
基于定时器计数器的单片机仿真和C语言开发_第4页
第4页 / 共22页
基于定时器计数器的单片机仿真和C语言开发_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《基于定时器计数器的单片机仿真和C语言开发》由会员分享,可在线阅读,更多相关《基于定时器计数器的单片机仿真和C语言开发(22页珍藏版)》请在金锄头文库上搜索。

1、I摘 要本次能力拓展的要求是要求实现利用定时器中断方式或查询定时器溢出标志方式从P 口输出给定周期的方波。在此基础上,我决定进行一些拓展,使其能实现输出方波的频率和占空比可调。如果以调节变阻器的阻值来实现频率的调节相对来说要麻烦些,所以我们决定用按键来调节频率和占空比,而以键盘扫描来实现各键的不同功能。关键字:定时器;中断;方波11.概述单片机集成度高、功能强、可靠性高、体积小、功耗地、使用方便、价格低廉等一系列优点,目前已经渗入到人们工作和生活的方方面面,几乎“无处不在,无所不为” 。单片机的应用领域已从面向工业控制、通讯、交通、智能仪表等迅速发展到家用消费产品、办公自动化、汽车电子、PC

2、机外围以及网络通讯等广大领域。 单片机有两种基本结构形式:一种是在通用微型计算机中广泛采用的,将程序存储器和数据存储器合用一个存储器空间的结构,称为普林斯顿结构。另一种是将程序存储器和数据存储器截然分开,分别寻址的结构,一般需要较大的程序存储器,目前的单片机以采用程序存储器和数据存储器截然分开的结构为多。 本课题讨论的方波发生器的核心是目前应用极为广泛的 51 系列单片机。其内部包括:(1)一个 8 位的 CPU;(2)4KB 程序存储器 ROM;(3)128 字节 RAM 数据存储器;(4)两个 16 位定时/计数器;(5)可寻址 64KB 外部数据存储器和 64KB 外部存储空间的控制电路

3、;(6)32 条可编程的 I/O 线(4 个 8 位并行 I/O 端口) ;(7)一个可编程全双工串行口;(8)具有两个优先级嵌套接口的 5 个中断源;22.总体设计方案2.1 方案介绍在电子技术领域中,实现方波发生器的方法有很多种,可以采用不同的原理及器件构成不同的电路,但可以实现相同的功能。在此次课设中,微处理器模块使用AT89C51。本设计中用到两个定时器,定时器 0 和定时器 1,其中定时器 0 工作在定时方式下,决定方波的频率;定时器 1 同样工作在定时方式下,用于设定占空比。键盘的操作是通过外中断与单片机共同来控制的,键盘操作来完成按要求对频率与占空比进行调节。P0.7 为方波输出

4、口,它连接一个示波器即可观察输出的方波了。2.2 方波发生器原理与功能方波发生器原理框图如图 2.1 所示:图 2.1 方波发生器原理框图由于系统的要求不高,比较单一的,再加上我们是通过定时器来调节频率的,而非电阻,因此实现起来就相对简化了。仅用键盘、AT89C51 及示波器便可完成设计,达到所要求实现的功能。方波发生器工作原理与功能:简单的流程为:主程序扫描键盘,将设置信息输入,处理后,输出到示波器显示。单片机的晶振为 11.0592MHz,用到了两个定时器,即定时器 0 与定时器 1,分别进行频率与占空比的定时,两个定时器都是工作在方式 1。根据计算定时器初值的公式:(式 2-1)12tf

5、TCoscL计算出定时器 0 与定时器 1 所要装入的初值,然后将工作方式控制字写入 TMOD 寄键盘 AT89C51 单片机频率与占空比调节示波器输出方波3存器,再将 和 寄存器,最后启动定时器,即将 置位。如果工作于中断方式,XTHLXTR需置位 EA(中断总开关)及 (允许定时/计数器中断) ,并编中断服务程序。XET此电路的键盘是由一个状态键,四个功能键(调节频率与占空比的增减)组成,其特殊之处在于利用外部中断实现键盘扫描。状态键有三种状态,当其处于状态 0 时,则其它的键会处于无用状态;当其处于状态 1 时,可通过按四个调节键来调节频率;当处于状态 2 时,按四个调节键中的前两个便可

6、对占空比进行调节了;当处于状态 3 时,又会回到状态 0,此时正常显示方波。43.系统硬件设计3.1 AT89C51 简介单片机是在一块芯片中集成了 CPU、RAM、ROM、定时/计数器和多功能 I/O 口等计算机所需要的基本部件的大规模集成电路,又称 MCU。其以体积小、功能全、性价比等诸多优点而独具特色,在工业控制、尖端武器、通信设备、家用电器等嵌入式应用领域中独占鳌头。如果说 C 语言程序设计课程设计的基础课,那么单片机以其系统硬件构架完整、价格低廉、学生能动手等特点,成为工科学生硬件设计基础课。其管脚图如右图所示。 图 3.1 AT89C51 管脚图3.2 内部振荡电路图 3.2 内部

7、振荡电路8XX51 单片机的时钟信号通常分为内部振荡方式和外部振荡方式。因为此次课设我们用到的是内部振荡方式,所以只对前者进行简单介绍。如图 3.2 所示,在引脚 XTAL1 和 XTAL2 外接晶体振荡器或陶瓷振荡器,就构成了内部振荡方式。由于单片机内部有一个高增益反相放大器,当外接晶体后,就构成了自激振荡器,并产生振荡时钟脉冲。晶振通常选用 6MHz、12MHz 、24MHz。图中 C2 和5C3 起稳定振荡频率,快速起振的作用。电容值一般为 530pF。3.3 复位电路图 3.3 复位电路复位操作完成单片机内电路的初始化,使单片机从一确定的状态开始运行。当 8XX51 单片机的复位引脚

8、RST 出现 5ms 以上的高电平时,单片机就完成了复位操作。如果 RST 持续为高电平,单片机就处于循环复位状态,而无法执行程序,因此要求单片机复位后能脱离复位状态。图 3.3 所示的为上电且开关复位电路,上电后电容充电,使 RST 持续一段时间的高电平,从而实现上电且开关复位的操作。通常选择。kRFC,3013.4 按键接口电路小键盘如图 3.4 所示。它包括 8 个键,系统中用到的键只有 5 个,分别为 S1 键,S2键,S3 键,S4 键,S5 键。其中 S1 键是状态键,采用外部中断控制,用它来确定其它几个键的按键功能,具体作用在前述的系统功能中已做介绍了;另外 4 个键为功能键,是

9、用来调节频率与占空比的。小键盘中引出的 6 根线依次分别接单片机的P1.0、P1.1、P1.2、P1.3、P1.4、P1.5 口。其中 P1.0P1.3 是为键盘列线,P1.4 和 P1.5 是键盘行线。当某个键按下时,由行扫描值和列回馈信号共同形成键编码。6图 3.4 按键接口电路如上所介绍的,按键接口电路采用的是外部中断控制,如图 3.5 所示,P1.0P.14 为4 输入与门输入端,输出端接外部中断 0 控制端 ,当有某一键按下时,由于输入端0INT电平的变化会导致进入 的电平也发生变化,由此将会产生外部 0 中断,达到按键控0INT制的作用。图 3.5 按键控制外部中断电路74.系统软

10、件设计方波发生器的软件设计包括主程序、延时子程序、系统初始化程序、键盘扫描程序、定时器中断子程序。其中主程序用来控制整个程序的执行,它与各子程序紧密相联,共同实现方波发生器各种功能的执行。4.1 系统初始化程序在此程序中,给所有变量赋初值,有键盘扫描口、选择串行口工作方式 SCON、状态标志位 flag、初始频率与占空比及其定时、定时器 0 与定时器 1 的工作方式等。初始化时启动了定时器 0 与定时器 1。4.2 定时器中断子程序void Timer0_PL() interrupt 1 /频率定时器 0 中断 TR1=1; /启动定时器 1,占空比定时TL0=TIMER0_L;TH0=TIM

11、ER0_H;OutPut=1; /输出高电平void Timer1_PL() interrupt 3 /占空比定时器 1 中断 TR1=0; /定时器 1 停止TL1=TIMER1_L;TH1=TIMER1_H;OutPut=0; /输出低电平定时器中断子程序中有定时器 0 与定时器 1 中断,频率定时器 0 中断流程图与占空比定时器 1 流程图分别如图 4.1 和图 4.2 所示。其过程为:(1)定时器 0 遇中断执行的操作有复位,启动自身进行频率定时,同时启动定时器1,进行占空比定时,输出高电平。(2)定时器 1 遇中断,停止自身的计时,输出低电平。如此循环进行从而达到输出方波的目的。84

12、.3 键盘扫描程序键盘扫描用外中断 0 实现,采用的是线反法,键盘扫描采用逐行扫描的方法。当频率可调时,占空比保持原状不变,反之亦然,只能进行单一变量的调节,状态标志 flag 的初始值为 0。(1)频率调节:i=0 时,按键为状态键,此时 flag 加 1,即 flag=1,此时进行频率的调节。可以进行加 1Hz、减 1Hz、加 100Hz、减 100Hz 操作,分别由 S2 键、S3 键、S4 键、S5 键控制。如果按住某个键不放,便会执行连续加值或减值操作。这里的频率的最大值为15000Hz,当频率增至最大值时,还按增值键,此时频率会自动跳到 1Hz 开始继续增加。同理,频率的最小值为

13、1Hz,当减频率减至最小值时,再按减频率键,则频率会跳到15000Hz。(2)占空比调节:当状态值 flag=2 时,此时频率保持不变,进行占空比调节。只可进行加 1 与减 1操作,分别由 S2 键、S3 键控制。要注意的是占空比的初值是 50,我们定义的 ZKB 为定时器 0 中断入口TR1=1重装定时初值输出高电平结束图 4.1 频率定时器 0 中断流程定时器 1 中断入口TR1=0重装定时初值输出低电平结束图 4.2 占空比定时器 0 中断流程950(百分比的分子部分,为一整数) ,故调节占空比时,ZKB 会进行加 1,减 1 操作。ZKB 的最大值为 99,当增到最大值时,便会返回到值

14、 1,如此循环。(3)为了减轻单片机的工作量,在软件设计中采取了这样的措施,在修改参数确定后才进行定时器初值 TC0、TC1 的计算。键盘中断处理子程序流程图与键处理流程图分别如图 4.3、图 4.4 所示:图 4.3 键盘中断处理子程序流程图YNEA=0软件延时消抖外部中断 0 入口键盘扫描,得到键码查表取键值 i实时显示键盘口初始化EA=1结束键处理是否为抖动NY i=1 ZKB+i=2 ZKB-边界处理Flag=2?NYi=0? Flag+=1键处理Y Y i=3 PL+=100i=4 PL-=100i=2 PL-i=1 PL+ 边界处理NFlag=1?YNFlag=3? Flag=0,

15、计算定时器 0和 1 的初值键处理结束图 4.4 键处理流程图105.软件仿真5.1 keil 编译器生成 HEX 文件由于这次能力拓展使用的 C 语言编程,所以不能用 WAVE 软件进行仿真,于是我们选用 keil 编译器进行仿真。主要介绍 C 程序生成 hex 文件的方法:(1)双击打开 Keil uVision3,选择 project 新建工程并保存,在出现的 CPU 对话框中选择 ATMEL 中的 AT89C51 芯片。(2)点击确定生成工程,在 file 菜单中选择新建,新建一个文件,在里面输入自己写的程序代码,并保存。(3)在左面的工程上右击选择 add files to group,将刚开的文件添加的工程,然后同样右键 target 选择 options for target,打开设置,在 output 选项中选择 create hex fil 这一项。(4)点击编译, 以及它后面的生成选项,便可在工程目录下生成 hex 文件。5.2 proteus 软件仿真在生成*.HEX 文件后,进入 Protues 软件,此时软件已自动打开一新建项目。我们可直接在其中构建电路图,点击板面左侧按键 P

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号