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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于ISD1760+stm32無線搶答器的設(shè)計(jì) 附源程序原理圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:556863 發(fā)表于 2020-11-17 17:40 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

STM32無線搶答器具有很強(qiáng)的實(shí)驗(yàn)性,看似功能實(shí)現(xiàn)簡單,其實(shí)要用到很多驅(qū)動(dòng),這里不再贅述。
我上傳的搶答器視頻是幾個(gè)月以前拍攝的,由于那時(shí)實(shí)驗(yàn)需要雙機(jī)通信,所以用了兩塊STM32板子。現(xiàn)在為節(jié)省資源,特意將其改成一塊STM芯片驅(qū)動(dòng)。下面是材料清單和連線方式
材料清單:
  
序號
  
材料名稱
型號
數(shù)量
0
主控芯片
STM32F103ZET
1
1
語音模塊
ISD1760
1
2
屏幕
ILI9481(可選)
1
3
藍(lán)牙模塊
HC05
1
4
喇叭
0.5W
1
5
數(shù)碼管
1
1
6
連接線
杜邦線母對母
30根左右
7
萬能板
萬能板
1
8
電源
手機(jī)充電器
1
9
耳機(jī)頭子
3.5mm
1
10
排針
1*40
1
  
連線:
  
材料名稱
  
材料IO
對應(yīng)STM  IO
  
  
ISD1760語音
SS
PC8
SCLK
PC6
MOSI
PC7
MISO
PC9
VCC
5V/3.3V
GND
GND
  
  
HC05藍(lán)牙
RXD
PA2
TXD
PA3
KEY
PC4
LED
PA4
VCC
5V/3.3V
GND
GND
  
  
  
1位共陽數(shù)碼管
a
PF1
b
PF2
c
PF3
d
PF4
e
PF5
f
PF6
g
PF7
dp
PF8
com
5V/3.3V
                              
1位數(shù)碼管
接下來將介紹下相關(guān)材料的使用,以及相關(guān)資料。


語音模塊
  
SS
  
