标题:
51单片机矩阵键盘控制1602液晶
[打印本页]
作者:
15622929697
时间:
2018-10-27 11:53
标题:
51单片机矩阵键盘控制1602液晶
测试可以使用,矩阵键盘和1602液晶显示
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code kaxuns[] = "this is a joky";
uchar code tels[] = "0755-86003600";
uchar code nums[] = "0123456789";
sbit leden = P3^4;
sbit ledrs = P3^5;
sbit key = P3^6;
sbit d1 = P1^0;
sbit d2 = P1^1;
sbit d3 = P1^2;
sbit d4 = P1^3;
sbit d5 = P1^4;
sbit d6 = P1^5;
sbit d7 = P1^6;
sbit d8 = P1^7;
sbit dula = P2^6;
sbit wela = P2^7;
void delay(uint z)
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 110; y > 0; y--);
}
void write_com(uchar com)//发命令
{
//rs=L,rw=L.D0-D7指令码,E=高脉冲;
ledrs = 0;
P0 = com;
delay(5);
leden = 1;
delay(5);
leden = 0;
}
void write_data(uchar date)//写数据
{
//rs=L,rw=L.D0-D7指令码,E=高脉冲;
ledrs = 1;
P0 = date;
delay(5);
leden = 1;
delay(5);
leden = 0;
}
void call()
{
uint test1 = P3 & 0x0F;
uint test,test2;
if(test1 < 0x0F)//有键按下
{
delay(10);
test1 = P3 & 0x0F;
if(test1 < 0x0F)//消抖后再测一次
{
P3 = 0xF0;
delay(5);
test2 = P3 & 0xF0;
if(test2 < 0xF0)
{
test = test1 + test2;
switch(test)
{
case 0xEE:
d1 = 0;
break;
case 0xED:
d2 = 0;
break;
case 0xEB:
d3 = 0;
break;
case 0xE7:
d4 = 0;
break;
case 0xDE:
d5 = 0;
break;
case 0xDD:
d6 = 0;
break;
case 0xDB:
d7 = 0;
break;
case 0xD7:
d8 = 0;
break;
case 0xBE:
d1 = 0;
break;
case 0xBD:
d2 = 0;
break;
case 0xBB:
d3 = 0;
break;
case 0xB7:
d4 = 0;
break;
case 0x7E:
d5 = 0;
break;
case 0x7D:
d6 = 0;
break;
case 0x7B:
d7 = 0;
break;
case 0x77:
d8 = 0;
break;
}
while(P3 != 0xF0);
}
}
delay(100);
P3 = 0x0F;
P1 = 0xFF;
}
}
void init()
{
uint ii;
dula = 0;//关断数码管
wela = 0;
leden = 0;
write_com(0x38);//初始化
write_com(0x0f);//光标显示
write_com(0x06);//地址自动加一
write_com(0x01);//清屏
//write_com(0x18);//整屏左移
//write_com(0x19);//整屏右移
write_com(0x81);//指针位置初始化
for(ii = 0; ii < 14; ii++)
{
write_data(kaxuns[ii]);
delay(20);
}
write_com(0xC2);//指针位置初始化
for(ii = 0; ii < 13; ii++)
{
write_data(tels[ii]);
delay(20);
}
}
void main()
{
init();
write_com(0xC0);
P3 = 0x0F;
P1 = 0x00;
while(1)
{
call();
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1