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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

as608與51單片機通信失敗原因,求大神

  [復制鏈接]
跳轉到指定樓層
樓主
ID:497242 發表于 2019-4-16 23:21 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    這兩天在學習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. }
復制代碼

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

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

使用道具 舉報

來自 2#
ID:294657 發表于 2019-12-4 21:34 | 只看該作者
我知道你的問題出現在哪里!。!
我也是玩指紋模塊,同樣的問題,折磨了我兩天了,就在剛剛解決了,剛好之前查百度看到有人在這里問,過來分享下。
具體情況是這樣的:使用上位機可以錄指紋,驗證指紋啥的,但是跑源碼就總是彈出錯誤,提示返回碼錯誤,用串口助手有時候有消息返回,有時候沒有,后來終于發現問題所在了,問題就在于使用上位機成功的那個波特率是自動檢測的,但是你程序里面的波特率是寫死了的,所以上位機不論哪個波特率都可以檢測到,但是程序就是不行,所以必須波特率對應才行;修改方法,使用上位機查看出指紋模塊波特率,之后修改代碼里面的波特率;方法二在上位機上修改指紋模塊波特率為程序中的波特率,對應上就行了

評分

參與人數 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:213173 發表于 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;
}
回復

使用道具 舉報

地板
ID:514285 發表于 2019-4-17 09:53 | 只看該作者
想要響應串口中斷,先在初始化里加上串口中斷使能:ES    = 1;                  //打開串口中斷
回復

使用道具 舉報

5#
ID:497242 發表于 2019-4-17 22:47 | 只看該作者
caodaxia 發表于 2019-4-17 09:53
想要響應串口中斷,先在初始化里加上串口中斷使能:ES    = 1;                  //打開串口中斷

加上這個以后整個程序就直接亂掉了,直接進到后面的部分了,握手還是沒有成功,上位機測試也沒有返回包
回復

使用道具 舉報

