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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1184|回復: 0
收起左側

單片機播放青花瓷源程序

[復制鏈接]
ID:1087011 發表于 2023-7-3 14:18 | 顯示全部樓層 |閱讀模式
#include<reg52.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit buzzer = P2 ^ 5;  //蜂鳴器管腳
u8 time0h = 0;         //定時器高8位
u8 time0l = 0;         //定時器低8位
u8 bats = 0;           //延時拍數
bit stop = 0;          //是否為休止符,0是,1不是(給stop賦值為非0則stop等于1)
bit smooth = 0;        //1圓滑,0不圓滑
code u8 node[] = {
        //0xf2,0xf3,0xf5,0xf5,0xf6,0xf7,0xf8,//C調低音高8位  @11.0592MHz
        //0xf9,0xf9,0xfa,0xfa,0xfb,0xfb,0xfc,//C調中音
        //0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe,//C調高音
        //0x42,0xc1,0x17,0xaf,0xd1,0xd1,0xb6,//C調低音低8位
        //0x1e,0xde,0x8a,0xd8,0x68,0xe9,0x5b,
        //0x8f,0xf0,0x45,0x69,0xb4,0xf4,0x2e,
        //0xf3,0xf5,0xf6,0xf6,0xf7,0xf8,0xf9,//D調
        //0xf9,0xfa,0xfb,0xfb,0xfb,0xfc,0xfc,
        //0xfc,0xfd,0xfd,0xfd,0xfd,0xfe,0xfe,
        //0xc1,0x17,0x45,0xd1,0xd1,0xb6,0x80,
        //0xde,0x8a,0x23,0x68,0xe9,0x5b,0xc1,
        //0xf0,0x45,0x91,0xb4,0xf4,0x2e,0x78,
        //0xf5,0xf6,0xf7,0xf7,0xf8,0xf9,0xfa,//E調
        //0xfa,0xfb,0xfb,0xfb,0xfc,0xfc,0xfd,
        //0xfd,0xfd,0xfd,0xfd,0xfe,0xfe,0xfe,
        //0x17,0x45,0x53,0xd1,0xb6,0x80,0x36,
        //0x8a,0x23,0xab,0xe9,0x5b,0xc1,0x1c,
        //0x45,0x91,0xd5,0xf4,0x2e,0x78,0xa3,
        //0xf5,0xf6,0xf7,0xf8,0xf9,0xf9,0xfa,//F調
        //0xfa,0xfb,0xfb,0xfc,0xfc,0xfc,0xfd,
        //0xfd,0xfd,0xfd,0xfe,0xfe,0xfe,0xfe,
        //0xaf,0xd1,0xd1,0x46,0x1e,0xde,0x8a,
        //0xd8,0x68,0xe9,0x23,0x8f,0xf0,0x45,
        //0x69,0xb4,0xf4,0x12,0x60,0x8e,0xb6,
        //0xf6,0xf7,0xf8,0xf9,0xf9,0xfa,0xfb,//G調
        //0xfb,0xfb,0xfc,0xfc,0xfc,0xfd,0xfd,
        //0xfd,0xfd,0xfe,0xfe,0xfe,0xfe,0xfe,
        //0xd1,0xd1,0xb6,0x1e,0xde,0x8a,0x23,
        //0x69,0xe9,0x5b,0x8f,0xf0,0x45,0x91,
        //0xb4,0xf4,0x2e,0x60,0x8e,0xb6,0xea,
        0xf7,0xf8,0xf9,0xf9,0xfa,0xfb,0xfb,//A調
        0xfb,0xfc,0xfc,0xfc,0xfd,0xfd,0xfd,
        0xfd,0xfe,0xfe,0xfe,0xfe,0xfe,0xff,
        0xd1,0xb6,0x80,0xde,0x8a,0x23,0xab,
        0xe9,0x5b,0xc1,0xf0,0x45,0x91,0xd5,
        0xf4,0x2e,0x78,0x8e,0xb6,0xea,0x09
        //0xf8,0xf9,0xfa,0xfa,0xfb,0xfb,0xfc,//B調
        //0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfe,
        //0xfe,0xfe,0xfe,0xfe,0xfe,0xff,0xff,
        //0xb6,0x80,0x36,0x8a,0x23,0xab,0x23,
        //0x5b,0xc1,0x1c,0x45,0x91,0xd5,0x12,
        //0x2e,0x78,0xa3,0xb6,0xea,0x09,0x23
};
code u8 music[] = {
        0,1,2,0, 3,1,2,0, 3,1,2,0, 6,1,1,0, 6,1,1,1, 6,1,2,0, 1,1,2,0, 2,1,2,0,
        3,1,1,0, 3,1,1,1, 3,1,4,0, 0,1,4,0, 0,1,4,0, 0,1,4,0, 0,1,2,0, 3,1,2,0,
        3,1,2,0, 6,1,2,0, 6,1,3,0, 5,1,1,0, 5,1,3,0, 4,1,1,1, 4,1,1,0, 3,1,3,1,
        3,1,4,0, 0,1,4,0, 0,1,4,0, 0,1,2,0, 3,1,2,0, 3,1,2,0, 6,1,2,1, 6,1,2,0,
        1,1,2,0, 2,1,2,0, 3,1,6,0, 0,1,4,0, 0,1,4,0, 0,1,4,0, 0,1,2,0, 3,1,2,0,
        3,1,2,0, 1,1,2,0, 3,1,2,0, 3,1,1,0, 4,1,1,1, 4,1,2,0, 3,1,2,0, 1,1,8,0,
        0,1,4,0, 0,1,4,0, 0,1,2,0, 3,1,2,0, 3,1,2,0, 6,1,1,0, 6,1,1,1, 6,1,2,0,
        1,1,2,0, 2,1,2,0, 3,1,1,0, 3,1,1,1, 3,1,4,0, 0,1,4,0, 0,1,4,0, 0,1,4,0,
        0,1,2,0, 3,1,2,0, 3,1,2,0, 6,1,2,0, 6,1,3,0, 5,1,1,0, 5,1,3,0, 4,1,1,1,
        4,1,1,0, 3,1,3,1, 3,1,4,0, 0,1,4,0, 0,1,4,0, 0,1,2,0, 3,1,1,0, 3,1,1,0,
        3,1,2,0, 6,1,2,1, 6,1,2,0, 1,1,2,0, 2,1,2,0, 3,1,2,1, 3,1,4,0, 0,1,4,0,
        0,1,4,0, 0,1,4,0, 0,1,2,0, 3,1,2,0, 3,1,2,0, 1,1,2,0, 3,1,2,0, 3,1,1,0,
        4,1,1,1, 4,1,2,0, 3,1,2,0, 1,1,8,0, 0,1,2,0, 5,1,2,0, 6,1,2,0, 7,1,2,0,
        1,2,2,0, 7,1,1,0, 1,2,1,1, 1,2,2,0, 5,1,1,0, 6,1,1,0, 6,1,4,0, 5,1,2,0,
        4,1,1,0, 4,1,1,1, 4,1,2,0, 3,1,2,0, 3,1,2,0, 3,1,1,0, 2,1,1,1, 2,1,2,0,
        5,1,2,0, 6,1,2,0, 7,1,2,0, 1,2,2,0, 7,1,1,0, 1,2,1,1, 1,2,2,0, 5,1,1,0,
        6,1,1,0, 6,1,4,0, 6,1,2,0, 7,1,1,0, 1,2,1,1, 1,2,2,0, 1,2,2,0, 1,2,2,0,
        1,2,1,0, 2,2,1,1, 2,2,2,0, 0,1,1,0, 5,1,1,0, 6,1,2,0, 7,1,2,0, 1,2,2,0,
        7,1,1,0, 1,2,1,1, 1,2,2,0, 3,2,2,0, 6,2,3,0, 5,2,1,1, 5,2,2,0, 4,2,2,0,
        3,2,4,0, 3,2,2,0, 2,2,2,1, 2,2,4,0, 6,1,2,0, 7,1,2,0, 1,2,4,0, 1,2,2,0,
        2,2,1,0, 1,2,1,1, 1,2,3,0, 1,2,1,0, 7,1,2,0, 1,2,1,0, 2,2,1,1, 2,2,4,0,
        1,2,2,0, 7,1,2,0, 1,2,8,0, 0,1,0,0
};//歌譜格式為:音符(0-7)+低中高音(0-2)+拍數(單位0.25拍)+是否圓滑(1,0)(最后四位中的第一第三位為終止參數)
void time0() interrupt 1
{
        TR0 = 0;         //定時器關后賦值,防止從0開始定時
        buzzer = !buzzer;
        TH0 = time0h;
        TL0 = time0l;
        TR0 = 1;         //定時器開
}
void Delayms(u16 ms)//延時ms毫秒
{
        while (ms--)
        {
                u8 i, j;
                _nop_();
                i = 2;
                j = 199;
                do
                {
                        while (--j);
                } while (--i);
        }
}
void Sing()
{
        if (stop)
        {
                TH0 = time0h;
                TL0 = time0l;
                TR0 = 1;
        }
        else
                TR0 = 0;
        Delayms(200*bats);  //72拍/min
        if (!smooth)
        {
                TR0 = 0;
                Delayms(10);   //音符間間歇
                TR0 = 1;
        }
}
void main()
{
        u16 i = 0;
        u8  j = 0;
        EA = 1;    //總中斷開
        ET0 = 1;   //T0中斷允許
        TMOD = 1;  //工作方式1,16位定時計數器
        while (1)  //控制播放次數
        {
                i = 0;
                while (music[ i] != 0 || music[i + 2] != 0)//這里定義音符為0與拍數為0組合代表結束歌曲
                {
                        j = music[ i] + 7 * music[i + 1] - 1;  //確定音符高8位位置
                        time0h = node[j];
                        time0l = node[j+21];
                        bats = music[i + 2];
                        stop = music[ i];
                        smooth = music[i + 3];
                        Sing();
                        i += 4;
                }
        }
}

