标题: 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不用刷的那么频繁
数据有更新才去刷新
固定字符更不用重新写入
可参考以下代码
  1. #include <STC89C5xRC.H>
  2. #include  "DElay.h"
  3. #include  "LCD1602.h"
  4. sbit K1=P2^7;
  5. sbit K2=P2^6;


  6. void main()
  7. {
  8.         int SDT=100;
  9.         LCD_Init();
  10.         LCD_ShowChar(2,12,0xDF);
  11.         LCD_ShowString(2,13,"C");

  12.         while (1)
  13.         {
  14.                 if(K1==0)
  15.                 {
  16.                         Delay(20);
  17.                         while(K1==0);
  18.                         Delay(20);
  19.                         SDT=SDT+10;
  20.                         LCD_ShowNum(2,9,SDT,3);

  21.                 }
  22.                 if(K2==0)
  23.                 {
  24.                         Delay(20);
  25.                         while(K2==0);
  26.                         Delay(20);
  27.                         SDT=SDT-10;
  28.                         LCD_ShowNum(2,9,SDT,3);
  29.                 }
  30.         }
  31. }
复制代码

作者: xiaobendan001    时间: 2024-5-17 13:09
远征之路 发表于 2024-5-17 09:23
如果你的按键是低电平触发动作,那么程序需要作如下修改:
if(K1==0)
        {

你这样按键时间短的时候很大可能就锁定了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1