6#
ID:497242 發表于 2019-4-17 22:48 | 只看該作者
wulin 發表于 2019-4-17 06:21
void Uart_Init(void)
{
    SCON=0x50;   //UART方式1:8位UART;   REN=1:允許接收

這樣改啥意思啊,沒看懂這樣改的原因
回復

使用道具 舉報

7#
ID:522554 發表于 2019-4-26 20:33 | 只看該作者
樓主  請問你的問題解決了么?我也遇到了相同的問題
回復

使用道具 舉報

8#
ID:354697 發表于 2019-5-13 13:11 | 只看該作者
樓主解決了么,我也一直卡在這。
回復

使用道具 舉報

9#
ID:445153 發表于 2019-5-17 01:54 | 只看該作者
1.檢查晶振是否為11.0592M,12M晶振在使用9600波特率時會有誤差,導致數據發送錯誤,11.0592M晶振在波特率為9600到57600之間發送的數據都是準確的?梢允褂么谥诌M行調試,發送一個字節看發送的數據是否正確。
2.把AS608的波特率設置為9600,我也不知道為什么,我i這樣設置后就可以通信了。
回復

使用道具 舉報

10#
ID:564892 發表于 2019-6-21 20:37 | 只看該作者
Masrer 發表于 2019-4-26 20:33
樓主  請問你的問題解決了么?我也遇到了相同的問題

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

使用道具 舉報

11#
ID:632286 發表于 2019-11-6 16:56 | 只看該作者
解決了嗎?求指教
回復

使用道具 舉報

12#
ID:641226 發表于 2019-11-16 19:31 | 只看該作者
樓主,這個問題你解決了嗎?我也遇到了
回復

使用道具 舉報

13#
ID:294657 發表于 2019-12-4 21:26 | 只看該作者
我知道你的問題可能出在哪里。。!我也是指紋模塊同樣的問題,折磨了我兩天,剛剛終于發現問題了,
回復

使用道具 舉報

14#
ID:683881 發表于 2020-3-7 10:02 | 只看該作者
一定要注意晶振 不然可能會出現缺位或者無法響應  設置波特率為9600傳輸正常
回復

使用道具 舉報

15#
ID:645983 發表于 2020-3-21 19:27 | 只看該作者
az2152869 發表于 2019-5-17 01:54
1.檢查晶振是否為11.0592M,12M晶振在使用9600波特率時會有誤差,導致數據發送錯誤,11.0592M晶振在波特率 ...

設置成9600后直接就顯示模塊接入失敗了········
回復

使用道具 舉報

16#
ID:645983 發表于 2020-3-22 16:32 | 只看該作者
大魔王小張 發表于 2020-3-7 10:02
一定要注意晶振 不然可能會出現缺位或者無法響應  設置波特率為9600傳輸正常

在普中單核的51開發板上,設置9600在最開始的時候校對模塊接入都直接顯示失敗了······按正常的56700,可以通信,但是指紋就是掃不出來。
回復

使用道具 舉報

17#
ID:719116 發表于 2020-3-30 21:35 | 只看該作者
樓主問題解決了嗎,我也遇到這個問題了,上位機測試沒問題,波特率也設置了9600,但是就是無法與單片機通信
回復

使用道具 舉報

18#
ID:602576 發表于 2020-3-30 22:43 | 只看該作者
1、確認單片機的晶振和你選用的波特率匹配,
2、注意通信協議中的奇偶校驗位,停止位,校驗和
回復

使用道具 舉報

19#
ID:706454 發表于 2020-3-30 23:17 | 只看該作者
戈戈登 發表于 2020-3-30 21:35
樓主問題解決了嗎,我也遇到這個問題了,上位機測試沒問題,波特率也設置了9600,但是就是無法與單片機通信

我的也是這樣
回復

使用道具 舉報

20#
ID:718485 發表于 2020-5-3 21:39 來自觸屏版 | 只看該作者
請問樓主這個問題解決了么?上位機測試、串口助手調試都正常,波特率也設置成9600,依然不能與單片機進行通信
回復

使用道具 舉報

21#
ID:714012 發表于 2020-12-4 10:37 | 只看該作者
HAYA 發表于 2020-5-3 21:39
請問樓主這個問題解決了么?上位機測試、串口助手調試都正常,波特率也設置成9600,依然不能與單片機進行通 ...

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

使用道具 舉報

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

獎勵40 個了 哦
回復

使用道具 舉報

23#
ID:900239 發表于 2021-5-7 00:07 來自觸屏版 | 只看該作者
hello_syl 發表于 2020-3-22 16:32
在普中單核的51開發板上,設置9600在最開始的時候校對模塊接入都直接顯示失敗了······按正常的5670 ...

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

使用道具 舉報

24#
ID:396513 發表于 2022-12-27 19:23 | 只看該作者
2022年了   這個問題我來回答    這百分百是你指紋模塊的波特率不是9600導致的  用上位機設置一下波特率就行了
回復

使用道具 舉報

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

2023年,要怎么設置波特率
回復

使用道具 舉報

26#
ID:1067133 發表于 2023-3-18 15:24 | 只看該作者
鄭偉雄 發表于 2023-3-13 16:33
2023年,要怎么設置波特率

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

使用道具 舉報

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

AS608的默認的波特率是57600,請問怎么更改模塊的波特率?謝謝指點!
回復

使用道具 舉報

28#
ID:1073993 發表于 2023-4-25 12:46 | 只看該作者
請問您解決了嗎,我也出現這種問題了一直無法實現通信。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久视频精品在线 | 做a视频在线观看 | 第一福利社区1024 | 国产精品免费福利 | 91精品国模一区二区三区 | 亚洲网站在线观看 | 国产精品成人在线观看 | 日韩视频精品在线 | 国产91丝袜在线播放 | 亚洲欧美中文日韩在线 | 亚洲精品v | 国产精品99视频 | 亚洲国产高清高潮精品美女 | 亚洲精品国产偷自在线观看 | 91免费在线看 | 久在线| .国产精品成人自产拍在线观看6 | 国产精品久久久久久久久久久久 | 一区二区三区四区视频 | 五月激情六月婷婷 | 日韩免费激情视频 | 亚洲男女视频在线观看 | 精品一区二区三区在线播放 | av黄色在线观看 | 亚洲人成在线播放 | 久草中文在线 | 性xxxxx| 国产精品99精品久久免费 | 亚洲欧洲精品在线 | 欧美一级α片 | 亚洲在线一区二区三区 | 中文字幕第十五页 | av免费在线播放 | 国产一区免费视频 | 精品一区二区三区视频在线观看 | 久久久99国产精品免费 | 精品久久久久久亚洲精品 | 天天综合久久 | 91久久北条麻妃一区二区三区 | 久久99精品久久久 | 中文字幕在线免费观看 |