找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1968|回復(fù): 2
收起左側(cè)

怎么用這個單片機模數(shù)轉(zhuǎn)換程序改成聲控燈?

[復(fù)制鏈接]
回帖獎勵 5 黑幣 回復(fù)本帖可獲得 5 黑幣獎勵! 每人限 1 次
ID:455664 發(fā)表于 2019-6-13 16:01 | 顯示全部樓層 |閱讀模式
有沒有大神可以用這個程序改成聲音控制LED燈的亮滅板子圖和代碼附上

板子圖片

板子圖片


單片機源程序如下:
  1. /************************************************
  2. *文件名稱:        main.c
  3. *說 明:          將模擬輸入通道2、3的電壓值顯示到液晶上。
  4. *           單片機:STC89C52,晶振頻率:11.0592MHz
  5. *版 本:        V1.0  
  6. *作 者:    nqy
  7. *時 間:        2017-12-29
  8. **************************************************/
  9. #include  <I2C.h>
  10. #include <1602lcd.h>
  11. #include <fpc8951.h>

  12. u8 flag300ms=0;

  13. void ValueToString(u8 *str, u8 val);//ADC轉(zhuǎn)換值轉(zhuǎn)為實際電壓值的字符串形式
  14. void Timer0Init();                //50毫秒@11.0592MHz
  15.        
  16. void main()
  17. {
  18.     u8 val;
  19.     u8 str[10];   
  20.     EA = 1;                    //開總中斷
  21.     Timer0Init();                  //配置T0定時50ms
  22.     InitLcd1602();             //初始化液晶        
  23.     LcdShowStr(0, 0, "AIN2  AIN3");  //顯示通道指示   
  24.     while (1)
  25.     {
  26.         if (flag300ms)                                       
  27.         {
  28.             flag300ms=0;                                       
  29.                                         //顯示通道2的電壓
  30.             val = GetADCValue(2);
  31.             ValueToString(str, val);
  32.             LcdShowStr(0, 1, str);
  33.             //顯示通道3的電壓
  34.             val = GetADCValue(3);
  35.             ValueToString(str, val);
  36.             LcdShowStr(6, 1, str);
  37.         }
  38.     }
  39. }

  40. /******************************************
  41. *函數(shù)名稱:ValueToString
  42. *函數(shù)功能:ADC轉(zhuǎn)換值轉(zhuǎn)為實際電壓值的字符串形式
  43. *入口參數(shù):str-字符串指針,val-AD轉(zhuǎn)換值
  44. *出口參數(shù):無
  45. *******************************************/
  46. void ValueToString(u8 *str, u8 val)
  47. {
  48.     //電壓值=轉(zhuǎn)換結(jié)果*5V/255,式中的50隱含了一位十進制小數(shù)
  49.     val = (val*50) / 255;
  50.     str[0] = (val/10) + '0';  //整數(shù)位字符
  51.     str[1] = '.';             //小數(shù)點
  52.     str[2] = (val%10) + '0';  //小數(shù)位字符
  53.     str[3] = 'V';             //電壓單位
  54.     str[4] = '\0';            //結(jié)束符
  55. }

  56. /******************************************
  57. *函數(shù)名稱:Timer0Init()
  58. *函數(shù)功能:定時器0初始化,最大化定時器設(shè)置
  59. *入口參數(shù):無
  60. *出口參數(shù):無
  61. *******************************************/
  62. void Timer0Init()                //50毫秒@11.0592MHz
  63. {
  64.         TMOD &= 0xF0;        //設(shè)置定時器模式
  65.         TMOD |= 0x01;        //設(shè)置定時器模式
  66.         TL0 = 0x00;                //設(shè)置定時初值
  67.         TH0 = 0x4C;                //設(shè)置定時初值
  68.         ET0=1;          //定時器0中斷開啟
  69.         TR0 =1;                        //定時器開啟
  70. }

  71. /******************************************
  72. *函數(shù)名稱:Timer0_ISR()
  73. *函數(shù)功能:定時器0中斷服務(wù)Timer0_ISR()
  74. *入口參數(shù):無
  75. *出口參數(shù):無
  76. *******************************************/
  77. void Timer0_ISR() interrupt 1         //中斷服務(wù)函數(shù)
  78. {       
  79.        
  80.         static u8 tmr300ms = 0;   
  81.         TL0 = 0x00;                //設(shè)置定時初值
  82.         TH0 = 0x4C;                //設(shè)置定時初值
  83.         tmr300ms++;
  84.         if (tmr300ms >= 20)  //定時300ms
  85.         {
  86.                         tmr300ms = 0;
  87.                         flag300ms = 1;
  88.         }
  89. }
復(fù)制代碼

所有資料51hei提供下載:
1.rar (47.81 KB, 下載次數(shù): 9)


回復(fù)

使用道具 舉報

ID:328014 發(fā)表于 2019-6-16 01:12 | 顯示全部樓層
話筒電路怎么接的?上圖
回復(fù)

使用道具 舉報

ID:483407 發(fā)表于 2019-6-16 08:19 | 顯示全部樓層
兄弟你是要語音控制、還是只要有聲音就行?把控制方法說出來
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表