Uart1_Drive.h
#ifndef Uart1_Drive
#define Uart1_Drive
extern void Uart1_Init();
extern void Uart1_Up_Data_Drive();
extern u8 xdata Uart1_Up_Num_Buffer[10]; //数字部分
#endif
Uart1_Drive.c
#include “all.h”
bit Uart1_Flag=1;
u8 code Uart1_Up_Symbol_Buffer[30]={"\n\r温度: 遥控解码: 超声波:mm"}; //\0是空字符 \n是换行 \r是回车
u8 xdata Uart1_Up_Num_Buffer[10];
//***************************************************************************
//函数:串口发送数据初始化
//功能:初始化串口,配置串口寄存器
//出口:void
//入口:void
//***************************************************************************
void Uart1_Init()
{
SM0=1;
SM1=1; //上述两个指定串行通信的工作方式.9
REN=1; //串口接收允许位。上面三个配置,相当于SCON=0x50;
PCON&=0x3f; //0011 1111
AUXR|=0x01; //0000 0001
AUXR|=0x14; //0001 0100
T2H=0xfc;
T2L=0xf3;
ES=1;
}
//***************************************************************************
//函数:串口发送数据
//功能:发送串口数据
//出口:void
//入口:void
//***************************************************************************
void Uart1_Up_Data_Drive()
{
static u8 xdata count=0;
if(Uart1_Flag)
{
Uart1_Flag=0;
count++;
switch(count)
{
case 1:SBUF=Uart1_Up_Symbol_Buffer[0];break;
case 2:SBUF=Uart1_Up_Symbol_Buffer[1];break;
case 3:SBUF=Uart1_Up_Symbol_Buffer[2];break;
case 4:SBUF=Uart1_Up_Symbol_Buffer[3];break;
case 5:SBUF=Uart1_Up_Symbol_Buffer[4];break;
case 6:SBUF=Uart1_Up_Symbol_Buffer[5];break;
case 7:SBUF=Uart1_Up_Symbol_Buffer[6];break; //排序发送到温度后面的分号:
case 8:SBUF=Uart1_Up_Num_Buffer[0];break;
case 9:SBUF=Uart1_Up_Num_Buffer[1];break;
case 10:SBUF=Uart1_Up_Num_Buffer[2];break;
case 11:SBUF=Uart1_Up_Num_Buffer[3];break; //显示温度
case 12:SBUF=Uart1_Up_Symbol_Buffer[7];break;
case 13:SBUF=Uart1_Up_Symbol_Buffer[8];break;
case 14:SBUF=Uart1_Up_Symbol_Buffer[9];break;
case 15:SBUF=Uart1_Up_Symbol_Buffer[10];break;
case 16:SBUF=Uart1_Up_Symbol_Buffer[11];break;
case 17:SBUF=Uart1_Up_Symbol_Buffer[12];break;
case 18:SBUF=Uart1_Up_Symbol_Buffer[13];break;
case 19:SBUF=Uart1_Up_Symbol_Buffer[14];break;
case 20:SBUF=Uart1_Up_Symbol_Buffer[15];break;
case 21:SBUF=Uart1_Up_Symbol_Buffer[16];break;
case 22:SBUF=Uart1_Up_Symbol_Buffer[17];break;
case 23:SBUF=Uart1_Up_Num_Buffer[5];break;
case 24:SBUF=Uart1_Up_Num_Buffer[6];break;
case 25:count=0;;break;
}
}
}
void Uart1_Routine() interrupt 4
{
static char Uart1_ser_n=0;
if(RI) //接收中断,单片机发送信息给电脑
{
RI=0;
Uart1_Flag=1;
if(SBUF==0x7f) //9600波特率
{
Uart1_ser_n++;
if(Uart1_ser_n>=10)
{
Uart1_ser_n=0;
IAP_CONTR|=0xe0;
}
}
}
if(TI) //发送中断,电脑发信息给单片机
{
TI=0;
Uart1_Flag=1;
Uart1_Up_Data_Drive();
}
}
main.c
//***************************************************************************
//函数:Uart1_Allot() 串口发送数据程序
//功能:发送串口数据
//出口:void
//入口:void
//***************************************************************************
void Uart1_Allot()
{
static xdata u8 count=0;
count++;
if(count>250) //间隔时间太短会出现错误。
{
count=0;
Uart1_Up_Num_Buffer[0]=0x30+Ds18B20_Read_Buffer[0]/10; //加一个0x30数据才可以变成ASIC码。
Uart1_Up_Num_Buffer[1]=0x30+Ds18B20_Read_Buffer[0]/10%10;
Uart1_Up_Num_Buffer[2]=’.’;
Uart1_Up_Num_Buffer[3]=0x30+Ds18B20_Read_Buffer[1]/10%10;
Uart1_Up_Num_Buffer[5]=0x30+Ray_Read_Buffer[2]/16;
Uart1_Up_Num_Buffer[6]=0x30+Ray_Read_Buffer[2]%16;
Uart1_Up_Data_Drive();
}
}