打印

1602怎么在特定位置显示闪烁光标,菜鸟问题啊

[复制链接]
7903|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
newkiwi|  楼主 | 2012-4-6 12:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1602光标闪烁搞不定啊,数据手册也看了,但还是不是非常清楚,没办法在特定位置显示闪烁光标。  1602初始化以后 LCD_Init(void)
{
   LCD_Write_Com(0x38);    /*显示模式设置*/
   DelayMs(5);
   LCD_Write_Com(0x38);
   DelayMs(5);
   LCD_Write_Com(0x38);
   DelayMs(5);
   LCD_Write_Com(0x38);  
   LCD_Write_Com(0x08);    /*显示关闭*/
   LCD_Write_Com(0x01);    /*显示清屏*/
   LCD_Write_Com(0x06);    /*显示光标移动设置*/
   DelayMs(5);
   LCD_Write_Com(0x0C);    /*显示开及光标设置*/
   }
  在打什么代码使光标在特定位置闪烁
LCD_Write_Com(0x0f); 开光标闪烁,然后。。。
还有,对1602显示刷新频率对光标闪烁是不是有影响啊

相关帖子

沙发
tyw| | 2012-4-6 12:30 | 只看该作者
板凳
newkiwi|  楼主 | 2012-4-6 12:48 | 只看该作者
2# tyw 谢啦,我这就去看看~

使用特权

评论回复
地板
logokfu| | 2012-4-6 17:27 | 只看该作者
这个液晶的初始化,主要是时间问题,延时时间不对就不能正常初始化,你这种不是用定时器,不同的晶振频率得延时不同的时间。

使用特权

评论回复
5
newkiwi|  楼主 | 2012-4-6 19:28 | 只看该作者
void main ()
{
               
unsigned char temp[16];//定义显示区域临时存储数组

LCD_Init();           //初始化液晶
DelayMs(20);          //延时有助于稳定
LCD_Clear();          //清屏
Ds1302_Init();        //ds1302初始化
Init_Timer0();        //定时器0初始化
Ds1302_Write_Time();
  while(1)
  {         if(ReadTimeFlag==1) //定时读取ds1302 定时时间到 则标志位置1,处理过时间参数标志位清零
        Ds1302_Read_Time();
    keyscan();//读取时间参数
    sprintf(temp,"DATE %02d-%02d-%02d %d",(int)time_buf1[1],(int)time_buf1[2],(int)time_buf1[3],(int)time_buf1[7]);//年月日周
    LCD_Write_String(0,0,temp);//显示第一行
    sprintf(temp,"TIME %02d:%02d:%02d",(int)time_buf1[4],(int)time_buf1[5],(int)time_buf1[6]);//时分秒
    LCD_Write_String(0,1,temp);//显示第二行
       
}
}



/*------------------------------------------------
                 按键程序
------------------------------------------------*/
void keyscan(void)
{         
   if(key_mode==0)
          {
                DelayMs(5);
                if(key_mode==0)
                  {
                while(!key_mode);
                    keyln++;
                     if(keyln==9)
                        keyln=1;
                        switch(keyln)
                         { Ds1302_Read_Time();
                           case 1:
                                 TR0=0;
                                         
                                     LCD_Write_Com(two+0x0c);这个难道不是设定要存入数据的那个地址?LCD_Write_Com(two+0x40+0c0c)又是什么?two=0x80,那此时光标在哪?
                                       LCD_Write_Com(0x0f);这个是显示光标并闪烁
                                       Ds1302_Write_Byte(0x8e,0x00);
                                         Ds1302_Write_Byte(0x80,0x80|time_buf[6]);
                                         //Ds1302_Read_Time();
                                     break;
                           case 2:LCD_Write_Com(two+9);break;       
                               case 3:LCD_Write_Com(two+6);break;
                           case 4:LCD_Write_Com(one+0x0e);break;
                               case 5:LCD_Write_Com(one+0x0c);break;
                               case 6:LCD_Write_Com(one+0x09);break;
                               case 7:LCD_Write_Com(one+0x06);break;
                               case 8:
                                 LCD_Write_Com(0x0c);
                                     Ds1302_Write_Byte(0x80,0x00|time_buf[6]);
                                     Ds1302_Write_Byte(0x8e,0x80);
                                     TR0=1;
                                     break;
                         }
              }
      }

使用特权

评论回复
6
newkiwi|  楼主 | 2012-4-6 20:11 | 只看该作者
实在搞不清了,指点一下,谢谢了

使用特权

评论回复
7
SLEET1986| | 2012-4-7 08:09 | 只看该作者
先显示要显示的内容,然后设置光标的地址,再打开光标显示.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:No road of flower leads to glory.

0

主题

52

帖子

0

粉丝