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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6251|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

51單片機+ISD1720語音+nRF24L01無線溫度控制系統(tǒng)設(shè)計

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:74293 發(fā)表于 2017-12-7 23:08 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
基于無線溫度控制系統(tǒng)硬件介紹:

   該設(shè)計采用51單片機STC89C52控制DS18B20實現(xiàn)的無線溫度控制系統(tǒng)。通過簡單的無線通信協(xié)議,實現(xiàn)可靠性與功耗平衡。該系統(tǒng)能實現(xiàn)對溫度的測量,同時還可以進(jìn)行溫度的設(shè)定,是可以實現(xiàn)遠(yuǎn)程控制的無線溫度控制系統(tǒng)。無線傳輸采用nRF24L01模塊傳輸。
該硬件電路設(shè)計主要分為三部分:主機和從機以及語音模塊。
具體如下:
從機:由溫度傳感器DS18B20,STC89C52單片機和nRF24L01無線射頻模塊,以及LCD1602液晶顯示模塊和驅(qū)動模塊、繼電器等組成。
主機:由STC89C52單片機,nRF24L01無線射頻模塊,LCD12864液晶模塊、電源穩(wěn)壓等組成。
語音模塊:主要基于ISD1720設(shè)計,外接揚聲器。

無線溫度控制原理圖與pcb(包含主機從機和ISD1720語音模塊):


無線領(lǐng)域的總結(jié),1、注意微機之間的通信,2、選擇接受通道,3、設(shè)置工作通道頻率
4、接收通道選擇和發(fā)送通道相同有效數(shù)據(jù)寬度5、發(fā)射速率、功耗功能設(shè)置
6、CRC使能,16位CRC校驗,上電,模式選擇

