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

📄 rt1.c

📁 串口通信 接收GPRS信号 显示在显示LED上 LED显示屏 还没解决
💻 C
字号:
#include<reg51.h>
//#include<regx51.h>
#include<String.h>
#define INBUF_LEN 5
unsigned char inbuf[INBUF_LEN];
unsigned char count4 = 0;
bit flag_read = 0;
sbit P2_0 = P2^0;
sbit P2_1 = P2^1;
sbit P2_2 = P2^2;
sbit P2_3 = P2^3;
sbit P2_4 = P2^4;
/*
#define m0  0xC0
#define m1  0xC
#define m2
#define m3
#define m4
#define m5
#define m6
#define m7
#define m8
#define m9
*/
/******************************************************************** 
函数名:init_serialcomn(void)
功  能:初始化中断
说  明:
入口参数:无
返回值:无  
***********************************************************************/
void init_serialcomn(void)
{
	SCON = 0x50;
   TMOD |= 0x20;
	PCON |= 0x80;
	TH1 = 0xFA;  //晶振11。0592 波特率9600
	IE |=0x90;
	TR1 = 1;
	}

/**********************************************************************
函数名:void serial () interrupt 4 using 2
功  能:串口接收中断函数
说  明:
入口参数:无
返回值:无  
***********************************************************************/
 serial () interrupt 4 using 2
{
if (RI)
	{
		unsigned char ch;
		RI = 0;
		ch = SBUF;
		//count4 = 0;
		inbuf[count4] = ch;
		count4++;
		if (count4 ==4)
		{
			count4 = 0;
			flag_read =1;
		}
		/*for(i = 0;i++;i<=4)
		{
	   	return inbuf[i]; 
      }*/	
	}

}

/**********************************************************************
函数名:delay()
功  能: 延时函数
说  明:
入口参数:无
返回值:无  
***********************************************************************/
delay()
{
int i,j;
for(i=0;i++;i<100)
  for(j=0;j++;j<100);

}

/**********************************************************************
函数名:display()
功  能: 显示函数
说  明:
入口参数:无
返回值:无  
***********************************************************************/
 display()
{
//int i;
//for(i = 0;i++;i <= 4)
unsigned char a = inbuf[0];
unsigned char check(unsigned char );
 P0 = check(a);  
 P2_0 = 0;
 delay();
 P2_0 = 1;

 a = inbuf[1];
 P0 =   check(a);  
// P0 = inbuf[1];  
 P2_1 = 0;
 delay();
 P2_1 = 1;

 a = inbuf[2];
 //unsigned char  check(unsigned char );
 P0 =   check(a);  
// P0 = inbuf[2];  
 P2_2 = 0;
 delay();
 P2_2 = 1;
 a = inbuf[3];
// unsigned char  check(unsigned char );
 P0 =   check(a);  
 P0 = inbuf[3];  
 P2_3 = 0;
 delay();
 P2_3 = 1;

 a = inbuf[4];
 //unsigned char  check(unsigned char );
 P0 =   check(a);  
 P0 = inbuf[4];  
 P2_4 = 0;
 delay();
 P2_4 = 1;

 
 
 /*P2_1 = 0;
 P2_2 = 0;
 P2_3 = 0;
 P2_4 = 0;*/
 delay();
 //P2_i = 1;
}

/**********************************************************************
函数名:check(unsigned char s)
功  能:查表 根据传来的数查找相对应的驱动数码管的十六进制数
说  明:
入口参数:a 由GPRS传来的数字
返回值: 与十进制数相对应的驱动数码管的十六进制数
***********************************************************************/
unsigned char check(unsigned char s) {
//unsigned char b;
 unsigned char serial[10] = {0xC0/*'11000000'*/,0xCF/*'11001111'*/,0xA4/*10100100*/,0xB0,0x99,0x92,0x82,0xD8,0x80,0x90};
unsigned char b=serial[s];
return b; 	
 }

/*
unsigned char check(unsigned char m)
{


# asm

EXTRN DATA(m)
MOV DPTR,#TAB
MOV A,m
MOV A,@A+DPTR
TAB:
DB C0H,CFH,A4H,B0H  //0,1,2,3
DB 99H,92H,82H,D8H  //4,5,6,7
DB 80H,90H          //8,9

#endasm

extern unsigned char A

}
*/

/**********************************************************************
函数名:void main()
功  能: 主函数
说  明:
入口参数:无
返回值:无  
***********************************************************************/
void main()
{
	init_serialcomn();
//	RI = 1;测试
	while(1)
	{
		if (flag_read)
		{
		  display(/*unsigned char inbuf[5]*/);
		}
	}
}

⌨️ 快捷键说明

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