找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3047|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)消防車(chē)、救護(hù)車(chē)聲音模擬源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:552758 發(fā)表于 2019-6-1 23:09 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include<reg52.h> //包含特殊功能寄存器的定義
sbit SPK=P1^0; //定義喇叭端口
sbit K1=P1^4; //報(bào)警聲按鍵
sbit K2=P1^5; //消防聲按鍵
sbit K3=P1^6; //救護(hù)聲按鍵
sbit K4=P1^7; //停止按鍵
unsigned char frq; //頻率變量
unsigned char sel=0; //功能變量
void DelayUs(unsigned char t) //us延時(shí)函數(shù)
{
    while(--t); //大致延時(shí)tus
}
void DelayMs(unsigned char t) //ms延時(shí)函數(shù)
{
    while(t--) //大致延時(shí)tms
    {
        DelayUs(245);
        DelayUs(245);
    }
}

void Keyscan() //鍵盤(pán)掃描
{
    if(K1==0)sel=1; //報(bào)警聲
    if(K2==0)sel=2; //消防聲
    if(K3==0)sel=3; //救護(hù)聲
    if(K4==0)sel=0; //停止
}


void Init_Timer0(void)
{
    TMOD|=0x01; //方式1,使用"|"可使用多個(gè)定時(shí)器時(shí)互不影響
    EA=1; //開(kāi)總中斷
    ET0=1; //開(kāi)定時(shí)器中斷
    TR0=0; //關(guān)閉定時(shí)器
}

void main() //主程序
{
    unsigned char i; //循環(huán)變量定義
    Init_Timer0(); //初始化定時(shí)器
    while(1)
    {
        Keyscan();
        if(sel==0)TR0=0;
        else      TR0=1;
        if(sel==1) //模擬報(bào)警聲
        {
            DelayMs(1); //延時(shí)1ms,累加頻率值
            frq++;
        }
        if(sel==2) //模擬消防車(chē)聲
        {
            for(i=0;i<200;i++)
            {
                DelayMs(10); //延時(shí)10ms,累加頻率值
                frq=i;
            }
            for(i=200;i>0;i--)
            {
                DelayMs(10); //延時(shí)10ms,累減頻率值
                frq=i;
            }
        }
        if(sel==3)
        {
            frq=0;
            for(i=0;i<60;i++)DelayMs(10);//播放1s左右一種頻率
            frq=100;
            for(i=0;i<60;i++)DelayMs(10);//播放1s左右另外一種頻率
        }
    }
}

void Timer0_isr(void) interrupt 1
{
    TH0=0xfe; //重新賦值
    TL0=frq; //低8位值在主程序中不斷累加
    SPK=!SPK; //端口電平取反
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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