STC单片机串口发送及LCD中断接收程序,亲测可用
单片机源程序如下:
- #include "stc15w4k32s4.h"
- #include <stdio.h>
- #include <string.h>
- #define EN_DISK_QUERY 1 //启用磁盘查询
- #include "SysTick.h" //时钟相关函数 延迟函数
- #include "W25Q256.h" //Flash模块
- #include "KeyHandle.h"
- #include "DEBUG.H"
- #include "lcd.h"
- #include "vs1003.h" //音频解码模块
- char i; //用于for循环的变量,后为正在播放的歌曲位置
- UINT8 MP3Count; //歌曲数
- UINT32 MP3LenByOne; //单个歌曲长度
- //UINT8 KeyDetectionTime = 0; //k2按键检测间隔
- UINT8 TempDisplayTime = 0; //k1温度显示间隔
- UINT8 ResultStr; //操作结果返回值
- UINT8 idata buf[64];
- UINT8 xdata BufMP3[11*50];
- UINT8 xdata SrcName[64];
- void init_time_interrupt()
- {
- AUXR |= 0x80; //定时器0工作模式1
- TMOD = 0x00;
- TH0 = (65536-(24000000/60000)) / 256; //定时器0,1设置为60ms
- TL0 = (65536-(24000000/60000)) % 256;
- TR0 = 1; //启动定时器0
- ET0 = 1; //允许定时器0中断
- EX0 = 1; //外部中断0
- IT0 = 1; //指定外部中断0下降沿触发,INT0(P3.2)
- //TCON = 0x01; //打开外部中断0,并设置为下降沿触发
- EA = 1; //使能总中断
- }
- void timer0() interrupt 1
- {
- TH0 = (65536-(24000000/60000)) / 256; //定时时间初值为60ms
- TL0 = (65536-(24000000/60000)) % 256;
- if(Count != 100)
- {
- Count++; //计数值加1
- if(Count >= CountNum) //到达预置计数值,一秒钟更新一次定时值
- {
- Count = 0; //清零
- if(!music_stop)
- {
- Second--;
- GetAM2302Data(); //获得温湿度值
- if(Second < 0) //秒减小到0时,重新从60递减同时分减一
- {
- Second = 59;
- Minute--;
- if(Minute < 0) //分减小到0时停止计时
- {
- Minute = 0;
- TimingDisplayFlag = 0;
- all_stop = 1; //定时到停止播放音乐
- Count = 100;
- }
- }
- }
-
- }
- }
- }
- void main(void)
- {
- UINT32 OffSetFile;
- UINT32 Temp_Addr;
- UINT32 Alarm_Addr;
- UINT32 My_Addr = 0; //初始化音乐地址
- UINT8 MP3PlayIndex = 0; //播放歌曲序号 切歌次数
- uint32 music_addr[8] = //flash音乐长度 8首歌
- {
- 0x00126f4f,
- 0x0010253a,
- 0x001c26db,
- 0x00129087,
- 0x003606c1,
- 0x00190806,
- 0x0016f3e1,
- 0x0023f007
- };
- uint32 music_Alarm[2] = //报警音乐首末地址
- {
- 0x00db3e9a,
- 0x00e256b7
- };
- bit Flash_SkipMusicFlag = 0; //用于表示Flash切歌按键是否按下 0 自然切歌 1 按键切歌
- char j; //用于for循环的变量
- vol = 25; //音量初始化
- CamPower_Ctrl = 0; //视频开启标志位,0 关闭 ;1 开启
- SPI_RE_flag = 0;
- mInitSTDIO();
- init_time_interrupt(); //初始化定时器中断0
- SPI_init();
- lcd_Init(); //初始化LCD
- VS_Reset(); //VS1003软复位及初始化 其中包括设置音量
- //myputchar('ResultStr');
- VS_Write_Reg(0x0b,vol,vol); //音量设置,左右声道均最大音量
- //printf( "\n*** vol: %s***\n", vol );
- while(1)
- {
- }
- }
-
-
复制代码
不完整的代码下载,求帮助:
新建文件夹.rar
(7.28 KB, 下载次数: 78)
|