51单片机的程序设计中,LCD的REQ和BUSY是什么意思

51单片机的程序设计中,LCD的REQ和BUSY是什么意思,第1张

我给你写个测试程序,第一行显示A,第二行显示B

/

LCD1602液晶显示程序 51&AVR实验程序

LCD1602液晶: 写指令

LCD1602液晶: 写数据;

LCD1602液晶: 写指令和据;

/

#include "reg52h"

sbit LCD_RS=P3^5;

sbit LCD_EN=P3^4;

#define Data_addr P0 //定义LCD1602液晶数据I口

void Delay_1ms(unsigned int Time)

{

unsigned int x, y;

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

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

}

/

函数名称: Write_lcd1602_com(unsigned char com);

输入: 无

输出: 无

说明: 给LCD1602液晶写入指令/

void Write_lcd1602_com(unsigned char com)

{

LCD_RS=0;

Data_addr=com;

Delay_1ms(5);

LCD_EN=1;

Delay_1ms(5);

LCD_EN=0;

}

/

函数名称: Write_lcd1602_data(unsigned char date);

输入: 无

输出: 无

说明: 给LCD1602液晶写数据/

void Write_lcd1602_data(unsigned char date)

{

LCD_RS=1;

Data_addr=date;

Delay_1ms(5);

LCD_EN=1;

Delay_1ms(5);

LCD_EN=0;

}

/

函数名称: Init_lcd1602(void);

输入: 无

输出: 无

说明: 给LCD1602液晶指令初始化/

void Init_lcd1602(void)

{

LCD_RS=0;

LCD_EN=0;

Write_lcd1602_com(0x38);

Write_lcd1602_com(0x0C);

Write_lcd1602_com(0x06);

Write_lcd1602_com(0x01);

}

int main(void)

{

Init_lcd1602();

Write_lcd1602_com( 0x80); //第一行显示A

Write_lcd1602_data("A");

Delay_1ms(5);

Write_lcd1602_com( 0x80 + 0x40); //第二行显示B

Write_lcd1602_data("B");

while(1);

}

这是我自己用过的DS18B20的程序,有什么问题可以百度HI我,我这个是把温度显示到电脑上了,如果你要显示到LCD上的话可以在里面加一些子程序。

#include<reg52h>

#include<stdioh>

#define uint unsigned int

#define uchar unsigned char

sbit ds=P1^0;

bit flag;

uchar count_t0;

float f_temp;

void delay(uint z)

{

uint x,y;

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

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

}

void init() // 串口初始化

{

TMOD=0x21;

SCON=0x50;

TH0=0x4c;

TL0=0x00;

TH1=0xf3;

TL1=0xf3;

EA=1;

ET0=1;

TR0=1;

TR1=1;

}

void timer0() interrupt 1

{

TH0=0x4c;

TL0=0x00;

if(++count_t0>=20)

{

count_t0=0;

flag=1;

}

}

void dsreset()

{

uint i;

ds=0;

i=103;

while(i>0)

i--;

ds=1;

i=4;

while(i>0)

i--;

}

bit read_bit()

{

uint i;

bit dat;

ds=0;i++;

ds=1;i++;i++;

dat=ds;

i=8;

while(i>0)

i--;

return dat;

}

uchar read_byte()

{

uchar i,j,dat;

dat=0;

for(i=1;i<=8;i++)

{

j=read_bit();

dat=(j<<7)|(dat>>1);

}

return dat;

}

void write_byte(uchar dat)

{

uint i;

uchar j;

bit testb;

for(j=1;j<=8;j++)

{

testb=dat&0x01;

dat=dat>>1;

if(testb)

{

ds=0;

i++;i++;

ds=1;

i=8;

while(i>0)

i--;

}

else

{

ds=0;

i=8;

while(i>0)

i--;

ds=1;

i++;i++;

}

}

}

void begin_change()

{

dsreset();

delay(1);

write_byte(0xcc);

write_byte(0x44);

}

float get_temp()

{

uchar a,b;

uint temp;

float f_temp;

dsreset();

delay(1);

write_byte(0xcc);

write_byte(0xbe);

a=read_byte();

b=read_byte();

temp=b;

temp<<=8;

temp=temp|a;

f_temp=temp00625;

temp=f_temp10+05;

f_temp=f_temp+005;

return f_temp;

}

void main()

{

init();

while(1)

{

if(flag==1)

{

flag=0;

begin_change();

TI=1;

printf("The tempeature is %f\n",get_temp());

while(!TI);

TI=0;

}

}

}

以上就是关于51单片机的程序设计中,LCD的REQ和BUSY是什么意思全部的内容,包括:51单片机的程序设计中,LCD的REQ和BUSY是什么意思、修改51单片机字符型LCD液晶显示广告牌控制使SHEN ZHENG滚动!!!代码如下!!、51单片机C语言编程矩阵式键盘LCD显示设计,程序没错,但在显示器上按键值不能显示,求各位大神指点指点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9269131.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存