單片機源程序如下(部分內(nèi)容預(yù)覽):
  1. //軟件調(diào)試第三個問題,ISD1720有二種工作模式,SPI模式,也就是用單片機直接控制,
  2. //獨立按鍵模式,直接用其外圍按鍵控制,剛做好硬件發(fā)現(xiàn)獨立按鍵模式工作不正常,
  3. //所以選擇SPI模式。對ISD1720定點錄好音后發(fā)現(xiàn)并不能實現(xiàn)連續(xù)放音,剛開始考慮到
  4. //可能是指令發(fā)送后1720沒有足夠的時間完成就收到了第二條指令才導(dǎo)致放音不連續(xù),
  5. //于是考慮用延時,延時后發(fā)現(xiàn)可以把定點錄的音都播放出來,但是各段語音之間有停頓
  6. //不能實現(xiàn)無縫播放,語音聽起來很生硬,于是繼續(xù)查看芯片數(shù)據(jù)手冊,對這一點并沒有介紹,
  7. //于是上網(wǎng)查SPI1720調(diào)試心得,發(fā)現(xiàn)ISD1720內(nèi)部有先進(jìn)先出數(shù)據(jù)緩沖器,F(xiàn)IFO是英文First
  8. //In First Out 的縮寫,是一種先進(jìn)先出的數(shù)據(jù)緩存器,這是一種傳統(tǒng)的按序執(zhí)行方法,
  9. //先進(jìn)入的指令先完成并引退,跟著才執(zhí)行第二條指令,并且ISD1720狀態(tài)寄存器第四位INT作用
  10. //是當(dāng)一個操作完成后被置1,可被CLR_INT清除。當(dāng)發(fā)送一次定點播放命令后,不斷地讀狀態(tài)寄
  11. //存器,判斷INT位是否為1,若不是繼續(xù)讀狀態(tài)寄存器,再判讀,當(dāng)INT為1時,用CLR_INT清楚,
  12. //緊接著發(fā)送第二條定點播放指令,至此實現(xiàn)了定點語音的無縫播放
  13.            if(temperature ==tempwant )
  14.            {        
  15.                 TxBuf[1] =0x07;//當(dāng)溫度相同時,自動發(fā)送停止降溫或加熱指令
  16.                     tf = 1 ;
  17.            }
  18.            if(tf ==1 )
  19.            {
  20.                    TX_Mode(TxBuf);
  21.                    delay_ms(20);
  22.                    TX_Mode(TxBuf);
  23.                    delay_ms(20);
  24.                    TX_Mode(TxBuf);//采用連發(fā),為的是擔(dān)心從機工作在發(fā)送模式,而接不到指令
  25.                    delay_ms(20);
  26.                     Check_ACK(1);              // 等待發(fā)送完畢,清除TX FIFO
  27.                         tf = 0 ;                                   //自動跳出發(fā)射狀態(tài)
  28.                         delay_ms(100);
  29.                         RX_Mode();                                // 設(shè)置為接收模式
  30.        }        
  31. }
  32. //軟件調(diào)試第二個問題,當(dāng)調(diào)試NRF24L01通信時發(fā)現(xiàn)程序多次進(jìn)入進(jìn)入死循環(huán),經(jīng)查資料發(fā)現(xiàn),
  33. //NRF24L01不能同時工作在發(fā)送接收二種狀態(tài),因為它是半雙工通信。雖然可以收也可以發(fā),
  34. //但是收的時候不能發(fā),發(fā)的時候不能收,這種通信方式可以實現(xiàn)雙向的通信,但不能在
  35. //兩個方向上同時進(jìn)行,必須輪流交替地進(jìn)行。也就是說,通信信道的每一段都可以是發(fā)送端,
  36. //也可以是接收端。但同一時刻里,信息只能有一個傳輸方向。
  37. /**************************************************
  38. 函數(shù):main()

  39. 描述:
  40.     主函數(shù)
  41. /**************************************************/
  42. void main(void)
  43. {
  44.         init();//初始化液晶
  45.         pitcure(table_t);//開機圖片
  46.         delay(1000);
  47.         SID_Init();//ISD1720初始化
  48.         delay(500);
  49.         ISD_set_play(0X7E,0X00,0X9E,0X00);//播放開機音樂
  50.         ISD_set_play(0X6D,0X00,0X6D,0X00);
  51.         //軟件調(diào)試第四個問題:開機音樂不能實現(xiàn)正常播放,當(dāng)下載程序的時候,
  52.         //開機音樂正常播放,斷電后再接通,開機音樂不播放,其中有一個細(xì)節(jié)性的問題,
  53.         //就是下載程序時ISD1720有足夠的時間初始化,由于再錄音的時候使用了定點刪除,
  54.         //導(dǎo)致錄音沒有遵從1720內(nèi)部環(huán)形存儲體系,導(dǎo)致1720自檢需要很長的時間,
  55.         //改進(jìn)辦法:當(dāng)接通電源后,在1720開機音樂定點播放命令前面放入開機圖片,
  56.         //以此代替延時,使1720初始化完全后再給其發(fā)送開機音樂定點播放命令。
  57.         write_com(0x01);//清屏
  58.         init_io();                              // NRF24L01初始化IO
  59.         TX_Mode();                              // 設(shè)置為發(fā)射模式
  60.         RX_Mode();
  61.         while(1)
  62.         {
  63.             display();
  64.                 display_state();
  65.                 key();           // 按鍵掃描
  66.         if(tf ==0 )
  67.                 {
  68.                 sta = SPI_Read(STATUS);          // 讀狀態(tài)寄存器
  69.                                       //if(RX_DR)        判斷是否接受到數(shù)據(jù)
  70.                   SPI_Read_Buf(RD_RX_PLOAD, RxBuf, TX_PLOAD_WIDTH);  
  71.                                               // 從RX FIFO讀出數(shù)據(jù)
  72.                 SPI_RW_Reg(WRITE_REG + STATUS, sta);  //接收到數(shù)據(jù)后RX_DR,TX_DS,MAX_PT都置高為1,通過寫1來清楚中斷標(biāo)志
  73.                  }
  74.         }
  75. }
復(fù)制代碼

函數(shù):FS()
軟件調(diào)試第二個問題,當(dāng)調(diào)試NRF24L01時發(fā)現(xiàn)程序多次進(jìn)入進(jìn)入死循環(huán),它是半雙工通信。雖然可以收也可以發(fā),但是收的時候不能發(fā),發(fā)的時候不能收,這種通信方式可以實現(xiàn)雙向的通信,但不能在兩個方向上同時進(jìn)行,必須輪流交替地進(jìn)行。也就是說,通信信道的每一段都可以是發(fā)送端,也可以是接收端。但同一時刻里,信息只能有一個傳輸方向。在此設(shè)置

主機軟件
② 源程序
無線溫度控制主機程序,包括三大模塊,12864,NRF24L01,ISD1720,此程序在調(diào)試時出現(xiàn)三大難題,一:NRF24L01是單收單發(fā)行器件,不能同時工作在既發(fā)射有接收狀態(tài),為此必須做以下調(diào)整,主機:一直工作在接受狀態(tài),當(dāng)有按鍵被按下時進(jìn)入發(fā)射狀態(tài),同時停止接受,當(dāng)發(fā)射結(jié)束后,自動跳出,進(jìn)入接受狀態(tài);

