找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 546|回复: 5
打印 上一主题 下一主题
收起左侧

89c52单片机按键加法,大佬帮忙看看为啥这个代码不行呢

[复制链接]
跳转到指定楼层
楼主
ID:1121102 发表于 2024-5-16 22:08 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#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");
}
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1109793 发表于 2024-5-17 07:33 | 只看该作者
看起来可以的啊,松手时会+10或者-10
回复

使用道具 举报

板凳
ID:192020 发表于 2024-5-17 09:06 | 只看该作者
LCD_Init();不能放死循环里,放到while(1)前执行一次就行,另外看下K1、K2有没有上拉电阻,外部上拉或者内部上拉
回复

使用道具 举报

地板
ID:342197 发表于 2024-5-17 09:23 | 只看该作者
如果你的按键是低电平触发动作,那么程序需要作如下修改:
if(K1==0)
        {
    Delay(20);
                while(K1!=0);
    Delay(20);
    SDT=SDT+10;      
               
        }
回复

使用道具 举报

5#
ID:161164 发表于 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. }
复制代码

评分

参与人数 1黑币 +5 收起 理由
wen1989jun + 5

查看全部评分

回复

使用道具 举报

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

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表