求一个按键控制52单片机定时的C程序
发布网友
发布时间:2024-02-29 21:08
我来回答
共5个回答
热心网友
时间:2024-11-08 21:52
这里是我用的键盘扫描程序,你可以参考着改一下就可以实现你的功能了,你就只需要再加一个延时子程序以及在相应的按键键码加上相应的动作就行了。
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delayms(void);
uchar kbscan(void);
void Txbyte(unsigned char i);
void Txword(int i);
void TxEOF();
void InitForUART();
void DisPicture(int No);
main()
{ uchar key;
InitForUART();
while(1)
{
key=kbscan();
if(key!=0)
{
switch(key)
{
case 0x21:DisPicture(0x00);
break;
case 0x22:DisPicture(0x01);
break;
case 0x24:DisPicture(0x02);
break;
case 0x11:DisPicture(0x03);
break;
case 0x12:DisPicture(0x04);
break;
case 0x14:P0=0x80;
P2=0xF0;
break;
case 0x09:P0=0xB0;
P2=0xF0;
break;
case 0x0A:P0=0x82;
P2=0xF0;
break;
case 0x0C:P0=0x90;
P2=0xF0;
break;
/*case 0x44:P0=0xF8;
P1=0xf7;
break;
case 0x42:P0=0x83;
P1=0xf7;
break;
case 0x41:P0=0x8E;
P1=0xf7;
break;
case 0x88:P0=0x99;
P1=0xf7;
break;
case 0x84:P0=0x80;
P1=0xf7;
break;
case 0x82:P0=0xC6;
P1=0xf7;
break;
case 0x81:P0=0xc0;
P1=0xf7;
break;*/
default:P2=0xff;
}
}
}
}
uchar kbscan(void)
{
unsigned char sccode,recode;
P1=0x07; //发0扫描,列线输入
if ((P1 & 0x07) != 0x07) //有键按下
{
delayms(); //延时去抖动
if ((P1&0x07)!= 0x07)
{
sccode = 0xF7; //逐行扫描初值
while((sccode&0x01)!=0)
{
P1=sccode;
if((P1&0x07)!=0x07)
{
recode=(P1&0x07)|0xf8;
return((~sccode)+(~recode));
}
else
sccode=(sccode<<1)|0x01;
}
}
}
return 0; //无键按下,返回0
}
void delayms(void)
{
unsigned char k,y;
for (k=200; k>0; k--)
for (y=50;y>0;y--);
}
void Txbyte(unsigned char i) //发送字节
{TI=0;
SBUF=i;
while(!TI);
TI=0;
}
void Txword(int i) //发送字
{unsigned char x,y;
x=(i/256);
Txbyte(x);
y=i-256*x;
Txbyte(y);
}
void TxEOF() //帧尾
{Txbyte(0xcc);
Txbyte(0x33);
Txbyte(0xc3);
Txbyte(0x3c);
}
void InitForUART() //串口初始化
{
TMOD=0x21;
SCON=0x50;
TH0=0x4c;
TL0=0x00;
TH1=0xf3;
TL1=0xf3;
EA=1;
ET0=1;
TR0=1;
TR1=1;
}
void DisPicture(int No) //显示图片
{
Txbyte(0xaa);
Txbyte(0x70);
Txbyte(No);
TxEOF();
}
热心网友
时间:2024-11-08 21:53
很简单,几句话而已,不过今天太晚了,明天在写给你吧。
热心网友
时间:2024-11-08 21:53
修改都不会,那怎么写啊。
晚上 我来修改试一下。
热心网友
时间:2024-11-08 21:54
这太简单了,还是你自己学一点东西吧
热心网友
时间:2024-11-08 21:55
凡事靠自己嘴靠得住。。。