找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
ID:398804 发表于 2019-2-2 13:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题,我想有一个思路
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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驱动文件里都有现成的显示函数,你先把温度值和时间值保存到驱动对应的数据类型中,改动驱动里的显示内容和显示地址就可以了
回复

使用道具 举报

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

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

使用道具 举报

6#
ID:474731 发表于 2019-2-2 19:24 | 只看该作者
按键控制标准位,改变标志位状态显示不同值
回复

使用道具 举报

7#
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();           //数据选择显示
}
回复

使用道具 举报

8#
ID:398804 发表于 2019-2-3 17:40 | 只看该作者
可以帮我看一下这程序哪里有问题吗,烧进去按下按键没反应,屏幕空白
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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