没有网站的域名,外贸站外推广,ui页面设计图,男周志做网站嘻嘻#xff0c;LCD在RC板子上可以勉强装上#xff0c;会有一点歪。
一、矩阵键盘
在键盘中按键数量较多时#xff0c;为了减少I/O口的占用#xff0c;通常将按键排列成矩阵形式#xff1b;采用逐行或逐列的“扫描”#xff0c;就可以读出任何位置按键的状态。#xf…嘻嘻LCD在RC板子上可以勉强装上会有一点歪。
一、矩阵键盘
在键盘中按键数量较多时为了减少I/O口的占用通常将按键排列成矩阵形式采用逐行或逐列的“扫描”就可以读出任何位置按键的状态。IO口默认高电平1 代码在文件夹中。我改了LCD代码的延时问题。
MatrixKey.c代码
#include STC89C5xRC.H
#include Delay.hunsigned char MatrixKey()
{// 按列扫描unsigned char KeyNumber0;P10xFF;P130x00;if(P170) {Delay(20);while(P170);Delay(20);KeyNumber1;}if(P160) {Delay(20);while(P160);Delay(20);KeyNumber5;}if(P150) {Delay(20);while(P150);Delay(20);KeyNumber9;}if(P140) {Delay(20);while(P140);Delay(20);KeyNumber13;}P10xFF;P120x00;if(P170) {Delay(20);while(P170);Delay(20);KeyNumber2;}if(P160) {Delay(20);while(P160);Delay(20);KeyNumber6;}if(P150) {Delay(20);while(P150);Delay(20);KeyNumber10;}if(P140) {Delay(20);while(P140);Delay(20);KeyNumber14;}P10xFF;P110x00;if(P170) {Delay(20);while(P170);Delay(20);KeyNumber3;}if(P160) {Delay(20);while(P160);Delay(20);KeyNumber7;}if(P150) {Delay(20);while(P150);Delay(20);KeyNumber11;}if(P140) {Delay(20);while(P140);Delay(20);KeyNumber15;}P10xFF;P100x00;if(P170) {Delay(20);while(P170);Delay(20);KeyNumber4;}if(P160) {Delay(20);while(P160);Delay(20);KeyNumber8;}if(P150) {Delay(20);while(P150);Delay(20);KeyNumber12;}if(P140) {Delay(20);while(P140);Delay(20);KeyNumber16;}return KeyNumber;
}
main.c代码
#include STC89C5xRC.H
#include Delay.h
#include LCD1602.hunsigned char KeyNum;void main()
{LCD_Init();LCD_ShowString(1,1,HelloRain);while(1){KeyNumMatrixKey();if(KeyNum) LCD_ShowNum(2,1,KeyNum,2);}
}
二、矩阵键盘密码锁
main.c
#include STC89C5xRC.H
#include Delay.h
#include LCD1602.h
#include MatrixKey.hunsigned char KeyNum;
unsigned int password,count;void main()
{LCD_Init();LCD_ShowString(1,1,PassWord:);while(1){KeyNumMatrixKey();if(KeyNum) {if(KeyNum10) //s1-s10按下输入密码 {if(count4){password*10; //密码左移passwordKeyNum%10; count;LCD_ShowNum(2,1,password,4);}}else if(KeyNum11) {if(password2345){LCD_ShowString(1,14,OK );password0;count0;LCD_ShowNum(2,1,password,4);}else {LCD_ShowString(1,14,ERR);password0;count0;LCD_ShowNum(2,1,password,4);}}else if(KeyNum12){password0;count0;LCD_ShowNum(2,1,password,4);}}}
}