欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: as608與51單片機通信失敗原因,求大神 [打印本頁]

作者: Leeyoung    時間: 2019-4-16 23:21
標題: as608與51單片機通信失敗原因,求大神
    這兩天在學習as608指紋模塊,商家送的例程正在研究學習。發現模塊通過串口與電腦上位機可以正常使用,增刪查指紋。但是與51單片機一直卡在單片機發送校對命令,不能成功接收返回的數據包。想了很久弄不明白什么問題,在這里請教大神。(個人考慮還是中斷不能成功進入導致的)
附上部分代碼:
  1. void FPM10A_Cmd_Send_Pack_Head(void)
  2. {
  3.         int i;        
  4.         for(i=0;i<6;i++) //包頭
  5.    {
  6.      Uart_Send_Byte(FPM10A_Pack_Head[i]);   
  7.     }               
  8. }
  9. //發送指令
  10. void FPM10A_Cmd_Check(void)
  11. {
  12.         int i=0;
  13.         FPM10A_Cmd_Send_Pack_Head(); //發送通信協議包頭
  14.         for(i=0;i<10;i++)
  15.          {               
  16.                 Uart_Send_Byte(FPM10A_Get_Device[i]);
  17.           }
  18. }
  19. //接收反饋數據緩沖
  20. void FPM10A_Receive_Data(unsigned char ucLength)
  21. {
  22.   unsigned char i;

  23.   for (i=0;i<ucLength;i++)
  24.      FPM10A_RECEICE_BUFFER[i] = Uart_Receive_Byte();

  25. }



  26. void Device_Check(void)
  27. {
  28.                 unsigned char i=0,j,k,m;
  29.                 FPM10A_RECEICE_BUFFER[9]=1;                                           //串口數組第九位可判斷是否通信正常
  30.                 LCD1602_Display(0xc0,"Loading",0,7);                   //設備加載中界面                                                           
  31.                 for(i=0;i<8;i++)                                                           //進度條式更新,看起來美觀
  32.                 {
  33.                         lcd_wdat(42);                               //42對應ASIC碼的 *
  34.                         delay(200);                                                           //控制進度條速度
  35.                 }                                                                        
  36. //                LCD1602_Display(0xc0,"Docking  failure",0,16);      //液晶先顯示對接失敗,如果指紋模塊插對的話會將其覆蓋        


  37.                 FPM10A_Cmd_Check();                                                                        //單片機向指紋模塊發送校對命令
  38.                 [b]FPM10A_Receive_Data(12);[/b]                                                        //將串口接收到的數據轉存,不能成功接收數據
  39.                 LCD1602_Display(0xc0,"Docking  failure",0,16);

  40.                 if(FPM10A_RECEICE_BUFFER[9] == 13)                                        //判斷數據低第9位是否接收到0
  41.                 {
  42.                         LCD1602_Display(0xc0,"Docking  success",0,16);        //符合成功條件則顯示對接成功
  43.                 }                    
  44. }
復制代碼


另附上中斷程序:
  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. }
復制代碼

實在想不明白了,求大神指教一二。


作者: wulin    時間: 2019-4-17 06:21
本帖最后由 wulin 于 2019-4-17 10:14 編輯

void Uart_Init(void)
{
    SCON=0x50;   //UART方式1:8位UART;   REN=1:允許接收
    PCON&=0x7F;   //SMOD=0:波特率不加倍
    TMOD=0x20;   //T1方式2,用于UART波特率
    TH1=0xFD;
    TL1=0xFD;   //UART波特率設置:FDFD,9600;FFFF,57600
    TR1=1;         //允許T1計數
        ET1 = 0;                //禁止定時器1中斷
    EA=1;
}
作者: caodaxia    時間: 2019-4-17 09:53
想要響應串口中斷,先在初始化里加上串口中斷使能:ES    = 1;                  //打開串口中斷
作者: Leeyoung    時間: 2019-4-17 22:47
caodaxia 發表于 2019-4-17 09:53
想要響應串口中斷,先在初始化里加上串口中斷使能:ES    = 1;                  //打開串口中斷

