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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

C8051F350單片機紅外語音系統源程序

[復制鏈接]
跳轉到指定樓層
樓主
概述
智能紅外語音警示柱采用C8051單片機作為處理單元,集成了 MP3、WAV 的硬解碼數字語音功放,配合廣角度紅外傳感器,驅動紅綠數碼管作為爆閃提醒。能聯動信號控制系統,實現一種與交通行人信號紅綠燈配套使用的聲響提示裝置,使行人橫穿馬路時更加注意安全,本產品紅外檢測靈敏,聲音指向性明確,外型美觀大方,安裝簡單。

特點:
1、采用高增益大功率的音頻放大;
2、采用紅外數字脈沖探測,感應速度為50-700ms,警戒距離達30米,兩光束水平光軸范圍180度,上下光軸范圍20度。
3、采用不銹鋼材料通過特殊工藝處理,具有耐腐蝕、防水和防撞等功能;
4、同步紅綠燈信號顯示,強化行人過街視覺與聽覺雙重輔助提醒;
5、語音簡潔、動聽,且音量大小可調,夜間不會產生噪聲;
6、外形設計精致、時尚、美觀,提升城市交通品質與檔次。

制作出來的實物圖如下:


單片機源程序如下:
  1. #include "include.h"
  2. #include "sw_uart.h"
  3. #include "hw_uart.h"
  4. #include "timer2.h"
  5. #include "api.h"

  6. pt pt_comm;

  7. void init_gpio()
  8. {
  9.     // P0.0  -  Skipped,     Open-Drain, Digital
  10.     // P0.1  -  Skipped,     Open-Drain, Digital
  11.     // P0.2  -  Skipped,     Open-Drain, Digital
  12.     // P0.3  -  Skipped,     Open-Drain, Digital
  13.     // P0.4  -  TX0 (UART0), Push-Pull,  Digital
  14.     // P0.5  -  RX0 (UART0), Open-Drain, Digital
  15.     // P0.6  -  Skipped,     Open-Drain, Digital
  16.     // P0.7  -  Skipped,     Open-Drain, Digital

  17.     // P1.0  -  Skipped,     Open-Drain, Digital
  18.     // P1.1  -  CEX0 (PCA),  Open-Drain, Digital
  19.     // P1.2  -  Unassigned,  Open-Drain, Digital
  20.     // P1.3  -  Unassigned,  Open-Drain, Digital
  21.     // P1.4  -  Unassigned,  Open-Drain, Digital
  22.     // P1.5  -  Unassigned,  Open-Drain, Digital
  23.     // P1.6  -  Unassigned,  Push-Pull,  Digital
  24.     // P1.7  -  Unassigned,  Push-Pull,  Digital
  25.     // P2.0  -  Unassigned,  Open-Drain, Digital
  26.     // P2.1  -  Unassigned,  Open-Drain, Digital
  27.     // P2.2  -  Unassigned,  Open-Drain, Digital
  28.     // P2.3  -  Unassigned,  Open-Drain, Digital

  29.     P0MDOUT   = 0x10;
  30.     P1MDOUT   = 0xC0;
  31.     P0SKIP    = 0xCF;
  32.     P1SKIP    = 0x01;
  33.     XBR0      = 0x01;
  34.     XBR1      = 0x41;
  35. }

  36. void init_sysclock()
  37. {
  38.     OSCICN    = 0x83;
  39. }

  40. void init_wtd(void)
  41. {
  42.         //        PCA0MD    &= ~0x40;        // 向WDTE寫‘0’,禁止WDT   
  43.         //        PCA0MD    = 0x00;        // PCA時鐘源選擇系統時鐘的12分頻   
  44.         //        PCA0CPL2  = 0xFF;        // 裝入WDT更新偏移值為64.2ms   
  45.         //        PCA0MD    |= 0x40;        // 向WDTE寫‘1’,使能WDT

  46.         // Calculate Watchdog Timer Timeout
  47.         // Offset calculated in PCA clocks
  48.         // Offset = ( 256 x PCA0CPL4 ) + 256 - PCA0L
  49.         //        = ( 256 x 255(0xFF)) + 256 - 0
  50.         // Time   = Offset * (12/SYSCLK)   
  51.         //        = 255 ms ( PCA uses SYSCLK/12 as its clock source)               
  52.         PCA0MD  &= 0xBF;                          // WDTE = 0 (clear watchdog timer enable)
  53. //        PCA0L    = 0x00;                       // Set lower byte of PCA counter to 0  
  54. //        PCA0H    = 0x00;                       // Set higher byte of PCA counter to 0
  55.         PCA0CPL4  = 0xFF;               // Write offset for the WDT
  56.         PCA0MD  |= 0x40;                       // Enable the WDT
  57. }

  58. void feed_wtd(void)
  59. {
  60.         //CCF2  = 0x00;                                // Write a 'dummy' value to the PCA0CPH4
  61.                                                                    // register to reset the watchdog timer
  62.                                                                    // timeout. If a delay longer than the
  63.                                                                    // watchdog timer delay occurs between
  64.                                                                    // successive writes to this register,
  65.                                                                 // the device will be reset by the watch
  66.                                                                 // dog timer.
  67.         PCA0CPH4 =0x00;  
  68. }

  69. unsigned char get_lamp_status(void)
  70. {
  71.         if(PIN_RED_LAMP==0) return 1;
  72.         else return 0;
  73. }


  74. u8  xdata gRxdBuffer[MAX_HDLC_BUF+2]={0};
  75. u8  xdata gTxdBuffer[MAX_HDLC_BUF+2]={0};

  76. u8  xdata cmd_buffer[MAX_HDLC_BUF]={0};
  77. u8  xdata ack_buffer[MAX_HDLC_BUF]={0};

  78. u8  xdata com_status=RE_SYNC;
  79. u16 xdata framesize=0;


  80. //查詢紅燈狀態:                7E FF A0 C0 9F 7E
  81. //播放第1首01音量:        7E FF A0 C1 01 01 9E 7E
  82. //播放第1首30音量:        7E FF A0 C1 1E 01 81 7E
  83. //播放第2首30音量:        7E FF A0 C1 1E 02 82 7E
  84. //播放第3首30音量:        7E FF A0 C1 1E 03 83 7E

  85. void delay(unsigned short dly)
  86. {
  87.         timer timer_delay;
  88.         timer_set(&timer_delay,dly);
  89.         for(;;)
  90.         {
  91.                 feed_wtd();
  92.                 if(timer_expired(&timer_delay))
  93.                 {
  94.                         break;
  95.                 }
  96.         }
  97. }

  98. unsigned short thread_comm(pt *pt)
  99. {
  100.         u8 ch=0;
  101.         u8 vol=0;
  102.   u8 index=0;
  103.   static u8 red_lamp_status=0;
  104.   static u8 radar_status=0;
  105.         static u8 run=0;
  106.         run=PIN_COM=0;
  107.         PT_BEGIN(pt);
  108.         for(;;)
  109.         {
  110.         PT_YIELD(pt);
  111.         if(PIN_RED_LAMP!=red_lamp_status || PIN_RADAR!=radar_status)
  112.         {
  113.             radar_status = PIN_RADAR;
  114.             red_lamp_status = PIN_RED_LAMP;
  115.             
  116.             //設置音量
  117.             cmd_buffer[0]=0x7E;
  118.             cmd_buffer[1]=0x03;
  119.             cmd_buffer[2]=0x31;
  120.             cmd_buffer[3]=30;                                        //音量
  121.             cmd_buffer[4]=0xEF;
  122.             sw_uart_send_bytes(cmd_buffer,5);
  123.                                           
  124.             if(red_lamp_status==0)             //檢查 led signal
  125.             {
  126.                 if(radar_status!=0)            //檢查radar
  127.                 {                                                                        
  128.                                                                         
  129.                                                                         index=0x03;    //闖紅燈
  130.                                                                         
  131.                 }
  132.                 else  
  133.                 {   
  134.                                                                          delay(500); //延時500毫秒
  135.                                                                          index=0x01;    //紅燈
  136.                                                                    delay(4000);
  137.                 }               
  138.             }
  139.             else
  140.             {
  141.                                                           delay(2500);
  142.                                                           index = 0x02 ;        //綠燈  
  143.                                                          
  144.             }
  145.             //組織語音播放數據
  146.             cmd_buffer[0]=0x7E;
  147.             cmd_buffer[1]=0x04;
  148.             cmd_buffer[2]=0x41;
  149.             cmd_buffer[3]=0x00;
  150.             cmd_buffer[4]=index;                //編號
  151.             cmd_buffer[5]=0xEF;
  152.             sw_uart_send_bytes(cmd_buffer,6);  
  153.         }
  154.         }
  155.         PT_END(pt);
  156. }

  157. void main(void)
  158. {
  159.         init_sysclock();
  160.         init_gpio();
  161.         init_timer0();
  162.         init_hw_uart();
  163.         init_sw_uart();
  164.         init_wtd();
  165.         
  166.         PT_INIT(&pt_comm);
  167.         EA=1;
  168.         for(;;)
  169.         {
  170.                 thread_comm(&pt_comm);
  171.                 feed_wtd();
  172.         }
  173. }
