新聞中心

        EEPW首頁 > 光電顯示 > 設計應用 > LCD1602程序代碼及顯示流程圖

        LCD1602程序代碼及顯示流程圖

        作者: 時間:2017-10-14 來源:網絡 收藏

          lcd1602顯示程序代碼

          

        本文引用地址:http://www.104case.com/article/201710/366255.htm

          前些天弄了最小系統板后就想著學習1602的顯示程序,可惜壇子里的或網上的,都沒有簡單的1602顯示程序,無柰在網上下載了一段經過反復修改測試,終于有了下面一段代碼:

          // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

          // - - 初始化接口

          # define LCD_DB P0 // - - P0 = DB0~DB7

          sbit LCD_RS=P2^0; // - - p2.0 = RS

          sbit LCD_RW=P2^1; // - - p2.1 = RW

          sbit LCD_E=P2^2; // - - p2.2 = E

          // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

          // - - 定義函數

          # define uchar unsigned char

          # define uint unsigned int

          // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

          // - - 定義子程序函數

          void LCD_init(void); // - - 初始化函數

          void LCD_write_command(uchar command); // - - 向寫指令函數

          void LCD_write_data(uchar dat); // - - 向寫數據函數

          void LCD_set_xy(uchar x,uchar y); // - - 設置LCD1602顯示位置 X(0-16),y(1-2)

          void LCD_disp_char(uchar x,uchar y,uchar dat); // - - 在LCD1602上顯示一個字符

          void LCD_disp_string(uchar X,uchar Y,uchar *s); // - - 在LCD1602上顯示一個字符串

          //void LCD_check_busy(void);//檢查忙函數。我沒用到此函數,因為通過率極低。

          void LCD_delay_10us(uint n); // - - 10微秒的延時子程序

          void LCD_delay_50us(uint n); // - - 50微秒的延時子程序

          // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

          // - - 初始化LCD1602

          void LCD_init(void)

          {

          LCD_delay_10us(20);

          LCD_write_command(0x38); // - - 設置8位格式,2行,5x7

          LCD_delay_10us(5);

          LCD_write_command(0x0c); // - - 整體顯示,關光標,不閃爍

          LCD_delay_10us(5);

          LCD_write_command(0x06); // - - 設定輸入方式,增量不移位

          LCD_delay_10us(5);

          LCD_write_command(0x01); // - - 清除屏幕顯示

          LCD_delay_50us(40);

          }

          //********************************

          // - - 向LCD1602寫指令

          void LCD_write_command(uchar dat)

          {

          LCD_delay_10us(5);

          LCD_RS=0; // - - 指令

          LCD_RW=0; // - - 寫入

          LCD_DB=dat;

          LCD_delay_10us(5);

          LCD_E=1; // - - 允許

          LCD_delay_10us(5);

          LCD_E=0;

          }

          // - - 向LCD1602寫數據

          void LCD_write_data(uchar dat)

          {

          LCD_delay_10us(5);

          LCD_RS=1;// - - 數據

          LCD_RW=0;// - - 寫入

          LCD_DB=dat;

          LCD_delay_10us(5);

          LCD_E=1;// - - 允許

          LCD_delay_10us(5);

          LCD_E=0;

          }

          // - - 設置顯示位置

          void LCD_set_xy(uchar x,uchar y)

          {

          uchar address;

          if(y==1)

          {

          address=0x80+x; // - - 第一行位置

          } else {

          address=0xc0+x; // - - 第二行位置

          }

          LCD_delay_10us(5);

          LCD_write_command(address);

          }

          // - - 顯示一個字符函數

          void LCD_disp_char(uchar x,uchar y,uchar dat) // - - LCD_disp_char(0,1,0x38); // - - 顯示8

          {

          LCD_set_xy(x,y);

          LCD_delay_10us(5);

          LCD_write_data(dat);

          }

          // - - 顯示一個字符串函數

          void LCD_disp_string(uchar x,uchar y,uchar *s)

          {

          LCD_set_xy(x,y);

          LCD_delay_10us(5);

          while(*s!=‘

        主站蜘蛛池模板: 定州市| 山丹县| 蒙山县| 和龙市| 桐乡市| 称多县| 兴业县| 读书| 逊克县| 密山市| 什邡市| 沽源县| SHOW| 措美县| 桓仁| 深泽县| 密云县| 廊坊市| 南开区| 娱乐| 晋宁县| 布拖县| 无为县| 清河县| 库尔勒市| 玛多县| 普格县| 正蓝旗| 双柏县| 铁力市| 武宣县| 大连市| 洪湖市| 岐山县| 吴忠市| 隆尧县| 榆树市| 河南省| 临高县| 临桂县| 中江县|