加上這個以后整個程序就直接亂掉了,直接進到后面的部分了,握手還是沒有成功,上位機測試也沒有返回包
作者: Leeyoung    時間: 2019-4-17 22:48
wulin 發表于 2019-4-17 06:21
void Uart_Init(void)
{
    SCON=0x50;   //UART方式1:8位UART;   REN=1:允許接收

這樣改啥意思啊,沒看懂這樣改的原因
作者: Masrer    時間: 2019-4-26 20:33
樓主  請問你的問題解決了么?我也遇到了相同的問題
作者: 李拴    時間: 2019-5-13 13:11
樓主解決了么,我也一直卡在這。
作者: az2152869    時間: 2019-5-17 01:54
1.檢查晶振是否為11.0592M,12M晶振在使用9600波特率時會有誤差,導致數據發送錯誤,11.0592M晶振在波特率為9600到57600之間發送的數據都是準確的。可以使用串口助手進行調試,發送一個字節看發送的數據是否正確。
2.把AS608的波特率設置為9600,我也不知道為什么,我i這樣設置后就可以通信了。
作者: wojiaolisen.123    時間: 2019-6-21 20:37
Masrer 發表于 2019-4-26 20:33
樓主  請問你的問題解決了么?我也遇到了相同的問題

兄弟你這個問題解決了嗎,卡在這半天了

作者: 103實驗室    時間: 2019-11-6 16:56
解決了嗎?求指教

作者: ssruos    時間: 2019-11-16 19:31
樓主,這個問題你解決了嗎?我也遇到了

作者: 超級無敵磊果果    時間: 2019-12-4 21:26
我知道你的問題可能出在哪里!!!!我也是指紋模塊同樣的問題,折磨了我兩天,剛剛終于發現問題了,
作者: 超級無敵磊果果    時間: 2019-12-4 21:34
我知道你的問題出現在哪里!!!!
我也是玩指紋模塊,同樣的問題,折磨了我兩天了,就在剛剛解決了,剛好之前查百度看到有人在這里問,過來分享下。
具體情況是這樣的:使用上位機可以錄指紋,驗證指紋啥的,但是跑源碼就總是彈出錯誤,提示返回碼錯誤,用串口助手有時候有消息返回,有時候沒有,后來終于發現問題所在了,問題就在于使用上位機成功的那個波特率是自動檢測的,但是你程序里面的波特率是寫死了的,所以上位機不論哪個波特率都可以檢測到,但是程序就是不行,所以必須波特率對應才行;修改方法,使用上位機查看出指紋模塊波特率,之后修改代碼里面的波特率;方法二在上位機上修改指紋模塊波特率為程序中的波特率,對應上就行了
作者: 大魔王小張    時間: 2020-3-7 10:02
一定要注意晶振 不然可能會出現缺位或者無法響應  設置波特率為9600傳輸正常
作者: hello_syl    時間: 2020-3-21 19:27
az2152869 發表于 2019-5-17 01:54
1.檢查晶振是否為11.0592M,12M晶振在使用9600波特率時會有誤差,導致數據發送錯誤,11.0592M晶振在波特率 ...

設置成9600后直接就顯示模塊接入失敗了········
作者: hello_syl    時間: 2020-3-22 16:32
大魔王小張 發表于 2020-3-7 10:02
一定要注意晶振 不然可能會出現缺位或者無法響應  設置波特率為9600傳輸正常

在普中單核的51開發板上,設置9600在最開始的時候校對模塊接入都直接顯示失敗了······按正常的56700,可以通信,但是指紋就是掃不出來。
作者: 戈戈登    時間: 2020-3-30 21:35
樓主問題解決了嗎,我也遇到這個問題了,上位機測試沒問題,波特率也設置了9600,但是就是無法與單片機通信
作者: sduking    時間: 2020-3-30 22:43
1、確認單片機的晶振和你選用的波特率匹配,
2、注意通信協議中的奇偶校驗位,停止位,校驗和
作者: suifengyu    時間: 2020-3-30 23:17
戈戈登 發表于 2020-3-30 21:35
樓主問題解決了嗎,我也遇到這個問題了,上位機測試沒問題,波特率也設置了9600,但是就是無法與單片機通信

我的也是這樣
作者: HAYA    時間: 2020-5-3 21:39
請問樓主這個問題解決了么?上位機測試、串口助手調試都正常,波特率也設置成9600,依然不能與單片機進行通信
作者: 清風無慮    時間: 2020-12-4 10:37
HAYA 發表于 2020-5-3 21:39
請問樓主這個問題解決了么?上位機測試、串口助手調試都正常,波特率也設置成9600,依然不能與單片機進行通 ...

我也遇到了這個問題,請問你解決了嗎

作者: y434776771    時間: 2020-12-4 10:41
超級無敵磊果果 發表于 2019-12-4 21:34
我知道你的問題出現在哪里!!!!
我也是玩指紋模塊,同樣的問題,折磨了我兩天了,就在剛剛解決了,剛好 ...

獎勵40 個了 哦
作者: c51yangjunxi    時間: 2021-5-7 00:07
hello_syl 發表于 2020-3-22 16:32
在普中單核的51開發板上,設置9600在最開始的時候校對模塊接入都直接顯示失敗了······按正常的5670 ...

請問您的問題解決了嗎?我指紋一直識別不出。和你的情況一樣

作者: 清風慕雨    時間: 2022-12-27 19:23
2022年了   這個問題我來回答    這百分百是你指紋模塊的波特率不是9600導致的  用上位機設置一下波特率就行了
作者: 鄭偉雄    時間: 2023-3-13 16:33
清風慕雨 發表于 2022-12-27 19:23
2022年了   這個問題我來回答    這百分百是你指紋模塊的波特率不是9600導致的  用上位機設置一下波特率就 ...

2023年,要怎么設置波特率
作者: wym2023    時間: 2023-3-18 15:24
鄭偉雄 發表于 2023-3-13 16:33
2023年,要怎么設置波特率

我也是一樣的問題,請問解決了嗎?

作者: wym2023    時間: 2023-3-18 15:40
az2152869 發表于 2019-5-17 01:54
1.檢查晶振是否為11.0592M,12M晶振在使用9600波特率時會有誤差,導致數據發送錯誤,11.0592M晶振在波特率 ...

AS608的默認的波特率是57600,請問怎么更改模塊的波特率?謝謝指點!
作者: HANHANHAN1111    時間: 2023-4-25 12:46
請問您解決了嗎,我也出現這種問題了一直無法實現通信。




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1