復制代碼

所有程序51hei提供下載:
紅外語音系統程序源碼.zip (106.79 KB, 下載次數: 30)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:1111745 發表于 2024-2-28 16:25 | 只看該作者
您好,我想問一下用C8051F350制作高精度熱電偶數采集模塊該如何下手?請大佬給給思路
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 人成久久 | 久久99一区二区 | 亚洲天堂中文字幕 | 久久国产一区二区三区 | 亚洲天天干 | 久久成人免费观看 | 精品国产乱码久久久久久老虎 | 国产精品成人一区二区三区吃奶 | 天堂网avav| 国产在线不卡视频 | 中文字幕一区二区三 | 99久视频| a国产一区二区免费入口 | 国产成人一区二区 | 欧美中文字幕 | 欧美精品一区二区三区四区五区 | 国产在线观看 | 欧美精品在线观看 | 久久久www成人免费精品 | 亚洲天堂色 | 做a视频在线观看 | 国产ts人妖另类 | 日本不卡免费新一二三区 | 日韩第一区 | 亚洲欧美日韩精品 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 亚洲精品字幕 | 成人在线观看中文字幕 | 国产精品观看 | 99热这里有精品 | 欧美成人在线免费 | 欧美日韩亚洲国产综合 | 精品国产一区三区 | 精品一区二区三区四区五区 | 欧美一级淫片免费视频黄 | 欧美日韩在线一区二区 | 亚洲电影一级片 | 伊人网伊人 | 久久免费精品视频 | 精品粉嫩aⅴ一区二区三区四区 | 亚洲综合小视频 |