1602测试工具软件,LCD1602测试程序.doc

LCD1602测试程序

#include

#define uchar unsigned char

#define uint unsigned int

//***************************

sbit RS=P2^4;

sbit RW=P2^5;

sbit EN=P2^6;

//****lcd1602驱动程序********

void delay_ms(uint z);

bit check_busy();

void write_com(char com);

void write_dat(uchar date);

void lcd_dis_char(char x,char y,uchar date);

void lcd_dis_str(uchar x,uchar y,uchar *str);

void lcd_int();

void lcd_clean();

//**************************

void delay_ms(uint z) //延时

{

uint x,y;

for(x=z;x>0;x--)

for(y=124;y>0;y--);

}

bit check_busy()//查忙

{

bit result;

RS=0;

RW=1;

EN=1;

delay_ms(2);

result=(bit)(P0&0x80);

EN=0;//一定要拉低,否则后面不能使能

return result;

}

void write_com(char com) //写命令

{

while(check_busy());//等于1就等待

EN=0;

RS=0;

RW=0;

delay_ms(1);

EN=1;

P0=com;

delay_ms(1);

EN=0;

}

void write_dat(uchar date)//写数据

{

while(check_busy());

EN=0;

RS=1;

RW=0;

delay_ms(1);

EN=1;

P0=date;

delay_ms(1);

EN=0;

}

void lcd_dis_char(uchar x,uchar y,uchar dat) //液晶定位和写单个的字符

{

uchar address;

if(y==1)

address=0x80+x; //0<=x<16;

else

address=0x80+0x40+x;

write_com(address);

write_dat(dat);

}

void lcd_dis_str(uchar x,uchar y,uchar *str)//定位并写字符串

{

uchar address;

if(y==1)

address=0x80+x;//0<=x<16;

else

address=0x80+0x40+x;

write_com(address);

while(*str!='\0')

{

write_dat(*str);

str++;

}

}

void lcd_int() //1602的初始化

{

write_com(0x38);

delay_ms(1);

write_com(0x0c);

delay_ms(1);

write_com(0x06);

delay_ms(1);

write_com(0x01);

delay_ms(1);

}

void lcd_clean()//清屏

{

write_com(0x01);

delay_ms(1);

}

void main()

{

lcd_int();

lcd_dis_str(2,1,"welcome!!!");

lcd_dis_str(2,2,"LED TEST");

delay_ms(1500);

//lcd_clean();

while(1);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值