/*下面是兩個神秘樂譜*/
//樂譜1
/*6,1,6,0, 5,1,2,0, 3,1,4,0, 5,1,4,0, 1,2,4,0, 6,1,2,1, 5,1,2,0, 6,1,8,0,
  3,1,4,0, 5,1,2,0, 6,1,2,0, 5,1,4,0, 3,1,2,1, 2,1,2,0, 1,1,2,1, 6,0,2,0,
  5,1,2,1, 3,1,2,0, 2,1,8,0, 2,1,6,0, 3,1,2,0, 5,1,4,0, 5,1,2,0, 6,1,2,0,
  3,1,6,1, 2,1,2,0, 1,1,8,0, 5,1,6,0, 3,1,2,0, 2,1,2,1, 1,1,2,0, 6,0,2,1,
  1,1,2,0, 5,0,8,0, 0,1,0,0
*/

//樂譜2
/*1,1,4,0, 2,1,4,0, 3,1,4,0, 1,1,4,0, 1,1,4,0, 2,1,4,0, 3,1,4,0, 1,1,4,0,
  3,1,4,0, 4,1,4,0, 5,1,8,0, 3,1,4,0, 4,1,4,0, 5,1,8,0, 5,1,3,0, 6,1,1,0,
  5,1,3,0, 4,1,1,0, 3,1,4,0, 1,1,4,0, 5,1,3,0, 6,1,1,0, 5,1,3,0, 4,1,1,0,
  3,1,4,0, 1,1,4,0, 1,1,4,0, 5,0,4,0, 1,1,8,0, 1,1,4,0, 5,0,4,0, 1,1,8,0,
  0,1,0,0
*/

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品不卡 | 久久午夜精品 | 欧美日韩国产精品一区二区 | 性欧美精品一区二区三区在线播放 | 欧美日韩久 | 一区二区免费高清视频 | 国产在线一级片 | 久久在视频 | 黑人久久| 精品久久不卡 | 亚洲国产精品人人爽夜夜爽 | 欧美人妖网站 | 国产成人一区二区三区 | 99热首页| 二区三区视频 | 国产97在线看 | 日韩成人性视频 | 视频1区2区 | 欧美在线一区二区视频 | 免费一级淫片aaa片毛片a级 | 精品视频一区二区三区在线观看 | 国产伦精品一区二区三区精品视频 | 男女羞羞在线观看 | 成人在线免费电影 | 麻豆av电影网 | 国产成人精品一区二区三区在线观看 | 一区二区三区免费 | 中文字幕一区二区三区在线观看 | 视频一区二区三区四区五区 | 一区二区三区四区国产精品 | 欧美一区二不卡视频 | 久久久久久高潮国产精品视 | 国产乱码精品一区二三赶尸艳谈 | 国产欧美一区二区久久性色99 | 国产丝袜人妖cd露出 | 在线久草 | 最新黄色在线观看 | 精品久久精品 | 99综合| 亚洲综合无码一区二区 | 麻豆av免费观看 |