久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

51單片機驅動1602液晶(4線串行)

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年08月06日   【字體:

/*單片機I/O口使單片機資源的重要組成部分,也是用來擴展外圍設備的必選資源,盡可能以更少的I/O口實現更多的功能是單片機工程師追求的目標,現在的一些串行器件也為這一目標的實現添加了更多的可能性,比如I2C總線,MAXIM力推的1-WIRE等等,都可以以很少的I/O口實現更多的功能,當然這是以降低一定的速度為代價的。

廢話少說,進入正題。

顯示器件多見的是LED數碼管,LCD液晶屏等。一般的數碼管成本低廉,在顯示內容要求不多的時候適用;LCD液晶屏以更多的顯示空間得到了許多人的愛好,不過成本上要高的多(市場價在20元左右),本文以LCD1602為例說明如何驅動液晶屏。

LCD1602外接的控制接口有RS,R/W,E;數據接口為DB7--DB0。總共有11跟線與單片機的I/O口連接,若使用標準的51單片機,至少占用了一個端口再加上另一個端口的部分I/O口。這再很多應用場合是不大可取的。所以很有必要減少連接數。從其數據手冊上介紹的4線連接方式可以達到只使用7個I/O口即可滿足要求,其中為3個控制口RS,R/W,E和數據口的DB7--DB4;寫入數據或指令的順序是先寫高半個字節,再寫低半個字節。


其中P0口的高四位接到LCD1602的DB7-DB4,P3.0-P3.1分別接RS,R/W,E;

下面給出驅動源程序*/


#include <reg52.h>
#include "intrins.h"

#define uint unsigned int
#define uchar unsigned char

#define TRUE 1
#define FALSE 0
#define nop _nop_()


#define PtData P0 //定義連接口線,
#define PtContr P3
sbit RS="PtContr"^0;
sbit RW="PtContr"^1;
sbit E="PtContr"^2;

void InitialLcd();
void WriteLcdInstr(uchar);
void WriteLcdData(uchar);
void CheckLcdBusy();
uchar HexToDdram(uchar);

void Delay(unsigned int);


main()
{Delay(1000);

InitialLcd();

WriteLcdInstr(0x80);
WriteLcdData('e');
WriteLcdData('l');
WriteLcdData('k');
WriteLcdData('e');
WriteLcdData('l');
WriteLcdData('i');
WriteLcdData('k');
WriteLcdData('e');

WriteLcdInstr(0xc0);
WriteLcdData('L');
WriteLcdData('C');
WriteLcdData('D');
WriteLcdData('1');
WriteLcdData('6');
WriteLcdData('0');
WriteLcdData('2');

while(1)
{

WriteLcdInstr(0x0f);
Delay(30000);
WriteLcdInstr(0x08);
Delay(40000);
}

}

//----------------LCD1602函數---------------------//
//---初始化
void InitialLcd()
{Delay(600);//延時應大于15ms,不同的晶振使需要修改,本程序再6M下調試通過
RS=0;
RW=0;nop;
E=0;nop;

E=1;nop;
PtData=0x20;//  
nop;
E=0;
Delay(200);//延時應大于4.1ms

E=1;nop;
PtData=0x20;//  
nop;
E=0;
Delay(5);//延時應大于100us

E=1;nop;
PtData=0x20;//
nop;
E=0;//設置4位操作;

WriteLcdInstr(0x01);//清屏
WriteLcdInstr(0x28);//設置4位操作,1行顯示,5x8
WriteLcdInstr(0x02);//光標歸位
WriteLcdInstr(0x06);//AC自動加1,畫面不動
WriteLcdInstr(0x0f);//0x0f:光標閃爍開;

}
//---寫指令
void WriteLcdInstr(uchar Temp)
{CheckLcdBusy();
RS=0;
RW=0;
E=0;nop;
E=1;nop;
PtData=Temp;
nop;
E=0;nop;
E=1;nop;
PtData=(Temp<<4);
nop;
E=0;nop;
}


//---寫數據
void WriteLcdData(uchar Temp)
{
CheckLcdBusy();
RS=1;
RW=0;
E=0;nop;
E=1;nop;
PtData=Temp;
nop;
E=0;nop;
E=1;nop;
PtData=(Temp<<4);
nop;
E=0;nop;
}


//---查忙
void CheckLcdBusy()
{uchar Temp,t;
PtData=0xff;

RW=1;
RS=0;nop;
E=0;nop;
do
{nop;
E=1;nop;
Temp=PtData;
nop;nop;nop;
E=0;nop;nop;

E=1;nop;
t=PtData;
nop;nop;nop;
E=0;nop;nop;

Temp&=0x80;
}while(Temp==0x80);
}


//---delay
void Delay(unsigned int N)
{unsigned int i;
for(i=0;i<N;i++){i=i;}
}

關閉窗口

相關文章

主站蜘蛛池模板: 欧美一级毛片久久99精品蜜桃 | 日韩欧美三级 | 日本免费小视频 | 天天拍夜夜爽 | 中文字幕一区二区三区在线乱码 | 日韩欧美福利视频 | 日韩av成人| 欧美一区二区三区久久精品 | 国产精品久久久久久久久免费丝袜 | 99免费在线视频 | 欧美日韩不卡合集视频 | 亚洲国产一区二区视频 | 日本福利视频免费观看 | aaa综合国产 | 亚洲欧美综合精品久久成人 | 一区二区三区视频 | 亚洲综合大片69999 | 丝袜美腿av | 日韩精品 | 国产免费又色又爽又黄在线观看 | 黄色一级毛片 | 久久6视频| 亚洲视频在线观看 | 久久婷婷色| 综合亚洲视频 | 久久国产精品-久久精品 | 黄色一级大片视频 | 久久久做 | 天天躁日日躁性色aⅴ电影 免费在线观看成年人视频 国产欧美精品 | 久久精品无码一区二区三区 | 成人在线观看网站 | 一区二区三区视频在线观看 | 成人亚洲精品久久久久软件 | 51ⅴ精品国产91久久久久久 | 99久久99| 日韩日b视频 | a在线视频 | 久久久99精品免费观看 | 久久精品国产免费看久久精品 | 日韩中文字幕在线播放 | 91精品国产自产精品男人的天堂 |