论坛风格切换切换到宽版
发帖 回复
返回列表  提醒:不能用迅雷等P2P下载,否则下载失败标(二级)的板块,需二级才能下载,没二级不要购买,下载不了
  • 1055阅读
  • 3回复

[技术文章]基于51单片机的语音合成模块 [复制链接]

上一主题 下一主题
离线danruhai
 

性别:
人妖
发帖
45
金币
112
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看楼主 倒序阅读 使用道具 0楼 发表于: 2020-08-26
#include "main.h" hS8M|_  
npltsK):  
mMwV5\(  
bit bSysHalfSec; 4"kc(J`c  
u8 TimeWaitCnt = 0; 6Q7=6  
JI]Lz1i  
v)_c*+6u  
u8 code PrevFile[] = {0xAA, 0x05,0x00, 0xAF};/*此数组指令可以直接由上位机生成,复制过来即可  */ eLPtdP5k  
u8 code NextFile[] = {0xAA, 0x06, 0x00, 0xB0}; O=7S=Rm4&  
u8 code Path[] = {0xAA, 0x08, 0x10, 0x02, 0x2F, 0xB9, 0xE3, 0xB8, 0xE6, 0x2A, 0x2F, 0xD0, 0xA1, 0xC3, 0xD7, 0x2A, 0x4D, 0x50, 0x33, 0x8B, }; // flash   /广告*/小米*MP3 \ YF@r7  
dY&v(~&;]  
,.p 36ZLP  
5X)QW5A  
l+F29_o#  
}.)R#hG?  
/B?wn=][  
/*************************************************************************************** G{fPQ=  
&,%n  
Nm z5:Rq  
程序为MP3串口模块测试程序C51版本,测试芯片采用 STC12C5A32S2,外部晶振,11.0592MHZ t;VMtIW+E  
串口设置:9600 )jgz(\KZ  
ME]4tu  
; X+tCkzF  
DCiU?u~  
tq h)yr;  
]rj~3du\  
0vfMJzk  
**************************************************************************************/ vc|tp_M67  
XLpn3sX$  
}EwE#sZ#  
u8 UartData = 0xff; 1q!k#Cliu  
/***************************************************************************** #M!$CGi (  
函 数 名  : Timer0Init ffL]_E  
功能描述  : 定时器初使化 定时2毫秒@11.0592MHz A"M;kzAfHM  
输入参数  : void U.SC,;N^  
输出参数  : 无 rBmW%Gv  
返 回 值  : k8}fKVU;  
调用函数  : 4z5qXI/<m4  
被调函数  : >oJab R  
ZrEou}z(*  
jc_k\  
修改历史      : J[?oV;O  
  1.日    期   : 2013年3月26日 33lh~+C  
    作    者   : Blueice bS8$[7OhX  
    修改内容   : 新生成函数 )?SFIQ=  
qbq2Bi'a  
L@[}sMdq(  
*****************************************************************************/ N7"cMAs\G  
void Timer0Init ( void ) 5 ,MM`:{{  
{ =p[Sd*d  
    AUXR |= 0x80;        /*定时器时钟1T模式  */ S;Sy.Lp  
    TMOD &= 0xF0;        /*设置定时器模式  */ 4K:Aqqhds  
    TMOD |= 0x01;        /*设置定时器模式  */ 2(GY k  
    TL0 = 0x9A;            /*设置定时初值  */ n-M6~   
    TH0 = 0xA9;            /*设置定时初值  */ &&<l}E  
    TF0 = 0;            /*清除TF0标志  */ SHPDbBS  
    TR0 = 1;            /*定时器0开始计时  */ ',[AKXJ  
    ET0 = 1; 5Xxdm-0  
} ?E!M%c@,  
/***************************************************************************** >wqWIw.w>  
函 数 名  : SysInit uaP5(hUI  
功能描述  : 系统初使化 -:_3N2U=+  
输入参数  : void nnRb   
输出参数  : 无 [^a7l$fmi  
返 回 值  : }KUK|p5  
调用函数  : j-J/yhWO&  
被调函数  : )UU`uzU;u  
\bF<f02P  
#s\yO~F-  
修改历史      : qm_r~j  
  1.日    期   : 2013年3月24日 ux^rF  
    作    者   : Blueice =jm\8sl~~  
    修改内容   : 新生成函数 Y]6d Yq{k  
w8q 2f-K-  
w$&;s<0  
*****************************************************************************/ e`LvHU_0  
void SysInit ( void ) #o~C0`8!B=  
{ S3HyB b  
    Timer0Init(); +}udIi3:l  
    UartInit(); a6h+?Q7uF  
    EA = 1;/*开总中断  */ J0&-UnJ  
} 9Ut eD@*  
/***************************************************************************** %=K[C  
函 数 名  : Delay1us J=kf KQV  
功能描述  : 1微秒延时函数 Y#9bM $x7  
输入参数  : int T GK6~~ga=  
输出参数  : 无 M7Xn=jc  
返 回 值  : _ j'm2BA O  
调用函数  : ib> ~3s;  
被调函数  : { **W7\h  
PL31(!`@d  
s4f{ziLp  
修改历史      : '"Uhw$#t  
  1.日    期   : 2016年2月19日 <M5fk?n,|  
    作    者   : wskblueice ,qB@agjvo<  
    修改内容   : 新生成函数 By[M|4a  
4,YL15.  
hDg"?{  
*****************************************************************************/ (ruMOKW  
void Delay1us ( int T ) C %j%>X`  
{ XLYGhM  
    T = T - 70; k=p[Mlic/  
    do V#Y"0l+~  
    { * _usVg  
        ; gE*7[*2?t  
    } u^'X>n)oL#  
    while ( T-- ); h{\S'8  
} aS>cXJ;=  
#define  sda   P01 /*一线串口发送引脚  */ %<O~eXY  
/***************************************************************************** f*xv#G  
函 数 名  : SendData Ue`Y>T7+!  
功能描述  : 一线串口发送函数 BVus3Y5IJQ  
输入参数  : u16 N M= 3w  
输出参数  : 无 Ed-3-vJej6  
返 回 值  : ^)`e}}  
调用函数  : kQ2WdpZ/  
被调函数  : {5ehm  
\?Xoa"^  
qv:DpK  
修改历史      : uB6Mj dp6  
  1.日    期   : 2014年8月17日 ;jPiD`Kyv  
    作    者   : wskblueice psiuoYf  
    修改内容   : 新生成函数 ]70ZerQ~L  
