普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 4426|回复: 0

1602不显示光标

 关闭 [复制链接]

6

主题

9

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2018-10-25 18:07:12 | 显示全部楼层 |阅读模式
#include "all.h"

u8  LCD_Write_Buffer1[16];
u8  LCD_Write_Buffer2[16];
u8  LCD1602_Write_Cursor_Add=0;

u8 code LCD1602_5x8_Buffer[8]={0x08,0x00,0x07,0x08,0x08,0x08,0x08,0x07}; //*C

void delay1ms(void)   //误差 0us
{
    u8 a,b,c;
    for(c=1;c>0;c--)
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
}

void LcdWriteCom(u8 com)          //写入命令
{
        LCD1602_E = 0;     //使能
        LCD1602_RS = 0;           //选择发送命令
        LCD1602_RW = 0;           //选择写入
       
        LCD1602_DATAPINS = com;     //放入命令
        delay1ms();                //等待数据稳定

        LCD1602_E = 1;                  //写入时序
        delay1ms();
        delay1ms();
         delay1ms();
         delay1ms();
        delay1ms();          //保持时间
        LCD1602_E = 0;
}


void LcdWriteData(u8 dat)                        //写入数据
{
        LCD1602_E = 0;        //使能清零
        LCD1602_RS = 1;        //选择输入数据
        LCD1602_RW = 0;        //选择写入

        LCD1602_DATAPINS = dat; //写入数据
        delay1ms();

        LCD1602_E = 1;   //写入时序
        delay1ms();
        delay1ms();
        delay1ms();
        delay1ms();
        delay1ms();   //保持时间
        LCD1602_E = 0;
}


void LcdInit()                                                  //LCD初始化子程序
{
    u8 i;
        LcdWriteCom(0x38);  //开显示
        LcdWriteCom(0x0c);  //开显示不显示光标
        LcdWriteCom(0x06);  //写一个指针加1
        LcdWriteCom(0x01);  //清屏
        LcdWriteCom(0x80);  //设置数据指针起点
        LcdWriteCom(0x02);
        LcdWriteCom(0x14);

        for(i=0;i<16;i++)                                                   //写入CGM地址
        {
           LcdWriteData(LCD1602_5x8_Buffer[i])          ;       
        }

}

void LCD_Display_Ser()
{
        u8 i;
        LcdWriteCom(0x80)  ;
        for(i=0;i<16;i++)
        {
           LcdWriteData(LCD_Write_Buffer1[i])          ;       
        }
        LcdWriteCom(0xc0)  ;
        for(i=0;i<16;i++)
        {
           LcdWriteData(LCD_Write_Buffer2[i])          ;       
        }
       
        switch(LCD1602_Write_Cursor_Add)           //控制光标闪烁
        {
          case 0: LcdWriteCom(0x0c);break;          //不闪烁
          case 1: LcdWriteCom(0x0f);LcdWriteCom(0x80);break;
          case 2: LcdWriteCom(0x0f);LcdWriteCom(0xcd);break;
          case 3: LcdWriteCom(0x0f);LcdWriteCom(0xc7);break;
          case 4: LcdWriteCom(0x0f);LcdWriteCom(0xc4);break;
          case 5: LcdWriteCom(0x0f);LcdWriteCom(0xc1);break;
          case 6: LcdWriteCom(0x0f);LcdWriteCom(0xcf);break;
          case 7: LcdWriteCom(0x0e);LcdWriteCom(0x82);break;
          case 8: LcdWriteCom(0x0f);LcdWriteCom(0x81);break;
          case 9: LcdWriteCom(0x0f);LcdWriteCom(0x80);break;  
          default: break;
        }
}
我在主函数里调用了LCD1602_Write_Cursor_Add=1,为什么不显示光标
大佬们,帮帮我吧
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-5-2 05:58 , Processed in 0.104751 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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