




已阅读5页,还剩71页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微控制器系统设计与应用 刘燎原 江苏建筑职业技术学院 回顾 一 动态显示1 什么是动态显示2 动态显示步骤1个数码管步骤 1 送段值 2 送位选 公共端 3 延时 4 关闭3 加驱动方法三极管锁存器 实验总结 实验板数码管动态显示 假设要求第一个数码管先显示百位 例如2 则 1 送段值 P0输出段值5BH P2 6 1 数据进入 P2 6 0 数据锁存 段值送入数码管的段值端 2 送位选 P0输出位选值FEH P2 7 1 数据进入 P2 7 0 数据锁存 位选值送入数码管的位选端 3 延时其他两个数码管类似这三个步骤 回顾 二 中断1 中断源5个2 中断优先级2个3 外部中断P3 2 P3 34 外部中断寄存器IE EA EX0 ET0 EX1 ET1 ESTCON IE0 IT0 IE1 IT1IP PX0 PT0 PX1 PT1 PS中断程序如何编写 Voidmain 中断初始化 一边做平时的工作 一边等待中断来 Void名字 interrupt0 3 要求CPU做的事情 项目四倒计时 单片机定时计数器 上节课复习举出生活中中断的例子 中断过程包括哪几个步骤 中断请求 中断响应 中断处理 中断返回单片机内有哪个中断源 外部中断 2内部中断 3 定时器 计数器导入 单片机应用系统中定时计数的需求 如用单片机控制的打铃器 空调的定时开关 啤酒自动生产线上对酒瓶的计数装置等 以实现定时控制 以实现对外界事件进行计数 用到定时 计数实现定时 实现方式 1 软件定时 延时程序 占用CPU2 不可编程硬件定时 555 3 可编程定时 8253 单片机定时 计数器 AT89S51内部有两个定时 计数器定时 计数器到底是什么 一 定时 计数器概述1 核心定时 计数器的核心部件是16位二进制加1计数器 TH0 TL0或TH1 TL1 特性 1 每来一个计数脉冲信号 T0或T1会在原来计数值 或初值 的基础上加1 2 直到计满 再来一脉冲 计数值清0 会发生溢出 向CPU发出中断请求 告诉CPU这次计数结束 再开始下一轮计数 这就像闹钟定时的时间一到 闹钟就会响一样 2 计数和定时有什么不同类比生活中计数 定时 定时1分钟 所以定时也是一种计数 16位加1计数器 21H 1 3 单片机中的定时 计数器两个定时 计数器分别叫T0 T1计数脉冲从哪来 当需要计数时 计数脉冲来自于外部脉冲源 P3 4 P3 5 当需要定时时 计数脉冲来自于系统机器周期 时钟振荡器经12分频以后的脉冲信号 1 计数器对外部信号计数 外部计数脉冲从T0 P3 4 和T1 P3 5 输入 开关接在下面 来一个脉冲 下降沿 将加1计数 脉冲信号 2 定时器定时器也是一种计数器 开关接在上面 计数脉冲信号是振荡器经过12分频后信号 这是什么信号 振荡器 晶振 的12分频信号 如果晶振为12MHZ 则计数脉冲信号T 12 1 12M 1uS 机器周期 即定时就是每过一个机器周期 1uS 计数器加1 直至计满溢出 定时结束 定时器的定时时间与晶振频率和计数次数 初值等有关有关 若计数器对此信号计数100次 则定时时间 100 1 s 100 s 脉冲信号 单片机如何定义定时或计数功能 单片机定时或计数的初值怎么设置 编程设定 单片机定时中断相关的寄存器设置单片机处理定时中断的各种情况 与定时 计数有关的特殊功能寄存器 定时器 的高 位 低 位 存放 计数值 定时器 的高 位 低 位 存放 计数值 定时控制寄存器 定时方式寄存器二 定时 计数器的相关寄存器 工作方式寄存器 定时器方式寄存器TMOD的作用是设置T0 T1的工作方式 TMOD的格式 各位的功能说明 1 M1 M0位 工作方式选择位 1 M1 M0位 工作方式选择位 2 计数 定时功能选择位 0 设置为定时器方式 计数器的输入是内部时钟脉冲 其周期等于机器周期 实际上是对机器周期进行计数 从计数值可以求得计数的时间 所以称为定时器模式 1 设置为计数器方式 计数器的输入来自T0 P3 4 或T1 P3 5 端的外部脉冲 对外部输入引脚T0 P3 4 或T1 P3 5 的外部脉冲 负跳变 计数 允许的最高计数频率为晶振频率的1 24 3 GATE 门控位 用于控制定时器的启动是否受外部中断源信号的影响 GATE 0 定时的启动与外部中断无关 把TCON寄存器中的TR1 TR0 置1即可启动定时器1 定时器0 常用 GATE 1 由控制位TR1 TR0 和引脚INT0 INT1 共同控制启动 只有在没有外部中断请求信号的情况下即外部中断引脚INT0 INT1 引脚 1时 把TR1 TR0 置1才能定时器启动 用于检测低电平时间 例如 要设定T0工作在定时方式2 TMOD 0X02 不能位寻址 0 0 定时器 计数器控制寄存器TCONTF0 TF1分别是定时器 计数器T0 T1的溢出标志位 加法计数器计满溢出时硬件自动置1 申请中断 对该标志位有两种处理方法 一种是以中断方式工作 即TF1置1并申请中断 响应中断后 执行中断服务程序 并由硬件自动使TF1清0 另一种以查询方式工作 即通过查询该位是否为1来判断是否溢出 TF1置1后必须用软件使TF1清0 TR1 TR0分别是定时器 计数器T1 T0的定时器1启停控制位 GATE 0时 用软件使TR1置1即启动定时器1 若用软件使TR1清0则停止定时器1 GATE 1时 用软件使TR1置1的同时外部中断INT1的引脚输入高电平才能启动定时器1 所以初始化时 只涉及到TR0 1例 启动TR0 TCON属于特殊功能寄存器 地址能被8整除 所以可位操作 这里用位操作方便 TR0 1 寄存器总结 3个特殊功能寄存器IETMODTCON导入 例如要求单片机检测计数200个脉冲信号 定时器 计数器用于定时或计数时 必须按照需要给计数器设置初值 定时器 计数器在计数初值的基础上以加1的方式进行计数 在计数器从全1变为全0时 将自动产生溢出中断请求 表示此次定时 计数结束 计数初值怎么设置 定时 计数器有四种工作方式 实际使用中应用选择哪种 三 定时 计数器的计数容量及初值1 最大计数容量 次数 最大计数容量与计数器的二进制位数有关 关系为2N举例 若为2位计数器 00 01 10 11 最大计数值为2N 42 计数初值计数不一定是从0开始 这要根据需要来设定 这个预先设定的计数起点值称为计数初值 FFFFH最大计数容量初值0000H计数值 初值 最大计数容量举例 一个杯子的总容量为最大计数容量 已经装了少量的水为初值 还能装多少水位计数值 四 定时 计数器的工作方式MCS 51单片机的T C有4种工作方式 分别由TMOD寄存器中的M1 M0两位的二进制编码所决定 1 方式013位计数器在方式0下 T0和T1工作在13位的定时 计数器方式 由TH的高8位和TL的低5位组成 当T1的低五位TL1计满时向它的高八位TH1进位 当T1的13位计数器加到全部为1以后 再加1就产生溢出 这时置TCON的TF1为1 同时把计数器全部变0 然后从0开始继续计数 计数值范围 0 1111111111111 8191 最大计数容量213 8192如计数值为N 则置入的初值X为 X N 8192例如 若定时 计数器T0的计数值为1000 则初值为7192 把初值转换成二进制数为1110000011000B 则TH0 11100000B TL0 00011000B 脉冲信号 2 方式116位计数器在方式1下 T0和T1工作在16位的定时 计数器方式 由TH的高8位和TL的低8位组成 当T1的低8位TL1计满时向它的高八位TH1进位 当T1的16位计数器加到全部为1以后 再加1就产生溢出 这时置TCON的TF1为1 同时把计数器全部变0 然后从0开始继续计数 最大计数次数216 65536如计数值为N 则置入的初值X为 X N 65536如定时 计数器T0的计数值为1000 则初值为65536 1000 64536 把初值转换成二进制数为1111110000011000B 则TH0 11111100B TL0 00011000B 脉冲信号 3 方式28位自动重装初值计数器在方式2下 TL0用作8位计数器 TH0用作初值寄存器 当T1的8位计数器加到全部为1以后 再加1就产生溢出 这时置TCON的TF1为1 同时 TH1中的初值装入TL1TL1又从初值开始计数 最大计数次数28 256如计数值为N 则置入的初值X为 X N 256如定时 计数器T0的计数值为100 则初值为256 100 156 把初值转换成二进制数为10011100B 则TH0 TL0 10011100B 脉冲信号 特别适合于产生比较精确的连续脉冲信号 4 方式32个独立的8位计数器方式3只适用于定时器T0 TL0既能作定时器也能作计数器使用 而TH0只能作定时器使用而不能作计数器使用 比较 方式0 1 2 1 3种方式的最大区别是计数位数不同 13 16 8 所以最大计数值或定时时间也不同 2 工作方式0和工作方式1的特点就是计数溢出后 计数器变为全0 因而循环定时或循环计数应用时就存在反复设置初值 工作方式2具有自动重装载功能 即自动加载计数初值 以方式1为例 16位 最大计数容量65536如果采用12 的晶振 对应的脉冲周期是 微秒 计满65536个脉冲所对应的时间就是65 536ms 计数 只要用预置数的方法先在计数容器内存入一个初值 如我们要计100次 那就存入65436初值 只要再来100个脉冲 就刚好会溢出 引发中断 那么 定时初值计算 五 定时 计数初值计算由计数值 计数初值 最大计数容量 得到 计数值 计数初值 机器周期 最大计数容量 机器周期计数次数 机器周期 计数初值 机器周期 最大计数容量 机器周期定时时间 计数初值 机器周期 最大计数容量 机器周期即定时时间 最大计数容量 初值 机器周期所以 定时初值 最大计数容量 定时时间 机器周期 2N 定时时间 机器周期不同工作方式的定时初值或计数初值的计算方法如下表所示 举例 定时1秒 晶振12MHZ 方式1 初值为多少 如何产生1秒定时信号 晶振12MHZ 机器周期1us4种工作方式中 最大计数容量是方式1 65536则65536us 65 536ms所以定1次不够那就定多次 累计在一起 构成1秒那选择T0 工作在方式0 一次定时50ms 循环20次初值多少 TH0 0 x3c TL0 0 xb0 所以 在用到定时中断之前 要先用指令来设置相关寄存器的初始值 来设定定时中断的条件 定时中断的初始化 五 定时程序的编写1 程序结构几个程序 回忆中断定义两个程序 主程序 定时中断服务子程序voidmain void名字 interrupt中断号 注意 名字 自己随意取 中断号 0 4定时中断 中断号是1或32 这两个程序分别做什么结合一个例子看一下 例1 发光二极管每隔1秒闪烁1次 要求用中断方法设计实现1s的闪烁解 程序的结构 中断方式 查询方式 如何产生1秒定时信号 T0一次定时50ms 循环20次确定工作方式 计算初值用到定时中断 需要定时中断初始化 设置寄存器的值 放在主程序平时做的事情 等待1次50ms定时结束 放在主程序定时时间到 有中断请求时 灯闪烁 返回平时状态 放在定时中断服务程序voidmain 定时中断初始化等待1次50ms定时结束 void名字 interrupt中断号 重新赋初值灯闪烁 includesbitled P1 0 unsignedcharm 0 voidmain P1 0 xff EA 1 中断初始化ET0 1 TMOD 0 x01 TH0 0 x3c TL0 0 xb0 TR0 1 while 1 等待中断 一次50ms 来 voidlsd interrupt1 TH0 0 x3c 重新赋初值TL0 0 xb0 if m 19 判断是否1S到 led led m 0 看仿真 总结 这两个程序分别做什么1 主程序 1 在产生定时中断请求前 即主程序中完成定时中断初始化 设置3个寄存器 a 确定定时器 计数器的工作方式 确定方式控制字 并写入TMOD b 预置定时初值或计数初值 根据定时时间或计数次数 计算定时初值或计数初值 并写入TH0 TL0或TH1 TL1 c 根据需要开放定时器 计数器的中断 给IE中的相关位赋值 d 启动定时器 计数器 给TCON中的TR1或TR0置1 2 CPU平时做的事情2 定时中断服务程序定时时间到时要做的事情 例2 设晶振频率fOSC 12MHz 使用定时器1以方式1产生周期为400 s的方波脉冲 并由P1 0输出 试以中断方式实现 要产生400 s的方波脉冲 只需在P1 0端以200 s为间隔 交替输出高低电平即可实现 为此 定时间应为200 s 定时时间一到 对P1 0端做取反操作即可 主程序 定时中断初始化定时中断服务子程序 P1 0端做取反 初值重新赋值初值计算 初值 216 T T机 65536 200难点 把初值的十进制转化为4位十六进制 高8位放在TH0 低8位放在TL0简单表达式写法 TH0 65536 200 256 TL0 65536 200 256 includesbitled P1 0 voidmain P1 0 xff EA 1 ET0 1 TMOD 0 x01 T1为方式1TH0 65536 200 256 初值TL0 65536 200 256 TR0 1 启动定时while 1 等待中断 voidlsd interrupt1 TH0 65536 200 256 重新设置初值TL0 65536 200 256 led led 输出取反 例3 流水灯 每隔1秒循环左移点亮 用定时中断来实现 学生讨论 确定编程方案 主程序做什么 定时中断服务程序做什么 include includesbitled P1 0 unsignedcharm 0 n voidmain P1 0 xfe n 0 xfe EA 1 ET0 1 TMOD 0 x01 TH0 0 x3c TL0 0 xb0 TR0 1 while 1 voidlsd interrupt1 TH0 0 x3c TL0 0 xb0 if m 19 n crol n 1 P1 n m 0 例 设计出能够显示时间的电子钟 六位数码管显示 电子钟两个关键 显示方式 数码管显示 动态显示 我们在前面讲过的显示按键次数的例子 秒脉冲如何产生 单片机的T0来定时1S 前面的例子 我们需要对秒脉冲计数 记满60个 为1分钟 再需要对分钟信号计数 记满60个 为1小时 主程序 定时中断初始化显示小时 分钟 秒中断服务子程序 重新赋初值判断1秒到了吗 判断1分钟到了吗 判断1小时到了吗 includeunsignedcharcodesz1 0 xc0 0 xf9 0 xa4 0 xb0 0 x99 0 x92 0 x82 0 xf8 0 x80 0 x90 0 x88 0 x83 0 xc6 0 xa1 0 x86 0 x8e 数码管段值数组unsignedcharsdat 0 0 0 0 0 0 存放小时 分钟 秒的十位 个位的数组unsignedcharwx 0 x01 0 x02 0 x04 0 x08 0 x10 0 x20 6个数码管位选信号数组unsignedcharm 0 sec 0 min 0 hou 0 存放小时 分钟 秒个数的变量voiddelay unsignedinta unsignedchari while a for i 0 i 120 i voiddisp unsignedchari sdat 0 hou 10 小时十位sdat 1 hou 10 小时个位sdat 2 min 10 sdat 3 min 10 sdat 4 sec 10 sdat 5 sec 10 for i 0 i 6 i P2 sz1 sdat i 动态显示4步 送段值P1 wx i 相应的位选有效delay 10 延时P1 0 x00 关闭 voidmain P1 0 x00 关闭显示EA 1 定时中断初始化ET0 1 TMOD 0 x01 TH0 0 x3c TL0 0 xb0 TR0 1 while 1 disp 一边显示 一边等待中断 一次50ms 来 voidlsd interrupt1 TH0 0 x3c 重新赋初值TL0 0 xb0 m if m 20 判断是否1S到 sec m 0 if sec 60 判断是否1分钟到 min sec 0 if min 60 判断是否1小时到 hou min 0 if hou 24 判断是否1天到 hou 0 学生分组讨论以下问题 1 如何设计1S程序 2 把书上的静态改为动态 如何修改电路 程序教师提出问题 那么我们倒计时的硬件电路如何构建 构建好后 如何编写程序呢 总结布置作业1 书上习题2 书上的静态改为动态 实验 设计60秒的倒计时 两位数码管显示 倒计到0时 喇叭报警 基于开发板 项目四倒计时键盘的设计与实现 认识键盘 知识目标 1 掌握键盘的扫描法2 掌握LCD的引脚技能目标 1 掌握按键的检测2 掌握键盘的连接方法3 掌握LCD与单片机的接口 一 基础知识键盘是单片机应用系统中人机交流不可缺少的输入设备 键盘由一组规则排列的按键组成 一个按键实际上是一个开关元件 键盘通常使用机械触点式按键开关 其主要功能是把机械上的通断转换为电气上的逻辑关系 1和0 触点式按键开关 使用时轻轻点按开关按钮就可使开关接通 当松开手时开关既断开 恢复为原来的电平 1 键盘分类 1 独立式按键 2 矩阵按键 二 单个按键1 结构如下图所示 其特点是每个按键单独占用一根I O口线 每个按键工作不会影响其他I O口线的状态 1 按键未按下 输入高电平按键按下 输入低电平 2 上拉电阻保证了有确定的高电平 P0口 P1 P2 P3可不接上拉电阻 外接上拉电阻10K左右 3 使用时 先把对应的输入I O口置1再对该口做读操作 若为1 说明没按下 为0 2 键的可靠输入由于机械触点的弹性作用 在开关闭合及断开的瞬间均有抖动过程 出现一系列电脉冲 然后其触点才稳定下来 其抖动过程如右图所示 这种抖动会影响我们检测按键是否按下 抖动时间的长短与开关的机械特性有关 一般为5 10ms 为了克服按键触点机械抖动所致的检测误判 必须采取去抖动措施 可从硬件 软件两方面予以考虑 在键数较少时 可采用硬件去抖 而当键数较多时 采用软件去抖 在硬件上可采用在键输出端加R S触发器 双稳态触发器 或单稳态触发器构成去抖动电路 如下图所示是一种由R S触发器构成的去抖动电路 当触发器翻转时 触点抖动不会对其产生任何影响 键盘输出经双稳态电路之后变为规范的矩形方波 软件上采取的措施是在检测到有按键按下时 执行一个5ms左右 具体时间应视所使用的按键进行调整 的延时程序 再确认该键电平是否仍保持闭合状态电平 若仍保持闭合状态电平 则确认该键处于闭合状态 同理 在检测到该键释放后 也应采用相同的步骤进行确认 从而消除抖动的影响 3 应用 1 独立按键需检测先按下 再抬起 if S1 0 如果按键按下 delay 5 延时消抖if S1 0 确定按键按下 while S1 0 i 等待按键抬起再做相关操作 例 设计的发声电路 不同频率的脉冲电信号送到扬声器上 会发出不同的声音即不同的音调 DO RE ME 等 音乐就是由不同的频率的脉冲信号组合来构成的 因此如果要播放一首歌曲 只需把一首歌曲的音调对应频率关系弄正确即可 我们可以利用单片机的定时器产生各种不同频率的方波脉冲信号 DO 523HZRE 587HZME 659HZ本次设计中单片机晶振为12MHZ 那么定时器的计数周期为1MHZ 假如选择工作方式1 那T值便为T 65536 5 105 相应的频率 那么根据不同的频率计算出应该赋给定时器的计数值 列出不同音符与单片机计数T0相关的计数值如下表所示 includeunsignedlongcodeyy 64580 64684 64777 64820 64898 64968 65030 sbitK1 P1 0 sbitK2 P1 1 sbitK3 P1 2 sbitK4 P1 3 sbitK5 P1 4 sbitK6 P1 5 sbitK7 P1 6 sbitBEEP P3 0 unsignedchari j m voidmain BEEP 0 P1 0XFF EA 1 ET0 1 TMOD 0 x01 TR0 0 while 1 if K1 0 while K1 0 m 0 TH0 i yy m 256 TL0 j yy m 256 TR0 1 if K2 0 while K2 0 m 1 TH0 i yy m 256 TL0 j yy m 256 TR0 1 if K3 0 while K3 0 m 2 TH0 i yy m 256 TL0 j yy m 256 TR0 1 if K4 0 while K4 0 m 3 TH0 i yy m 256 TL0 j yy m 256 TR0 1 if K5 0 while K5 0 m 4 TH0 i yy m 256 TL0 j yy m 256 TR0 1 if K6 0 while K6 0 m 5 TH0 i yy m 256 TL0 j yy m 256 TR0 1 if K7 0 while K7 0 m 6 TH0 i yy m 256 TL0 j yy m 256 TR0 1 voidlsd interrupt1 TH0 i TL0 j BEEP BEEP 播放音乐实现方法一首歌的简谱 由很多音组成 每个音由音调和节拍组成 才能发出正确的音 1 音频控制向蜂鸣器输出一定频率的脉冲方波信号就能发出某个音调 利用单片机的定时器实现例如 求出 1 音的定时时间建立简谱中每个音调对应的频率数组f 为了使用方便 利用宏定义 把每个音调的频率值定义一下 以下以好人一生平安为例 definel dao262 definel re286 definel mi311 definel fa349 definel sao392 definel la440 definel xi494 definedao523 definere587 definemi659 definefa698 definesao784 definela880 definexi987 defineh dao1046 defineh re1174 defineh mi1318 defineh fa1396 defineh sao1567 defineh la1760 defineh xi1975 unsignedintcodef re mi re dao l la dao l la l sao l mi l sao l la dao l la dao sao la mi sao re mi re mi sao mi l sao l mi l sao l la dao l la l la dao l la l sao l re l mi l sao re re sao la sao fa mi sao mi la sao mi re mi l la dao re mi re mi sao mi l sao l mi l sao l la dao l la dao re l la dao re mi re l la dao re l la dao re mi re 0 xff 2 节拍控制本例简谱的节拍为每分钟72拍 则每拍所需时间 1 72 833ms根据乐谱知识 以第一行的第一小节为例 各个音调的节拍为 2 1拍 需延时833ms32 2个1 4拍 需分别延时208ms1 1拍 需延时833ms6 1 4拍 需延时208ms 根据以上分析 可以取1 4拍 208ms 为1个延时单位 若某个音调为1 2拍 则延时2个单位 以此类推 利用软件延时程序实现 建立简谱中每个音调对应的节拍数组jp unsignedcharcodejp 4 1 1 4 1 1 2 2 2 2 2 8 4 2 3 1 2 2 10 4 2 2 4 4 2 2 2 2 4 2 2 2 2 2 2 2 10 4 4 4 2 2 4 2 4 4 4 2 2 2 2 2 2 10 4 2 2 4 4 2 2 2 2 6 4 2 2 4 1 1 4 10 4 2 2 4 1 1 4 10 3 音调和节拍的联合控制依次从f 数组中读出音调的频率 根据频率计算出定时时间初值 启动定时 发出该频率的音调 该音调的发声时间可由节拍控制 从jp 数组中取出该音调的节拍数 通过调用延时程序控制 3 应用 2 一键多功能例 一上电 全灭 按下按键K1 D1闪烁 再次按下按键K1 D2闪烁 再次按下按键K1 D3闪烁 再按下按键K1 D4闪烁 再次按下K1 灯全灭 如此循环 K1键对应五个功能 我们定义功能号ID为0 1 2 3 4ID 0 灯全灭 ID 1 D1闪烁 ID 2 D2闪烁 ID 3 D3闪烁 ID 4 D4闪烁 include 包含AT89X52 H头文件sbitk1 P3 0 sbitd0 P1 0 sbitd1 P1 1 sbitd2 P1 2 sbitd3 P1 3 voiddelay unsignedinta unsignedchari while a 0 for i 0 i 125 i voidmain unsignedcharid 0 while 1 P1 0 xff delay 200 if k1 0 delay 10 if k1 0 while k1 0 id if id 5 id 0 switch id case0 P1 0 xff break case1 d0 d0 delay 200 break case2 d1 d1 delay 200 break case3 d2 d2 delay 200 break case4 d3 d3 delay 200 break 3 独立式键盘可以用case语句 也可以用if语句 if k1 0 delay 5 if k1 0 while k1 0 i if k2 0 delay 5 if k2 0 while k2 0 i 省略了延时消抖 最好加上 电子琴 7个按键 分别发DOU RE MI FA SOL 电子琴 includeunsignedlongcodeyy 64580 64684 64777 64820 64898 64968 65030 sbitK1 P1 0 sbitK2 P1 1 sbitK3 P1 2 sbitK4 P1 3 sbitK5 P1 4 sbitK6 P1 5 sbitK7 P1 6 sbitBEEP P3 0 unsignedchari j m voidmain BEEP 0 P1 0XFF EA 1 ET0 1 TR0 0 TMOD 0 x01 while 1 if K1 0 while K1 0 m 0 TH0 i yy m 256 TL0 j yy m 256 TR0 1 if K2 0 while K2 0 m 1 TH0 i yy m 256 TL0 j yy m 256 TR0 1 if K3 0 while K3 0 m 2 TH0 i yy m 256 TL0 j yy m 256 TR0 1 if K4 0 while K4 0 m 3 TH0 i yy m 256 TL0 j yy m 256 TR0 1 if K5 0 while K5 0 m 4 TH0 i yy m 256 TL0 j yy m 256 TR0 1 if K6 0 while K6 0 m 5 TH0 i yy m 256 TL0 j yy m 256 TR0 1 if K7 0 while K7 0 m 6 TH0 i yy m 256 TL0 j yy m 256 TR0 1 voidlsd interrupt1 TH0 i TL0 j BEEP BEEP 实验 在上次试验倒计时的基础上 增加三个按键 K1 初值加1 K2 初值减1 K3 开始 三 键盘键盘由一组规则排列的按键组成 一个按键实际上是一个开关元件 1 键盘分类编码键盘 电脑键盘 内部含编码芯片 每按一个键 由编码芯片产生键值 如ASCII码键盘 BCD码键盘非编码键盘 靠软件编程来识别健值的键盘 在单片机的各种系统中 最常用的是非编码键盘 非编码键盘又分为独立式按键和矩阵式键盘 如电话 取款机键盘 2 矩阵式键盘 1 结构单片机系统中 若使用按键较多时 通常采用矩阵式键盘 其结构如下图所示 可以节省I O口 采用行列式结构并按矩阵形式排列 如图所示 在行列的交点上都对应有一个单触点按键 一个4 4的行 列结构 可以构成一个含有16个按键的键盘 无键按下时 各行 列线彼此相交但不相连 当按键被按下时则其交点的行线和列线接通 2 按键原理控制方式 a 先判断是否有键按下 行线都输出低电平 然后读列线的值 若列线都为高电平 说明无键按下 否则 有键按下 b 如有 延时消抖 再判断 确定有键按下 c 再判断哪一键按下 并得到键号 d 等待按键释放 根据键号转向不同的功能程序 3 判断哪个键按下的方法 c步骤 扫描法 一 扫描法 行扫描 1 判别键盘上有无键闭合其方法为 让P3 0 P3 3 行线 全输出0 P3 4 P3 7 列线 作输入口然后读P3口 列线值 若高4位P3 4 P3 7 列线 全为1 则键盘上没有闭合键 若P3 4 P3 7不全为1 则有键处于闭合状态 2 去除键的机械抖动其方法为 当判别到键盘上有键闭合后 延时一段时间再判别键盘的状态 若仍有键闭合 则认为键盘上有一个键处于稳定的闭合状态 否则认为键抖动 3 判别闭合键的键号 逐行扫描 其方法为 对键盘的行线进行扫描 逐行进行扫描 一 扫描法 行扫描 1 判别键盘上有无键闭合 2 去除键的机械抖动 3 判别闭合键的键号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 数学等比数列试题及答案
- 2025年数字出版与电子信息知识考试测试题及答案
- 拍卖基础知识试题及答案
- 西方国家的文化政策对政治的影响试题及答案
- 西方网络政治与公民参与试题及答案
- 今日头条java校招面试题及答案
- 招聘护士试题及答案
- 南瑞集团java面试题及答案
- 2025年建筑材料与结构力学考试题及答案
- 软件设计师考试2025年专业技巧试题及答案
- 2025年事业单位考试(综合管理类A类)职业能力倾向测验试题及解答参考
- 2025年中考物理总复习《压强》专项测试卷含答案
- 2025年云南昆明市禄劝国有资本投资开发集团有限公司招聘笔试参考题库附带答案详解
- 国家开放大学《宣传工作实务》专题测验1-12参考答案
- 萃智创新方法理论考试题库(含答案)
- 洁净室操作规程及管理制度
- 2024年高考真题-地理(河北卷) 含答案
- 中国高血压防治指南(2024年修订版)解读课件
- 平房区全面推进信访工作法治化测试练习试卷附答案
- 湖北省黄冈市(2024年-2025年小学三年级语文)人教版随堂测试(下学期)试卷(含答案)
- 土木工程施工设计报告
评论
0/150
提交评论