当前位置:网站首页>单片机开发之LCD1602显示实验
单片机开发之LCD1602显示实验
2022-07-30 10:37:00 【华为云】
一、实验题目
3.7 LCD 1602显示实验
二、实验要求
1、画出实验的流程图
2、编写源程序并进行注释
3、记录实验过程
4、记录程序运行结果截图
三、实验过程及结果分析
要求利用LCD1602和16个按键实现简单的十进制数的加减乘除四则运算。其中按键KEY0-KEY9代表数字0-9,按键KEY10-KEY13分别代表运算符+、-、*、/,按键KEY15代表=,按键KEY14代表清除命令。不管什么时候按下清除按键,计算过程均将停止,两个输入变量清零,屏幕将清屏。
LCD1602第一行用于显示所输入的两个计算数以及计算符,第二行用于显示计算结果,结果允许为附属,但输入的两个输入数都必须是双字节正整数范围内的数,即0-32767.除数必须保证不为0,否则将报错。在有余数除法中,必须能同时显示商与余数。
1. 在Proteus 环境下建立图1所示原理图,并将其保存为LCD1602_self.DSN 文件:
图1:实验原理图
2. 编写源程序,将其保存为LCD1602_self.c。运行Keil开发环境,建立工程LCD1602_self.uV2,CPU 为AT89C51,包含启动文件STARTUP.A51。将C 语言源程序LCD1602_self.c 加入工程LCD1602_self.uV2,并设置工程LCD1602_self.uV2 属性,将其晶振频率设置为12MHz,选择输出可执行文件,仿真方式为选择硬仿真,并选择其中的“PROTEUS VSM
MONITOR 51 DRIVER”仿真器。
3. 构造(Build)工程LCD1602_self.uV2。如果输入有误进行修改,直至构造正确,生成可执行程序LCD1602_self.hex 为止,为AT89C51 设置可执行程序LCD1602_self.hex。
4. 运行程序,点击按键输入数据与运算符,计算,观察计算结果,并验证其是否正确,输入过程中,按“清除按键”观察结果,重新输入数据计算并验证。
1)加法:1+2=3,如图2:
图2:加法测试
2)减法:5-3=2,如图3:
图3:减法测试
3)特殊情况:6-9=-3,如图4:
图4:负数减法测试
4)乘法:4*5=20,如图5:
图5:乘法测试
5) 除法:20/5=4,如图6:
图6:除法测试
6) 带余数的除法,如图7:
图7:带余数的除法测试
7) 除法为0报错,如图8:
图8:除法为0报错
8) 清零,如图9:
图9:清零
四、实验流程图
图10:实验流程图
编程时要有一个状态变量,该变量用于记录当前是输入的哪个变量。输入第一个变量,遇到输入运算符时结束第一个变量的输入。输入第二个变量,遇到“=”号时结束第二个变量的输入,并且开始计算结果。
计算结果由于是16 进制的,要将其转换成十进制,并将该十进制的数转换成字符串后逐位显示出来。减法时要注意结果是否为负,除法时要注意除数是否为0,结果是否带有余数。另外,按键要注意去抖动处理。
采用的是逐行扫描,扫描的时候将要扫描的行置0,其余的行置1;扫描过程中,所有的列全部置1,当某一行的其中一个按键被按下,且正好扫描到这一样,那么所在的列将会被置0. 这时只需要;将行与1111相与即可判断那一列为0,即按下了哪一列。也是实验3.6中键盘扫描的基本思路。
五、实验源代码
边栏推荐
猜你喜欢
【HMS core】【FAQ】HMS Toolkit Typical Questions Collection 1
Security思想项目总结
【HMS core】【FAQ】HMS Toolkit典型问题合集1
【 HMS core 】 【 Analytics Kit] [FAQ] how to solve the payment amount in huawei pay analysis shows zero problem?
The configuration process and related syntax of writing markdown format notes in vscode
jmeter接口压力测试-(二)
ESP32CAM 1838接收红外遥控器信号
自适应控制——仿真实验一 用李雅普诺夫稳定性理论设计自适应规律
ABP学习资源整理
Domino Server SSL Certificate Installation Guide
随机推荐
WebAPI 复习
从数据流中快速查找中位数
Drag and drop events, dataTransfer, getBoundingClientRect
Basemap和Seaborn
【 HMS core 】 【 Analytics Kit] [FAQ] how to solve the payment amount in huawei pay analysis shows zero problem?
[100 Solidity Skills] 1. Contract reentrancy attack
还在用Swagger?我推荐这款零代码侵入的接口管理神器
Log4j additivity属性简介说明
优酷VIP会员周卡只需7.5元,看《沉香如屑》用优酷视频
STM32CubeMX configuration to generate FreeRTOS project
Still using Swagger?I recommend this interface management artifact with zero code intrusion
OC-ARC(Automatic Reference Counting)自动引用计数
Swift common extension classes and simple encapsulation
Unity 锁定相机第二弹
[Deep Learning] (Problem Record)
- Linear Regression - Small Batch Stochastic Gradient Descent MySQL installation tutorial [installation version]
The configuration process and related syntax of writing markdown format notes in vscode
Domino Server SSL Certificate Installation Guide
[100个Solidity使用技巧]1、合约重入攻击
Swift 常用扩展类和简单封装