基于51单片机+LCD1602显示
生活随笔
收集整理的這篇文章主要介紹了
基于51单片机+LCD1602显示
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
LCD1602顯示介紹及程序
- LCD1602介紹
- 寫命令 代碼
- 寫數據 代碼
- LCD1602顯示程序步驟及如何初始化
- 具體需要初始化什么?
- 具體指令相關介紹:
- 初始化代碼
- 原理圖及顯示程序
- 最終項目展示
LCD1602介紹
LCD1602相關引腳
LCD1602寫命令、寫數據相關操作圖
根據上面時序圖和時序參數圖我們可以寫出 寫命令代碼 和寫數據代碼
寫命令 代碼
寫命令 void write_com(char command) {RS = 0; RW = 0; //高讀低寫LCD = command;delay5ms(); //這里延時最低要30納秒 我們直接給5msE = 1;//使能拉高 delay5ms(); //最低要求延遲150納秒 我們直接給5msE = 0; }寫數據 代碼
寫數據 void write_data(char data) {RS = 1;RW = 0;LCD = data;delay5ms(); //這里延時最低要30納秒 我們直接給5msE = 1;//使能拉高 delay5ms(); //最低要求延遲150納秒 我們直接給5msE = 0; }LCD1602顯示程序步驟及如何初始化
1. 初始化
2. 寫命令(RS=0)
3. 寫數據(RS=1)
具體需要初始化什么?
1.顯示開關控制指令(功能:控制顯示器開/關 光標顯示/關閉 是否閃爍)2.進入模式設置指令(功能:每寫入一位數據后光標的移動 左/右 顯示屏不移動/整體右移 )3.功能設定指令(功能:設定數據總線的位數 顯示的行數 字型 )4.清屏指令(功能:清屏顯示空白 光標歸位 地址計數器(AC)的值為0)5.顯示位置設置(功能:指定在1602上哪個位置上顯示數據)具體指令相關介紹:
1.顯示開關控制指令
2.進入模式設置指令
3.功能設定指令
4.清屏指令
5.顯示位置設置
如果想在1602屏幕上第一行第一個開始顯示 就是0x80
如果想在1602屏幕上第二行第一個開始顯示 就是0xc0
我這里就設置在第一行第三個開始顯示hello word
write_com(0x83); //在1602第一行第3個開始顯示初始化代碼
void init_lcd() { write_com(0x0c); //開顯示功能 無光標 不閃爍write_com(0x06); //寫入數據后光標自動右移 整屏不移動write_com(0x38); //數據總線8位 16X2顯示 5*7點陣write_com(0x01); //清屏 0000 0001write_com(0x83); //在1602第一行第3個開始顯示 }原理圖及顯示程序
引腳定義
lcd1602.h
void write_com(unsigned char command); //寫命令函數 void write_data(unsigned char dat); //寫數據函數 void init_lcd(); //初始化LCD1602函數 void delay5ms(); //延時5ms函數lcd1602.c
#include <reg52.h> #include "lcd1602.h"#define LCD P0 sbit E = P2^7; //使能 sbit RS = P2^6; //數據/命令(H/L) sbit RW = P2^5; //讀寫(H/L)/******延遲5毫秒函數********/ void delay5ms() //誤差 -0.000000000001us {unsigned char a,b;for(b=15;b>0;b--)for(a=152;a>0;a--); }/******LCD1602寫命令函數********/ void write_com(unsigned char command) {RS = 0; RW = 0; //高讀低寫LCD = command;delay5ms(); //這里延時最低要30納秒 我們直接給5msE = 1; //使能拉高 delay5ms(); //最低要求延遲150納秒 我們直接給5msE = 0; }/******LCD1602寫數據函數********/ void write_data(unsigned char dat) {RS = 1;RW = 0;LCD = dat;delay5ms(); //這里延時最低要30納秒 我們直接給5msE = 1; //使能拉高 delay5ms(); //最低要求延遲150納秒 我們直接給5msE = 0; } /******初始化LCD1602********/ void init_lcd() { write_com(0x06); //寫入數據后光標自動右移 整屏不移動。write_com(0x0c); //開顯示功能 無光標 不閃爍write_com(0x38); //數據總線8位 16X2顯示 5*7點陣write_com(0x01); //清屏 0000 0001write_com(0x83); //在1602第一行第3個開始顯示 }main.c
#include <reg52.h> #include "lcd1602.h"unsigned char array[] = {"hello word"}; unsigned char i = 0;void main() {//1.初始化lcd1602init_lcd();//2.寫數據(hello word)到LCD1602顯示while(array[i] != '\0'){ write_data(array[i]);i++;} while(1); }最終項目展示
總結
以上是生活随笔為你收集整理的基于51单片机+LCD1602显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 俄罗斯方块Python
- 下一篇: Win10软件:推荐两款Windows操