网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
08月29日漏签0天
单片机吧 关注:212,106贴子:1,047,648
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 3回复贴,共1页
<<返回单片机吧
>0< 加载中...

LCD1602跳闪问题

  • 只看楼主
  • 收藏

  • 回复
  • 绽放痛苦
  • 新兵
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
本人小白,正在学习51单片机,在使用1602单片机是,遇到一个问题:
我用一个按键(外部中断0)来做一个显示屏的切换,但是加了这个外部按键中断后,发现显示一直在跳闪,不知道什么原因造成的,改怎么解决,谢谢各位大哥大姐帮忙!!谢谢
程序:
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器
#include "lcd.h"
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit k1=P3^2; //定义P32口是k1
u8 k,l,b=0;
u8 Disp1[]=(" Heart Rate ");
u8 Disp2[]=(" Heart Rate ");
u8 Disp3[]=(" Right ");
u8 Disp4[]=(" False ");
/*******************************************************************************
* 函 数 名 : delay
* 函数功能 : 延时函数,j=1时,大约延时10us
*******************************************************************************/
void delay(u16 j)
{
while(j--);
}
/*******************************************************************************
* 函 数 名 : Int1Init()
* 函数功能 : 设置外部中断1
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Int0Init()
{
//设置INT0
IT0=1;//跳变沿出发方式(下降沿)
EX0=1;//打开INT0的中断允许。
EA=1;//打开总中断
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{
Int0Init(); //设置外部中断0
while(1)
{
u8 i;
if(b==0)
{
LcdInit();
for(i=0;i<16;i++)
{
LcdWriteData(Disp1[i]);
delay(100);
}
LcdWriteCom(0x40+0x80);
for(i=0;i<16;i++)
{
LcdWriteData(Disp2[i]);
delay(100);
}
}
if(b==1)
{
LcdInit();
for(k=0;k<16;k++)
{
LcdWriteData(Disp3[k]);
}
}
if(b==2)
{
LcdInit();
for(l=0;l<16;l++)
{
LcdWriteData(Disp4[l]);
}
}
}
}
/*******************************************************************************
* 函 数 名 : keypros
* 函数功能 : 按键处理函数,判断按键K1是否按下
*******************************************************************************/
void Int0()interrupt 0//外部中断0的中断函数
{
if(k1==0) //检测按键K1是否按下
{
delay(1000); //消除抖动 一般大约10ms
if(k1==0) //再次判断按键是否按下
{
b=b+1;
if(b>2)
{
b=0;
}
while(!k1); //检测按键是否松开
}
}
}


  • 蜗牛快跑
  • 少校
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
应该是1602一直在刷屏


2025-08-29 00:41:41
广告
不感兴趣
开通SVIP免广告
  • 贴吧用户_051K39P
  • 上尉
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
LcdInit();这个不要放在if里面,也不要放在while这个大循环里,液晶初始化执行一次就够了


  • KurohaKirito
  • 上尉
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
4楼正解


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 3回复贴,共1页
<<返回单片机吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示