oxnI/Z  
<wd;W;B  
*****************************************************************************/ Ut/%+r"s  
void SendData ( u8 addr ) Be\@n xV[  
{ m' |wlI[lq  
    u8 i; `q  | )_  
fceO|mSz_  
MlS5/9m@^  
    EA = 0;/*发送时关掉中断,防止中断影响时序  */ 3-Xd9ou  
"So "oT1  
xj AU Csq  
    sda = 1;/*开始拉搞  */ /74h+.amg  
    Delay1us ( 1000 ); X -=M>H^  
    sda = 0;/*开始引导码*/ Gv#bd05X  
    Delay1us ( 2200 );/*此处延时最少要大于2ms,此参数延时为310ms  */ nC?Lz1re  
$|[N3  
B o%Sl  
    for ( i = 0; i < 8; i++ ) /*总共8位数据  */ b53s@7/mq  
    { w~=xO_%  
        sda = 1; c7[Ba\Cr4h  
        if ( addr & 0x01 ) /*3:1表示数据位1,每个位用两个脉冲表示  */ 3'0Jn6(  
        { Fs=)*6}&  
            Delay1us ( 500 ); \W=Z`w3  
            sda = 0; x]R0zol  
            Delay1us ( 210 ); %z.d;[Hs  
        } P)Oe?z;G?  
        else              /*1:3表示数据位0 ,每个位用两个脉冲表示  */ +n%8*F&  
        { +o0yx U 7t  
            Delay1us ( 210 ); p"H /N_b4  
            sda = 0; cBOt=vg,5  
            Delay1us ( 500 ); ~*^o[~x]\  
        } >@-. rkd(  
        addr >>= 1; ,iZKw8]f  
    } :hWG:`  
    sda = 1; xh25 *y  
    EA = 1; {%&04yq+  
} zYWVz3l  
/***************************************************************************** bTAY5\wB  
函 数 名  : UartSendData Yn?Xo_Y  
功能描述  : 两线串口发送指令 ]ab q$Y'  
输入参数  : u8 *Buff *Utx0Me  
输出参数  : 无 Tfv @oPu  
返 回 值  : J*6B~)Sp@  
调用函数  : _~P &8  
被调函数  : m*i,|{UZ  
E7w^A  
RjrQDh|((  
修改历史      : $GhL-sqm  
  1.日    期   : 2016年5月1日 @$%.iQ7A;  
    作    者   : wskblueice ;'[?H0Jw'  
    修改内容   : 新生成函数 %@ q2  
.vi0DuD6  
fwUF5Y  
*****************************************************************************/ ^R(=4%8%"  
void UartSendData ( u8 *Buff, u8 Len ) yB{1&S5 C  
{ _c:th{*  
    u8 i; ;/IX w>O(/  
    for ( i = 0 ; i < Len ; i++ ) m?8o\|i,  
    {  R; &k/v  
        UartPutByte ( Buff ); IEkbVIA(  
    } f^IB:e#j;  
} CkV -L4Jq  
/***************************************************************************** `@u9 fx.  
函 数 名  : main 4V mUTMY  
功能描述  : 系统主循环 W,!7_nl"u  
输入参数  : void #P!M"_z  
输出参数  : 无 '9&@?P;  
返 回 值  : 28- z  
调用函数  : D})12qB;u9  
被调函数  : zQ u9LN  
Z;0<k;#T(p  
sP=^5K`g  
修改历史      : V<PH5'^$j  
  1.日    期   : 2013年2月21日 )?LZg<<   
    作    者   : Blueice W58%Zz4a  
    修改内容   : 新生成函数 WK#%G  
OekE]`~w  
/pLf?m9  
*****************************************************************************/ L(1} PZ  
void main ( void ) nCA~=[&H  
{ AOV{@ b(  
:vaVghN\  
%`/F> `  
    SysInit(); aQ&K a  
    P0M0 |= BIT ( 0 ) | BIT ( 1 ); L[`8 :}M  
    UartSendData ( Path, 20 ); ^L.'At  
    while ( 1 ) $ma@z0%8}  
    { ZcTjOy?  
        if ( TimeWaitCnt == 4 ) /*每隔两秒会自动发下一曲指令  */ 'coY`B; 8  
        { pXA |'U5]  
            TimeWaitCnt = 0; giesof  
            SendData ( 0x15 );//next file C!6D /S  
            //UartSendData ( NextFile,4 ); 3&+nV1  
        } u6MU @?  
    } w:=:D=xH2  
} ETdN<}m  
/***************************************************************************** r{Mn{1:O  
函 数 名  : tm0_isr 'cc{sjG  
功能描述  : 定时中断 Q `-Xx  
输入参数  : 无 { qCFd  
输出参数  : 无 HoeW6UV  
返 回 值  : qc' ;<  
调用函数  : >8$Lqj^i  
被调函数  : BV}sN{  
Ya!PV&"Z  
?_T[]I'  
修改历史      : m)r,  
  1.日    期   : 2013年3月26日 Q DKY7"H  
    作    者   : Blueice s={IKU&m[  
    修改内容   : 新生成函数 wZKmU  
@`iz0DPG?Y  
 um2}XI  
*****************************************************************************/ Ip *8R]W  
void Timer0_isr() interrupt 1 ]xbMMax  
{ 4VC8#x1  
    static u8 TimeCnt; &78lep  
=&DuQvN,  
5%@~"YCo  
    TL0 = 0x9A;        /*设置定时初值  */ ,VzbKx,  
    TH0 = 0xA9;        /*设置定时初值  */ j^h:*rw  
ni<\ AF]`  
nu2m5RYx  
    TimeCnt++; 6X!jNh$oF  
    if ( ( TimeCnt % 5 ) == 0 ) 2~V"[26t  
    { K=pG,[ChA  
z2#k /3%o=  
:0bjPQj  
7)FYAk$@  
AWA J*6Z  
    } ZQ-6n1O  
    if ( ( TimeCnt % 250 ) == 0 ) 1Cw$^jd  
    { /neY2D6  
        TimeCnt = 0; 19%zcYTe  
        bSysHalfSec = !bSysHalfSec; ~w.y9)",  
        P00 = !P00; Xc~BHEp  
        TimeWaitCnt++; !:}m-iqQ1  
    } g(G$*#}o8A  
E*s _Y  
(aq-aum-I  
} KJs`[,;<  
?>gr9w\  
hb9HVj  
  • 2~ vvE  
    程序截图 Mh{;1$j#  
wbg ?IvY[  
  • su\`E&0V+  
    电路 [lu+"V,<LJ  


评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

一般

差劲

性别:
人妖
发帖
365
金币
0
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 1楼 发表于: 2020-08-26
      


离线墙头草

性别:
人妖
发帖
1213
金币
2022
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 2楼 发表于: 2020-08-26


离线清心如水

性别:
帅哥
发帖
6562
金币
8926
提示:会员销售的附件,下载积分 = 版块积分 + 销售积分       只看该作者 3楼 发表于: 2020-08-28
    


快速回复
限150 字节
 
上一个 下一个