标题:
89c52单片机按键加法,大佬帮忙看看为啥这个代码不行呢
[打印本页]
作者:
朝华
时间:
2024-5-16 22:08
标题:
89c52单片机按键加法,大佬帮忙看看为啥这个代码不行呢
#include <STC89C5xRC.H>
#include "DElay.h"
#include "LCD1602.h"
sbit K1=P2^7;
sbit K2=P2^6;
void main()
{
int SDT=100;
while (1)
{
if(K1==0)
{
Delay(20);
while(K1==0);
Delay(20);
SDT=SDT+10;
}
if(K2==0)
{
Delay(20);
while(K2==0);
Delay(20);
SDT=SDT-10;
}
LCD_Init();
LCD_ShowNum(2,9,SDT,3);
LCD_ShowChar(2,12,0xDF);
LCD_ShowString(2,13,"C");
}
}
作者:
xiaobendan001
时间:
2024-5-17 07:33
看起来可以的啊,松手时会+10或者-10
作者:
Graves
时间:
2024-5-17 09:06
LCD_Init();不能放死循环里,放到while(1)前执行一次就行,另外看下K1、K2有没有上拉电阻,外部上拉或者内部上拉
作者:
远征之路
时间:
2024-5-17 09:23
如果你的按键是低电平触发动作,那么程序需要作如下修改:
if(K1==0)
{
Delay(20);
while(K1!=0);
Delay(20);
SDT=SDT+10;
}
作者:
lkc8210
时间:
2024-5-17 11:11
啥叫不行?不显示?没反应?显示不如预期?
LCD1602不用刷的那么频繁
数据有更新才去刷新
固定字符更不用重新写入
可参考以下代码
#include <STC89C5xRC.H>
#include "DElay.h"
#include "LCD1602.h"
sbit K1=P2^7;
sbit K2=P2^6;
void main()
{
int SDT=100;
LCD_Init();
LCD_ShowChar(2,12,0xDF);
LCD_ShowString(2,13,"C");
while (1)
{
if(K1==0)
{
Delay(20);
while(K1==0);
Delay(20);
SDT=SDT+10;
LCD_ShowNum(2,9,SDT,3);
}
if(K2==0)
{
Delay(20);
while(K2==0);
Delay(20);
SDT=SDT-10;
LCD_ShowNum(2,9,SDT,3);
}
}
}
复制代码
作者:
xiaobendan001
时间:
2024-5-17 13:09
远征之路 发表于 2024-5-17 09:23
如果你的按键是低电平触发动作,那么程序需要作如下修改:
if(K1==0)
{
你这样按键时间短的时候很大可能就锁定了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1