從機:用標(biāo)志位循環(huán)工作在發(fā)射接受狀態(tài),當(dāng)發(fā)射結(jié)束后,自動定義標(biāo)志位使其進(jìn)入接受狀態(tài),然后再跳出接收狀態(tài),進(jìn)入發(fā)射狀態(tài),如此循環(huán)。二:在isd1720定點播放時要想實現(xiàn)無縫連接需要讀狀態(tài)寄存器,判斷ISD1720返回的信號是否上一個指令已經(jīng)完成,每次定點錄音后1720會自動在語音結(jié)尾加EOM標(biāo)志,所以錄音時不應(yīng)全部錄完然后再查找所需要的語音,應(yīng)單個錄音,三:應(yīng)調(diào)試發(fā)現(xiàn)ISD1720反應(yīng)比較慢所以要想實現(xiàn)開機音樂必須在主程序中加3秒延時,使語音芯片有足夠的時間初始化,等待SPI指令的到來。
經(jīng)驗及教訓(xùn):1、學(xué)習(xí)一個新型原器件時應(yīng)該反復(fù)琢磨芯片使用說明書,查看別人的學(xué)習(xí)新的體會,2、其中重要的是狀態(tài)寄存器和微機之間的通信,3、單片機高電平時輸出電流小于10個ma,低電平時大概為30~40MA,NRF24L01正常工作單片機輸出電流應(yīng)小于10個MA,否則容易燒毀模塊,一般采用2K電阻限流。待續(xù)

軟件介紹:
無線溫度控制主機程序,包括三大模塊,12864,NRF24L01,ISD1720。此程序在調(diào)試時出現(xiàn)三大難題。
1、NRF24L01是單收單發(fā)行器件,不能同時工作在既發(fā)射有接收狀態(tài)。為此必須做以下調(diào)整主機,一直工作在接受狀態(tài)。當(dāng)有按鍵被按下時進(jìn)入發(fā)射狀態(tài),同時停止接受,當(dāng)發(fā)射結(jié)束后,自動跳出,進(jìn)入接受狀態(tài)。從機用標(biāo)志位循環(huán)工作在發(fā)射接受狀態(tài),當(dāng)發(fā)射結(jié)束后,自動定義標(biāo)志位使其進(jìn)入接受狀態(tài),然后再跳出接收狀態(tài),進(jìn)入發(fā)射狀態(tài),如此循環(huán)。
2、在isd1720定點播放時要想實現(xiàn)無縫連接需要讀狀態(tài)寄存器,判斷ISD1720返回的信號是否上一個指令已經(jīng)完成,每次定點錄音后1720會自動在語音結(jié)尾加EOM標(biāo)志,所以錄音時不應(yīng)全部錄完然后再查找所需要的語音,應(yīng)單個錄音。
3、應(yīng)調(diào)試發(fā)現(xiàn)ISD1720反應(yīng)比較慢所以要想實現(xiàn)開機音樂必須在主程序中加3秒延時,使語音芯片有足夠的時間初始化,等待SPI指令的到來。


附件內(nèi)容包括:
無線溫度控制系統(tǒng)完整硬件設(shè)計原理圖和PCB源文件(包括主機和從機以及語音模塊);
C語言源代碼(有詳細(xì)的中文注釋);
材料清單;

所有資料51hei提供下載:
基于51單片機無線溫度控制系統(tǒng)完整項目設(shè)計開源.zip (1.37 MB, 下載次數(shù): 124)


評分

參與人數(shù) 2黑幣 +58 收起 理由
灼羊 + 8 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:1069354 發(fā)表于 2023-4-6 12:13 | 只看該作者
東西挺齊全,挺
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美日韩在线观看一区 | 男女搞网站 | 午夜精品一区二区三区在线视 | 精品国产乱码久久久久久丨区2区 | 日日夜夜av | 久久久久久久久久久久亚洲 | 91污在线| 99九九视频| 久久久久久久久久久福利观看 | 日韩视频中文字幕 | 性色在线 | av性色全交蜜桃成熟时 | 九九久久国产精品 | 伊人网91 | 国产一区二区 | 国产婷婷综合 | 国产精品九九九 | 欧美亚洲视频在线观看 | 日韩第一区| 久久久久久久国产精品 | 香蕉婷婷 | 日韩在线综合网 | 特级毛片爽www免费版 | 亚洲一区二区三区免费在线观看 | 高清欧美性猛交xxxx黑人猛交 | 91精品国产一区二区三区 | 午夜精品一区二区三区在线视频 | 国产一区二区三区免费视频 | 天天草夜夜骑 | 一区二区日韩 | 欧美激情久久久 | 国产亚洲欧美另类一区二区三区 | 久久免费国产 | 精品国产精品三级精品av网址 | 免费观看一级特黄欧美大片 | 天天操天天摸天天爽 | 国产美女精品 | 日韩av免费看| 欧美日韩亚洲二区 | 日日躁狠狠躁aaaaxxxx | 午夜影院黄|