<menuitem id="t17lb"><menuitem id="t17lb"><ruby id="t17lb"></ruby></menuitem></menuitem><ins id="t17lb"></ins>
<ins id="t17lb"><i id="t17lb"><progress id="t17lb"></progress></i></ins>
<cite id="t17lb"><i id="t17lb"></i></cite>
<ins id="t17lb"></ins>
<address id="t17lb"><i id="t17lb"></i></address>
<address id="t17lb"><i id="t17lb"></i></address>
<ins id="t17lb"></ins>
<ins id="t17lb"></ins><var id="t17lb"><i id="t17lb"><th id="t17lb"></th></i></var><listing id="t17lb"><i id="t17lb"></i></listing>
<th id="t17lb"><i id="t17lb"><th id="t17lb"></th></i></th>
<del id="t17lb"><i id="t17lb"><listing id="t17lb"></listing></i></del>
<var id="t17lb"><span id="t17lb"><th id="t17lb"></th></span></var><th id="t17lb"><del id="t17lb"></del></th>

單片機論壇

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

還是關于指紋模塊AS608和51單片機的串口通信握手失敗問題 求指導

[復制鏈接]
跳轉到指定樓層
樓主
串口初始化后   還是握手失敗
附上一些主要程序
  1. void Uart_Init(void)
  2. {
  3.     SCON=0x50;   //UART方式1:8位UART;   REN=1:允許接收
  4.     PCON=0x00;   //SMOD=0:波特率不加倍
  5.     TMOD=0x20;   //T1方式2,用于UART波特率
  6.     TH1=0xFD;
  7.     TL1=0xFD;   //UART波特率設置:FDFD,9600;FFFF,57600
  8.     TR1=1;         //允許T1計數
  9.     EA=1;
  10. }


  11. void Uart_Send_Byte(unsigned char c)//UART Send a byte
  12. {
  13.         SBUF = c;
  14.         while(!TI);                //發送完為1
  15.         TI = 0;
  16. }

  17. unsigned char Uart_Receive_Byte()//UART Receive a byteg
  18. {        
  19.         unsigned char dat;
  20.         while(!RI);         //接收完為1
  21.         RI = 0;
  22.         dat = SBUF;
  23.         return (dat);
  24. }//這些是串口初始化的程序



  25. void Device_Check(void)//握手
  26. {
  27.                 unsigned char i=0;
  28.                 FPM10A_RECEICE_BUFFER[9]=1;                                           //串口數組第九位可判斷是否通信正常
  29.                 LCD1602_Display(0xc0,"Loading",0,7);                   //設備加載中界面                                                           
  30.                 for(i=0;i<8;i++)                                                           //進度條式更新,看起來美觀
  31.                 {
  32.                         LCD1602_WriteDAT(42);                               //42對應ASIC碼的 *
  33.                         Delay_Ms(200);                                                           //控制進度條速度
  34.                 }                                                                        
  35.                 LCD1602_Display(0xc0,"Docking  failure",0,16);      //液晶先顯示對接失敗,如果指紋模塊插對的話會將其覆蓋        
  36.                 FPM10A_Cmd_Check();                                                                        //單片機向指紋模塊發送校對命令
  37.                 FPM10A_Receive_Data(12);                                                        //將串口接收到的數據轉存
  38.                  if(FPM10A_RECEICE_BUFFER[9] == 0)                                        //判斷數據低第9位是否接收到0
  39.                 {
  40.                         LCD1602_Display(0xc0,"Docking  success",0,16);        //符合成功條件則顯示對接成功
  41.                 }
  42. }


  43. //發送包頭
  44. void FPM10A_Cmd_Send_Pack_Head(void)
  45. {
  46.         int i;        
  47.         for(i=0;i<6;i++) //包頭
  48.    {
  49.      Uart_Send_Byte(FPM10A_Pack_Head[i]);   
  50.     }               
  51. }
  52. //發送指令
  53. void FPM10A_Cmd_Check(void)
  54. {
  55.         int i=0;
  56.         FPM10A_Cmd_Send_Pack_Head(); //發送通信協議包頭
  57.         for(i=0;i<10;i++)
  58.          {               
  59.                 Uart_Send_Byte(FPM10A_Get_Device[i]);
  60.           }
  61. }
  62. //接收反饋數據緩沖
  63. void FPM10A_Receive_Data(unsigned char ucLength)
  64. {
  65.   unsigned char i;

  66.   for (i=0;i<ucLength;i++)
  67.      FPM10A_RECEICE_BUFFER[i] = Uart_Receive_Byte();

  68. }



  69. code unsigned char FPM10A_Get_Device[10] ={0x01,0x00,0x07,0x13,0x00,0x00,0x00,0x00,0x00,0x1b};//口令驗證
  70. code unsigned char FPM10A_Pack_Head[6] = {0xEF,0x01,0xFF,0xFF,0xFF,0xFF};  //協議包頭
復制代碼



串口調試助手上接收到的數據
接收到了的確是包頭和口令驗證里面的數據  但是最前面有一個00  不知道是為什么 然后程序就一直不能握手成功  lcd1602就顯示的對接失敗

求求大神指點啊   拜托了
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 轉播轉播 分享分享 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
李拴 發表于 2019-5-7 13:06 | 只看該作者
同樣的問題,同樣的程序。我還沒解決,樓主解決了嗎
回復

使用道具 舉報

板凳
1qdeuuu000 發表于 2019-5-7 14:44 來自手機 | 只看該作者
李拴 發表于 2019-5-7 13:06
同樣的問題,同樣的程序。我還沒解決,樓主解決了嗎

把指紋模塊連上位機,改下波特率為9600。并且51單片機晶振必須為11.0592,不然串口通信誤差太大 。
回復

使用道具 舉報

地板
李拴 發表于 2019-5-7 19:25 | 只看該作者
1qdeuuu000 發表于 2019-5-7 14:44
把指紋模塊連上位機,改下波特率為9600。并且51單片機晶振必須為11.0592,不然串口通信誤差太大 。

謝謝,不過我已經這樣做了,上位機上修改了波特率9600,晶振也是11.0592,程序裝初值為0xfd,這樣單片機波特率也是9600,可還是無法通訊
回復

使用道具 舉報

5#
愿你三冬暖 發表于 2019-8-17 23:47 | 只看該作者
李拴 發表于 2019-5-7 19:25
謝謝,不過我已經這樣做了,上位機上修改了波特率9600,晶振也是11.0592,程序裝初值為0xfd,這樣單片機 ...

兄臺  通訊問題解決了嗎  最近在學這個也碰到了同樣的問題
回復

使用道具 舉報

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

本版積分規則

QQ|手機版|小黑屋|單片機論壇 |51黑電子論壇單片機 聯系QQ:125739409;技術交流QQ群582644647

Powered by 單片機教程網

快速回復 返回頂部 返回列表
jijzzizz中国版