
我给你写个测试程序,第一行显示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显示设计,程序没错,但在显示器上按键值不能显示,求各位大神指点指点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)