简单人机界面实验

单片机实验

27人已加入

描述

简单人机界面实验

一、实验目的
单片机的人机界面指单片机系统和使用人员间交换信息的设备。键盘和显示器件是最
基本的,但也是最重要的人机界面。本实验要求使用按键和数码管编程,实现简单的控制
功能。通过实验要求掌握以下知识要点:
1.复习巩固前面实验中的知识。
2.运用按键和数码管组成简单人机界面。
二、实验内容
根据实际情况选择以下实验内容:
1.实验复习
根据实验掌握情况,复习以前的实验。
2.按键显示实验
使用两个按键控制显示数据,其中一个为“+”,另一个为“-”键,当按一次“+”键
显示数据加1,按一下“-”键显示数据减1。显示数据变化范围:0~9。
程序流程图如下:

图3-9 按键显示程序流程图
程序中用R0 来记录按键的情况,查表显示部分只需把R0 显示在数码管上即可,显示
程序可以参照实验五。在程序初始化中要给R0 赋一个初始值,并把按键所接的I/O 口端置1,作为输入端使用。判断按键是否按下要使用去抖动程序,可以参照实验四。
3.使用红外接收模块检测红外信号源
红外接收模块在接收到红外信号时其输出端为高电平,没有接收到时为低电平。用电
路板的发光二极管D3 来指示是否接收到红外信号,D3 亮没有接收到红外信号,反之则接
收到红外信号。编写程序时可以使用位传送指令和取反指令。程序示例如下:
ORG 0000H
SETB P1.0 ;P1.0 置1,作为输入使用,接红外接收模块
LOOP:MOV F ,P1.0 ;把红外模块的状态传送给辅助标志位F
CPL F ;取反
MOV P1.2,F ;显示
LCALL DELAY ;延时5ms
SJMP LOOP
DELAY: ;延时5ms 字程序
END
思考:① 程序中为什么要调延时程序?是否可以不延时?
② 程序中的取反有何实际意义?
4.按键奇偶判断
编写程序,判断按键显示模块上四个按键中同时被按下的按键个数是奇数还是偶数,
并用发光二极管D4 的亮或灭来显示(奇数亮,偶数灭)。
编程提示:
把所接按键的端口读入,通过与指令去除其中的无效部分后送入累加器ACC,然后直
接判断奇偶校验位。
5.按键数量判断
编写程序,检测同时被按下的按键的数量,并显示出其数值。根据键盘显示模块电路
可知,当按键被按下时对应得I/O 端为低电平,否则为高电平。按键使用的是P3 口的
P3.2~P3.5,检测同时按下的按键数量实际上就是检测这几个I/O 口中为0 的个数。程序流
程图如下:

图3-10 按键数量判断程序流程图

在初始化中要把P3.2~P3.5 置1,作为输入口使用。由于判断的是0 的个数,因此屏蔽
无效位时应采用或运算把无效位都变成1。
程序的关键在于判断ACC 中0 的个数,判断的方法有多种,下面的程序是一种比较
简单的方法:
……
MOV 31H ,#00H ;31H 单元用于记录按键按下的个数。
MOV R1 ,#08H ;循环移位8 次,因为ACC 中有8 位
LOOP:RLC A ;循环左移
JC NEXT ;判断是否为“1”,为“1”跳转
INC 31H ;为“0”时31H 单元加1。
NEXT:DJNZ R1 ,LOOP ;判断循环是否结束
……
以上程序把ACC 中的内容左移8 次,依次移入CY 位中,然后用JC 指令判断CY 位
是否为“0”,如果位“0”,则31H 单元加1。运行结果在31H 单元中,R1 用于设定循环
次数。
思考:如果要统计ACC 中1 的个数以上程序应做何修改?

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分