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

📄 rs232_5.c

📁 串口接受数据并通过LCD12232液晶显示出来
💻 C
字号:
#include"reg51.h"
#include"intrins.h"
#define uchar unsigned char
#define uint unsigned int
#define x     0x80
#define y     0x80
#define comm  0
#define dat   1

sbit p16=P1^6;/////////////////////////////////
sbit rs = P1^1;   //H=data; L=command;
sbit rw = P1^0;   //H=read; L=write;
sbit  e = P1^7;   //input enable;
sbit busy=P0^7;   //lcd busy bit

//uchar send[4]={'1','2','0'};
//uchar code tab1[]={"发送:"};
uchar code tab1[]={"接收:"};
uchar idata receive[10];
uchar temp;
void wr_lcd(uchar dat_comm,uchar content);
void chk_busy (void);
void delay (uint us);
void init_lcd (void);
void chn_disp (uchar code *chn);
void ini_ser();//串口初始化
void delay(uint ms);
void ini_ser()
{
 TMOD=0X20;
 TH1=0XFD;
 TL1=0XFD;
 SCON=0X50;
 PCON=0X00;
 TR1=1; 
}
void delay(uint ms)
{							// 延时子程序
	uchar i;
	while(ms--)
	{
		for(i=0;i<250;i++)
		{
			_nop_();
			_nop_();
			_nop_();
			_nop_();
		}
	}
}

void init_lcd (void)
{
  wr_lcd (comm,0x30);  /*30---基本指令动作*/   
  wr_lcd (comm,0x01);  /*清屏,地址指针指向00H*/
  wr_lcd (comm,0x06);  /*光标的移动方向*/
  wr_lcd (comm,0x0c);  /*开显示,关游标*/
}
/*---------------显示汉字或字符----------------*/
void chn_disp (uchar code *chn)
{
  uchar i,j;
  wr_lcd (comm,0x30);
  wr_lcd (comm,0x80);
  j=0;
  for (i=0;i<8;i++)
  wr_lcd (dat,chn[j*16+i]);
 /* wr_lcd (comm,0x90);
  j=1;
  for (i=0;i<17;i++)
  wr_lcd (dat,chn[j*16+i]);*/
  }
 void wr_lcd (uchar dat_comm,uchar content)
{
  chk_busy ();
  if(dat_comm)
   {
    rs=1;   //data
    rw=0;   //write
   }
  else 
   {
    rs=0;   //command
    rw=0;   //write
   }
  P0=content;   //output data or comm
  e=1;
 

  e=0;
}


void chk_busy (void)
{
  P0=0xff;
  rs=0;
  rw=1;
  e =1;
  while(busy==1);
  e =0;
}

void serial(void)interrupt 4 using 1
{
  uchar i;
  ES=0;                   //禁止串口中断
  while(RI==0);RI=0;
  temp=SBUF;              //接受串口数据  
  for(i=0;i<4;i++)
  {
  if(temp)
  receive[i]=temp;
 }
 } 
  
main(void)
{
  uchar i;
  init_lcd();
  delay(100);
  EA=0;
  IT0=1;
  IE0=1;
  delay(1);

  ini_ser();
  ES=1;                  //允许串口中断
  EA=1; 
  wr_lcd(comm,0x80);
  chn_disp(tab1);  
  wr_lcd(comm,0x83);
  wr_lcd(dat,0x00);
   //允许全部外设中断
  
  while(1){  
  i=0;
  wr_lcd(comm,0x83);
  wr_lcd(dat,receive[i]); 
  i++;
  }
  
 }


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -