实验四 数码管显示控制_第1页
实验四 数码管显示控制_第2页
实验四 数码管显示控制_第3页
实验四 数码管显示控制_第4页
实验四 数码管显示控制_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

实验四实验四 数码管显示控制数码管显示控制 一 实验目的一 实验目的 1 熟悉 Keil uVision2 软件的使用 2 掌握 LED 数码管显示接口技术 3 理解单片机定时器 中断技术 二 实验设备及仪器实验设备及仪器 Keil Vision2 软件 单片机开发板 PC 机一台 三 实验原理及内容三 实验原理及内容 1 开发板上使用的 LED 数码管是四位八段共阴数码管 将公共端 COM 接地 GND 其内部结构原理图 如图 4 1 所示 图 4 1 共阴四位八段 LED 数码管的原理图 图 4 1 表明共阴四位八段数码管的 位选端 低电平有效 段选端 高电 平有效 即当数码管的位为低电平 且数码管的段为高电平时 相应的段才会 被点亮 实验开发板中 LED 数码管模块的电路原理图 如图 4 2 所示 a h SP2 SP1 P0 0 P0 3 P0 4 P0 7 图 4 2 LED 数码管模块电路原理图 图中 当 P1 0 段控制 有效时 P0 0 P0 7 分别对应到数码管的 a h 段 当 P1 1 位控制 有效时 P0 0 P0 7 分别对应到 DIG1 DIG8 训练内容一 轮流点亮数码管来检测数码管是否正常 参考程序 ORG 00H AJMP MAIN MAIN SETB P1 2 LED 流水灯模块锁存器的控制位 MOV P0 0FFH 关闭 LED 灯 CLR P1 2 SETB P1 3 点阵模块的行控制锁存器 MOV P0 0 关闭点阵行 CLR P1 3 MOV A 11111110B 数码管 位选信号 初值 低电平有效 LOOP SETB P1 1 数码管位控制锁存器有效 MOV P0 A CLR P1 1 RL A 形成新的 位选信号 为选择下一位数码管做准备 SETB P1 0 数码管段控制锁存器有效 MOV P0 0FFH 数码管的所有段点亮 显示 8 CLR P1 0 CALL DELAY SJMP LOOP DELAY MOV R5 0 延时子程序 D1 MOV R6 0 D2 NOP DJNZ R6 D2 DJNZ R5 D1 RET END 训练内容二 静态显示 0 9 计数 参考程序 ORG 00H AJMP MAIN MAIN SETB P1 2 MOV P0 0FFH 关闭 LED 灯 CLR P1 2 SETB P1 3 MOV P0 0 关闭点阵行 CLR P1 3 MOV A 11111110B SETB P1 1 MOV P0 A 数码管 位选 CLR P1 1 MOV DPTR TABLE 初始化表首地址 LOOP MOV R0 0 显示数字从 0 开始 MOV R1 10 显示数字个数 NEXT MOV A R0 MOVC A A DPTR 查表 获取显示字型码 SETB P1 0 数码管段控制锁存器有效 MOV P0 A 显示 CLR P1 0 INC R0 下一个数字 ACALL DELAY DJNZ R1 NEXT SJMP LOOP DELAY MOV R5 0 D1 MOV R6 0 D2 NOP NOP DJNZ R6 D2 DJNZ R5 D1 RET TABLE DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 共阴字码表 0 9 END 训练内容三 动态显示 00 99 计数 动态显示 也称扫描显示 是一种按位轮流点亮各位数码管的显示方式 即在某个时刻 只让其中某一个数码管 位选端 有效 并送出相应的字型显 示码 此时 其他的数码管因 位选端 无效而处于熄灭状态 下一时刻 按 顺序选通另一个数码管 并送出相应的字型显示码 依此规律循环下去 即可 使各位数码管分别间断地显示出相应的字符 由于人眼的 视觉驻留效应 只 要能保证每个数码管显示间断的时间间隔小于眼睛的驻留时间 就可以给人一 种连续显示的视觉效果 在显示位数较多时 动态显示方式可节省 I O 接口资源 硬件电路与静态 显示方式简单 但其显示亮度低于静态显示方式 由于 CPU 要不断地依次扫描 显示程序 将占用 CPU 更多的时间 若显示位数较少 采用静态显示方式更加 简便 参考程序 ORG 00H AJMP MAIN MAIN SETB P1 2 LED 流水灯模块锁存器的控制位 MOV P0 0FFH 关闭 LED 灯 CLR P1 2 SETB P1 3 点阵模块的行控制锁存器 MOV P0 0 关闭点阵行 CLR P1 3 MOV DPTR TABLE 初始化表首地址 START MOV R0 0 显示数据的初值 从数字 0 开始显示 NEXT MOV A R0 MOV B 10 DIV AB 分解将要显示的数据 分为十位 个位 MOV R2 A 十位送 R2 MOV R3 B 个位送 R3 MOV R1 100 每个数字显示的次数 100 次 即更长延时 LOOP VIEW MOV A R2 MOVC A A DPTR 获取十位的显示码 SETB P1 0 MOV P0 A 显示十位 CLR P1 0 SETB P1 1 MOV P0 11111110B 位选 选中显示十位的数码管 CLR P1 1 ACALL DELAY MOV A R3 MOVC A A DPTR 获取个位的显示码 SETB P1 0 MOV P0 A 显示个位 CLR P1 0 SETB P1 1 MOV P0 11111101B 位选 选中显示个位的数码管 CLR P1 1 ACALL DELAY DJNZ R1 LOOP VIEW 每个数字循环显示 R1 次 即延时 INC R0 下一个数字 CJNE R0 100 NEXT 若小于 100 继续计数和显示 若大于 100 则从 0 开始重新计数 SJMP START DELAY MOV R6 25 延时子程序 1ms D1 MOV R7 20 D2 DJNZ R7 D2 DJNZ R6 D1 RET TABLE DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 共阴字码表 0 9 END 训练内容四 利用定时器中断实现 60 秒计时 具有启动按键和清 0 按键 说明 利用定时器 T0 产生 50ms 的延时 即每 50ms 中断一次 计满 20 次 20 50ms 1s 秒计数单元加 1 4 位独立按键电路原理图 如图 4 3 所示 4 位独立按键使用了 P2 4 P2 5 P2 6 P2 7 四位 I O 口 当键按下时 为低电平 因此 可以通过 检测低电平来检测按键是否按下 本实验中 选用 s6 为启动按键 s11 为暂停 按键 A18 为清 0 按键 采用查询法检测按键状态 在按下暂停按键或清 0 按 键后 需重新按下启动按键 才能继续计时 图 4 3 四位独立按键 流程图如图 4 4 4 5 4 6 所示 关闭流水灯 点阵模块 初始化 定时器T0 中断 DPTR 表首地址 T0中断次数20 R0 显示初值0 R1 启动定时器T0 调用数码管显示子程序 暂停定时器T0 启动按键 开始 N N Y 暂停按键 Y 暂停定时器T0 T0中断次数20 R0 显示初值0 R1 N 清0按键 Y 图 4 4 主程序流程图 数码管显示位数2 R3 位选信号初值11111110B R2 显示值R0清0 分别取十位 个位的字型码并显示 延时 显示值R0 60 显示子程序 N Y N R3 1 0 或2位取完 Y 分解成十位 个位 子程序返回 图 4 5 数码管扫描显示程序 保护现场 重新装载T0初值 重置中断次数 R0 20 1s T0中断子程序 N Y 秒单元R1加1 中断返回 图 4 6 T0 中断服务子程序 参考程序 ORG 00H JMP MAIN ORG 0BH JMP TIM0 MAIN SETB P1 2 LED 流水灯模块锁存器的控制位 MOV P0 0FFH 关闭 LED 灯 CLR P1 2 SETB P1 3 点阵模块的行控制锁存器 MOV P0 0 关闭点阵行 CLR P1 3 MOV TMOD 01H 定时器 T0 工作在方式 2 MOV TH0 HIGH 15536 MOV TL0 LOW 15536 初值 50ms MOV IE 82H 开中断 MOV DPTR TABLE 表首地址 MOV R0 20 存放定时器中断的循环次数 MOV R1 0 显示初值 从 0 开始显示 START JB P2 4 IF STOP 启动按键 s6 启动定时器 T0 SETB TR0 启动定时器 T0 IF STOP JB P2 5 IF CLR 暂停按钮 S11 CLR TR0 IF CLR JB P2 6 LED SCAN 清 0 按钮 s18 CLR TR0 MOV R0 20 MOV R1 0 LED SCAN ACALL SCAN 调用显示子程序 SJMP START SCAN 扫描显示子程序 CJNE R1 60 LED VIEW 到 60 则清零 MOV R1 0 LED VIEW MOV A R1 分解数字 MOV B 10 DIV AB MOV 20H B 个位 MOV 21H A 十位 MOV R2 11111110B 位选信号的初值 MOV R3 2 数码管显示 2 位数 MOV A 21H 个位 准备显示 DISP 分别显示十位 个位 MOVC A A DPTR SETB P1 0 MOV P0 A 显示字型码 CLR P1 0 SETB P1 1 MOV P0 R2 输出位选信号 CLR P1 1 MOV A R2 形成下一个位选信号 RL A MOV R2 A CALL DELAY 扫描延时 MOV A 20H 十位 准备显示 DJNZ R3 DISP RET TIM0 定时器 T0 中断子程序 PUSH ACC 现场保护 MOV TH0 HIGH 15536 重新装载初值 TH0 TL0 MOV TL0 LOW

温馨提示

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

评论

0/150

提交评论