问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求一个按键控制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

凡事靠自己嘴靠得住。。。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 笔记本电脑屏幕开机锁忘记密码 怎么办?急死了 华硕笔记本电脑开机密码忘记了怎样找回?系统是Windows 7旗舰版... 单片机用一个按键随意切换控制三种状态3 公安选调生有没有体能测试 宝宝睡觉时哭时笑是怎么回事 caxa里面怎么让圆不失真 我想问一下,我在微信骂人了 ,用的别人手机号注册的没实名现在那人要报警... ...是制造企业,为什么有的计入生产成本,有的计入制造费用 ...let me see you put your hands up” 谢谢了 我明天盐城 怎样轻松制作出美味的贺州菜酿? 贺州菜酿具有哪些特殊的做法? 在苏州哪些街道摩托车不能行使? 苏州可不可以开摩托车 微信被对方拉黑怎么强制加回来 我想你 我想念你 是一个意思吗? 您好,一个星期前头被书角砸出血,并肿起,立即去做CT没有... ...出院一星期了,头还是疼,需不需要再拍CT什么的复查一下, 解放军部队和武警部队有什么区别呢?1257 武警与解放军有什么区别1169 中国的军队为何叫解放军,而不是国防军134 在生活中,你养过宠物吗?请简要谈谈你养宠物的经历和感受 50字左右... 51单片机各种工作模式、各种定时器都是什么意思23 启东环保志愿者布塑之客已孩子的名义参加有什么意义 51单片机中怎样用一个按键控制三种模式的流水灯,如控制流水灯...7 求助 单片机计时和定时再增加按键和跳转 功能,各位 ...管理学院宿舍条件如何2022江西财经大学学费收费明细情况 ...每次只要一翻筋斗就失速。想知道战斗机怎么才能翻筋斗而不失速?_百 ... 吃完大闸蟹能吃西红柿吗 家里观音怎么摆放观音合理的摆放位置 怎样将oppo手机的数据传到苹果手表上? 飞机在降落的时候能不能用反转的皮带来减小飞机的速度。 姓“沙”的孩子怎么取名?沙溢自曝原名:幸亏当初我爸万般阻止 特殊姓氏的孩子咋取名?沙溢自曝“原名”:多亏当年我爸拦着我妈 爸爸姓“沙”,该怎么给孩子取名字?沙溢:多亏我爸拦着我妈 爸爸姓“沙”,给孩子取名要注意啥?沙溢:还好当时我爸拦着我妈 “沙”姓孩子叫啥名合适?听到沙溢妈妈取的名,幸亏爸爸给拦着了 帝国时代4德里苏丹怎么打游戏帝国时代4德里苏丹怎么打 ...吗中高风险区到济南长清区要隔离吗最新消息 我身份证没有磁性了,这里升级大门需要办理电子IC卡,需要用身份证原件... 菠萝蜜黄心和红心区别菠萝蜜黄心和红心的不同 盐城市亭湖区人民北路到新四军纪念馆怎么走