久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
LCD1602 4位數據串行方式顯示的單片機源碼
[打印本頁]
作者:
凱爾特
時間:
2018-7-30 17:24
標題:
LCD1602 4位數據串行方式顯示的單片機源碼
單片機源程序如下:
/*******************************************************************
* 描述:
* LCD1602可以分為8位和4位控制方式,8位控制方式是用D0-D7數據線
* 來傳送控制命令及數據。4位控制方式是用D4-D7數據線來傳送控制命令
* 及數據。使用4位數據線做控制時,需要分兩次來傳送,先送出高4位數
* 據,再送出低4位數據。可以節省單片機的4根端口線。
*
*******************************************************************/
#include < reg52.h >
#include < intrins.h >
#define uchar unsigned char
#define uint unsigned int
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;
uchar code cdis1[ ] = {" WELCOME TO "};
uchar code cdis2[ ] = {" WWW*RICHMCU*COM "};
/**********************************************************
* 5us 延時子程序
**********************************************************/
void delayNOP()
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
/**********************************************************
* 延時子程序
**********************************************************/
void delay(uint ms)
{
uchar t;
while(ms--)
{
for(t = 0; t < 120; t++);
}
}
/**********************************************************
* 檢查LCD忙狀態
* lcd_busy為1時,忙,等待。
* lcd-busy為0時,閑,可寫指令與數據
**********************************************************/
bit lcd_busy()
{
bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EN = 1;
delayNOP();
result = (bit)(P0&0x80);
LCD_EN = 0;
return(result);
}
/*********************************************************
* 寫指令或數據
* start=0, 寫入命令; start=1, 寫入數據
*********************************************************/
void lcd_write(bit start, uchar in_data)
{
uchar Hdata,Ldata;
while(lcd_busy());
Hdata=in_data&0xf0; //取高四位
Ldata=(in_data<<4)&0xf0; //取低四位
if(start==0)
LCD_RS = 0; //寫入命令
else
LCD_RS = 1; //寫入數據
LCD_RW = 0;
LCD_EN = 0;
delayNOP();
P0 = Hdata; //發送高四位
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
delayNOP();
P0 = Ldata; //發送低四位
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
delayNOP();
}
/*************************************************************
* LCD初始化設定
*************************************************************/
void lcd_init()
{
delay(15);
lcd_write(0,0x28); //16*2顯示,5*7點陣,4位數據
delay(5);
lcd_write(0,0x28);
delay(5);
lcd_write(0,0x28);
delay(5);
lcd_write(0,0x0c); //顯示開,關光標
delay(5);
lcd_write(0,0x06); //移動光標
delay(5);
lcd_write(0,0x01); //清除LCD的顯示內容
delay(25); //延時
}
/**********************************************************
* 設定顯示位置
**********************************************************/
void lcd_pos(uchar pos)
{
lcd_write(0,pos|0x80); //數據指針=80+地址變量
}
/**********************************************************
* 主函數
**********************************************************/
void main()
{
uchar m;
lcd_init(); //LCD1602初始化
lcd_pos(0x00); //設置顯示位置為第一行
for(m=0;m<16;m++)
lcd_write(1,cdis1[m]);
lcd_pos(0x40); //設置顯示位置為第二行
for(m=0;m<16;m++)
lcd_write(1,cdis2[m]);
while(1);
}
/*********************************************************/
復制代碼
下載:
1602LCD串行方式顯示.rar
(14.21 KB, 下載次數: 46)
2018-7-30 17:24 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
catlu
時間:
2021-9-14 11:55
謝謝樓主的源碼分享,在我對LCD1602進行I2C通信改裝時,提供清晰有效的思路最后還是改造下來了
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
成人亚洲精品
|
亚洲一区欧美
|
av免费观看网站
|
91综合网
|
黄视频免费
|
www.狠狠干
|
看片国产
|
欧美大片一区
|
久久久久久成人
|
人人澡视频
|
国产精品久久久久婷婷二区次
|
亚洲国产一区二区三区
|
色就是色欧美
|
超碰520
|
精品免费国产一区二区三区
|
欧美涩
|
精品国产欧美
|
性在线
|
亚洲色视频
|
天堂一区
|
国产精品久久一区二区三区
|
久久久久久国产精品免费免费狐狸
|
91精品中文字幕一区二区三区
|
在线播放一区二区三区
|
一级大片免费
|
久久综合影院
|
日本精品久久
|
亚洲欧美一区二区三区视频
|
99久久婷婷国产综合精品电影
|
日韩中文字幕2019
|
在线观看日韩精品视频
|
中国一级特黄毛片大片
|
成人精品一区二区三区中文字幕
|
天天操狠狠操
|
国产毛片久久久
|
欧美午夜一区
|
亚洲黄色一级
|
黄色电影在线免费观看
|
我要看黄色录像一级片
|
亚洲午夜在线
|
日本午夜精品
|