2021-07-12

51单片机 简易计算器的设计与调试

第三个项目

分为矩阵键盘测试,显示键值,简易计算器,密码锁1位,密码锁6位五个任务

第一个任务矩阵键盘测试

利用单片机连接4x4矩阵键盘,按下任意按键,8个数码管一起显示5。
单片机与按键的连接方式主要有两种方式
1,独立按键
硬件连接时每个按键的一端占用单片机的一根接囗线,另一端一般接地,
这样当按键按下时,接口线变为低电平,按键释放时接口线悬空变为高电平;编程时利用位变量定乂,每个按键有单独的变量名,检测时可利用i语句直接检测按键变量的电平状态,就可判断按键是按下还是释放。优点是连线和编程简单,缺点是占用接线太多,一般不超过4个。
2,矩阵按键
矩阵按键:为了节省单片机的接口,利用行列线的形式构建矩阵键盘。一般是利用带触点的非编码键盘构建。按键没有独立变量名,编程时需要进行行列扫描以判断按键触发的位置,并确定对应的键值,编程较复杂。
proteus模拟图

矩阵键盘部分电路图

在这里插入图片描述
航线和列线一端都连接在p1口上,一端连接另一端悬空且航线列线交叉但是不相连。按键按下能将某一行与某一列短路连接

先写零,后找零的原则
在这里插入图片描述
按键的去抖
机械式的按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定的触点机械抖动,然后其触点才稳定下来,抖动的时间一般为5—10ms,在触点抖动期间检测按键的通与断的状态
,可能导致判断出错。进行延时检测来解决此问题。

proteus模拟

在这里插入图片描述
用接口码连接

keil uvision

#include<reg51.h>
unsigned char disp[]={0xc0,0xa4,0xb0,0x99,0x82,0xf8,0x80,0x90};
void delay(unsigned int i){
	int k,j;
	for(k=0;k<i;k++)
	for(j=0;j<300;j++);
}
void main(){
	
	{
		P1=0x0f;
		if(P1!=0x0f)
			delay(10);
		if(P1!=0x0f)
		{
			P2=0x00;
			P0=disp[5];
			delay(100);
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值