找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3571|回复: 1
收起左侧

单片机开关检测、键盘及显示接口实验程序

[复制链接]
ID:869967 发表于 2020-12-29 09:06 | 显示全部楼层 |阅读模式
三、 实验内容与实验过程及分析 (写出详细的实验步骤,并分析实验结果)
流水灯实验步骤:
1、I/O 端口的编程 (1)头文件 对 I/O 端口编程控制时,要对 I/O 端口特殊功能寄存器声明,在 C51 的编 译器中,这项声明包含在头文件 reg51.h 中,编程时,可通过预处理命令 #include。 《单片机原理及应用》教案 使用移位运算符“>>”、“<<”或移位函数_crol_,把送 P1 口显示控制数 据进行移位,从而实现发光二极管依次点亮。编程中一定要把含有移位函数的 头文件 intrins.h 包含在内,编程时,可通过预处理命令#include 。 (2)驱动电路 8 个发光二极管 D0~D7 经限流电阻分别接至 P1 口的 P1.0~P1.7 引脚上, 阳极共同接高电平。
2、软件延时程序编写一个延时 1ms 程序。
void delayms( unsigned char int j)
{
unsigned char i;
while(j- -)
{
for(i=0;i<125;i++)
{;}
}
} 用 for 的内部循环大约延时 8μs,但不是特别精确。不同编译器会产生不 同延时,因此 i 的上限值 125 应根据实际情况进行补偿调整。
  • 单片机最小系统 以 AT89S51 为例,AT89S51 内部有 4KB 闪存,本身就是一个数字量输入/输 出的最小应用系统。在构建 AT89S51 单片机最小应用系统时,AT89S51 单片机 需要外接时钟电路和复位电路即可,如图 1 所示。 注意,本最小应用系统只能作为小型的数字量的测控单元。
图1 AT89S51单片机构成的最小应用系统
#include
#include
void delay() {
unsigned char i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
}
void main()
{
P1=0xfe;
while(1)
{
P1=_crol_(P1,1);
delay();
}
}

电路图为

图2 硬件电路原理图

实验成果截图:

图3实验结果展示

矩阵键盘实验步骤:

  • 判别是否有键按下,识别哪一个键被按下,并求出相应的键值。根据键值,找到相应键值处理程序入口。
  • 按键闭合与否,反应在行线输出电压上就是高电平或低电平,对行线电平高低状态检测,便可确认按键是否按下与松开。为了确保单片机对一次按键动作只确认一次按键有效,必须消除抖动期t1和t3的影响。
  • 在检测到有键按下时,该键所对应的行线为低电平,执行一段延时10ms的子程序后,确认该行线电平是否仍为低电平,如果仍为低电平,则确认该行确实有键按下。当按键松开时,行线的低电平变为高电平,执行一段延时10ms的子程序后,检测该行线为高电平,说明按键确实已经松开。如图3和图4所示
  • 数码管显示由P0口控制,当4×4矩阵键盘中的某一按键按下时,数码管上显示对应键号。例如,1号键按下时,数码管显示“1”;12键按下时,数码管显示“12”等
  • 如果串行通信选用很低波特率(如波特率选为55),可将定时器T1设置
实验代码截图:
图4矩阵代码截图

实验结果图:

图5 矩阵键盘按键结果

电路图:

图6 硬件电路图

四、实验总结(每项不少于20字)
存在问题:1.一开始对于_crol_不是很理解,对于单片机的一些电路图不知道如何去画。
  •    数码管的位选和段选操作不够熟练,对矩阵键盘的行列扫描不够熟练,通过数码管的显示来体现矩阵键盘的扫描
  •    开发板的原理图明晓,导致代码出现错误,
解决方法:查看课本温习移位的理解,进一步敲好代码,对于电路图我选择反复看视频去了解每一个实验的器件。
收获:懂得如何运用_crol_和_cror_左移和右移,以及本次实验应该挑选的实验器材,以及延时函数、主函数这些的相关重点。对矩阵键盘的原理理解加深,学会了通过按键控制数码管的值变化。

以上的Word格式文档51黑下载地址:
文档.doc (882.8 KB, 下载次数: 4)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:869967 发表于 2020-12-29 09:07 | 显示全部楼层
各位这是我刚自学的   请指教
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表