找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3964|回复: 7
收起左侧

如何实现按一个按键LCD1602显示温度,在按另一个按键显示时间?

[复制链接]
ID:398804 发表于 2019-2-2 13:35 | 显示全部楼层 |阅读模式
如题,我想有一个思路
回复

使用道具 举报

ID:236982 发表于 2019-2-2 15:50 | 显示全部楼层
这个应该简单吧,比如有A\B两个按键:
按下A键,把温度值送1602显存
按下B键,把时间值送1602显存
回复

使用道具 举报

ID:384109 发表于 2019-2-2 16:33 | 显示全部楼层
需要一个按键扫描程序,扫描程序给出当前按下的是什么键,然后显示程序根据按键值来显示相应的内容
回复

使用道具 举报

ID:409220 发表于 2019-2-2 19:05 | 显示全部楼层
现在很多提供的1602驱动文件里都有现成的显示函数,你先把温度值和时间值保存到驱动对应的数据类型中,改动驱动里的显示内容和显示地址就可以了
回复

使用道具 举报

ID:7485 发表于 2019-2-2 19:20 | 显示全部楼层
可以设置一个标志位,当检测到按键1按下时设置标志位置位,当检测到按键2按下时去反标志位。当运行到显示程序时,标志位=1(或0)则运行时间显示,否则运行温度显示。

这个应当说是很简单的。
回复

使用道具 举报

ID:474731 发表于 2019-2-2 19:24 | 显示全部楼层
按键控制标准位,改变标志位状态显示不同值
回复

使用道具 举报

ID:398804 发表于 2019-2-3 17:39 | 显示全部楼层
keybord ()        //按键检测
{ uchar shu1;
P1=0x00;
shu1=P1;
if(shu1!=0x00)
{
switch(shu1)
{
case 0x01:key=1;break;
case 0x02:key=2;break;
case 0xfb:key=3;break;
case 0xf7:key=4;break;
case 0xef:key=5;break;
case 0xdf:key=6;break;
case 0xbf:key=7;break;
case 0x7f:key=8;break;
default:break;
}
while(shu1!=0xff)
shu1=P1;
return key;                  
}}

void date_c()         //数据选择
{
if(key==1)
{
uchar c;
wr_com(0x80);                  
for(c=0;c<11;c++)
{wr_dat(str1[c]);}
while(1);
}

if(key==2)
{
        uchar d;
    wr_com(0x80);
        for(d=0;d<5;d++)
        {wr_dat(str2[d]);}
        while(1);
}
}



void main()
{
lcd_init();           //LCD初始
date_c();           //数据选择显示
}
回复

使用道具 举报

ID:398804 发表于 2019-2-3 17:40 | 显示全部楼层
可以帮我看一下这程序哪里有问题吗,烧进去按下按键没反应,屏幕空白
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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