有沒有大神可以用這個程序改成聲音控制LED燈的亮滅板子圖和代碼附上
板子圖片
單片機源程序如下:
- /************************************************
- *文件名稱: main.c
- *說 明: 將模擬輸入通道2、3的電壓值顯示到液晶上。
- * 單片機:STC89C52,晶振頻率:11.0592MHz
- *版 本: V1.0
- *作 者: nqy
- *時 間: 2017-12-29
- **************************************************/
- #include <I2C.h>
- #include <1602lcd.h>
- #include <fpc8951.h>
- u8 flag300ms=0;
- void ValueToString(u8 *str, u8 val);//ADC轉(zhuǎn)換值轉(zhuǎn)為實際電壓值的字符串形式
- void Timer0Init(); //50毫秒@11.0592MHz
-
- void main()
- {
- u8 val;
- u8 str[10];
- EA = 1; //開總中斷
- Timer0Init(); //配置T0定時50ms
- InitLcd1602(); //初始化液晶
- LcdShowStr(0, 0, "AIN2 AIN3"); //顯示通道指示
- while (1)
- {
- if (flag300ms)
- {
- flag300ms=0;
- //顯示通道2的電壓
- val = GetADCValue(2);
- ValueToString(str, val);
- LcdShowStr(0, 1, str);
- //顯示通道3的電壓
- val = GetADCValue(3);
- ValueToString(str, val);
- LcdShowStr(6, 1, str);
- }
- }
- }
- /******************************************
- *函數(shù)名稱:ValueToString
- *函數(shù)功能:ADC轉(zhuǎn)換值轉(zhuǎn)為實際電壓值的字符串形式
- *入口參數(shù):str-字符串指針,val-AD轉(zhuǎn)換值
- *出口參數(shù):無
- *******************************************/
- void ValueToString(u8 *str, u8 val)
- {
- //電壓值=轉(zhuǎn)換結(jié)果*5V/255,式中的50隱含了一位十進制小數(shù)
- val = (val*50) / 255;
- str[0] = (val/10) + '0'; //整數(shù)位字符
- str[1] = '.'; //小數(shù)點
- str[2] = (val%10) + '0'; //小數(shù)位字符
- str[3] = 'V'; //電壓單位
- str[4] = '\0'; //結(jié)束符
- }
- /******************************************
- *函數(shù)名稱:Timer0Init()
- *函數(shù)功能:定時器0初始化,最大化定時器設(shè)置
- *入口參數(shù):無
- *出口參數(shù):無
- *******************************************/
- void Timer0Init() //50毫秒@11.0592MHz
- {
- TMOD &= 0xF0; //設(shè)置定時器模式
- TMOD |= 0x01; //設(shè)置定時器模式
- TL0 = 0x00; //設(shè)置定時初值
- TH0 = 0x4C; //設(shè)置定時初值
- ET0=1; //定時器0中斷開啟
- TR0 =1; //定時器開啟
- }
- /******************************************
- *函數(shù)名稱:Timer0_ISR()
- *函數(shù)功能:定時器0中斷服務(wù)Timer0_ISR()
- *入口參數(shù):無
- *出口參數(shù):無
- *******************************************/
- void Timer0_ISR() interrupt 1 //中斷服務(wù)函數(shù)
- {
-
- static u8 tmr300ms = 0;
- TL0 = 0x00; //設(shè)置定時初值
- TH0 = 0x4C; //設(shè)置定時初值
- tmr300ms++;
- if (tmr300ms >= 20) //定時300ms
- {
- tmr300ms = 0;
- flag300ms = 1;
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
1.rar
(47.81 KB, 下載次數(shù): 9)
2019-6-13 16:01 上傳
點擊文件名下載附件
|