久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1024|回復: 0
打印 上一主題 下一主題
收起左側

基于STC12C5A60S2單片機設計的一款硬件串口工具 可以自由發送串口數據 模擬通訊數據

[復制鏈接]
跳轉到指定樓層
樓主



【聲明】此程序僅用于學習與參考,引用請注明版權和作者信息!   
*********************************************************************/
/*
         一次最多發送20組數據,大于這個數據就不再發送
*/
#include <STC12C5A60S2.H>
#define uchar unsigned char
#define uint unsigned int
/**************************************************************/
unsigned char T0RH = 0;  //T0重載值的高字節
unsigned char T0RL = 0;  //T0重載值的低字節
extern void UartDriver();                                //串口驅動函數,監測數據幀的接收,調度功能函數,需在主循環中調用
extern void ConfigUART(unsigned int baud);        //串口配置函數,baud-通信波特率
extern void ConfigUART1(unsigned int baud1);        //串口配置函數,baud-通信波特率
extern void UartRxMonitor(unsigned char ms); //串口接收監控,由空閑時間判定幀結束,需在定時中斷中調用,ms-定時間隔
extern void SendString(char *s) ;
extern void UartWrite(unsigned char *buf, unsigned char len);        //串口數據寫入,即串口發送函數,buf-待發送數據的指針,len-指定的發送長度
extern void fengming();
uchar zh[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
uchar jieshou[] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
uchar jj = 0;
/*****************************************************************/
sbit out0 = P2^0;
sbit out1 = P2^1;
sbit out2 = P2^2;
sbit out3 = P2^3;
sbit in0  = P2^4;
sbit in1  =        P2^5;
sbit in2  =        P2^6;
sbit in3  =        P2^7;

sbit smgk = P3^6;

sbit boma1 = P1^1;
sbit boma2 = P1^0;

bit d1 = 1;
bit d2 = 1;
sbit in4 = P1^6;
sbit in5 = P1^5;

uchar code xianshi [] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf};

