单片机c语言实现光标闪烁,求解决单片机LCD1602光标闪烁问题

该博客主要展示了如何在单片机C语言环境中解决LCD1602显示屏光标闪烁的问题。通过提供一段包含LCD1602初始化、DS1302时钟读取、按键处理和温度显示的代码,作者详细解释了光标闪烁的可能原因及对策。代码中还包含了中断配置和串口通信设置,以实现完整系统的功能。
摘要由CSDN通过智能技术生成

/*******************************************************************************

* 实验名                  :温度+时钟显示

* 使用的IO             :

* 实验效果       :1602显示温度

*        注意                                         :

*******************************************************************************/

#include

#include"lcd.h"

#include"ds1302.h"

#include"temp.h"

sbit K1=P3^1;

sbit K2=P3^0;

sbit K3=P3^2;

sbit K4=P3^3;

uchar CNCHAR[6] = "摄氏度";

void Int0Configuration();

void LcdDisplay(int);

void UsartConfiguration();

unsigned char SetState,SetPlace;

void Delay10ms(void);   //误差 0us

void LcdDisplay1();

/*******************************************************************************

* 函数名         : main

* 函数功能                   : 主函数

* 输入           : 无

* 输出                  : 无

*******************************************************************************/

void main()

{

unsigned char i;

Int0Configuration();

UsartConfiguration();

LcdInit();                         //初始化LCD1602

LcdWriteCom(0x80+0x4f);        //写地址 80表示初始地址

LcdWriteData('C');

Ds1302Init();

while(1)

{

if(SetState==0)

{

Ds1302ReadTime();

}

else

{

if(K1==0)                //检测按键K1是否按下

{

Delay10ms();        //消除抖动

if(K1==0)

{

SetPlace++;

if(SetPlace>=7)

SetPlace=0;

}

while((i<50)&&(K1==0))         //检测按键是否松开

{

Delay10ms();

i++;

}

i=0;

}

if(K2==0)                //检测按键K2是否按下

{

Delay10ms();        //消除抖动

if(K2==0)

{

TIME[SetPlace]++;

if(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值