📄 存储器通信lcd显示.c
字号:
#include<reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit e = P3^7;
sbit rs = P3^6;
uchar receive_index;
uchar code xs_data1[16]="send:";//-----------显示的字符串
uchar code xs_data2[16]="receiv:";
uchar code hex_ascii[16]="0123456789ABCDEF";
void isend(uchar adr);
void dsend(uchar asc);
void display_Dec(uchar dec_data);
//-------显示所在的行,列,内容,长度
void xianshi(uchar hang,uchar lie,uchar *p,uchar first,uchar num);
//----显示数据(数据)------//
void display_Data(uchar hang,uchar lie);
void delay5ms();
void delay_n_ms(int n_ms);
void init(); //串口初始化子程序 工作方式2
uchar receive_byte(); //串口接收一个字节子函数 返回接收数据
void send_byte(uchar send_data ); //串口发送数据程序
void receive_messages();
uchar idata receive_data[6];
//----- --------------------------------------
void main()
{
uchar i;
isend(1);//清屏指令
xianshi(1,0,xs_data1,0,5);
xianshi(2,0,xs_data2,0,7);
init(); //串口初始化子程序 工作方式2
do
{
receive_messages();
display_Data(2,8);
} while (1);
}
//----------------------------------------------
void init() //串口初始化子程序 工作方式2
{
TMOD=0X20;
TH1=0XFD; //设置波特率9600 bit/s (0XFD) 波特率4800 bit/s(0XFA) 波特率2400 bit/s (0XF4) 波特率1200 bit/s(0XE8)
TL1=0XFD;
PCON=0X00;
TR1=1;
SCON=0X50;
}
//-------------------------------------------
void send_byte (uchar send_data ) //串口发送数据程序
{
SBUF=send_data;
while(TI==0);
TI=0;
}
//-------------------------------------------
uchar receive_byte() //串口接收一个字节子函数 返回接收数据
{
while(RI==0);
RI=0;
return SBUF;
}
//-------------------------------------------
void receive_messages()
{
do
{
receive_data[receive_index]=receive_byte();
receive_index++;
} while(receive_index>5);
receive_index=0;
}
//-------------------------------------------
void isend(uchar adr) //显示屏写指令子程序
{
P1=255;
rs=0;
e=1;
P1=adr;
e=0;
delay5ms();
}
//-------------------------------------------
void dsend(uchar asc) //显示屏写字符子程序
{
P1=255;
rs=1;
e=1;
P1=asc;
e=0;
delay5ms();
}
//--------------------------------------------
void delay5ms() //显示延时5ms子程序
{
uint j;
for (j=0;j<1100;j++)
{;}
}
//--------------------------------------------
void delay_n_ms(int n_ms)
{
uchar n_us;
while(n_ms--)
{
n_us=200;
while(n_us--);
}
}
//------------------------------------------
void xianshi(uchar hang,uchar lie,uchar *p,uchar first,uchar num)
{
int i,*xs;
xs=p;
isend(56); //设置显示器
isend(12); //开显示,无光标
if(hang==1)isend(128+lie); //设置数据指针第1行
else isend(192+lie); //第2行
for(i=first;i<num;i++)
{
dsend(p[i]);
}
}
//------------------------------------------
void display_Dec(uchar dec_data)
{
uchar a,b,c;
a=dec_data/100;
b=(dec_data-a*100)/10;
c=(dec_data-a*100-b*10);
dsend(hex_ascii[a]);
dsend(hex_ascii[b]);
dsend(hex_ascii[c]);
}
//------------------------------------------
void display_Data(uchar hang,uchar lie)
{
isend(56); //设置显示器
isend(12); //开显示,无光标
if(hang==1)isend(128+lie); //设置数据指针第1行
else isend(192+lie); //第2行
dsend(receive_data[0]);
dsend(receive_data[1]);
dsend(receive_data[2]);
dsend(receive_data[3]);
dsend(receive_data[4]);
dsend(receive_data[5]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -