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

📄 uart.c

📁 液晶屏显示程序
💻 C
📖 第 1 页 / 共 2 页
字号:
#include	<reg52.h>
#include	<ctype.h>
#include	<stdlib.h>
#include	<stdio.h>
#include	<math.h>
#include    <intrins.h>
#include    "define.h"
//#include    "val.h"
#include    "function.h"
#define     MAOHAO_WEN   0XBA
extern unsigned char idata cSendBuffer[30],cReceBuffer[30];
extern unsigned char cSendLen,cReceLen,cReceTimeOut,cSendPosi;
extern bit bReceOK;
extern unsigned char banhou_set[4],buchang_set[4];
extern unsigned char tuidao_set[4],muxin_set[4];
extern  bit lesser_bit;
extern  bit main_set_bit,dis_pass_bit;
extern  bit speed_set_bit,luoju_set_bit;
extern bit daoju_set_bit,master_bit,enter_bit;
extern unsigned char comm_time;
extern unsigned char jin_speed_set[4];
extern unsigned char tui_speed_set[4],gun_speed_set[4];
extern unsigned char luoju_set[4];
extern unsigned char chuandong_set[4],gunju_set[4];
extern unsigned char gunjing_set[4];
extern unsigned char daoju_set[4];
extern unsigned char mujing_set[4],chuangdu_set[4];
extern unsigned char maichong_set[4];
extern unsigned char jindao_speed[4],zhuji_speed[4],daoju[4];
extern unsigned char buchang_set[4];
bit rece_bit_fail;
bit rece_bit_success;
bit en_bit_tran;           //
unsigned char tran_step;
extern unsigned char rece_pt,speed_time;
extern bit	en_bit_enter;
/*
  发送的过程分为三次,每次发送完后,等待接收数据,并对接受的数据进行判断
  接收正确则退出发送程序
*/
void tran_sub(void)
{
  if(!en_bit_tran)  return;
  switch(tran_step) {
     case 0: {           //  第一次发送
		  readDsp();
        comm_time=0;
        rece_bit_fail=0;
 	  rece_bit_success=0;
        tran_step=1;
        }
     break;

     case 1:
        {
         if(rece_bit_fail||(comm_time>50)) {
             tran_step++;
             readDsp();
             rece_bit_fail=0;
             comm_time=0;
             }
         else {
            if(rece_bit_success)   tran_step=4;
            }
         }
      break;

     case 2:{   //  第三次发送
                 //  接收的数据错误,发送缓冲器的数据仍然有效,立即进行第二次发送
        if(rece_bit_success)    tran_step=4;
        else {
            if(rece_bit_fail||(comm_time>50)) {
               rece_bit_fail=0;
               tran_step++;
			     	readDsp();
               comm_time=0;
               }
             }
         }
     break;

     case 3: {
        if(rece_bit_fail||(comm_time>50))   tran_step=5;    // 发送错误, 退出发送程序
        else {
           if(rece_bit_success)             tran_step=4;    //  第三次发送程序正确
           }
        }
     break;


     default:  {    //  强行退出发送过程
//          tran_command=0;    //    没有发送命令,发送程序将不被执行
          tran_step=0;       //    对发送的步骤进行初始化
		 rece_bit_fail=0;
		 rece_bit_success=0;
		 en_bit_tran=0;
		 en_bit_enter=0;
          }
     break;
     }
}

//------------------------------------------------

void readDsp(void)
{
if((lesser_bit)&&(speed_time>10))
{
  sendRead(2) ;
  speed_time=0;
}
if(!en_bit_enter){
  if(master_bit)         sendRead(1);
  else if(lesser_bit)    sendRead(2) ;
  else if(main_set_bit)  sendRead(3) ;
  else if(luoju_set_bit) sendRead(4) ;
  else if(daoju_set_bit) sendRead(5) ;
  else if(speed_set_bit) sendRead(6) ;
  }

else {
  if(main_set_bit)        mainSetWrite();
  else if(luoju_set_bit)  luojuSetWrite();
  else if(daoju_set_bit)  daojuSetWrite();
  else if(speed_set_bit)  speedSetWrite();
  }

}