PC8
SCLK
PC6
MOSI
PC7
MISO
PC9
語音模塊采用的是ISD1760,我們這里用到它的功能主要是錄音。聲音合成是用的在線合成,推薦使用靈云在線語音合成(網(wǎng)址:www點(diǎn)hcicloud點(diǎn)com/experimental/getstart.html#tts)。

聲音合成過后,然后用電腦自帶錄音軟件,開啟內(nèi)錄模式,錄制合成的語音,再用格式工廠將其裝換成mp3格式。接下來就是如何把mp3文件放入ISD1760中,這里采用上位機(jī)線錄的方式,(百度所得的參考資料,包含上位機(jī)軟件,51驅(qū)動(dòng)程序等資料,網(wǎng)址:http://pan.baidu.com/s/1dDB0mOD),需要自己用耳機(jī)頭子DIY一根線錄線。
顯示屏幕
   關(guān)于顯示屏幕,我選用的是480PILI9481,其實(shí)如果沒有屏幕也沒事,因?yàn)樯晕⑿薷南轮鞒绦颍?/font>test.c),便可讓搶答器的最終結(jié)果和時(shí)間在上位機(jī)顯示。由于各個(gè)屏幕驅(qū)動(dòng)都稍有差別,這里就不多說了。值得注意的一點(diǎn)就是STM開發(fā)板不同,可能導(dǎo)致屏幕IO和其它IO沖突,我改成一個(gè)STM的時(shí)候就和數(shù)碼管IO沖突了。
                                                        藍(lán)牙模塊
       藍(lán)牙選用的是HC05,這里是淘寶賣家提供的參考資料,以及上位機(jī)軟件(網(wǎng)址:http://pan.baidu.com/s/1c0w9gQ0),注意的是,藍(lán)牙模塊最好用獨(dú)立的電源供電,電源可以選擇手機(jī)充電器,然后將充電器線的正負(fù)引出,再將藍(lán)牙模塊的地線和STM的地線連在一起。如果不提供獨(dú)立電源,整個(gè)系統(tǒng)將會受到影響,極不穩(wěn)定。

單片機(jī)源程序如下:
  1. #include <stm32f10x.h>
  2. #include "sys.h"
  3. #include "usart.h"               
  4. #include "delay.h"        
  5. #include "led.h"   
  6. #include "usart2.h"
  7. #include "hc05.h"
  8. #include "string.h"
  9. #include "timer2.h"
  10. #include "qjbl.h"
  11. #include "isd1760.h"
  12. #include "ISDadd.h"
  13. #include "lcd.h"
  14. #include "smg.h"

  15. void display0()
  16. {an1=1;}

  17. void close0()
  18. {an2=1;}

  19. void display1()
  20. {LED1=0;delay_ms(100);}

  21. void close1()
  22. {LED1=1;delay_ms(100);}

  23. int main(void)
  24. {         
  25.         u32 r=0;                                                                                   
  26.         int j=0;
  27.         int i,sm;
  28.         int k=1,k1=1;
  29.         int n=100;        
  30.         int p=100;
  31.         u8 reclen=0;
  32.         
  33.   Stm32_Clock_Init(9);        //系統(tǒng)時(shí)鐘設(shè)置
  34.         delay_init(72);                        //延時(shí)初始化
  35.         uart_init(72,9600);         //串口1初始化為9600
  36.         LED_Init();                //初始化與LED連接的硬件接口
  37.         SMG_Init();        //初始化數(shù)碼管端口
  38.         SMGBM_Init(9);
  39.         ISD_SPI_Init();
  40.         ISD_Init();        
  41.         
  42.         LCD_Init();
  43.         POINT_COLOR=BLACK;
  44.         LCD_ShowString(30,80,200,16,16,"BUZZER");
  45.         LCD_ShowString(30,100,200,16,16,"FIRST:");
  46.         LCD_ShowString(150,100,200,16,16,"ms");               
  47.         LCD_ShowString(30,120,200,16,16,"SECOND:");
  48.         LCD_ShowString(150,120,200,16,16,"ms");        
  49.         
  50.         
  51.         
  52.         for(sm=9;sm>0;sm--)
  53.         {
  54.                 SMGBM_Init(sm);
  55.                 delay_ms(1000);
  56.         }
  57.         
  58.         
  59.          while(HC05_Init())                 //初始化ATK-HC05模塊  
  60.          {        ;}
  61.         TIM3_Int_Init(999,7199);
  62.         TIM2_Int_Init(999,7199);
  63.         SMGBM_Init(0);
  64.          while(1)
  65.         {                                                
  66.                 if(USART2_RX_STA&0X8000)                        //接收到一次數(shù)據(jù)了
  67.                 {
  68.                          reclen=USART2_RX_STA&0X7FFF;        //得到數(shù)據(jù)長度
  69.                           USART2_RX_BUF[reclen]=0;                 //加入結(jié)束符
  70.                         if(reclen==7||reclen==6||reclen==4||reclen==5)                 //控制DS1檢測
  71.                         {
  72.                                 if(strcmp((const char*)USART2_RX_BUF,"L0ON")==0){display0();}        //打開LED0
  73.                                 if(strcmp((const char*)USART2_RX_BUF,"L0OFF")==0)close0();
  74.         if(strcmp((const char*)USART2_RX_BUF,"L1ONNN")==0)display1();        //打開LED1
  75.                                 if(strcmp((const char*)USART2_RX_BUF,"L1OFFFF")==0)close1();
  76.                         }
  77.                          USART2_RX_STA=0;         
  78.                 }               
  79.                 if(TIM3->SR&0x0001)
  80.                         {j+=1;TIM3->SR&=~(1<<0);}
  81.                         if(an1==1&&n!=0)
  82.                         {
  83.                                 i=TIM3->CNT;
  84.                                 k=j*100+i/10;
  85.                                 an1=2;
  86.                                 printf("a1=%dms\n",k);
  87.                                 r=k;
  88.                                         LCD_ShowNum(100,100,r,6,16);
  89.                                 n=0;
  90.                         }
  91.                         if(an2==1&&p!=0)
  92.                         {
  93.                                 i=TIM3->CNT;
  94.                                 k1=j*100+i/10;
  95.                                 an2=2;
  96.                                 p=0;
  97.                                 printf("a2=%dms\n",k1);
  98.                                 r=k1;
  99.                                 LCD_ShowNum(100,120,r,6,16);
  100.                         }
  101.                         if(an1==2&&an2==2){goto a;}
  102.                 }
  103.         a:
  104.         if(k<k1)
  105.         {
  106.                 printf("a1\n");        LCD_ShowString(30,140,200,16,16,"ONE SUCCESSFUL");
  107.                 LED0=0;
  108.                         ClrInt();                        
  109.                         ISD_STOP();        
  110.                         SetPLAY(0);
  111.                         SetPLAY(1);
  112.                         SetPLAY(2);
  113.                         SetPLAY(3);
  114.                         SetPLAY(4);
  115.                         SetPLAY(5);
  116.         }
  117.         if(k>k1)
  118.         {
  119.                 printf("a2\n");LCD_ShowString(30,140,200,16,16,"TWO SUCCESSFUL");
  120.         
  121.                         
  122. ……………………

  123. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
原理圖和APK.zip (291.67 KB, 下載次數(shù): 114)
搶答器單板子_可用.7z (105.64 KB, 下載次數(shù): 31)
搶答器清單 接線方法 模塊使用等參考資料.docx (1023.27 KB, 下載次數(shù): 33)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美日韩国产综合 | 日本三级网站在线观看 | 天天操天天射综合网 | 国内精品一区二区 | 在线免费看毛片 | 日韩一区二区在线视频 | 天堂一区二区三区 | 91免费在线 | 亚洲视频在线观看免费 | 亚洲一区二区电影在线观看 | 视频在线一区二区 | 天天艹逼网| 欧美日韩亚洲一区 | 国产精品久久一区 | 999免费观看视频 | 国产成人久久av免费高清密臂 | 999久久精品 | 亚洲精品一区二区三区蜜桃久 | 欧美一级三级在线观看 | 久久99精品久久久久久国产越南 | 亚洲黄色片免费观看 | 国内精品99| 91直接看 | 日韩精品一区二区三区中文在线 | 91精品入口蜜桃 | 国产欧美日韩综合精品一区二区 | 中文字幕视频在线观看 | 欧美性猛交一区二区三区精品 | 在线观看一区 | 国产激情视频在线免费观看 | 久久乐国产精品 | 国产精品一区二区在线播放 | 精品国产一区二区在线 | 欧美最猛黑人xxxx黑人 | 精精国产xxxx视频在线野外 | 国产一级久久久久 | 日日夜夜天天综合 | 亚洲一区二区三区在线观看免费 | 亚洲欧美日韩在线 | 国产日韩久久 | 国产一区二区在线91 |