串口通信接收LCD1602显示Word格式文档下载.docx
《串口通信接收LCD1602显示Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《串口通信接收LCD1602显示Word格式文档下载.docx(9页珍藏版)》请在冰点文库上搜索。
#include<
reg52.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
/*LED_Buffer[16]用来存储串口发送的数据,com_dat用来记录串口发送的个数*/ucharLED_Buffer[16],*q,com_dat;
//从串口接收的数据
//这三个引脚参考资料
sbitE=P2^7;
//1602使能引脚
sbitRW=P2^6;
//1602读写引脚
sbitRS=P2^5;
//1602数据/命令选择引脚
*名称:
Delay(uintdel)
*功能:
延时10ms*del
*输入:
无
*输出:
voidDelay(uintdel)
{
uinti,j;
for(i=0;
i<
del;
i++)
for(j=0;
j<
1827;
j++)
;
}
delay()
延时,延时时间大概为140US。
voiddelay()
inti,j;
=10;
=2;
Convert(ucharIn_Date)*功能:
因为电路设计时,P0.0--P0.7接法刚好了资料中的相反,所以设计该函数。
*输入:
1602资料上的值
送到1602的值
ucharConvert(ucharIn_Date){
uchari,Out_Date=0,temp=0;
8;
temp=(In_Date>
>
i)&
0x01;
Out_Date|=(temp<
<
(7-i));
returnOut_Date;
enable(uchardel)
1602命令函数
输入的命令值
voidenable(uchardel)
P0=Convert(del);
RS=0;
RW=0;
E=0;
delay();
E=1;
write(uchardel)
1602写数据函数
需要写入1602的数据
voidwrite(uchardel)
RS=1;
L1602_init()
1602初始化,请参考1602的资料
voidL1602_init(void)
enable(0x01);
enable(0x38);
enable(0x0c);
enable(0x06);
enable(0xd0);
L1602_char(ucharhang,ucharlie,charsign)*功能:
改变液晶中某位的值,如果要让第一行,第五个字符显示"
b"
,调用该函数如下
L1602_char(1,5,'
b'
)
行,列,需要输入1602的数据
voidL1602_char(ucharhang,ucharlie,charsign)
uchara;
if(hang==1)a=0x80;
if(hang==2)a=0xc0;
a=a+lie-1;
enable(a);
write(sign);
L1602_string(ucharhang,ucharlie,uchar*p)
改变液晶中某位的值,如果要让第一行,第五个字符开始显示"
abcdef"
L1602_string(1,5,"
abcdef;
"
)*输入:
voidL1602_string(ucharhang,ucharlie,uchar*p)
while
(1)
if(*p=='
\0'
)break;
write(*p);
p++;
Com_Int()
串口中断子函数
voidCom_Int(void)interrupt4{
EA=0;
if(RI==1)//当硬件接收到一个数据时,RI会置位
LED_Buffer[com_dat]=SBUF;
//把从串口读出的数存到数组
RI=0;
com_dat++;
if(com_dat==16)com_dat=0;
//当com_dat=16时,清0,防止数组溢出
EA=1;
Com_Init()
串口初始化,晶振11.0592,波特率9600,使能了串口中断*输入:
voidCom_Init(void)
TMOD=0x20;
//定时器工作在定时器1的方式2
PCON=0x00;
//不倍频
SCON=0x50;
//串口工作在方式1,并且启动串行接收
TH1=0xFd;
//设置波特率9600
TL1=0xFd;
TR1=1;
//启动定时器1
ES=1;
//开串口中断
//开总中断
Main()
主函数
voidMain()
uchari=0,com_dat=0;
L1602_init();
Delay(100);
Com_Init();
P2=0x00;
q=LED_Buffer;
L1602_string(1,1,q);
com_dat=0;