LCD1602驅動講解,超詳細,單片機新手必看

2021-02-13 電子產品世界

//File1

#ifndef __ZHANGTYPE_H__

#define __ZHANGTYPE_H__

#define uint8     unsigned char

#define uint16   unsigned short int

#define uint32   unsigned long int

#define int8       signed char

#define int16     signed short int

#define int32     signed long int

#define uint64   unsigned long long int

#define int64     signed long long int

#endif

//File2

#ifndef __FUN_H__

#define __FUN_H__

#include "ZhangType.h"

#include

void Delay(uint16 time);

#endif

//File3

#include "fun.h"

void Delay(uint16 time)

{

    while(time--);

}

//File4

#ifndef __1602_H__

#define __1602_H__

#include

#include "ZhangType.h"  //變量類型

#include "fun.h"  //常用函數 

#define SETMODE  0x38  //16*2顯示,5*7點陣,8位數據接口

#define DISOPEN  0x0C  //顯示開,不顯示光標,光標不閃爍

#define DISMODE  0x06  //讀寫字符後地址加1,屏顯不移動

#define SETADDR  0x80  //設置數據地址指針初始值

#define CLEAR  0x01  //清屏,數據指針清零

#define RET  0x02  //回車,數據指針清零

#define PORT  P2  //I/O口

sbit RS = P1^0;

sbit RW = P1^1;

sbit E = P1^2;

void Init1602(void);  //初始化1602

void Write1602_Com(uint8 com);  //寫命令

void Write1602_Dat(uint8 dat);  //寫數據

void CheckBusy(void);  //檢查忙

void Write1602_One_Dat(uint8 X,uint8 Y,uint8 dat);

//寫一個數據

void Write1602_Str(uint8 addr,uint8 length,uint8 *pbuf);

//寫一個數據串

#endif//

//File5

#include "1602.h"

void Write1602_Com(uint8 com)

{

    E=0;

    RS=0;  //命令

    Delay(50);  //延時

    RW=0;  //寫

    Delay(50);

    PORT=com;  //埠賦值

    Delay(50);

    E=1;  //高脈衝

    Delay(50);

    E=0;

}

void Write1602_Dat(uint8 dat)

{

    E=0;

    RS=1;  //數據

    Delay(50);  //延時

    RW=0;  //寫

    Delay(50);

    PORT=dat;  //埠賦值

    Delay(50);

    E=1;  //高脈衝

    Delay(50);

    E=0;

}

void CheckBusy(void)

{

    uint8 temp;

    RS=0;  //命令

    RW=1;  //讀

    E=0;

    while(1)

    {

       PORT=0xFF;  //埠為輸入

       E=1;  //高脈衝

       temp=PORT;

       E=0;

       if ((temp&0x80)==0)  //檢查BF位是否為0

           break;

    }

}

void Init1602(void)

{

    Write1602_Com(SETMODE);  //模式設置

    Delay(500);

    Write1602_Com(DISOPEN);  //顯示設置

    Delay(500);

    Write1602_Com(DISMODE);  //顯示模式

    Delay(500);

    Write1602_Com(CLEAR);  //清屏

    Delay(500);

}

void Write1602_One_Dat(uint8 x,uint8 y,uint8 dat)

{

    x&=0x0f;

    y&=0x01;

    if(y)

       x|=0x40;

    x|=0x80;

    Write1602_Com(x);

    Write1602_Dat(dat);

}

void Write1602_Str(uint8 addr,uint8 length,uint8 *pbuf)

