【51单片机】矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤

您所在的位置:网站首页 逐行扫描法键识别步骤 【51单片机】矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤

【51单片机】矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤

2024-07-12 02:03| 来源: 网络整理| 查看: 265

【51单片机】矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤 一、环境二、硬件部分1. Proteus新建工程2. 添加元件3.连接线路4、硬件效果 三、软件部分1、Keil5新建工程2、代码:(1 思路分析(2 添加头文件(3 延时程序(4 键盘扫描程序(5 配置按键功能(6 补坑(7 深度补坑(8 程序入口 四、让程序跑起来1、生成.hex文件2、单片机添加程序文件 五、 总结

一、环境

我用的是Keil5做编译工具,用proteus仿真。除了Keil5不知道有没有其他好用的能生成.hex文件的软件(要单片机运行是需要生成.hex文件的),Proteus则是一款很好用的仿真软件,原件很多。当然,之前有试过multisim14,也是非常不错的软件,自带有可以编写代码的文本编辑器,但没找到我想要的原件。所以选择了Proteus。

二、硬件部分

我们可以先打开Proteus: Proteus的开始界面

1. Proteus新建工程

点击开始界面的创建工程,先创建一个Proteus的工程。 在这里插入图片描述 (注意:最好每个项目单独一个文件夹,后期的文件很乱很杂) 工程名写好,选择好文件夹,后面的可以一直下一步。

2. 添加元件

在这里插入图片描述可以直接点红色箭头或者先点击“元件模式”然后点击“P”进入元件库。 在这里插入图片描述

可以输入80C51进行筛选,我用的是第一个80C51。 再找到筛选keypad,我用的是keypad-smallcalc。 接着找LED,选择的是LED-BARGRAPH-GRN,作为输出,也方便调试。 在这里插入图片描述

选好的元件就在这了。然后点击就能放置元件。 在这里插入图片描述

3.连接线路

在这里插入图片描述

4、硬件效果

当然,红色和蓝色的点不是接上线就有的,这是仿真之后的效果。其中,红色是高电平,蓝色是低电平,无色是无电平或脉冲不稳定,黄色为短路。 注意:Proteus的部分原件默认接了电源和接地,所以找不到电源和接地管脚。比如T80C51就是默认了接电源接地,所以没有20、40管脚。

三、软件部分

刚刚完成了硬件部分,和真实的硬件一样,我们都需要有程序才能让单片机工作。现在我们来用Keil5编写程序。虽然课程是用的汇编,但由于个人不太习惯汇编的程序,所以我尝试的是C语言。目标是做成一个简单的计算器。

1、Keil5新建工程

菜单栏的project下的new uVision project,选择好芯片**T80C51,**选择好地址 (可以和Proteus的工程放一个文件夹)。 然后新建一个.c源文件,并把源文件添加到工程的 Source Group内。

2、代码: (1 思路分析

想要做一个计算器,其中有“+、-、*、/ ” 。最开始我想到的是数字和运算符分开存放,然后再处理。后来发现无法预测输入的数字位数(因为每次只能输入一位,也不能像在黑窗口那样回车)。于是我决定把数字变成字符,跟运算符存放在一个char数列里,再分析处理数列,找出数字和运算符。

(2 添加头文件

添加头文件,并设置全局变量。

#include int cro[4] = {0xFE,0xFD,0xFB,0xF7};//存放行值。分别表示是P2.0口低电平,P2.1低电平………… char indata[50];//用于存放键盘输入的字符数列 int len=0;//数列的长度 int fnum=0;//用于存放第一个操作数(处理数列得到的数字) int lnum=0;//用于存放第二个操作数(处理数字得到的数字) int ans=0;//存放计算结果 char op;//存放运算符

这是51单片机的头文件,里面包含了51单片机的存储器、端口等

(3 延时程序

在单片机中延时程序经常用到,延时的方法也很多,有硬件延时、软件延时,汇编中可能会用nop,或者

MOV R0,100 DJNZ R0,$

在C语言中可以通过空循环来延时,就像下面这样。当然也有其他方法。

void delay_ms(int n){ int i,j; for(i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3