標題: C8051F350單片機紅外語音系統源程序 [打印本頁]
作者: jimmy910220 時間: 2021-2-2 17:23
標題: C8051F350單片機紅外語音系統源程序
概述:
智能紅外語音警示柱采用C8051單片機作為處理單元,集成了 MP3、WAV 的硬解碼數字語音功放,配合廣角度紅外傳感器,驅動紅綠數碼管作為爆閃提醒。能聯動信號控制系統,實現一種與交通行人信號紅綠燈配套使用的聲響提示裝置,使行人橫穿馬路時更加注意安全,本產品紅外檢測靈敏,聲音指向性明確,外型美觀大方,安裝簡單。
特點:
1、采用高增益大功率的音頻放大;
2、采用紅外數字脈沖探測,感應速度為50-700ms,警戒距離達30米,兩光束水平光軸范圍180度,上下光軸范圍20度。
3、采用不銹鋼材料通過特殊工藝處理,具有耐腐蝕、防水和防撞等功能;
4、同步紅綠燈信號顯示,強化行人過街視覺與聽覺雙重輔助提醒;
5、語音簡潔、動聽,且音量大小可調,夜間不會產生噪聲;
6、外形設計精致、時尚、美觀,提升城市交通品質與檔次。
制作出來的實物圖如下:
警示柱.png (113.11 KB, 下載次數: 70)
下載附件
紅外語音警示柱
2021-2-2 17:23 上傳
單片機源程序如下:
- #include "include.h"
- #include "sw_uart.h"
- #include "hw_uart.h"
- #include "timer2.h"
- #include "api.h"
- pt pt_comm;
- void init_gpio()
- {
- // P0.0 - Skipped, Open-Drain, Digital
- // P0.1 - Skipped, Open-Drain, Digital
- // P0.2 - Skipped, Open-Drain, Digital
- // P0.3 - Skipped, Open-Drain, Digital
- // P0.4 - TX0 (UART0), Push-Pull, Digital
- // P0.5 - RX0 (UART0), Open-Drain, Digital
- // P0.6 - Skipped, Open-Drain, Digital
- // P0.7 - Skipped, Open-Drain, Digital
- // P1.0 - Skipped, Open-Drain, Digital
- // P1.1 - CEX0 (PCA), Open-Drain, Digital
- // P1.2 - Unassigned, Open-Drain, Digital
- // P1.3 - Unassigned, Open-Drain, Digital
- // P1.4 - Unassigned, Open-Drain, Digital
- // P1.5 - Unassigned, Open-Drain, Digital
- // P1.6 - Unassigned, Push-Pull, Digital
- // P1.7 - Unassigned, Push-Pull, Digital
- // P2.0 - Unassigned, Open-Drain, Digital
- // P2.1 - Unassigned, Open-Drain, Digital
- // P2.2 - Unassigned, Open-Drain, Digital
- // P2.3 - Unassigned, Open-Drain, Digital
- P0MDOUT = 0x10;
- P1MDOUT = 0xC0;
- P0SKIP = 0xCF;
- P1SKIP = 0x01;
- XBR0 = 0x01;
- XBR1 = 0x41;
- }
- void init_sysclock()
- {
- OSCICN = 0x83;
- }
- void init_wtd(void)
- {
- // PCA0MD &= ~0x40; // 向WDTE寫‘0’,禁止WDT
- // PCA0MD = 0x00; // PCA時鐘源選擇系統時鐘的12分頻
- // PCA0CPL2 = 0xFF; // 裝入WDT更新偏移值為64.2ms
- // PCA0MD |= 0x40; // 向WDTE寫‘1’,使能WDT
- // Calculate Watchdog Timer Timeout
- // Offset calculated in PCA clocks
- // Offset = ( 256 x PCA0CPL4 ) + 256 - PCA0L
- // = ( 256 x 255(0xFF)) + 256 - 0
- // Time = Offset * (12/SYSCLK)
- // = 255 ms ( PCA uses SYSCLK/12 as its clock source)
- PCA0MD &= 0xBF; // WDTE = 0 (clear watchdog timer enable)
- // PCA0L = 0x00; // Set lower byte of PCA counter to 0
- // PCA0H = 0x00; // Set higher byte of PCA counter to 0
- PCA0CPL4 = 0xFF; // Write offset for the WDT
- PCA0MD |= 0x40; // Enable the WDT
- }
- void feed_wtd(void)
- {
- //CCF2 = 0x00; // Write a 'dummy' value to the PCA0CPH4
- // register to reset the watchdog timer
- // timeout. If a delay longer than the
- // watchdog timer delay occurs between
- // successive writes to this register,
- // the device will be reset by the watch
- // dog timer.
- PCA0CPH4 =0x00;
- }
- unsigned char get_lamp_status(void)
- {
- if(PIN_RED_LAMP==0) return 1;
- else return 0;
- }
- u8 xdata gRxdBuffer[MAX_HDLC_BUF+2]={0};
- u8 xdata gTxdBuffer[MAX_HDLC_BUF+2]={0};
- u8 xdata cmd_buffer[MAX_HDLC_BUF]={0};
- u8 xdata ack_buffer[MAX_HDLC_BUF]={0};
- u8 xdata com_status=RE_SYNC;
- u16 xdata framesize=0;
- //查詢紅燈狀態: 7E FF A0 C0 9F 7E
- //播放第1首01音量: 7E FF A0 C1 01 01 9E 7E
- //播放第1首30音量: 7E FF A0 C1 1E 01 81 7E
- //播放第2首30音量: 7E FF A0 C1 1E 02 82 7E
- //播放第3首30音量: 7E FF A0 C1 1E 03 83 7E
- void delay(unsigned short dly)
- {
- timer timer_delay;
- timer_set(&timer_delay,dly);
- for(;;)
- {
- feed_wtd();
- if(timer_expired(&timer_delay))
- {
- break;
- }
- }
- }
- unsigned short thread_comm(pt *pt)
- {
- u8 ch=0;
- u8 vol=0;
- u8 index=0;
- static u8 red_lamp_status=0;
- static u8 radar_status=0;
- static u8 run=0;
- run=PIN_COM=0;
- PT_BEGIN(pt);
- for(;;)
- {
- PT_YIELD(pt);
- if(PIN_RED_LAMP!=red_lamp_status || PIN_RADAR!=radar_status)
- {
- radar_status = PIN_RADAR;
- red_lamp_status = PIN_RED_LAMP;
-
- //設置音量
- cmd_buffer[0]=0x7E;
- cmd_buffer[1]=0x03;
- cmd_buffer[2]=0x31;
- cmd_buffer[3]=30; //音量
- cmd_buffer[4]=0xEF;
- sw_uart_send_bytes(cmd_buffer,5);
-
- if(red_lamp_status==0) //檢查 led signal
- {
- if(radar_status!=0) //檢查radar
- {
-
- index=0x03; //闖紅燈
-
- }
- else
- {
- delay(500); //延時500毫秒
- index=0x01; //紅燈
- delay(4000);
- }
- }
- else
- {
- delay(2500);
- index = 0x02 ; //綠燈
-
- }
- //組織語音播放數據
- cmd_buffer[0]=0x7E;
- cmd_buffer[1]=0x04;
- cmd_buffer[2]=0x41;
- cmd_buffer[3]=0x00;
- cmd_buffer[4]=index; //編號
- cmd_buffer[5]=0xEF;
- sw_uart_send_bytes(cmd_buffer,6);
- }
- }
- PT_END(pt);
- }
- void main(void)
- {
- init_sysclock();
- init_gpio();
- init_timer0();
- init_hw_uart();
- init_sw_uart();
- init_wtd();
-
- PT_INIT(&pt_comm);
- EA=1;
- for(;;)
- {
- thread_comm(&pt_comm);
- feed_wtd();
- }
- }
復制代碼
所有程序51hei提供下載:
紅外語音系統程序源碼.zip
(106.79 KB, 下載次數: 30)
2021-2-2 17:22 上傳
點擊文件名下載附件
紅外
下載積分: 黑幣 -5
作者: Yvt 時間: 2024-2-28 16:25
您好,我想問一下用C8051F350制作高精度熱電偶數采集模塊該如何下手?請大佬給給思路
歡迎光臨 (http://www.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
亚洲一区二区久久
|
天天躁日日躁xxxxaaaa
|
日韩精品成人网
|
欧美精品免费观看二区
|
av片在线观看网站
|
日韩波多野结衣
|
成人免费看黄网站在线观看
|
免费三级av
|
成人在线中文字幕
|
午夜一级做a爰片久久毛片
精品综合
|
国产成人麻豆免费观看
|
日日人人|
亚洲一区二区
|
欧美性一区二区三区
|
亚洲国产精品一区二区第一页
|
精品久久久999
|
蜜桃av鲁一鲁一鲁一鲁
|
黄色成人免费在线观看
|
免费观看一级毛片
|
羞羞视频网站在线观看
|
亚洲精品视频免费观看
|
久久精品亚洲精品国产欧美
|
91久久综合
|
观看av|
亚洲国产成人精品久久
|
亚洲综合免费
|
日韩区
|
国产视频1区
|
欧洲视频一区二区
|
999久久久久久久久6666
|
色精品视频
|
国产一级精品毛片
|
好婷婷网
|
国产一级免费视频
|
欧美激情久久久
|
国内精品视频在线观看
|
碰碰视频|
国产精品久久欧美久久一区
|
午夜免费观看网站
|
亚洲a视频
|
在线观看视频91
|