{

    uint8 i;

    Write1602_Com(addr);

    for(i=0;i

    {

       Write1602_Dat(pbuf[i]);

    }

}

//File6

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

*名稱:主文件(_main.c)

*功能:測試

*日期:2014/09/09

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

#include "1602.h"

#include "fun.h" 

uint8 code hot[8]={  //攝氏溫度字模

0x10,0x06,0x09,0x08,0x08,0x09,0x06,0x00

};

uint8 code pi[8]={

0x00,0x1f,0x0a,0x0a,0x0a,0x13,0x00,0x00  //pai

};

uint8 code strMCU[]="I love MCU!";

uint8 code strTest[]="LCD1602 Test!";

uint8 code blog[]="Welcome to my blog!";

uint8 i;

void main()

{

    Init1602();  //初始化1602

    //自定義CGRAM

    Write1602_Str(0x40,8,hot);  //攝氏溫標

    Write1602_Str(0x48,8,pi);  //pai

    Write1602_Str(0x80,strlen(strMCU),strMCU);

    //"I love MCU!"

    Write1602_Str(0x80+0x40,strlen(strTest),strTest);

    //"LCD1602 Test!"

    for(i=0;i<50;i++)  //延時一段時間

       Delay(10000);

    Write1602_Com(CLEAR);  //指令執行時間較長

    Delay(500);  //多加一些延時

    for(i=0;i<16;i++)

       Write1602_Dat(0);

    Write1602_Com(0xc0);  //設置DDRAM地址

    for(i=0;i<16;i++)

       Write1602_Dat(1);

    for(i=0;i<50;i++)  //延時一段時間

       Delay(10000);

    Write1602_Com(CLEAR);  //指令執行時間較長

    Delay(500);  //多加一些延時

    Write1602_Str(0x80+0x10,strlen(blog),blog);

    //寫在顯示之外

    while(1)

    {

       Write1602_Com(0x18);  //左移

       for(i=0;i<20;i++)  //延時

           Delay(10000);

    }

}

相關焦點

  • lcd1602中文資料分享:lcd1602接線圖_lcd1602與單片機連接圖
    體積小、重量輕   1602液晶模塊通過顯示屏上的電極控制液晶分子狀態來達到顯示的目的,在重量上比相同顯示面積的傳統顯示屏要輕得多。   d. 功耗低   相對而言,1602液晶顯示屏的功耗主要消耗在其內部的電極和驅動IC上,因而耗電量比其它顯示屏要少得多。
  • 【Proteus】單片機配合矩陣鍵盤LCD1602製作簡易計算器
    在之後想出一個關於Protues仿真的系列,回想起在大學時做課程設計,大多數是用這個來做,這個系列就圍繞一些常用的外設或者說課程設計題目來進行對以前知識的回顧,溫故而知新,同時也希望能對新手讀者的學習有所幫助
  • Arduino 通過 I2C 驅動 LCD1602 液晶屏
    LCD 1602 液晶屏模塊的使用,之前在「Arduino用超聲波模塊+LCD1602測距並顯示」一文中有詳細介紹。
  • 51單片機對LCD1602液晶的驅動設計
    51單片機——LCD16021、1602液晶讀寫時序(1)、讀狀態RS=L,R/W=H,
  • 全方位解析LCD1602特性及單片機顯示應用
    這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼  從上表可以看出最左邊一列是供用戶自定義字符的,共有16個,實際只有8個字節可以用,字符碼為00000000—00000111這8個地址  LCD1602—顯示應用(單片機學習)  LCD1602是51單片機中很重要的模塊之一,為了方便新手學習1602,筆者把自己學習
  • Arduino基礎—兩線IIC驅動LCD1602
    Arduino Uno R3開發板的外部IO口是非常有限的。
  • PIC單片機驅動LCD1602液晶顯示字符串程序
    /****************************************************************************** 功能:LCD1602
  • 51單片機開發之LCD1602顯示屏
    RD(RS)引腳接P2.6WR(RW)引腳接P2.5LCDE(E)引腳接P2.74.11.2 LCD1602字符屏幕介紹1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數字、符號的點陣型液晶模塊。
  • Arduino入門筆記:利用1602、1302實現時鐘和定時器
    一、本次實驗所需器材1、Arduino UNO板2、1602液晶板:http://www.cnblogs.com/xiaowuyi/p/3390024.html(或者http://wikicode.net/?p=232)已經介紹過。
  • 51單片機輕鬆入門與實踐 — 暢學單片機
    ,講解當前最熱門的51單片機的C程序設計!本書通過30個模塊實例全面講解單片機開發中的各種技術,包括單片機接口的擴展、存儲器的擴展、輸入/輸出及顯示技術、實用電子製作、傳感控制技術、電氣傳動及控制技術、單片機通信技術、典型器件及應用技術、外圍電路設計、軟體編程等等內容。本套課程基於暢學51開發板講解。包含:51單片機簡介、寄存器設置及使用、硬體測試、各個應用模塊器件原理及使用、外圍電路設計、51單片機C語言編程。
  • pic單片機兩個IO口四線驅動LCD1602
    只用兩個IO埠驅動74LS164擴展成並口驅動LCD1602(四線模式),這是個完整簡單的例子,可實現字符串左移200次,右移200次,不停的循環。現上傳與大家共享成果!
  • 74HC595驅動LCD1602程序
    為了節約埠,1602液晶我也改為595來驅動了,一共有2個文件都在下面,程序本人測試通過,在你自己的應用中只需要修改埠即可.
  • (進階篇)51單片機之電子萬年曆設計、LCD1602滾動顯示、控制數碼管顯示數字
    一、實操演示- 電子萬年曆設計1、圖文詳細LCD1602硬體電路
  • 51單片機學習筆記——液晶
    一、筆記:1.1602液晶是指每行顯示16個字符,一共可以顯示2行的液晶;
  • 暢學三合一51單片機實戰教程
    ,講解當前最熱門的51單片機的C程序設計!本書通過26個模塊實例全面講解單片機開發中的各種技術,包括單片機接口的擴展、存儲器的擴展、輸入/輸出及顯示技術、實用電子製作、傳感控制技術、電氣傳動及控制技術、單片機通信技術、典型器件及應用技術、外圍電路設計、軟體編程等等內容。本套課程基於暢學51開發板講解。包含:51單片機簡介、寄存器設置及使用、硬體測試、各個應用模塊器件原理及使用、外圍電路設計、51單片機C語言編程。
  • 單片機設計LCD數字鐘(萬年曆)
    單片機設計LCD數字鐘(萬年曆)程序與電路如下:本文引用地址:http://www.eepw.com.cn/sbit add1=P3^6; //加1鍵sbit sub1=P3^7; //減1鍵bit k=0,f=0;//k為0表示運行狀態,k為1表示設置狀態;f為0表示第一行顯示,f為1表示第二行顯示char sec,min,hour,week,day,month,year,n,m;unsigned char count,key;unsigned char lcdd
  • 單片機視頻教程
    導讀:在無老師指導的情況下學習單片機,不免會產生這樣或那樣的問題而無處求解,對於自學而言,視頻教程是最合適不過的了,本文就為大家講解單片機視頻~~本文引用地址
  • 對單片機初學者一點建議!新手必看!
    建議新手不要學。比如說 I2C 的時候,看半天資料,還不如用示波器夾一下 SDA 和 SCL 引腳,然後結合資料看看具體的時序是怎麼樣的,比你看幾天的資料要深刻得多。當然,有人是捕捉不到那個信號的,你信不信?捉不到信號的要先學學怎麼用示波器了,呵呵。
  • 一個51單片機實現數字時鐘(1602顯示)
    用單片機實現數字時鐘,關於時間顯示,是用的1602液晶,C51單片機,然後再加一個定時器 在實現過程中,用到了單片機的中斷系統的相關知識,還有定時器,液晶顯示,鍵盤的動態掃描,都是以前的知識,沒什麼難度. 程序如下,可以正常運行.