找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1499|回复: 2
收起左侧

怎么用这个单片机模数转换程序改成声控灯?

[复制链接]
回帖奖励 5 黑币 回复本帖可获得 5 黑币奖励! 每人限 1 次
ID:455664 发表于 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转换值转为实际电压值的字符串形式
  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. *函数名称:ValueToString
  42. *函数功能:ADC转换值转为实际电压值的字符串形式
  43. *入口参数:str-字符串指针,val-AD转换值
  44. *出口参数:无
  45. *******************************************/
  46. void ValueToString(u8 *str, u8 val)
  47. {
  48.     //电压值=转换结果*5V/255,式中的50隐含了一位十进制小数
  49.     val = (val*50) / 255;
  50.     str[0] = (val/10) + '0';  //整数位字符
  51.     str[1] = '.';             //小数点
  52.     str[2] = (val%10) + '0';  //小数位字符
  53.     str[3] = 'V';             //电压单位
  54.     str[4] = '\0';            //结束符
  55. }

  56. /******************************************
  57. *函数名称:Timer0Init()
  58. *函数功能:定时器0初始化,最大化定时器设置
  59. *入口参数:无
  60. *出口参数:无
  61. *******************************************/
  62. void Timer0Init()                //50毫秒@11.0592MHz
  63. {
  64.         TMOD &= 0xF0;        //设置定时器模式
  65.         TMOD |= 0x01;        //设置定时器模式
  66.         TL0 = 0x00;                //设置定时初值
  67.         TH0 = 0x4C;                //设置定时初值
  68.         ET0=1;          //定时器0中断开启
  69.         TR0 =1;                        //定时器开启
  70. }

  71. /******************************************
  72. *函数名称:Timer0_ISR()
  73. *函数功能:定时器0中断服务Timer0_ISR()
  74. *入口参数:无
  75. *出口参数:无
  76. *******************************************/
  77. void Timer0_ISR() interrupt 1         //中断服务函数
  78. {       
  79.        
  80.         static u8 tmr300ms = 0;   
  81.         TL0 = 0x00;                //设置定时初值
  82.         TH0 = 0x4C;                //设置定时初值
  83.         tmr300ms++;
  84.         if (tmr300ms >= 20)  //定时300ms
  85.         {
  86.                         tmr300ms = 0;
  87.                         flag300ms = 1;
  88.         }
  89. }
复制代码

所有资料51hei提供下载:
1.rar (47.81 KB, 下载次数: 9)
回复

使用道具 举报

ID:328014 发表于 2019-6-16 01:12 | 显示全部楼层
话筒电路怎么接的?上图
回复

使用道具 举报

ID:483407 发表于 2019-6-16 08:19 | 显示全部楼层
兄弟你是要语音控制、还是只要有声音就行?把控制方法说出来
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表