⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 存储器通信lcd显示.c

📁 实现51与计算机的通信测试 通过1602LCD显示通信的数据
💻 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 + -