久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

lcd1602 屏驅動(自定義字符)

作者:huqin   來源:本站原創   點擊數:  更新時間:2013年12月15日   【字體:

1、時序圖
2、代碼
3、自定義字符

                          


                                 時序圖



代碼:

#include <reg51.h>
#include<intrins.h>
sbit RS = P2^4;   //定義端口
sbit RW = P2^5;
sbit EN = P2^6;
void Delayus(unsigned char t) // us級別延時

 while(--t);
}
void Delayms(unsigned char t)// ms級別延時
{
   
 while(t--)
 {
     //大致延時1mS
     Delayus(245);
  Delayus(245);
 }
}
bit m_1602() //判斷1602是否忙
{
 P0 = 0xFF; //準備讀取
 RS = 0;
 RW = 1;
 EN = 0;
 _nop_();
 EN = 1; //產生高電平
 return (bit)(P0 & 0x80);
}
void x_1602(bit i,unsigned char j) //參數一是寫(0、寫指令 1、寫數據),參數二是寫入的8位數據
{
 while(m_1602())
 {
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
 }
 RS = i;
 RW = 0;
 EN = 1;
 P0 = j;
 _nop_();
 EN = 0; //產生下降沿
}
void qp_1602() //清屏函數
{
 x_1602(0,0x01); //第一個參數是:寫入的類型(0、寫指令 1、寫數據),第一個參數是:寫入的數據
 Delayms(5);
}
//顯示字符
void zf_1602(unsigned char x,unsigned char y,unsigned dat) //參數一是顯示的列,參數二是顯示的行,參數三是顯示的數據
{
 if(y==0)
 {
  x_1602(0,(0x80+x)); //第一行
 }
 else
 {
  x_1602(0,(0xc0+x)); //第二行
 }
 x_1602(1,dat); //寫入數據
}
void zfc_1602(unsigned char x,unsigned char y,unsigned char *dat)
{
 if(y==0)
 {
  x_1602(0,(0x80+x)); //第一行
 }
 else
 {
  x_1602(0,(0xc0+x)); //第二行
 }
 while(*dat) //&:取地址 *:取值
 {
  x_1602(1,*dat);
  dat ++;
 }
}
void csh_1602()  //初始化1602
{
 x_1602(0,0x38); //顯示模式設置
 Delayms(5);
 x_1602(0,0x38);
 Delayms(5);
 x_1602(0,0x38);
 Delayms(5);
 x_1602(0,0x38);
 x_1602(0,0x08); //顯示關閉.
 x_1602(0,0x01); //顯示清屏
 x_1602(0,0x06); //顯示光標移動設置
 Delayms(5);
 x_1602(0,0x0c);  //顯示開及光標設置
}
void main()
{
 csh_1602();
 qp_1602();
 while(1)
 {
  zf_1602(0,0,'Q'); //寫入字符
  zf_1602(1,0,'Q'); //寫入字符
  zf_1602(2,0,' '); //寫入字符
  zfc_1602(3,0,"
www.baidu.con"); //寫入字符串
  zfc_1602(1,1,"1990.02.08"); //寫入字符串
  while(1);
 }
}

自定義字符 (轉)

圖示:

 

用戶自定義字符的應用:
我們從CGROM表上可以看到,在表的最左邊是一列可以允許用戶自定義的CGRAM,從上往下看著是16個,實際只有8個字節可用。它的字符碼是 00000000-00000111這8個地址,表的下面還有8個字節,但因為這個CGRAM的字符碼規定0-2位為地址,3位無效,4-7全為零。因此 CGRAM的字符碼只有最后三位能用也就是8個字節了。等效為0000X111,X為無效位,最后三位為000-111共8個。
如果我們要想顯示這8個用戶自定義的字符,操作方法和顯示CGROM的一樣,先設置DDRAM位置,再向DDRAM寫入字符碼,例如“A”就是41H。現在我們要顯示 CGRAM的第一個自定義字符,就向DDRAM寫入00000000B(00H),如果要顯示第8個就寫入00000111(08H),簡單吧!
好!現在我們來看怎么向這八個自定義字符寫入字模。有個設置CGRAM地址的指令如下圖:

 


從這個指令可以看出指令數據的高2位已固定是01,只有后面的6位是地址數據,而這6位中的高3位就表示這八個自定義字符,最后的3位就是字模數據的八個地址了。例如第一個自定義字符的字模地址為01000000-01000111八個地址。我們向這8個字節寫入字模數據,讓它能顯示出“℃”
地址:01000000  數據:00010000     圖示:    ○○○■○○○○
   01000001     00000110                ○○○○○■■○
   01000010     00001001                ○○○○■○○■
   01000011     00001000                 ○○○○■○○○
   01000100     00001000                ○○○○■○○○
   01000101     00001001                ○○○○■○○■
   01000110     00000110                ○○○○○■■○
   01000111     00000000                ○○○○○○○○

關閉窗口

相關文章

主站蜘蛛池模板: 日韩三级 | 欧美成人a∨高清免费观看 色999日韩 | 中文一区二区 | 亚洲人成人一区二区在线观看 | 国产91久久精品一区二区 | 亚洲成av | 国产精品爱久久久久久久 | 欧美日韩在线一区二区 | 亚洲精选一区 | 国产亚洲欧美另类一区二区三区 | 亚洲免费在线观看视频 | 精品一区在线免费观看 | 欧美男人天堂 | 日韩一区二区三区在线视频 | 日韩欧美国产综合 | 四虎影院免费在线播放 | 羞羞的视频免费看 | 超碰高清| 日本a网站| 天堂一区在线观看 | 超碰成人免费 | 久久这里只有精品首页 | 日本久久久一区二区三区 | 亚洲午夜精品一区二区三区他趣 | 精品久久久久久久久久久 | 亚洲 欧美 综合 | 国产亚洲高清视频 | 欧美精品一区在线 | 99综合| 国产日韩精品久久 | 亚洲v区| 欧美激情精品久久久久久变态 | 国产精品久久久久久久午夜片 | 成人综合一区 | 久久久久成人精品免费播放动漫 | 久久成人国产 | 中文在线www | 国产91在线 | 中日 | 久操伊人| 国产精品久久久久久久久久久免费看 | 2023亚洲天堂 |