久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
根據51hei論壇里高手的帖子整理的1602液晶屏的C語言驅動文件
[打印本頁]
作者:
893843675
時間:
2018-10-24 10:43
標題:
根據51hei論壇里高手的帖子整理的1602液晶屏的C語言驅動文件
根據論壇里高手的帖子,整理的1602屏的C文件,經過測試,4塊開發板均能順利使用。
在C文件中調整1602對應的89C52單片機的引腳,即可點亮。
/****************************************************************
在數據線定義位置選擇對應引腳
****************************************************************/
#include<reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
/*引腳順序,可根據不同開發板調整*/
#define IODATA P2 //數據
sbit E=P0^5; //1602使能引腳
sbit RW=P0^6; //1602讀寫引腳
sbit RS=P0^7; //1602數據/命令選擇引腳
/********************************************************************
* 名稱 :1602寫入字符函數
* 功能 : 顯示
* 可以直接復制使用
***********************************************************************/
/*
lcd1602_char(1,5,'b') //寫字符
lcd1602_string(1,5,"ab cd ef;") //寫字符串
lcd1602_init() //初始化
*/
/********************************************************************
* 名稱 : delay()
* 功能 : 延時
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void delay1602()
{
_nop_();
_nop_();
}
void Delay1602(uint del)
{
uint i,j;
for(i=0;i<del;i++)
for(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); //8位數據,雙行顯示,5*7點陣
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" ,調用該函數如下
lcd1602_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" ,調用該函數如下
lcd1602_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 == '\0')||(a==0x90)||(a==0xd0))
{
break;
}
}
}
/*
//定位光標
void lcd1602_locate(unsigned char x,unsigned char y)
{
unsigned char aa;
if (x==1) aa=0x80;
if (x==2) aa=0x80+0x40;
Busy();
wcmd(aa+y-1);
Busy();
}
*/
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久久www成人免费精品
|
久久久av
|
欧美黄色片
|
国产在线观看免费
|
欧美日韩一区二区电影
|
日本淫视频
|
天天艹天天干天天
|
欧美亚洲第一区
|
国产欧美精品一区二区色综合朱莉
|
一级网站
|
国产一区二区三区视频
|
天天爽夜夜爽精品视频婷婷
|
欧美激情久久久
|
日韩精品免费在线观看
|
国产成人久久精品
|
日韩播放
|
国产一区影院
|
欧美日本亚洲
|
日日摸天天添天天添破
|
欧美色综合
|
日韩福利
|
国产a一区二区
|
欧美日日
|
日韩在线一区二区
|
日韩高清一区二区
|
免费看欧美一级片
|
国产99在线 | 欧美
|
综合九九
|
亚洲国产精品久久久久久
|
国产精品一卡二卡三卡
|
一区二区三区四区av
|
久久久综合网
|
国产视频一区在线观看
|
在线天堂免费中文字幕视频
|
在线观看亚洲精品
|
国产精品国产成人国产三级
|
国产九九av
|
免费视频二区
|
国产成人在线免费
|
日本在线视频中文字幕
|
精品乱子伦一区二区三区
|