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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2586|回復: 1
打印 上一主題 下一主題
收起左側

1602液晶51單片機驅動程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:26188 發表于 2015-2-18 01:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//引腳定義
#define LCD_RS      P21    // RS針,LCD數據/命令(H/L)選擇端
#define LCD_RW      P22    // R/W針,LCD讀/寫(H/L)選擇端
#define LCD_EN      P23    // E針,LCD使能信號高有效
#define LCD_DATA    P0     // DB0~DB7針,LCD并行數據線
#define LCD_BUSY    P07    // DB7針,LCD忙信號位
#define LCD_GO_HOME               0x02         //AC=0,光標、畫面回HOME位
//輸入方式設置
#define LCD_AC_AUTO_INCREMENT     0x06         //數據讀、寫操作后,AC自動增一
#define LCD_AC_AUTO_DECREASE      0x04         //數據讀、寫操作后,AC自動減一
#define LCD_MOVE_ENABLE           0x05         //數據讀、寫操作,畫面平移
#define LCD_MOVE_DISENABLE        0x04         //數據讀、寫操作,畫面不動
//設置顯示、光標及閃爍開、關
#define LCD_DISPLAY_ON            0x0C         //顯示開
#define LCD_DISPLAY_OFF           0x08         //顯示關
#define LCD_CURSOR_ON             0x0A         //光標顯示
#define LCD_CURSOR_OFF            0x08         //光標不顯示
#define LCD_CURSOR_BLINK_ON       0x09         //光標閃爍
#define LCD_CURSOR_BLINK_OFF      0x08         //光標不閃爍
//光標、畫面移動,不影響DDRAM
#define LCD_LEFT_MOVE             0x05         //LCD顯示(整屏)右移一位 0x05
#define LCD_RIGHT_MOVE            0x07         //LCD顯示(整屏)左移一位 0x07
#define LCD_CURSOR_LEFT_MOVE      0x10         //光標左移一位
#define LCD_CURSOR_RIGHT_MOVE     0x14         //光標右移一位
//工作方式設置
#define LCD_DISPLAY_DOUBLE_LINE   0x38         //兩行顯示
#define LCD_DISPLAY_SINGLE_LINE   0x30         //單行顯示
/***************************************************************************************
** 函數名稱: void LCD_BUSY_Bit(void)
** 功能描述: 等待忙信號消失
****************************************************************************************/
void LCD_BUSY_Bit(void)   
{
    bit byteData;
    do
    {//循環開始
        LCD_EN   = 0;           //使能關
        LCD_RS   = 0;           //指令方式
        LCD_RW   = 1;           //讀LCD
        LCD_DATA = 0xFF;        //拉高數據口電位
        LCD_EN   = 1;           //使能開
        byteData = LCD_BUSY;    //取忙信號
    }while(byteData);           //循環終點 讀到 忙位為0退出,否則繼續讀忙。
    LCD_EN = 0;                 //使能關
}
/***************************************************************************************
** 函數名稱: void LCD_Write_Instruction(unsigned char byteData)
** 功能描述: 寫指令
** 輸   入: unsigned char byteData
** 調用模塊: void LCD_BUSY_Bit(void)
****************************************************************************************/
void LCD_Write_Instruction(unsigned char byteData)
{
    LCD_BUSY_Bit();       //讀忙
    Delay_us(30);         //微秒級延時
    LCD_EN = 0;           //使能關
    LCD_RS = 0;           //1:數據;0:指令
    LCD__RW = 0;          //1:讀;0:寫
    LCD_DATA = byteData;  //指令寫入數據口
    LCD_EN = 1;           //使能開
    Delay_us(30);         //微秒級延時
    LCD_EN = 0;           //使能關
}
/***************************************************************************************
** 函數名稱: void LCD_Write_DATA(unsigned char byteData)
** 功能描述: 寫數據
** 輸   入: unsigned char byteData 寫數據
** 調用模塊: void LCD_BUSY_Bit(void)
****************************************************************************************/
void LCD_Write_DATA(unsigned char byteData)
{
    LCD_BUSY_Bit();       //讀忙
    Delay_us(30);         //微秒級延時
    LCD_EN = 0;           //使能關
    LCD_RS = 1;           //1:數據;0:指令
    LCD_RW = 0;           //1:讀;0:寫
    LCD_DATA = byteData;  //數據寫入數據口
    LCD_EN = 1;           //使能開
    Delay_us(30);         //微秒級延時
    LCD_EN = 0;           //使能關
}
/***************************************************************************************
** 函數名稱: void LCD_1602_Setup(void)
** 功能描述: 初使化1602液晶
****************************************************************************************/
void LCD_1602_Setup(void)
{
    LCD_write_instruction(LCD_AC_AUTO_INCREMENT|LCD_MOVE_DISENABLE); //AC自動增1,讀寫時畫面不移動
    LCD_write_instruction(LCD_DISPLAY_ON|LCD_CURSOR_OFF);            //顯示開,光標不顯示
    LCD_write_instruction(LCD_DISPLAY_DOUBLE_LINE);                  //雙行顯示
    LCD_Write_Instruction(1);                                        //清屏
}
/***************************************************************************************
** 函數名稱: void LCD_1602_write_char(unsigned char x,unsigned char y,unsigned char dat )
** 功能描述: 單個字寫入到第x(1,2)行y(0,15)列
** 輸   入: unsigned char x 第x(1,2)行;unsigned char y(0,15)列;unsigned char *s要寫ude字符
** 調用模塊: LCD_write_instruction(),LCD_Write_DATA()
****************************************************************************************/
void LCD_1602_write_char(unsigned x,unsigned char y,unsigned char dat )
{
unsigned char i = 0;
x = (x-1)*0x40;   //第幾行
y = x+y;   //第幾列
LCD_write_instruction(0x80+y);  
LCD_Write_DATA(dat); //寫入字符串值
}



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

使用道具 舉報

沙發
ID:43559 發表于 2015-3-4 22:44 | 只看該作者
看看。感謝分享。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 涩涩视频网站在线观看 | 欧美一区二区三区 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 天天久久 | 国产成人av在线播放 | 久久久精品影院 | 不卡一区二区三区四区 | www.久| 成人欧美一区二区三区在线播放 | 亚洲国产精品99久久久久久久久 | 日韩成人在线播放 | 久久久片 | 午夜激情免费 | 日本精品一区 | 91精品久久久| 亚洲精品区 | 最新免费av网站 | 国产区一区| 亚洲黄色成人网 | 99久久99| 久久综合伊人一区二区三 | 欧美一区二区大片 | 成人亚洲网站 | 日韩午夜影院 | 久久国产区 | 亚洲午夜视频 | 亚洲一区二区三区在线视频 | 国产精品久久久久av | 91亚洲国产成人久久精品网站 | 日本在线视 | 在线看国产 | 久久av一区二区三区 | 欧产日产国产精品v | 久久国产精品久久 | 亚洲综合无码一区二区 | 欧美极品少妇xxxxⅹ免费视频 | 成人影院av | 久久久久国产一区二区三区不卡 | 欧美一级二级视频 | 日韩欧美不卡 | 深夜爽视频 |