任务描述:单片机连接8位共阳极数码管和4*4矩阵键盘,编写键盘测试程序,按下任意按键,显示8个相同数字。
线与线之间是立体的,交叉但不相连,没有结点,相当于立交桥。每一个按键相当于上桥下桥口,连接两条路。起到短路开关作用,按下将对应的行列连在一起。
悬空为1,1与0,相连时,1会变0,即为高电位变为低电位。和地相连通,一定会变成中性,即和地连通,1一定会变0。
先写0,后找0:先写四个0(列),其余四个1(行)。按键按下,行线若无变化,则没有按键按下。按键按下,行线若右变化,则有按键按下,短路。
画出电路图:先在视图中把格子大小改成snap 50th
注意在没有元器件时画线需要先点出一个结点,再画线。
开关button有两种闭合方式:一种持续闭合点箭头
还有一种就是点帽子,点中闭合抬起断开。
标号时注意在英文字母下键盘点击字母A,就会出现下图所示内容:
在string中填写net=P0.#(#表示从0开始,每点击以下自动加一)
然后再点A,点击取消,则为退出标号模式
点A 然后再点确定则实现重新开始标号,从0开始
若改为P2.几或者P3.几,则改为net=P2.# net=P3.# 。
若改为row.几或者column.几,net=row.# net=column.# 。
row是行,column是列。
/*************************
项目名称:项目三简易计算器
任务名称:任务3-1矩阵键盘测试
任务描述:单片机连接8位共阳极数码管和4*4矩阵键盘,
编写键盘测试程序,按下任意按键,显示8个相同数字。
*************************/
#include<reg51.h>
//51单片机寄存器定义头文件
int seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};//定义0~9共阳极七段码,与间隔符-
void main(){
while(1)//不断查询按键,等待手按下
{
P1=0x0f;//列线写0,行线写1
if(P1!=0x0f)//列线写0,行线有变化,有变0,说明有按键按下,导致行列线短路
{
P2=0x00;//数码管全选中
P0=seg[5];//全显示数字5
}
else
P2=0xff;//关闭数码管
}
}
仿真完成后,进行试验。
分别按下每一个按键:
标签:.#,计算器,矩阵,键盘,数码管,按下,按键,net From: https://blog.csdn.net/m0_74239830/article/details/137555072