lcd1602實現字幕滾動原理_lcd1602滾動顯示程序

作者:電工吧 日期:2020-07-05 16:07:40 人氣: 欄目:LED

  LCD1602 分為帶背光和不帶背光兩種,基控制器大部分為 HD44780,帶背光的比不帶背光的厚,是否帶背光在應用中并無差別。

  字符液晶顯示模塊是一種專門用于顯示字母、數字、符號等點陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。lcd1602即為1602字符型液晶顯示器為例,介紹其用法。一般1602字符型液晶顯示器實物如圖所示。

  lcd1602實現字幕滾動原理_lcd1602滾動顯示程序

  LCD1602主要技術參數:

  顯示容量:16×2個字符

  芯片工作電壓:4.5—5.5V

  工作電流:2.0mA(5.0V)

  模塊最佳工作電壓:5.0V

  字符尺寸:2.95×4.35(W×H)mm

  引腳功能說明

  LCD1602采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表所示:

  lcd1602實現字幕滾動原理_lcd1602滾動顯示程序

  第1腳:VSS為地電源。

  第2腳:VDD接5V正電源。

  第3腳:VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度。

  第4腳:RS寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。

  第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數據。

  第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。

  第7~14腳:D0~D7為8位雙向數據線。

  第15腳:背光源正極。

  第16腳:背光源負極。

  lcd1602實現字幕滾動原理_lcd1602滾動顯示程序

  注釋:1602為2行16列,屏幕所能顯示的地址為00H~0FH(第一行),40H~4FH(第二行),其他地址可以存儲待顯示的數據。這就給我們的花樣顯示提供了條件哈:-D

  lcd1602實現字幕滾動原理_lcd1602滾動顯示程序

  運行時序圖

  lcd1602實現字幕滾動原理_lcd1602滾動顯示程序

  注釋:這里的讀操作指的是C51讀1602的總線數據,RS=0,RW=1的時候,E給高電平則可以讀到顯示屏的狀態,這個功能一般用于讀忙,除了初始化之外,每次對1602進行讀寫操作都要讀忙檢測,當總線最高為STAD7=1則為繁忙,禁止讀寫操作。

  lcd1602實現字幕滾動原理_lcd1602滾動顯示程序

  注釋:這里指的是C51往1602寫數據/命令,通過使能E的高脈沖寫入,在E的下降沿就執行寫入的命令或者顯示寫入的數據。

  接下來簡要介紹下1602的相關指令

  lcd1602實現字幕滾動原理_lcd1602滾動顯示程序

  常用命令:

  0x80+0xdd:dd為地址,這條命令用于設置顯示起點坐標

  0x0c :開顯示,無光標,光標不閃爍 。一般做帶鍵盤輸入的才加入光標,如計算器。常用的計量顯示不顯示光標。

  0x06 :寫一個數據,地址指針加1,由1602地址表可以看出,實際上就是設置成從左往右寫數據而已。

  0x38 : 設置顯示模式,16x2顯示 5x7點陣,8位數據接口。端口不夠用時,這個命令也可以換用4位數據接口的。

  0x01 :清屏。

  電路連接圖

  lcd1602實現字幕滾動原理_lcd1602滾動顯示程序

  接下來寫相關子程序:

  //寫入命令子函數

  void LcdWriteCom(unsigned char com)

  {

  LCD_RS=0;

  LCD_RW=0;

  LCD_GPIO=com;

  delay1ms(1);

  LCD_E=1;

  delay1ms(1);

  LCD_E=0;

  }

  //寫入數據子函數

  void LcdWriteData(unsigned char dat)

  {

  LCD_RS=1;

  LCD_RW=0;

  LCD_GPIO=dat;

  delay1ms(1);

  LCD_E=1;

  delay1ms(1);

  LCD_E=0;

  }

  //讀忙子函數

  bit LCD_bz(void)

  {

  bit bz;

  LCD_RS=0;

  LCD_RW=1;

  LCD_E=1;

  delay1ms(10);

  P0=0xff; //C51單片機讀引腳要先置高電平,原因不贅述,很多資料沒有這一步驟,大家格外注意下

  bz=(bit)(LCD_GPIO&0x80);

  LCD_E=0;

  return bz;

  }

  //延時子程序

  void delay1ms(unsigned int t)

  {

  unsigned int i,j; //節約內存起見,建議用uchar,由于后面要做動態顯示,為了滿足顯示效果,這里用了uint

  for(i=0;i

  {

  for(j=0;j《300;j++);

  }

  }

  //初始化顯示屏程序

  void LcdInit()

  {

  LcdWriteCom(0x38);//顯示模式2行16列

  LcdWriteCom(0x0c);//開顯示 無光標 不閃爍

  LcdWriteCom(0x06);//寫一個指針加1

  LcdWriteCom(0x01);//清屏

  LcdWriteCom(0x80);//設置(0,0)為起點

  }

  主程序:

  //我們要把第一行做成一個16字符固定顯示,第二行做成滾動顯示25字符

  //這里采用的是1602指針右移的基礎命令而不是整屏右移命令

  #include

  #define LCD_GPIO P0

  void LcdWriteCom(unsigned char); //寫入命令子函數聲明

  void LcdWriteData(unsigned char);//寫入數據子函數聲明

  void LcdInit();//顯示屏初始化子函數聲明

  void delay1ms(unsigned int);//延時函數聲明

  bit LCD_bz(void);//讀忙函數聲明

  sbit LCD_RW=P2^5;

  sbit LCD_RS=P2^6;

  sbit LCD_E=P2^7;

  unsigned char displayDate1[]=“ I‘m Cesar ”;//一共16個字符(包括空格在內)

  unsigned char displayDate2[]=“ Please add QQ775222573 ”;//一共25個字符

  void main(void)

  {

  unsigned char i=0,j=0,n=0;

  LcdInit();

  LcdWriteCom(0x80);//設置坐標為第一行第一個字符

  for(i=;i《16;i++)

  {

  LcdWriteData(displayDate1[ i]);

  }

  while(1)

  {

  if(LCD_bz())

  continue;//讀忙,結束本次循環

  LcdWriteCom(0x80+0x40);//設置第二行第一個字符起點

  for(j=n;j《25+n;j++)//我們沒有進行整屏右移,但是我們進行了數組右移O(∩_∩)O~

  {

  LcdWriteData(displayDate2[j]);

  }

  n++;//數組的顯示起點右移,這樣實現了滾動

  if(n》=(25-15))//當顯示移到最右邊時,停頓片刻,返回起點再次循環

  {

  n=0;

  delay1ms(2000);

  }

  delay1ms(600);

  }

  }

  下載到C51調試結果:

  lcd1602實現字幕滾動原理_lcd1602滾動顯示程序

  lcd1602實現字幕滾動原理_lcd1602滾動顯示程序

本文標簽:

以上電工吧小編收集整理的 lcd1602實現字幕滾動原理_lcd1602滾動顯示程序 部分內容來自網絡,如有侵權請聯系刪除
本文地址:http://www.bloggersfromdownunder.com/tool/544.html

end
今日推薦
2020中國電動車質量排名前十名有哪些品牌?
2020中國電動車質量排名前十名有哪些品牌?

 2020隨著電動車越來越受年輕上班族的喜愛,而騎電動車也成為了一種時尚,電動車作為短距離代步工具,具有環保、經濟、不塞車等諸多優勢,越來越多的人選擇這種低碳環保的出行方式。那么電動車十大排名,都有哪些品牌全面領先行業呢?  第一名:雅迪電動車 ...[詳細]

獨家專欄
精彩推薦
熱門排行
最好的2018视频在线观看免费_最近中文字幕2019高清视频_男女爱爱小视频_波多野结衣A片视频中文字幕