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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stc15單片機1602串口顯示北斗定位數據程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:476348 發表于 2019-3-13 09:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機源程序如下:
  1. #include "MAIN.H"
  2. #include "DELAY.H"
  3. #include "lcd1602.h"
  4. #include "uart.h"
  5. #include<string.h>
  6. #define Uart1_Buf_Max 70//串口數據緩存長度
  7. #define Uart2_Buf_Max 70
  8. #define uint unsigned int
  9. #define uchar unsigned char
  10. /*************        本地常量聲明        **************/
  11. write_com(unsigned char);

  12. /*************        本地變量聲明        **************/
  13. u8 count = 0;
  14. u8 idata  Rec_Buf[Uart1_Buf_Max];  //串口數據緩存
  15. u8 point1 = 0;             //綬存指針
  16. u8 a,flag;
  17. u8 xdata  Uart2_Rec_Buf[Uart2_Buf_Max];  //串口數據緩存
  18. u8 point2 = 0;     
  19. /*************        本地函數聲明        **************/



  20. /*************  外部函數和變量聲明 *****************/
  21. bit        B_TX2_Busy = 0;        


  22. /******************** IO配置函數 **************************/
  23. void        GPIO_config(void)
  24. {
  25.         P5M0 &= ~(1<<5);                //設置P5.5為準雙向口
  26.         P5M1 &= ~(1<<5);
  27. }






  28. /******************** 主函數 **************************/
  29. void UartInit(void)                //9600bps@11.0592MHz
  30. {
  31. //注意: STC15W4K32S4系列的芯片,上電后所有與PWM相關的IO口均為
  32. //      高阻態,需將這些口設置為準雙向口或強推挽模式方可正常使用
  33. //相關IO: P0.6/P0.7/P1.6/P1.7/P2.1/P2.2
  34. //        P2.3/P2.7/P3.7/P4.2/P4.4/P4.5

  35.         PCON &= 0x7F;                //波特率不倍速
  36.         SCON = 0x50;                //8位數據,可變波特率
  37.         AUXR |= 0x40;                //定時器1時鐘為Fosc,即1T
  38.         AUXR &= 0xFE;                //串口1選擇定時器1為波特率發生器
  39.         TMOD &= 0x0F;                //清除定時器1模式位
  40.         TMOD |= 0x20;                //設定定時器1為8位自動重裝方式
  41.         TL1 = 0xDC;                //設定定時初值
  42.         TH1 = 0xDC;                //設定定時器重裝值
  43.         ET1 = 0;                //禁止定時器1中斷
  44.         TR1 = 1;                //啟動定時器1


  45.         S2CON = 0x50;                //8位數據,可變波特率
  46.         AUXR |= 0x04;                //定時器2時鐘為Fosc,即1T
  47.         T2L = 0xE0;                //設定定時初值
  48.         T2H = 0xFE;                //設定定時初值
  49.         AUXR |= 0x10;                //啟動定時器2

  50.         UART2_INT_ENABLE();
  51.         ES = 1;
  52.         EA = 1;
  53. }

  54. /*----------------------------
  55. 發送串口數據
  56. ----------------------------*/
  57. void SendData(unsigned char ch)
  58. {
  59.     SBUF = ch;                 //寫數據到UART數據寄存器
  60.                 while(TI == 0);
  61.                 TI = 0;
  62. }

  63. /*----------------------------
  64. 發送字符串
  65. ----------------------------*/
  66. void SendString(char *s)
  67. {
  68.     while (*s)                  //檢測字符串結束標志
  69.     {
  70.         SendData(*s++);         //發送當前字符
  71.     }
  72. }
  73. void Send(unsigned char *s,unsigned int len)
  74. {
  75.     for(a = 0;a<len;a++)
  76.         {
  77.           SendData(*s++);           // *s指向ReBuf[0],*s指向下一個ReBuf[1];
  78.         }

  79. }

  80. bit Hand(unsigned char *a)                   // 串口命令識別函數
  81. {
  82.     if(strstr(Rec_Buf,a)!=NULL)
  83.             return 1;
  84.         else
  85.                 return 0;
  86. }

  87. void CLR_Buf(void)                           // 串口緩存清理
  88. {
  89.         memset(Rec_Buf, 0, Uart1_Buf_Max);      //清空

  90.        point1 = 0;                 
  91. }


  92. /*----------------------------
  93. 通過串口2發送串口數據
  94. ----------------------------*/
  95. void Uart2SendData(unsigned char ch)
  96. {
  97.         while(B_TX2_Busy);        //不忙后發送數據
  98.     S2BUF = ch;                 //寫數據到UART數據寄存器
  99.         B_TX2_Busy = 1;
  100. }

  101. /*----------------------------
  102. 通過串口2發送字符串
  103. ----------------------------*/
  104. void Uart2SendString(char *s)
  105. {
  106.     while (*s)                  //檢測字符串結束標志
  107.     {
  108.         Uart2SendData(*s++);         //發送當前字符
  109.     }
  110. }

  111. bit Uart2Hand(unsigned char *a)                   // 串口命令識別函數
  112. {
  113.     if(strstr(Uart2_Rec_Buf,a)!=NULL)
  114.             return 1;
  115.         else
  116.                 return 0;
  117. }

  118. void Uart2CLR_Buf(void)                           // 串口緩存清理
  119. {
  120.         memset(Uart2_Rec_Buf, 0, Uart2_Buf_Max);      //清空
  121.         
  122.     point2 = 0;
  123.         
  124. }



  125. void main(void)
  126. {
  127.                 unsigned char add;
  128.         unsigned char hh;
  129.         hh=Uart2_Rec_Buf[20],10;
  130.         GPIO_config();
  131.         UartInit();
  132.         Init_LCD1602();
  133.         LCD1602_write_com(0x80);                //指針指向第1行第0個位置
  134.         LCD1602_write_word("weidu ");

  135.          
  136.             
  137.             
  138.                         
  139.         
  140.         LCD1602_write_com(0x80+0x40);        //指針指向第2行第0個位置
  141.         LCD1602_write_word("jingdu ");
  142.         Send(&Uart2_Rec_Buf[32],11);
  143.         
  144.         
  145.         hh=Uart2_Rec_Buf[32];

  146.         LCD1602_write_word("hh  ");
  147.         write_com(0x80+0x40+add);
  148.         

  149. write_date(0x30+hh);
  150.         delay_ms(200);
  151.         
  152.         while(1)
  153.         {
  154.                
  155.                
  156.                 SendString("\r\n");
  157.                         Send(&Uart2_Rec_Buf[0],70);
  158.                                                   
  159.                         SendString("\r\nweidu:\r\n");
  160.                         Send(&Uart2_Rec_Buf[20],10);        
  161.                         
  162.                         SendString("\r\nnanbeibanqiu:\r\n");
  163.                         Send(&Uart2_Rec_Buf[30],1);
  164.                         SendString("\r\n");
  165.                         
  166.                         SendString("jindu:\r\n");
  167.                         Send(&Uart2_Rec_Buf[32],11);
  168.                         SendString("\r\n");

  169.                         
  170.                         SendString("dongxibanqiu:\r\n");
  171.                         Send(&Uart2_Rec_Buf[43],1);
  172.                         SendString("\r\n");


  173.                         SendString("shijian(shi fen miao):\r\n");
  174.                         Send(&Uart2_Rec_Buf[7],6);
  175.                         SendString("\r\n");        
  176.         
  177.                         SendString("shijian(nian yue ri):\r\n");
  178.                         Send(&Uart2_Rec_Buf[61],2);
  179.                         Send(&Uart2_Rec_Buf[59],2);
  180.                         Send(&Uart2_Rec_Buf[57],2);
  181.                         SendString("\r\n");        
  182.         
  183.                         
  184.                         SendString("dimiansudu:\r\n");
  185.                         Send(&Uart2_Rec_Buf[45],6);
  186.                         SendString("\r\n");        
  187.         
  188.                         SendString("dimianhangxiang:\r\n");
  189.                         Send(&Uart2_Rec_Buf[51],6);
  190.                         SendString("\r\n");        


  191.                         SendString("cipianjiaofangxiang:\r\n");
  192.                         Send(&Uart2_Rec_Buf[66],1);
  193.                         SendString("\r\n");        
  194.                         
  195.                    /*
  196.                         flag = 0;                        
  197.                         point1=0;
  198.                         point2=0;
  199.                          ES = 1;   */

  200.                                 clrStruct();
  201.                          SendString("\r\n");
  202.                         Send(&Uart2_Rec_Buf[0],70);
  203.                                                   
  204.                         SendString("\r\nweidu:\r\n");
  205.                         Send(&Uart2_Rec_Buf[20],10);        
  206.                         
  207.                         SendString("\r\nnanbeibanqiu:\r\n");
  208.                         Send(&Uart2_Rec_Buf[30],1);
  209.                         SendString("\r\n");
  210.                         
  211.                         SendString("jindu:\r\n");
  212.                         Send(&Uart2_Rec_Buf[32],11);
  213.                         SendString("\r\n");

  214.                         
  215.                         SendString("dongxibanqiu:\r\n");
  216.                         Send(&Uart2_Rec_Buf[43],1);
  217.                         SendString("\r\n");


  218.                         SendString("shijian(shi fen miao):\r\n");
  219.                         Send(&Uart2_Rec_Buf[7],6);
  220.                         SendString("\r\n");        
  221.         
  222.                         SendString("shijian(nian yue ri):\r\n");
  223.                         Send(&Uart2_Rec_Buf[61],2);
  224.                         Send(&Uart2_Rec_Buf[59],2);
  225.                         Send(&Uart2_Rec_Buf[57],2);
  226.                         SendString("\r\n");        
  227.         
  228.                         
  229.                         SendString("dimiansudu:\r\n");
  230.                         Send(&Uart2_Rec_Buf[45],6);
  231.                         SendString("\r\n");        
  232.         
  233.                         SendString("dimianhangxiang:\r\n");
  234.                         Send(&Uart2_Rec_Buf[51],6);
  235.                         SendString("\r\n");        


  236.                         SendString("cipianjiaofangxiang:\r\n");
  237.                         Send(&Uart2_Rec_Buf[66],1);
  238.                         SendString("\r\n");
  239.                
  240.                
  241.         }
  242. }
  243. void Usart2() interrupt 8 using 1
  244. {
  245.         UART2_INT_DISABLE();        
  246.         
  247.         if(RI2)
  248.     {
  249.                 CLR_RI2();                               //清除RI位
  250.                 Uart2_Rec_Buf[point2] = S2BUF;
  251.                 if(Uart2_Rec_Buf[0]!=


  252. )
  253.                 {        
  254.                         point2=0;
  255.                         return;         
  256.                 }
  257.                 point2++;               
  258.                 if(point2>=Uart2_Buf_Max)         
  259. ……………………

  260. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
08.LCD1602液晶顯示.zip (41.51 KB, 下載次數: 35)


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

使用道具 舉報

沙發
ID:1 發表于 2019-3-13 15:26 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久 | 精品美女视频在线观看免费软件 | 久久99这里只有精品 | 99色综合 | 日本爱爱视频 | 久久久久一区 | 久久精品国产一区二区三区不卡 | 欧美日韩亚洲二区 | 亚洲天堂网站 | 国产大片一区 | 在线视频a| 国产精品亚洲第一区在线暖暖韩国 | 91精品国产日韩91久久久久久 | 欧美一级免费 | 久久精品视频一区二区三区 | 精品国产一二三区 | 天天av综合 | 欧美亚洲国产日韩 | 日韩黄色小视频 | 91色视频在线观看 | www中文字幕 | www.色婷婷 | 亚洲欧美日韩成人在线 | 蜜桃视频在线观看免费视频网站www | 国产成人福利在线观看 | 成人精品 | 成人一区二区三区 | 视频在线日韩 | 亚洲日日操 | 欧美成人免费在线 | 精品中文视频 | 在线欧美小视频 | 国产日韩精品视频 | 亚洲精品视频免费看 | 久久精品国产久精国产 | 精品久久不卡 | 亚洲精品99 | 久久久久se | 天天躁日日躁狠狠躁2018小说 | 99精品国自产在线 | 久久成人一区二区三区 |