【51单片机】矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤 |
您所在的位置:网站首页 › 逐行扫描法键识别步骤 › 【51单片机】矩阵键盘逐行扫描法仿真实验+超详细Proteus仿真和Keil操作步骤 |
【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的工程。
可以输入80C51进行筛选,我用的是第一个80C51。 再找到筛选keypad,我用的是keypad-smallcalc。 接着找LED,选择的是LED-BARGRAPH-GRN,作为输出,也方便调试。 选好的元件就在这了。然后点击就能放置元件。 当然,红色和蓝色的点不是接上线就有的,这是仿真之后的效果。其中,红色是高电平,蓝色是低电平,无色是无电平或脉冲不稳定,黄色为短路。 注意: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 |