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

📄 communicate.h

📁 用单片机实现LCD显示字符和图形
💻 H
字号:
#include "reg52.h"
#include <string.h>
#define uchar unsigned char
#define uint unsigned int


void init_timer1(void);
void transmit(uchar a[]);   //send string--it is ok  
/*extern void send_char_com(unsigned char ch);
extern void send_sting_com(unsigned char *str);send string--it is ok  */
void com_delay(uint n);

unsigned char str_send[]="The string you want to send";   //add the string here
unsigned char end[]="\r\n";
extern char count=0;
extern uint xdata RxBuf[30]={0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x30};
extern unsigned int bai[4];
extern unsigned int shi[4];


//--------------------中断服务程序--------------------
//****************************************************

 void init_timer1(void)
{
    SCON  = 0x50;       //SCON: serail mode 1, 8-bit UART, enable ucvr
    TMOD |= 0x21;       //TMOD: timer 1, mode 2, 8-bit reload
    PCON |= 0x00;       //SMOD=0;
//  TH1   = 0xA0;       //Baud:300 fosc=11.0592MHz 降低波特率可以增加可靠性和传输距离
    TH1   = 0xFD;       //Baud:9600 fosc=11.0592MHz 
    IE   |= 0x90;       //Enable Serial Interrupt
    TR1   = 1;          // timer 1 run

} 
//----------------------字符发送程序-----------------
///////////////////////////////////////////////////////////////////////
void transmitONE(unsigned int i)
{       
	 SBUF=i+0x30; //把数据发至SBUF寄存器,再发送出去
       while(TI!=1);//等待发送完毕
            { TI=0;}//发送完成,将TI清零
  	count=0;   //发送完毕,准备接收
}  


//----------------------字符串发送程序该程序占用的空间更少-----------------
///////////////////////////////////////////////////////////////////////
void transmit(uchar a[])
{ uchar i;
  uchar lenth;
  lenth=strlen(a);
  for(i=0;i<lenth;i++)
     { 
	   SBUF=a[i]; //把数据发至SBUF寄存器,再发送出去
       while(TI!=1);//等待发送完毕
            { TI=0;}//发送完成,将TI清零
     }
//  count=0;   //发送完毕,准备接收
}

/*

void send_char_com(unsigned char ch)
		{
		SBUF=ch;              //发送一个字符到串口
		while(TI==0);         //等待串口发送完毕
		TI=0;		
		}

void send_sting_com(unsigned char *str)
//----------------------字符串发送程序-----------------
{   unsigned int k=0;
   do
   {
   	send_char_com(*(str+k));
	k++;
   }
   while(k<strlen(str));
   count=0;
}
*/

//--------------------中断服务程序--------------------
void serial() interrupt 4		  //OK清零查询,GET读数查询
{
    if(RI)				//interrupt  successfully##########################---PC---->MCU发送数据
    {	
	unsigned char ch;
    
       ch=0;
       RI = 0;
        ch=SBUF;
		RxBuf[count]=ch;	
		count++;
		if(count>31)
			{
			count=0;
			}
		if((ch=='\n')&&(RxBuf[count-2]=='\r'))
       		{ RxBuf[count]='\0';
			  count=0;
			}

		/*
		if((receive[0]=='i')&&(receive[1]=='n')&&(receive[2]=='q'))  
			{
			//transmit(ok);
			count=0;
			for(i=0;i<6;i++) receive[i]=0;	
			}
		else  if ((receive[0]=='g')&&(receive[1]=='e')&&(receive[2]=='t'))
			{
			senddata();
			count=0;
			for(i=0;i<6;i++) receive[i]=0;
			}  
			if(count==8)
			{
				count=0;
				LCD_write_char(0x01,0);      //显示清屏
				LCD_write_string(0,0,xianshi1);
				delay_nms(1000);
			} 
			*/
    	}
	else  
	{
	//com_delay(1);
	TI=0;		//once it interrupted ,clear the flag!!##########################---MCU---->PC发送数据
	com_delay(1);

				transmitONE(RxBuf[0]);
                transmitONE(RxBuf[1]);
				transmitONE(RxBuf[2]);
                transmitONE(RxBuf[3]);
				transmitONE(RxBuf[4]);
                transmitONE(RxBuf[5]);
				transmitONE(RxBuf[6]);
                transmitONE(RxBuf[7]);
				transmit(str_send);
//              send_sting_com(str_send);
//				send_sting_com(end);
				transmit(end);

	}  
} 

//------------communicate---delay---function-------------
void com_delay(uint n)
{
	uint i;
	while(n--)
	     {  
		 for(i=0;i<30;i++);
	   	 }

}  

⌨️ 快捷键说明

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