找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1825|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

1602 液晶時鐘

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:220908 發(fā)表于 2017-7-20 11:16 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
#include <reg51.h>
#include <intrins.h>
sbit RS  =  P2^0;      //寄存器選擇輸入
sbit RW  =  P2^1;      //液晶讀/寫控制
sbit E  =  P2^2;      //液晶使能控制
void lcd_w_cmd(unsigned char com);
void lcd_w_dat(unsigned char dat);
void lcd_int();

unsigned char lcd[]="hello!";
unsigned char diz[]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8b,0x8d,0x8e,0x8f};       
void delay(unsigned int i)
{
  unsigned int k;
  for(k=0;k<i;k++);
}


void main()
{  int i;
        lcd_int();         //LCD初始化
          delay(20505);  
          while(1) {

                for(i=0;i<6;i++){
                          lcd_w_cmd(0x80+i);  //0x80代表第一行第一個,0xc0代表第二行第一個,可以往后加到F,F(xiàn)之后就無法顯示了
                        lcd_w_dat(lcd[i]);
                        lcd_w_cmd(0xc5+i);
                        lcd_w_dat(lcd[i]);
                }          
/*22222        for(i=16;i>=0;i--){
                        lcd_w_cmd(0x8F-i);  //0x80代表第一行第一個,0xc0代表第二行第一個,可以往后加到F,F(xiàn)之后就無法顯示了
                        lcd_w_dat('S');
                        delay(10505);
               
                        lcd_w_cmd(0x8F-i);
                        lcd_w_dat(0x00);  
               
               
                } */          
        }


}


void delay1()
{
  _nop_();
  _nop_();
  _nop_();
}
void lcd_int()
{
          lcd_w_cmd(0x3c);          //0011 1100  如果只能顯示一行,那就寫多次這個代碼,第一次可能是3寫進(jìn)去了,C沒寫進(jìn)去
           _nop_();
          lcd_w_cmd(0x3c);          //0011 1100
           _nop_();
          lcd_w_cmd(0x0c);          //0000 1110 低2位是控制閃爍,低1位是控制光標(biāo)
           _nop_();       
          lcd_w_cmd(0x01);          //0000 0001 清屏幕指令,將以前的顯示內(nèi)容清零
           _nop_();
          lcd_w_cmd(0x06);          //0000 1010 顯示模式設(shè)置:光標(biāo)右移,字符不移
           _nop_();
          lcd_w_cmd(0x80);          //1000 0000
}

void lcd_w_cmd(unsigned char com)
{
           RW=0;          //從lcd寫指令或數(shù)據(jù)
           delay1();
          RS=0;          //輸入指令
        delay1();
           E=1;                  //讀取信息
           delay1();
           P1=com;
           delay1();
           E=0;                 //執(zhí)行指令
           delay1();
           RW=1;         //從lcd讀取數(shù)據(jù)
           delay(255);
}
void lcd_w_dat(unsigned char dat)
{
  RW=0;
  delay1();
  RS=1;
  delay1();
  E=1;
  delay1();
  P1=dat;
  delay1();
  E=0;
  delay1();
  RW=1;
  delay(255);
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:339946 發(fā)表于 2018-5-28 19:49 來自觸屏版 | 只看該作者
有沒有仿真原理圖啊
回復(fù)

使用道具 舉報

板凳
ID:836924 發(fā)表于 2020-11-1 10:23 | 只看該作者
如果用4排的液晶剩下2排顯示怎么加??
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表