uchar  dangqianzhuangtai[4][4] = {{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};


void t0 () interrupt 1
{
        uchar i;
        static uchar lie = 0;
        static uchar sao[2] = {1,1};
   static uchar  saomiaobaocun [4][4] = {{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff},{0xff,0xff,0xff,0xff}};

   TH0  = 0xfc;
   TL0  = 0x67;
   UartRxMonitor(1);  //串口接收監控

   sao[0] = (sao[0]<<1) |in4;
   sao[1] = (sao[1]<<1) |in5;

   saomiaobaocun [lie][0] = (saomiaobaocun [lie][0]<<1) | in0;
   saomiaobaocun [lie][1] = (saomiaobaocun [lie][1]<<1) | in1;
   saomiaobaocun [lie][2] = (saomiaobaocun [lie][2]<<1) | in2;
   saomiaobaocun [lie][3] = (saomiaobaocun [lie][3]<<1) | in3;

   if(sao[0] == 0x00)
   {
              d1 = 0;

   }
   else if(sao[0] == 0xff)
   {
              d1 = 1;

   }

   if(sao[1] == 0x00)
   {
              d2 = 0;

   }
   else if(sao[1] == 0xff)
   {
              d2 = 1;

   }

   for (i=0;i<4;i++)
   {
             if ((saomiaobaocun [lie] & 0x0f) == 0x00)
          {
          
                  dangqianzhuangtai[lie] = 0;
          }

           else if ((saomiaobaocun [lie] & 0x0f) == 0x0f)
          {
          
                  dangqianzhuangtai[lie] = 1;
          }

        }
          lie++;
          lie = lie & 0x03;

          switch (lie)
          {
                    case 0 : out1 = 1;  out2 = 1; out3 = 1;  out0 = 0; break;
                    case 1 : out0 = 1;  out2 = 1; out3 = 1;  out1 = 0; break;
                    case 2 : out0 = 1;  out1 = 1; out3 = 1;  out2 = 0; break;
                    case 3 : out0 = 1;  out1 = 1; out2 = 1;  out3 = 0; break;
          }
}

void main ()
{
   uchar i,j;
   bit q1 = 1;
   bit q2 = 1;
   uchar   qianyicizhuangtai[4][4] = {{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};
   smgk = 0;
   TMOD = 0x01;
   TH0  = 0xfc;
   TL0  = 0x67;
   TR0  = 1;
   EA   = 1;
   ET0  = 1;

   P0 = xianshi[16];
  // ConfigUART(9600);  //配置波特率為9600
   while (1)
   {
           UartDriver();  //調用串口驅動
           if((boma1 == 0)&&(boma2 != 0))
           {
                           ConfigUART(2400);  //配置波特率為1200       
           }

           if((boma2 == 0)&&(boma1 != 0))
           {
                           ConfigUART(4800);  //配置波特率為4800       
           }

           if((boma1 == 0)&&(boma2 == 0))
           {
                           ConfigUART(9600);  //配置波特率為9600       
           }

           if((boma1 != 0)&&(boma2 != 0))
           {
                           ConfigUART1(19200);  //配置波特率為19200       
           }

           if(d1 != q1)
           {
                           q1 = d1;
                        if(d1 == 0)
                        {
                                if((jj != 0)&&(jj <= 2))
                                {
                                         zh[0] = jieshou[0] | jieshou[1];
                                 UartWrite(zh, 1);
                                         fengming();
                                }
                                if((jj > 2)&&(jj <= 4))
                                {
                                         zh[0] = jieshou[0] | jieshou[1];
                                         zh[1] = jieshou[2] | jieshou[3];
                                 UartWrite(zh, 2);
                                         fengming();
                                }
                       
                                if((jj > 4)&&(jj <= 6))
                                {
                                         zh[0] = jieshou[0] | jieshou[1];
                                         zh[1] = jieshou[2] | jieshou[3];
                                         zh[2] = jieshou[4] | jieshou[5];
                                 UartWrite(zh, 3);
                                         fengming();
                                }
                                if((jj > 6)&&(jj <= 8))
                                {
                                         zh[0] = jieshou[0] | jieshou[1];
                                         zh[1] = jieshou[2] | jieshou[3];
                                         zh[2] = jieshou[4] | jieshou[5];
                                         zh[3] = jieshou[6] | jieshou[7];
                                 UartWrite(zh, 4);
                                         fengming();
                                }
                                if((jj > 8)&&(jj <= 10))
                                {
                                         zh[0] = jieshou[0] | jieshou[1];
                                         zh[1] = jieshou[2] | jieshou[3];
                                         zh[2] = jieshou[4] | jieshou[5];
                                         zh[3] = jieshou[6] | jieshou[7];
                                         zh[4] = jieshou[8] | jieshou[9];
                                 UartWrite(zh, 5);
                                         fengming();
                                }
                                if((jj > 10)&&(jj <= 12))
                                {
                                         zh[0] = jieshou[0] | jieshou[1];
                                         zh[1] = jieshou[2] | jieshou[3];
                                         zh[2] = jieshou[4] | jieshou[5];
                                         zh[3] = jieshou[6] | jieshou[7];
                                         zh[4] = jieshou[8] | jieshou[9];
                                         zh[5] = jieshou[10] | jieshou[11];
                                 UartWrite(zh, 6);
                                         fengming();
                                }
                                        if((jj > 12)&&(jj <= 14))
                                {
                                         zh[0] = jieshou[0] | jieshou[1];
                                         zh[1] = jieshou[2] | jieshou[3];
                                         zh[2] = jieshou[4] | jieshou[5];
                                         zh[3] = jieshou[6] | jieshou[7];
                                         zh[4] = jieshou[8] | jieshou[9];
                                         zh[5] = jieshou[10] | jieshou[11];
                                         zh[6] = jieshou[12] | jieshou[13];
                                 UartWrite(zh, 7);
                                         fengming();
                                }
                                        if((jj > 14)&&(jj <= 16))
                                {
                                         zh[0] = jieshou[0] | jieshou[1];
                                         zh[1] = jieshou[2] | jieshou[3];
                                         zh[2] = jieshou[4] | jieshou[5];
                                         zh[3] = jieshou[6] | jieshou[7];
                                         zh[4] = jieshou[8] | jieshou[9];
                                         zh[5] = jieshou[10] | jieshou[11];
                                         zh[6] = jieshou[12] | jieshou[13];
                                         zh[7] = jieshou[14] | jieshou[15];
                                 UartWrite(zh, 8);
                                         fengming();
                                }
                                                if((jj > 16)&&(jj <= 18))
                                {
                                         zh[0] = jieshou[0] | jieshou[1];
                                         zh[1] = jieshou[2] | jieshou[3];
                                         zh[2] = jieshou[4] | jieshou[5];
                                         zh[3] = jieshou[6] | jieshou[7];
                                         zh[4] = jieshou[8] | jieshou[9];
                                         zh[5] = jieshou[10] | jieshou[11];
                                         zh[6] = jieshou[12] | jieshou[13];
                                         zh[7] = jieshou[14] | jieshou[15];
                                         zh[8] = jieshou[16] | jieshou[17];
                                 UartWrite(zh, 9);
                                         fengming();
                                }
                        if((jj > 18)&&(jj <= 20))
                                {
                                         zh[0] = jieshou[0] | jieshou[1];
                                         zh[1] = jieshou[2] | jieshou[3];
                                         zh[2] = jieshou[4] | jieshou[5];
                                         zh[3] = jieshou[6] | jieshou[7];
                                         zh[4] = jieshou[8] | jieshou[9];
                                         zh[5] = jieshou[10] | jieshou[11];
                                         zh[6] = jieshou[12] | jieshou[13];
                                         zh[7] = jieshou[14] | jieshou[15];
                                         zh[8] = jieshou[16] | jieshou[17];
                                         zh[9] = jieshou[18] | jieshou[19];
                                 UartWrite(zh, 10);
                                         fengming();
                                }
                               
                               
                          
                          
                        }
           }
            if(d2 != q2)
           {
                           q2 = d2;
                        if(d2 == 0)
                        {
                           jj = 0;
                           jieshou[0] = 0x00;
                           jieshou[1] = 0x00;
                           jieshou[2] = 0x00;
                           jieshou[3] = 0x00;
                           jieshou[4] = 0x00;
                           jieshou[5] = 0x00;
                           jieshou[6] = 0x00;
                           jieshou[7] = 0x00;
                           jieshou[8] = 0x00;
                           jieshou[9] = 0x00;
                           P0 = xianshi[16];
                           fengming();
                        }
           }
          for (i=0;i<4;i++)
          {
                   for (j=0;j<4;j++)
                   {

                      if(dangqianzhuangtai[j] != qianyicizhuangtai[j] )
                    {
                               qianyicizhuangtai[j] = dangqianzhuangtai[j];
               
                             if(qianyicizhuangtai[j] != 0)

                              {
                                                 jj++;
                                                 if((i*4+j) < 9)
                                                 {
                                                     P0 = xianshi[i*4+j+1];
                                                 }
                                                 if((i*4+j) == 9)
                                                 {
                                                         P0 = xianshi[0];
                                                 }
                                                 if((i*4+j) > 9)
                                                 {
                                                         P0 = xianshi[i*4+j];
                                                 }
                                                 fengming();
                                          /******************1組**************************/
                                                 if(jj == 1)
                                                 {
                                                         //jieshou[0] = i*4+j;
                                                        //jieshou[0] = jieshou[0] << 4;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[0] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[0] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[0] = i*4+j;
                                                         }
                                                         jieshou[0] = jieshou[0] << 4;

                                                 }
                                                 if(jj == 2)
                                                 {
                                                         //jieshou[1] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[1] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[1] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[1] = i*4+j;
                                                         }
                                                               
                                                 }
                                         /******************2組**************************/
                                                 if(jj == 3)
                                                 {
                                                         //jieshou[2] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[2] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[2] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[2] = i*4+j;
                                                         }
                                                        jieshou[2] = jieshou[2] << 4;
                                                 }
                                                 if(jj == 4)
                                                 {
                                                         //jieshou[3] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[3] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[3] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[3] = i*4+j;
                                                         }       
                                                 }
                                          /******************3組**************************/
                                                 if(jj == 5)
                                                 {
                                                         //jieshou[4] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[4] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[4] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[4] = i*4+j;
                                                         }
                                                        jieshou[4] = jieshou[4] << 4;
                                                 }
                                                 if(jj == 6)
                                                 {
                                                         //jieshou[5] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[5] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[5] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[5] = i*4+j;
                                                         }       
                                                 }
                                                 /******************4組**************************/
                                                 if(jj == 7)
                                                 {
                                                         //jieshou[6] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[6] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[6] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[6] = i*4+j;
                                                         }
                                                        jieshou[6] = jieshou[6] << 4;
                                                 }
                                                 if(jj == 8)
                                                 {
                                                         //jieshou[7] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[7] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[7] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[7] = i*4+j;
                                                         }       
                                                 }
                                                  /******************5組**************************/
                                                 if(jj == 9)
                                                 {
                                                         //jieshou[8] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[8] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[8] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[8] = i*4+j;
                                                         }
                                                        jieshou[8] = jieshou[8] << 4;
                                                 }
                                                 if(jj == 10)
                                                 {
                                                         //jieshou[9] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[9] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[9] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[9] = i*4+j;
                                                         }       
                                                 }
                                                  /******************6組**************************/
                                                 if(jj == 11)
                                                 {
                                                         //jieshou[10] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[10] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[10] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[10] = i*4+j;
                                                         }
                                                        jieshou[10] = jieshou[10] << 4;
                                                 }
                                                 if(jj == 12)
                                                 {
                                                         //jieshou[11] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[11] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[11] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[11] = i*4+j;
                                                         }       
                                                 }
                                                 /******************7組**************************/
                                                 if(jj == 13)
                                                 {
                                                         //jieshou[12] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[12] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[12] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[12] = i*4+j;
                                                         }
                                                        jieshou[12] = jieshou[12] << 4;
                                                 }
                                                 if(jj == 14)
                                                 {
                                                         //jieshou[13] = i*4+j;       
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[13] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[13] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[13] = i*4+j;
                                                         }
                                                 }
                                                  /******************8組**************************/
                                                 if(jj == 15)
                                                 {
                                                         //jieshou[14] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[14] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[14] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[14] = i*4+j;
                                                         }
                                                        jieshou[14] = jieshou[14] << 4;
                                                 }
                                                 if(jj == 16)
                                                 {
                                                         //jieshou[15] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[15] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[15] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[15] = i*4+j;
                                                         }       
                                                 }
                                            /******************9組**************************/
                                                 if(jj == 17)
                                                 {
                                                         //jieshou[16] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[16] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[16] = 0;
                                                         }                         
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[16] = i*4+j;
                                                         }
                                                        jieshou[16] = jieshou[16] << 4;
                                                 }
                                                 if(jj == 18)
                                                 {
                                                         //jieshou[17] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[17] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[17] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[17] = i*4+j;
                                                         }       
                                                 }
                                            /******************10組**************************/
                                                 if(jj == 19)
                                                 {
                                                         //jieshou[18] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[18] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[18] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[18] = i*4+j;
                                                         }
                                                        jieshou[18] = jieshou[18] << 4;
                                                 }
                                                 if(jj == 20)
                                                 {
                                                         //jieshou[19] = i*4+j;
                                                        if((i*4+j) < 9)
                                                         {
                                                             jieshou[19] = i*4+j+1;
                                                         }
                                                         if((i*4+j) == 9)
                                                         {
                                                                 jieshou[19] = 0;
                                                         }
                                                         if((i*4+j) > 9)
                                                         {
                                                                 jieshou[19] = i*4+j;
                                                         }       
                                                 }
                         }
                      }
                  }

                }


      }
}
void UartAction(unsigned char *buf, unsigned char len)
{
    //在接收到的數據幀后添加換車換行符后發回
   // buf[len++] = '\r';
    //buf[len++] = '\n';
   UartWrite(buf, (len-2));
       
}


