娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年09月17日(星期二)

2020年09月17日 | 1602.c和1602.h頭文件,完美版的51單片機1602液晶驅動

發布者:BlossomBeauty 來源: 51hei關鍵字:頭文件  51單片機  1602液晶驅動 手機看文章 掃描二維碼
隨時隨地手機看文章

本文件可以完美驅動1602液晶屏,調用方法詳見:  http://www.51hei.com/bbs/dpj-24670-1.html  ,有2個文件1602.c和1602.h頭文件(在后面).
1602.c文件
//*****************************
#include
#include
#define uchar unsigned char
#define uint  unsigned int
#define IODATA  P0
//這三個引腳參考資料
sbit E=P2^7;    //1602使能引腳
sbit RW=P2^6;    //1602讀寫引腳   
sbit RS=P2^5;    //1602數據/命令選擇引腳


/********************************************************************
* 名稱 : delay()
* 功能 : 延時
* 輸入 : 無
* 輸出 : 無
***********************************************************************/

void delay1602()
{
_nop_();
_nop_();
}

void Delay1602(uint del)
{
uint i,j;
for(i=0;ifor(j=0;j<=148;j++)
{
}   
}
/********************************************************************
* 名稱 : bit Busy(void)
* 功能 : 這個是一個讀狀態函數,讀出函數是否處在忙狀態
* 輸入 : 輸入的命令值
* 輸出 : 無
***********************************************************************/
void Busy(void)
{
bit busy_flag = 1;
IODATA  = 0xff;
RS = 0;
delay1602();
RW = 1;
delay1602();
E = 1;
//Delay(1);
while(1)
{
busy_flag = (bit)(IODATA  & 0x80);
if(busy_flag == 0)
{
break;
}
}
E = 0;
}
/********************************************************************
* 名稱 : wcmd(uchar del)
* 功能 : 1602命令函數
* 輸入 : 輸入的命令值
* 輸出 : 無
***********************************************************************/
void wcmd(uchar del)
{
RS = 0;
delay1602();
RW = 0;
delay1602();
E = 0;
delay1602();
        IODATA  = del;
delay1602();
E = 1;
delay1602();
E = 0;
}

/********************************************************************
* 名稱 : wdata(uchar del)
* 功能 : 1602寫數據函數
* 輸入 : 需要寫入1602的數據
* 輸出 : 無
***********************************************************************/

void lcd1602_write_data(uchar del)
{
Busy();      
delay1602();
RS = 1;
delay1602();
RW = 0;
delay1602();
E = 0;
delay1602();
IODATA  = del;
        delay1602();
E = 1;
delay1602();
E = 0;
}

/********************************************************************
* 名稱 : L1602_init()
* 功能 : 1602初始化,請參考1602的資料
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void lcd1602_init(void)
{
Delay1602(15);
wcmd(0x38);
Delay1602(5);
wcmd(0x38);
Delay1602(5);
wcmd(0x38);
wcmd(0x38);
Busy();
wcmd(0x08);
Busy();   
wcmd(0x01);
Busy();
wcmd(0x06);
Busy();
wcmd(0x0c);
}

/********************************************************************
* 名稱 : L1602_char(uchar hang,uchar lie,char sign)
* 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符顯示"b" ,調用該函數如下
L1602_char(1,5,'b')
* 輸入 : 行,列,需要輸入1602的數據
* 輸出 : 無
***********************************************************************/
void lcd1602_char(uchar hang,uchar lie,char sign)
{
uchar a;
if(hang == 1)
{
a = 0x80;
}
if(hang == 2)
{
a = 0xc0;
}
a = a + lie - 1;
Busy();
wcmd(a);
Busy();
lcd1602_write_data(sign);
}

/********************************************************************
* 名稱 : L1602_string(uchar hang,uchar lie,uchar *p)
* 功能 : 改變液晶中某位的值,如果要讓第一行,第五個字符開始顯示"ab cd ef" ,調用該函數如下
L1602_string(1,5,"ab cd ef;")
* 輸入 : 行,列,需要輸入1602的數據
* 輸出 : 無
***********************************************************************/
void lcd1602_string(uchar hang,uchar lie,uchar *p)
{
uchar a;
if(hang == 1)
{
a = 0x80;
}
if(hang == 2)
{
a = 0xc0;
}
a = a + lie - 1;
while(1)
{
Busy();
wcmd(a);
Busy();
lcd1602_write_data(*p);
a++;
p++;   
if((*p == '

主站蜘蛛池模板: 株洲县| 堆龙德庆县| 牡丹江市| 清远市| 遂平县| 桦川县| 客服| 纳雍县| 上虞市| 韩城市| 兰考县| 关岭| 广河县| 莱芜市| 新源县| 常山县| 南阳市| 安多县| 分宜县| 来安县| 古蔺县| 左云县| 新乡县| 剑川县| 南宫市| 金寨县| 北海市| 班戈县| 雷山县| 中卫市| 秦皇岛市| 黔江区| 沈丘县| 营山县| 湾仔区| 通化市| 信丰县| 孝昌县| 通江县| 汉寿县| 鹿邑县|