欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
好用的2004 LCD測試腳本,配合51單片機
[打印本頁]
作者:
mysy
時間:
2016-3-16 00:48
標題:
好用的2004 LCD測試腳本,配合51單片機
************************************************************************************************/
/*** LCD2004液晶顯示 ***/
/*** 2016-03-16 Mod By Xiaoyao ***/
/************************************************************************************************/
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define DATA P2 //定義LCM數據總線至P0
sbit RS=P3^0; //寄存器選擇位(0指令1數據)
sbit RW=P3^1; //設置讀寫位(0寫入1讀取)
sbit E=P3^2; //使能為(0禁止1允許)
sbit BF=P3^3;
uchar line1[]="LCD TEST PROGRAM By "; //第一行顯示字符
uchar line2[]="Everything is OK! XY"; //第二行顯示字符
uchar line3[]="aaaaaaaaaaaaaaaabcde"; //第三行顯示字符
uchar line4[]="bbbbbbbbbbbbbbbcdefg"; //第四行顯示字符
void Init_LCD(void); //聲明液晶初始化設置函數
void write_cmd(uchar); //聲明寫指令函數
void write_data(uchar); //聲明寫數據函數
void check_BF(void); //聲明檢測忙信號函數
void delay_1ms(uint); //聲明延時函數
void set_xy(uchar x,uchar y); //聲明顯示位置
void display(uchar x,uchar y,uchar *s); //聲明顯示函數
/*********************1ms延時函數****************************************************************/
void delay_1ms(uint x)
{
uint i,j;
for(i=1;i<x;i++)
for(j=1;j<110;j++);
}
/*********************液晶初始化函數*************************************************************/
void Init_LCD(void)
{
write_cmd(0x38); //設置8位格式,2行,5x7
write_cmd(0x08); //Tune off screen
write_cmd(0x01); //設定輸入方式,增量不移位
write_cmd(0x06); //整體顯示,關光標,不閃爍
write_cmd(0x0c); //清除屏幕顯示
}
/**********************寫指令函數******************************************************************/
void write_cmd(uchar com)
{
check_BF();
E=0;//寫命令前三控制線的狀態
RS=0;
RW=0;
DATA=com;
delay_1ms(2);
E=1;
delay_1ms(2);
E=0;//寫命令后三控制線的狀態
RS=1;
RW=1;
}
/**********************寫數據函數*******************************************************************/
void write_data(uchar chardata)
{
check_BF();
E=0;//寫數據前三控制線的狀態
RS=1;
RW=0;
DATA=chardata;
delay_1ms(2);
E=1;
delay_1ms(2);
E=0;//寫數據后三控制線的狀態
RS=0;
RW=1;
}
/**********************檢查忙碌函數******************************************************************/
void check_BF(void)
{
P2=0xff;//賦P2口初始值
E=0;//讀狀態前三控制線的狀態
RS=0;
RW=1;
E=1;//拉高,讀狀態
while((P2&0x80)==0x80);//判斷是否繁忙,等待空閑
E=0;//讀狀態后三控制線的狀態
RS=1;
RW=0;
}
/**********************定義顯示位置*******************************************************************/
void set_xy(uchar x,uchar y)
{
uchar add;
if(x==0)
add=0x80+y;
else
if(x==1)
add=0xc0+y;
else
if(x==2)
add=0x94+y;
else
if(x==3)
add=0xd4+y;
write_cmd(add);
}
/**********************顯示函數***********************************************************************/
void displayL(uchar x,uchar y,uchar *s)
{
set_xy(x,y);
while(*s)
{
DATA=*s;
write_data(*s);
s++;
}
}
/**********************主函數*************************************************************************/
void main()
{
Init_LCD();
while(1)
{
displayL(0,0,line1);
displayL(1,0,line2);
displayL(2,0,line3);
displayL(3,0,line4);
}
}
復制代碼
好用的2004 LCD測試腳本,配合51單片機
IMG_7702.JPG
(165.58 KB, 下載次數: 122)
下載附件
2016-3-16 00:48 上傳
IMG_7703.JPG
(200.13 KB, 下載次數: 131)
下載附件
2016-3-16 00:48 上傳
作者:
yantianbao
時間:
2018-12-17 16:14
還不錯
作者:
KX1649464501
時間:
2021-6-29 13:27
數據是P2口,為啥說明再P1口,我的單片機為啥調不出來這個結果。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1