GYJ-0023_工控設備串口及485調試模塊原理圖及PCB圖.pdf

772.6 KB, 下載次數: 4, 下載積分: 黑幣 -5

手持通訊板 - 發送字符.zip

90.05 KB, 下載次數: 5, 下載積分: 黑幣 -5

手持通訊板 發送十六進制.zip

66.83 KB, 下載次數: 5, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美三区 | 国产成人精品久久二区二区91 | 午夜精品一区二区三区在线播放 | 国产成人精品免费视频大全最热 | 激情五月激情综合网 | 一级国产精品一级国产精品片 | 亚洲欧美日韩久久 | 亚洲高清在线 | 亚洲欧美一区二区三区视频 | 97伦理电影 | 中文天堂网 | 亚洲一区二区三区视频 | www国产成人免费观看视频,深夜成人网 | 日韩一区二区三区av | 天天爱天天操 | 国产亚洲网站 | 中文字幕成人免费视频 | 久久久精品 | 久久久久国产精品一区二区 | 超碰操 | 国产精品亚洲成在人线 | 亚洲一区二区三区在线播放 | 丁香六月伊人 | 精品亚洲国产成av人片传媒 | 久久综合九色综合欧美狠狠 | 卡通动漫第一页 | 五月激情六月婷婷 | 中文字幕一区二区在线观看 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 亚洲欧洲精品在线 | 91av在线电影| 日本激情视频网 | 久久久国产一区二区三区四区小说 | 一级毛片在线看 | 久久国产99 | 日韩在线精品 | 九九久久国产 | 久久国产精品精品国产色婷婷 | 国产精品美女久久久久久免费 | 亚洲精品二区 | 欧美精品在线一区二区三区 |