void CheckCommData(void)
{
	if(!bReceOK)  return;
	bReceOK = 0;
	cReceTimeOut = 0;
	if((cReceBuffer[2]==(2+0x30))&&(cReceBuffer[4]==(0+0x30))&&(checkOut()==0)) // 累加和判断
	   {
	    rece_bit_success=1;
          switch(cReceBuffer[6]-0x30){
			 case 1:
						{
						    banhou_set[0]=cReceBuffer[7]-0x30;
                            banhou_set[1]=cReceBuffer[8]-0x30;
						    banhou_set[2]=cReceBuffer[9]-0x30;
                    //  banhou_set[3]=cReceBuffer[10]-0x30;
						    tuidao_set[0]=cReceBuffer[11]-0x30;
                      tuidao_set[1]=cReceBuffer[12]-0x30;
						    tuidao_set[2]=cReceBuffer[13]-0x30;
                   //   banhou_set[3]=cReceBuffer[14]-0x30;
						    muxin_set[0]=cReceBuffer[15]-0x30;
                      muxin_set[1]=cReceBuffer[16]-0x30;
				      	 muxin_set[2]=cReceBuffer[17]-0x30;
                   //   banhou_set[3]=cReceBuffer[18]-0x30;
						   // banhou_set[0]=cReceBuffer[19]-0x30;
                     // banhou_set[1]=cReceBuffer[20]-0x30;
						   // banhou_set[2]=cReceBuffer[21]-0x30;
                     // banhou_set[3]=cReceBuffer[22]-0x30;
					 }
					 break;
/********************************************************************/
                  case 2:
				  {
						    jindao_speed[0]=cReceBuffer[7]-0x30;
                      jindao_speed[1]=cReceBuffer[8]-0x30;
						    jindao_speed[2]=cReceBuffer[9]-0x30;
                      jindao_speed[3]=cReceBuffer[10]-0x30;
						    zhuji_speed[0]=cReceBuffer[11]-0x30;
                      zhuji_speed[1]=cReceBuffer[12]-0x30;
						    zhuji_speed[2]=cReceBuffer[13]-0x30;
                      zhuji_speed[3]=cReceBuffer[14]-0x30;
						    daoju[0]=cReceBuffer[15]-0x30;
                      daoju[1]=cReceBuffer[16]-0x30;
				      	 daoju[2]=cReceBuffer[17]-0x30;
                      daoju[3]=cReceBuffer[18]-0x30;
						    buchang_set[0]=cReceBuffer[19]-0x30;
                      buchang_set[1]=cReceBuffer[20]-0x30;
						   buchang_set[2]=cReceBuffer[21]-0x30;
                     //buchang_set[3]=cReceBuffer[22]-0x3
					 }
					 break;
/**********************************************************************/
                  case 3:
				  {
						    banhou_set[0]=cReceBuffer[7]-0x30;
                      banhou_set[1]=cReceBuffer[8]-0x30;
						    banhou_set[2]=cReceBuffer[9]-0x30;
                      //jindao_speed[3]=cReceBuffer[10]-0x30;
						    tuidao_set[0]=cReceBuffer[11]-0x30;
                      tuidao_set[1]=cReceBuffer[12]-0x30;
						    tuidao_set[2]=cReceBuffer[13]-0x30;
                      //zhuji_speed[3]=cReceBuffer[14]-0x30;
						    muxin_set[0]=cReceBuffer[15]-0x30;
                      muxin_set[1]=cReceBuffer[16]-0x30;
				      	 muxin_set[2]=cReceBuffer[17]-0x30;
                      //daoju[3]=cReceBuffer[18]-0x30;
						    buchang_set[0]=cReceBuffer[19]-0x30;
                      buchang_set[1]=cReceBuffer[20]-0x30;
						   buchang_set[2]=cReceBuffer[21]-0x30;
                     //buchang_set[3]=cReceBuffer[22]-0x30;
					 }
					 break;
/**********************************************************************/
                  case 4:
				  {
						    luoju_set[0]=cReceBuffer[7]-0x30;
                      luoju_set[1]=cReceBuffer[8]-0x30;
						    luoju_set[2]=cReceBuffer[9]-0x30;
                      //jindao_speed[3]=cReceBuffer[10]-0x30;
						    chuandong_set[0]=cReceBuffer[11]-0x30;
                      chuandong_set[1]=cReceBuffer[12]-0x30;
						    chuandong_set[2]=cReceBuffer[13]-0x30;
                      chuandong_set[3]=cReceBuffer[14]-0x30;
						    gunju_set[0]=cReceBuffer[15]-0x30;
                      gunju_set[1]=cReceBuffer[16]-0x30;
				      	 gunju_set[2]=cReceBuffer[17]-0x30;
                      gunju_set[3]=cReceBuffer[18]-0x30;
						    gunjing_set[0]=cReceBuffer[19]-0x30;
                      gunjing_set[1]=cReceBuffer[20]-0x30;
						    gunjing_set[2]=cReceBuffer[21]-0x30;
                      gunjing_set[3]=cReceBuffer[22]-0x30;
					  }
					  break;
/**********************************************************************/
                  case 5:
				  {
						    daoju_set[0]=cReceBuffer[7]-0x30;
                      daoju_set[1]=cReceBuffer[8]-0x30;
						    daoju_set[2]=cReceBuffer[9]-0x30;
                      daoju_set[3]=cReceBuffer[10]-0x30;
						    mujing_set[0]=cReceBuffer[11]-0x30;
                      mujing_set[1]=cReceBuffer[12]-0x30;
						    mujing_set[2]=cReceBuffer[13]-0x30;
                      mujing_set[3]=cReceBuffer[14]-0x30;
						    chuangdu_set[0]=cReceBuffer[15]-0x30;
                      chuangdu_set[1]=cReceBuffer[16]-0x30;
				      	 chuangdu_set[2]=cReceBuffer[17]-0x30;
                      chuangdu_set[3]=cReceBuffer[18]-0x30;
						    maichong_set[0]=cReceBuffer[19]-0x30;
                      maichong_set[1]=cReceBuffer[20]-0x30;
						    maichong_set[2]=cReceBuffer[21]-0x30;
                      maichong_set[3]=cReceBuffer[22]-0x30;
					  }
					  break;
/**********************************************************************/
                  case 6:
				  {
						    jin_speed_set[0]=cReceBuffer[7]-0x30;
                      jin_speed_set[1]=cReceBuffer[8]-0x30;
						    jin_speed_set[2]=cReceBuffer[9]-0x30;
                      jin_speed_set[3]=cReceBuffer[10]-0x30;
						    tui_speed_set[0]=cReceBuffer[11]-0x30;
                      tui_speed_set[1]=cReceBuffer[12]-0x30;
						    tui_speed_set[2]=cReceBuffer[13]-0x30;
                      tui_speed_set[3]=cReceBuffer[14]-0x30;
						    gun_speed_set[0]=cReceBuffer[15]-0x30;
                      gun_speed_set[1]=cReceBuffer[16]-0x30;
				      	 gun_speed_set[2]=cReceBuffer[17]-0x30;
                      //daoju[3]=cReceBuffer[18]-0x30;
						    //buchang_set[0]=cReceBuffer[19]-0x30;
                      //buchang_set[1]=cReceBuffer[20]-0x30;
						  // buchang_set[2]=cReceBuffer[21]-0x30;
                     //buchang_set[3]=cReceBuffer[22]-0x30;
					 }
					 break;
					 default:
					 return;
/**********************************************************************/


         }

		}
	  else rece_bit_fail=1;
   	cReceLen = 0;

}


void sendRead(unsigned char x)
{
	unsigned char i,j;

	tran_en = 1;
	cSendBuffer[1] = '0';
	cSendBuffer[2] = '2';		//地址为2
	cSendBuffer[3] = '0';
	cSendBuffer[4] = '0';
	cSendBuffer[5] = '0';
	cSendBuffer[6] = 0x30 + x;	  //屏号


	i = 0x2 +x;
	j = (~i) + 1;
	if((j / 16) >= 10)
		cSendBuffer[7] = 0x41 + j / 16 -10;
	else

⌨️ 快捷键说明

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