久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 51單片機(jī)通過I/O口控制蜂鳴器播放音樂程序 [打印本頁]

作者: zhouwei888    時間: 2023-9-10 13:20
標(biāo)題: 51單片機(jī)通過I/O口控制蜂鳴器播放音樂程序
/*********************************************************************************
* 【外部晶振】: 11.0592mhz   
* 【主控芯片】: STC89C52
* 【編譯環(huán)境】: Keil μVisio4   
* 【程序功能】: 點(diǎn)亮開發(fā)板上的LED1                                                      
* 【使用說明】:
**********************************************************************************/
#include <reg52.h>
sbit beep = P2^3;
unsigned char timer0H, timer0L, time;

//單片機(jī)晶振采用11.0592MHz
// 頻率-半周期數(shù)據(jù)表 高八位     本軟件共保存了四個八度的28個頻率數(shù)據(jù)
code unsigned char FREQH[] = {
    0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8,    //低音1234567
    0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,//1,2,3,4,5,6,7,i
    0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE,            //高音 234567
    0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF};   //超高音 1234567
// 頻率-半周期數(shù)據(jù)表 低八位
code unsigned char FREQL[] = {
    0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6,    //低音1234567
    0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1,2,3,4,5,6,7,i
    0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D,             //高音 234567
    0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16};   //超高音 1234567
//數(shù)據(jù)表           
code unsigned char song[] = {
5, 2, 2, 6, 2, 2, 5, 2, 2, 4, 2, 2, 3, 2, 2, 2, 2, 2, 1, 2, 6, 5, 1, 6, //
1, 2, 2, 3, 2, 2, 1, 3, 2, 7, 2, 2, 6, 2, 3, 3, 2, 1, 5, 2, 12,            //一刻也不能分割
6, 2, 2, 7, 2, 2, 6, 2, 2, 5, 2, 2, 4, 2, 2, 3, 2, 2, 2, 2, 6, 6, 1, 6,    //無論我走到哪里
7, 1, 2, 6, 1, 2, 5, 1, 2, 5, 2, 2, 1, 2, 3, 2, 2, 1, 3, 2, 12,            //都唱出一首贊歌
5, 2, 2, 6, 2, 2, 5, 2, 2, 4, 2, 2, 3, 2, 2, 2, 2, 2, 1, 2, 6, 5, 1, 6,    //我歌唱每一座高山
1, 2, 2, 3, 2, 2, 1, 3, 2, 7, 2, 2, 2, 3, 3, 1, 3, 1, 6, 2, 12,            //我歌唱每一條河
1, 3, 2, 7, 2, 2, 6, 2, 2, 5, 2, 6,                                        //裊裊炊煙
6, 2, 2, 5, 2, 2, 4, 2, 2, 3, 2, 6,                                        //小小村落
7, 1, 4, 6, 1, 2, 5, 1, 4, 2, 2, 2, 1, 2, 12,                            //路上一道轍
8, 2, 2, 2, 3, 2, 3, 3, 2, 2, 3, 2, 8, 2, 2, 6, 2, 2, 7, 2, 2, 6, 2, 3, 3, 2, 1, 5, 2, 12,//
8, 2, 2, 2, 3, 2, 3, 3, 2, 2, 3, 2, 8, 2, 2, 6, 2, 2, 7, 2, 2, 5, 2, 3, 3, 2, 1, 6, 2, 12,//我永遠(yuǎn)緊依著你的心窩
5, 2, 2, 4, 2, 2, 3, 2, 2, 2, 2, 6, 7, 1, 2, 6, 1, 2, 5, 1, 2, 3, 2, 6,4, 2, 6, 2, 2, 4, 1, 2, 2,1, 2, 10,//你用你那母親的脈搏和我訴說
};
//一個音符有三個數(shù)字。前為第幾個音、中為第幾個八度、后為時長(以半拍為單位)。
//6, 2, 3 分別代表:6, 中音, 3個半拍;
//5, 2, 1 分別代表:5, 中音, 1個半拍;

void t0int() interrupt 1         //T0中斷程序,控制發(fā)音的音調(diào)
{
    TR0 = 0;                     //先關(guān)閉T0
    beep = !beep;          //輸出方波, 發(fā)音
    TH0 = timer0H;               //下次的中斷時間, 這個時間, 控制音調(diào)高低
    TL0 = timer0L;
    TR0 = 1;                     //啟動T0
}

void delay(unsigned char t)     //延時程序,控制發(fā)音的時間長度
{
    unsigned char t1;
    unsigned long t2;
    for(t1 = 0; t1 < t; t1++)    //雙重循環(huán), 共延時t個半拍
      for(t2 = 0; t2 < 4000; t2++); //延時期間, 可進(jìn)入T0中斷去發(fā)音
    TR0 = 0;                        //關(guān)閉T0, 停止發(fā)音
}

void sing()                      //演奏一個音符
{
    TH0 = timer0H;               //控制音調(diào)
    TL0 = timer0L;
    TR0 = 1;                     //啟動T0, 由T0輸出方波去發(fā)音
    delay(time);                 //控制時間長度
}

void main(void)
{
    unsigned char k, i;
    TMOD = 1;                    //置T0定時工作方式1
    ET0 = 1;                     //開T0中斷
    EA = 1;                      //開總中斷
    while(1)
    {
      i = 0;
      time = 1;
      while(time)
      {
        k = song[i] + 7 * song[i + 1] - 1;//第i個是音符, 第i+1個是第幾個八度
        timer0H = FREQH[k];      //從數(shù)據(jù)表中讀出頻率數(shù)值
        timer0L = FREQL[k];      //實(shí)際上, 是定時的時間長度
        time = song[i + 2];   //讀出時間長度數(shù)值
        i += 3;
        sing();                  //發(fā)出一個音符
      }  
    }  
}


作者: 周工58    時間: 2023-9-10 15:57
不錯。注解詳細(xì),




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲在线一区二区三区 | 一级a性色生活片久久毛片 午夜精品在线观看 | 欧美a区| 成人一级视频在线观看 | 午夜激情免费视频 | 中文在线一区二区 | 成人高清网站 | 欧美一区二区三区在线看 | 黄色免费观看 | 亚洲网站在线播放 | 鸳鸯谱在线观看高清 | 成人精品一区二区三区 | 日韩精品中文字幕一区二区三区 | 亚洲福利在线观看 | 成人午夜免费福利视频 | 久久久国产亚洲精品 | 中国大陆高清aⅴ毛片 | 国产在线观看一区二区三区 | 综合久久久 | 看羞羞视频 | 国产免费观看一级国产 | 国产精品日日夜夜 | 国产精品 欧美精品 | 色综合视频 | 亚洲一区综合 | 艹逼网| 国产一级特黄aaa大片评分 | 人人做人人澡人人爽欧美 | 欧美视频xxx | 国产在线视频在线观看 | 国产精品国产三级国产aⅴ入口 | 国产激情一区二区三区 | 密色视频 | 在线不卡一区 | 成人精品免费视频 | 久久久性色精品国产免费观看 | 精品久久久久香蕉网 | 蜜桃视频一区二区三区 | 国产成人精品久久二区二区91 | 天天操天天射综合 | av电影一区 |