发光二极管的闪烁显.ppt

上传人:sh****n 文档编号:6438376 上传时间:2020-02-25 格式:PPT 页数:35 大小:273.50KB
返回 下载 相关 举报
发光二极管的闪烁显.ppt_第1页
第1页 / 共35页
发光二极管的闪烁显.ppt_第2页
第2页 / 共35页
发光二极管的闪烁显.ppt_第3页
第3页 / 共35页
点击查看更多>>
资源描述
发光二极管的闪烁显示 案例功能 定时器T0做定时器使用工作在方式0下 控制发光二极管 使发光二极管以亮0 5s后熄0 5s再亮再熄如此反复的形式进行闪烁 本案例中fosc 11 0592MHZ 闪烁周期为1s 相关知识 1 发光二极管的工作特性这个我们在前面以做过介绍 这里就不重述了 要求二极管的初始状态是熄灭的 2 定时器T0 T1的基本结构 工作原理3 定时 计数器0和定时 计数器1的应用设计 2 定时器T0 T1的基本结构 工作原理 T0 T1的组成结构T0 T1的工作方式T0 T1的控制寄存器计算初值的装入 T0 T1的组成结构 T0 T1的结构如图6 1所示 图中i 0 1 表示T0和T1的参数标记 例如TRi就表示T0的控制位TR0和T1的控制位TR1 Ti为单片机的外部引脚T0 T1 INTi也为单片机的外部引脚INT0 INT1 TFi为中断标志位TF0 TF1 C T GATE为特殊功能寄存器TMOD中的两位 TRi TFi为特殊功能寄存器TCON中的二位 从图中可以看出 T0 T1主要由计数输入 计数器 计数溢出管理以及控制逻辑等几个部分组成 图6 1T0 T1的基本结构 定时 计数器的输入有两路 由特殊功能寄存器TMOD的C T位来管理 C T 0时 由振荡频率的12分频后的脉冲进行计数 定时 计数器工作于定时模式 实现的是定时功能 所以定时器的实质是对机器周期进行计数的计数器 C T 1时 对Ti引脚输入的外部脉冲进行计数 定时 计数器工作于计数模式 实现计数器功能 Ti作计数器使用时 引脚Ti用作外部脉冲输入引脚 不能作普通的I O端口使用 其它情况下 可作普通的I O端口使用 计数溢出管理具有使特殊功能寄存器TCON的TFi位自动置1和自动清0的功能 当计数器计数满发生溢出 即计到模值 时 自动使TFi位置1 CPU响应了对应的定时中断并且进入到中断服务程序中后 TFi位被自动清0 TFi位也可以用程序指令清0和置1 控制逻辑由受控开关 特殊功能寄存器TCON的TRi位 TMOD的GATE位 引脚INTi以及门电路组成 控制C 1时 受控开关闭合 计数脉冲被送往计数器计数器对计数脉冲计数 计数器运行 控制C 0时 控制开关断开 计数器停止计数 从图中可以看出 控制C GATE INTi TRi所以 GATE 0时 控制C TRiGATE 1且TRi 1时 控制C INTi实际应用中 常将GATE设为0 用TRi控制计数器的开启和停止 当需要测量外部脉冲宽度时 可将GATE设为1 TRi设为1 外部脉冲从INTi引脚引入 用外部脉冲控制计数器的开启和停止 T0 T1的工作方式 定时 计数器有4种工作方式 方式0 方式1 方式2 方式3 除方式3外 T0和T1的工作状态完全相同 在不同的工作下其计数器的构成不同 在本案例中我们选用工作方式0 所以只对进行详细的介绍 其它的方式在以后的案例中涉及到了我们再做介绍 方式0 13位的工作方式 定时 计数器的结构与图6 1所示的基本结构相同 其中的计数器为13位的计数器 它由Tli的低5位和Thi的8位组成 Tli的高3位无效 定时 计数器工作时 计数脉冲输入至TLi Thi作加1计数 当TLi的低5位发生由11111B变至00000B时 Thi加1 由TLi和Thi组成的13位计数器满后回0时硬件电路自动将TFi置1 T0 T1的控制寄存器 T0 T1的运行受控于特殊功能寄存器TCON和TMOD 1 定时器控制寄存器 TCON 字节地址 88H 图6 3TCON中的结构图 其中 TF1 TR1用于定时 计数器1 TF0 TR0用于定时 计数器0 IE1 IT1用于外部中断1 IE0 IT0用于外部中断0 各位的含义如下 TFi位 定时 计数器回0标志位 也称作定时 计数器中断请求标志位 对应的计数器计数满回0时 硬件电路自动将TFi位置1 并向CPU提出中断申请 CPU响应对应的定时中断 并进入中断服务程序中后 硬件电路自动将TFi清0 TRi位 定时 计数器运行控制位 它与GATE位 INTi引脚一起组合来控制定时 计数器的开启和停止 其详细的控制关系请参考 T0 T1的组成结构 中的有关部分 IEi位 外部中断请求标志 IEi 0外部中断INTi无中断请求 IEi 1外部中断INTi有中断请求 CPU响应了INTi中断后 硬件电路自动将IEi位清0ITi位 外部中断触发方式控制位 ITi 0外部中断INTi用低电平方式触发ITi 1外部中断INTi用下跳沿方式触发单片机复位时 TCON的值为00H 这就意味着上电时T0 T1均被停止 其中TR0和TR1分别用于控制T0和T1的启动和停止 TF0和TF1用于标识T0和T1是否产生溢出中断请求 2 定时器方式寄存器TMODTMOD用于控制T0 T1的运行模式和工作方式 字节地址位89H M1 M0位 工作方式选择控制位 它们的取值组合用来确定定时 计数器的工作方式 M1 M0的取值组合与定时 计数器的工作方式之间的关系如表所示 GATE位 门控位 与特殊功能寄存器TCON的TRi位以及外部引脚INTi的状态组合起来控制定时 计数器Ti开启和停止 其详细的控制方法在 T0与T1的组成结构 中作了介绍 这里不再累述 计算初值的装入 计数初值的求法 计数初值的装入 计数初值的求法 T0 T1开启时 它们的计数器都是在计数初值的基础上作加1计数 当计数满回0时 TFi置1 也就是说 当计数器计到模值时 TFi被置1 计数器发生溢出 此时 计数次数N与计数器的模值M以及计数初值X之间有如下关系M N X不同计数方式下 计数器的模值是不同的 各种计数方式下的模值如下 对于模值为M的计数器 如果要计数N次后发生计数溢出 TFi位置1 则其计数初值X应为 X M N定时 计数器作计数器使用时 一般是已知计数次数要求计数初值 我们可以用上式计算得出计数初值 定时 计数器作定时器使用时 一般是已知定时时间t 要确定计数初值X 由于定时器的实质是对机器周期进行计数 每隔一个机器周期其计数值就加1 因此 若要定时t时间 则计数器的计数次数N为 N t MC fosc t 12式中的MC为机器周期 fosc为晶振的振荡频率 计数初值为 X M N M fosc t 12对于模值为M的计数器 其计数次数N的取值范围为 1 N M 例6 1 设单片机的晶振频率fosc 12MHz 现拟定用T0作1ms定时器 试求其在方式0下的计数初值X 解 定时器的定时长为1ms 则定时器的计数次数N为 N fosc t 12 12 106 1 10 3 12 1000方式0的模值为2000H 所以 计数初值X M N 2000H 1000 1C18H 计数初值的装入 不同的工作方式下 定时 计数器的构成不同 因此其初值的装入方法也不完全相同 在方式0下 计数器为13位的计数器 它由TLi的低5位及THi构成 计数器的低5位二进制数为TLi中低5二进制数 高8位二进制数为THi中的二进制数 因此 在装入计数初值时必须将初值的低5位数装入TLi的低5位中 将初值的高8位数装入THi中 其具体方法是 将计数初值转换成13位的二进制数 截取其高8位二进制数并传送至THi中 截取其低5位二进制数 并在这5位二进制数左端 高位 补上3位任意二进制数后行成一个字节的二进制数 再将此二进制数装入TLi中 实际应用中 一般是高3位补0 例如 假定通过计算求得计数初值为1234H T0采用方式0工作 则把初值1234H转换成13位二进制数为 1001000110100B 截取其高8位二进制数为10010001B 91H 截取其低5位二进制数为10100B 高3位补上0后为00010100B 14H 因此 TH0中应装入91H TL0中应装入14H在方式0下 将计数初装入T0的计数器中的程序段为 MOVTL0 14H 计数初值的低5位数装入TL0中MOVTH0 91H 计数初值的高8位数装入TH0中 3 定时 计数器0和定时 计数器1的应用设计 定时 计数器的应用设计主要是软件设计 包括初始化程序的设计和执行程序的设计两个部分 1 初始化程序的设计 2 执行程序的设计 初始化程序的设计 初始化程序一般安排在系统复位后所要执行的模块程序中 有时为了提高系统的稳定性 也可以将初始化程序的一部分代码安排在系统反复执行的主程序中 初始化程序所要完成的工作是 设置定时 计数器的运行模式 工作方式 计数初值 如果执行程序被安排在定时中断服务程序中 则在初始化程序中还要包括设置定时中断的优先级 开定时中断等 也就是设特殊功能寄存器TMOD TCON THi TLi以及IE IP的值 在实际应用中 一般对TCON IE IP三个特殊功能寄存器采用位操作 只设置与T0或T1有关的位的值 以避免改变其它功能部件的工作状态 例6 2 某实际应用系统需用定时 计数器T0对外部输入脉冲进行计数 每计数满1000个脉冲后 系统就进入定时中断服务程序处相应的处理 现拟定T0采用高优先级中断 试编写出对T0作初始化的子程序INIT T0 分析 依题要求 执行程序放在定时中断服务程序中 T0初始化程序中除了要设置TMOD TCON TH0和TL0的值外 还要开中断和设置定时中断的优先级 T0的计数值N为 N 1000 3E8H28 N 213故可采用方式0 方式1进行计数 现采用方式1计数 则计数初值X为 X 216 1000 10000H 3E8H FC18H因此初始化程序中TL0应装入初始值18H TH0中应装入初始值FCH T0作计数器使用 TMOD应设为 XXX0101B 现取05H 定时中断的优先级 所以PT0 1 程序清单 INIT T0 MOVTMOD 05H 设置T0的工作模式 计数模式 方 式1MOVTL0 18H 设置T0的计数初值 1000MOVTH0 0FCHSETBPT0 T0采用高优先级中断SETBEA 开全局中断SETBET0 开定时 计数T0中断SETBTR0 启动定时 计数器T0RET 执行程序的设计 执行程序所要完成的任务是 定时 计数器中的计数器计数满发生溢出 即定时器定时到或者计数器计数到 时 CPU所要完成的工作 这部分程序无固定的模式 要根据具体情况来作具体处理 计数器计数满发生溢出时 硬件电路会自动地将TFi位置1 并向CPU请求中断 所以执行程序可以放在定时中断服务程序中 也可以放在主程序中 通过查询TFi位值来决定执行程序是否被执行 不过这种结构将要占用CPU的大量时间 单片机的实时性将会下降 在实际应用中尽量少用 将执行程序放在定时中断服务程序中 执行程序的编写实际上就是定时中断服务程序的设计的问题 在设计中要注意以下几方面问题 除方式2外 其它工作方式下 定时 计数器都不具备重装初值的功能 如果定时 计数器在计数满发生溢出时 还需计数 则在定时中断服务程序中需重装计数初值 在方式2下 定时 计数器常作波特率发生器 此时不必编写定时中断服务程序 初始化程序中也不必开定时中断 有关中断服务程序入口地址 000BH是T0的中断服务程序的入口地址 001BH是T1的中断服务程序的入口地址 当T0工作在方式3时 以TH0作计数器的定时中断服务程序的入口地址也是001BH 中断服务程序一般不放在上述入口地址开始的存储空间中而是放在0050H以后的存储空间中 在上述入口地址处一般放一条无条件转移指令 将程序转移到对应的中断服务程序中去 硬件电路 用P1口的8个引脚分别驱动8个发光二极管 二极管的阴极端接P1的各引脚 阳极端通过1K限流电阻接高电平 采用RC复位电路 内部晶振电路 软件编程 1 编程思路 采用T0定时 计数寄存器 设置T0的运行模式为定时模式 工作方式为0方式 设置定时时间为5ms 在T0定时中断服务程序调用100次获得5s延时后 将发光二极管的输入状态取反 2 设计过程 1 主程序部分 选取工作方式0 进行延时5ms的初值计算定时器 计数器的计数初值 8192 5000 11 0592 12 3854 0111000000000B将低5位00000B送入TL0 将高8位01110000送入TH0 设置变量TimCnt 用来统计T0中断服务程序被调用的次数 初值为0 设置T0的运行模式为定时模式 工作方式为0 给TMOD提供的值为00H 开启全局中断令EA 1 开T0中断令ET0 1 启动T0计数令TR0 1 2 T0中断服务程序 T0在0工作方式下 当产生计数溢出后 不具备硬件自动重载功能 所以给T0重置计数初值 即TL0 00H TH0 70H 修改TimCnt变量的值 每调用一次其值加1 判断TimCnt的值是否超过100 若是则表示已经获得延时5s的效果将发光二极管的输入状态取反 否则返回主程序 T0从初值开始重新计数 3 绘制流程框图 主程序流程 定时中断程序 4 编写源程序代码 TIMCNTEQU30HORG0000HAJMPMAINORG000BH T0定时中断程序的入口地址AJMPTIMER0ORG0030HMAIN MOVTH0 70H 给T0提供计数初值MOVTL0 00HSETBET0 允许T0定时中断SETBEA 开启全局中断SETBTR0 启动T0定时MAIN1 ORLPCON 1 让CPU进入休眠状态SJMPMAIN1 TIMER0 MOVTL0 00H 重置计数初值MOVTH0 70HINCTIMCNT 计数值加1MOVA TIMCNTADDA 256 100 9CH 100的补码JNCTM1MOVTIMCNT 0CPLP1TM1 RETIEND 应用总结 1 定时中断的一般步骤1 初始化程序设置之度2 执行程序的编写2 定时 计数和CPU并行工作 既可以降低CPU的功耗 也可以提高CPU的工作效率
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!