历史上的今天
返回首页

历史上的今天

今天是:2024年12月19日(星期四)

正在发生

2020年12月19日 | 自己做的单片机音乐盒,外加LED做数码管显示数字

2020-12-19 来源:51hei

单片机源程序如下:

#include

#define uint unsigned int

#define uchar unsigned char

sbit speaker=P1^4;//喇叭接30脚

sbit key1=P1^0;//流水灯按键(暂时)

sbit key2=P1^1;//播放音乐按键(暂定)

uchar a,b,num1,s1num,n1,n2;

uchar qushu=0;

char num;//定义num为可以负数

uchar code yinfu[]={0xfb,0xe9,      //Do

                   0xfc,0x5c,      //Re

                   0xfc,0xc1,      //Mi

                   0xfc,0xef,      //Fa

                   0xfd,0x45,      //So

                   0xfd,0x92,      //La

                   0xfd,0xd0,      //Si

                   0xfd,0xee,      //Do#

                                   0x00,0x00,           //间隔

};

uchar code shengri_tone[]={   1,0,1,2,1,4,3,0, //生日快乐音调

                                   1,0,1,2,1,5,4,0,

                                   1,0,1,8,6,4,3,2,0,

                                   7,0,7,6,4,5,4,0       //0代表不发声,即停顿;数字即为音调

};

uchar code laohu_tone[]={1,2,3,1,0,1,2,        //两只老虎乐谱 40个音符

                                        3,1,0,3,4,5,0,3,

                                        4,5,0,5,6,5,4,3,

                                        1,0,5,6,5,4,3,1,

                                        0,3,2,1,0,3,2,1,0


};

uchar code yishan_tone[]={1,1,5,5,6,6,5,        //星星乐谱  54个音符

                                                0,4,4,3,3,2,2,

                                                1,0,5,5,4,4,3,

                                                3,2,0,5,5,4,4,

                                                3,3,2,0,1,1,5,5,

                                                6,6,5,0,4,4,3,

                                                3,2,2,1,0

};

uchar code shengri_beat[]={   24,1,24,48,48,48,72,5,//节拍

                                   24,1,24,48,48,48,72,5,

                                   24,1,24,48,48,48,48,72,5,

                                   24,1,24,48,48,48,72,5    //节拍,即tone表各音调的延时

};

uchar code laohu_beat[]={   24,24,24,48,5,24,24,//节拍

                                   24,48,5,24,24,48,5,24,

                                    24,72,5,24,24,24,24,//节拍

                                   24,48,5,24,24,24,24,24,72,

                                                                     5,24,24,48,5,24,24,//节拍

                                   72,5//节拍  //节拍,即tone表各音调的延时

};

uchar code yishan_beat[]={   24,24,24,24,24,24,48,//节拍

                                   5,24,24,24,24,24,24,72,

                                    5,24,24,24,24,24,24,//节拍

                                   48,5,24,24,24,24,24,24,72,

                                                                     5,24,24,24,24,24,24,//节拍

                                   48,5,24,24,24,24,24,24,72,5//节拍,即tone表各音调的延时

};

uchar code ledtable[]={0x7f,0xbf,0xdf,0xef, //取反

0xf7,0xfb,0xfd,0xfe};//P0组口的发光二极管代码(焊接过程可能会相反,具体更改)

uchar code ledtable2[]={0x7f,0xbf,0xdf,0xef, //取反

0xf7,0xfb,0xfd,0xfe};//P2组口发光二极管代码,相反!

void check_key();//改为P3组为按键

void keyscan();

void turn();//顺时针流动

void back();

void qianhou();

void dangshuang();

void delay(uint z);//延时函数声明

void delay1(void);//声明第二个延时函数

void play1(void);//播放生日快乐


void main()

{

        s1num=0;//流水灯种类标志

        key1=1;

        key2=1;

        TMOD=0x01;

        TH0=a;

        TL0=b;

        ET0=1;//打开定时器,但是未允许中断

        TR0=1;

        while(1)

        {

        check_key();

        keyscan();


        }


}


void time0() interrupt 1

{

        TH0=a;

        TL0=b;

        speaker=~speaker;

}

void check_key()

{

        P3=0xff;//先赋给P2组口高电平

        switch(P3)//按下一个键相应4个灯亮

        {

                case 0xfd:P0=0xff;P2=0x92;a=0xfb;b=0xe9;EA=1;break;//P0,P2组为发光二极管组

                case 0xfb:P0=0xe2;P2=0x20;a=0xfc;b=0x5c;EA=1;break;//注意:EA不能改为TR0

                case 0xef:P0=0xea;P2=0x00;a=0xfc;b=0xc1;EA=1;break;

                case 0x7f:P0=0xf8;P2=0x82;a=0xfc;b=0xef;EA=1;break;

                case 0xfe:P0=0xe8;P2=0x4;a=0xfd;b=0x45;EA=1;break;

                case 0xf7:P0=0xe0;P2=0x4;a=0xfd;b=0x92;EA=1;break;

                case 0xdf:P0=0xfe;P2=0x90;a=0xfd;b=0xd0;EA=1;break;

                case 0xbf:P0=0xe0;P2=0x00;a=0xfd;b=0xee;EA=1;break;

                default:EA=0;speaker=0;//P0=0xff;P2=0xff ;

        }

}

void delay(uint z)

{

        uint x,y;

        for(x=z;x>0;x--)

        for(y=110;y>0;y--);

}

void keyscan()

{

          if(key1==0)

          {

                  delay(5);

                if(key1==0)

                {

                        s1num++;

                        while(!key1);

                        if(s1num==1)

                        {

                                turn();

                        }

                }

                if(s1num==2)

                {

                        back();

                }

                if(s1num==3)

                {

                        qianhou();

                }

                if(s1num==4)

                {

                        dangshuang();

推荐阅读

史海拾趣

鸿展光电(GPO)公司的发展小趣事

在电子行业中,鑫雁公司(这里主要指鑫雁电子科技(上海)有限公司及其后续发展形态,如上海鑫雁微电子股份有限公司)的崛起与发展,伴随着一系列重要的里程碑和战略决策。以下是五个与鑫雁公司发展相关的故事:

1. 初创与立足上海

鑫雁公司始建于2004年(另有说法为2009年或2010年,以最新信息为准,这里采用2010年作为起点),选址于中国之魔都——上海。公司自成立之初便专注于集成电路及相关产品的研发与销售,并迅速在竞争激烈的电子行业中站稳脚跟。得益于上海作为国际大都市的地理位置优势和丰富的产业链资源,鑫雁公司逐渐吸引了一批具有丰富经验的研发和管理人才,为公司后续的发展奠定了坚实的基础。

2. 研发实力积累与技术创新

鑫雁公司的主要研发和管理人员均来自国内知名集成电路设计企业,他们拥有十五年乃至二十年以上的集成电路产品研发经验。公司在多个工艺平台上成功开发了包括霍尔磁传感器电路、电源管理电路等在内的一系列拥有自主知识产权的数模混合集成电路产品,并获得了多项发明专利、实用新型专利和集成电路版图保护专利。这些技术成果不仅提升了公司的核心竞争力,也为公司在市场上赢得了良好的口碑。

3. 全国布局与国际化拓展

随着业务的不断扩展,鑫雁公司开始在全国范围内布局,先后在杭州、西安等地设立了研发机构或技术合作团队,并在江苏、广东等国内主要发达经济区域设立了客户服务的办事处。此外,公司还将目光投向了国际市场,在美国硅谷等地建立了研发合作团队,进一步提升了公司的国际影响力。这种全国乃至全球的布局策略,为公司带来了更多的市场机会和合作伙伴。

4. “无工厂化”模式与品质保障

鑫雁公司采用“无工厂化”(Fabless)的设计公司模式,通过委外加工方式进行生产。公司精心挑选了具有世界先进制造设备和技术的晶圆代工和封装合作伙伴,以确保产品品质的可靠性和充足的市场供应能力。这种灵活的生产模式不仅降低了公司的运营成本,还使公司能够专注于产品研发和市场拓展等核心业务。

5. 持续创新与多元化发展

秉承“提升自我、超越期待”的核心理念,鑫雁公司始终坚持技术创新和多元化发展。公司不断加大技术研发投入,积极探索新产品的开发和推广,逐步形成了以汽车电子为主赛道,并在新能源、工业自动化、消费电子等多个领域深入发展的格局。这些努力不仅丰富了公司的产品线,也进一步提升了公司的市场竞争力。同时,公司还积极与国内外知名企业建立合作关系,共同推动电子行业的发展和进步。

FOTEK公司的发展小趣事

进入21世纪,福禄克通过一系列精明的并购活动,实现了业务的快速扩张。2000年,公司成功收购了Wavetek Wandell Goltermann的精密测量部门,这次并购不仅增强了福禄克在电气校准市场的竞争力,还为其带来了丰富的技术专利和客户资源。此后,福禄克继续通过并购方式,进入新的技术领域和市场领域,不断拓宽其业务范围。

Analog Power公司的发展小趣事

Analog Power公司成立于XXXX年,创立初期主要专注于电源管理解决方案的研发。面对当时竞争激烈的市场环境,公司创始人凭借对电源管理技术的深刻理解和坚定信念,带领团队克服了种种困难,逐步在市场中找到了自己的定位。他们深入研究客户需求,不断优化产品设计,逐渐赢得了客户的信任和认可。

Digital View公司的发展小趣事

随着数字化技术的不断进步和应用领域的不断扩大,Digital View公司也加快了数字化转型和升级的步伐。公司加大了对云计算、大数据、人工智能等前沿技术的研发和应用力度,推出了一系列智能化、数字化的产品和服务。这些产品和服务不仅提高了客户的运营效率和管理水平,还为公司带来了新的增长点。

CAROLCABLE公司的发展小趣事

CAROLCABLE公司的创立,标志着电子线缆行业迎来了一位新的竞争者。在电子科技飞速发展的时代背景下,创始人凭借对线缆技术的深刻理解和市场需求的敏锐洞察,决定创立CAROLCABLE公司。公司初期,面临着资金短缺、技术瓶颈和市场认知度低等多重挑战。然而,创始人凭借着坚定的信念和不懈的努力,带领团队克服了一个又一个困难。他们积极研发新产品,优化生产工艺,提高产品质量,逐渐在市场上站稳了脚跟。

随着公司业务的不断拓展,CAROLCABLE开始与一些知名的电子企业建立合作关系,为其提供高质量的线缆产品。这些合作不仅为公司带来了稳定的订单和收入,也进一步提升了CAROLCABLE在行业内的知名度和影响力。

超霸(GP)公司的发展小趣事

绿索超容在追求经济效益的同时,始终不忘履行社会责任。公司积极响应国家绿色发展的号召,致力于环保事业和可持续发展。在产品研发和生产过程中,绿索超容始终坚持绿色、低碳、环保的理念,采用环保材料和工艺,减少对环境的影响。此外,公司还积极参与社会公益活动,为社会贡献自己的力量。这些举措不仅提升了绿索超容的企业形象,也为其在电子行业中树立了良好的口碑。

问答坊 | AI 解惑

传谷歌将推出浏览器Chrome 向微软IE发起挑战

北京时间9月2日,据国外媒体报道,《华尔街日报》周一援引消息人士的话称,Google计划发布一款名为Google Chrome的浏览器,向当前的浏览器龙头--微软的IE浏览器发起挑战。 报道称,Google将在近期推出[/url]改款浏览器。据悉,Google Chrome被设 ...…

查看全部问答>

基于全集成收发芯片CC1000的无线数据传输设计

【摘 要】 CC1000是CHIPCON公司生产的一种低功耗全集成收发芯片,工作于315/433/868/915 MHz工业、科学和医疗(ISM)短距离设备频段。文中介绍了芯片功能,给出了基于RS-232接口的PC机之间无线数据传输电路和PC机端接口程序、单片机控制端控制程序 ...…

查看全部问答>

三星2450sd卡驱动遇到的问题(休眠唤醒sd会发生拔出和插入的消息)

在休眠唤醒的时候,我不希望发生拔出和插入的消息。请问哪位老大解决了这个问题?请指点一下。…

查看全部问答>

求教HCF4051B电源怎么接啊

看了数据资料,也没有弄明白,VEE,vSS怎么接 电源供电有几种接法? 我刚开始接了vdd=+5v vss=vee=0 给控制信号开关不通 又把+5v改成12v还不行 一定要接负电源吗 我那没有负电源 谢谢了…

查看全部问答>

CE6.0 触屏校准程序怎么实现?

请问各位高手,有哪位弄过CE6.0下的触屏校准程序的,请指点小弟一下,谢谢。…

查看全部问答>

EVC 编写 dll

EVC下编写dll动态连接 error LNK2019: unresolved external symbol CoTaskMemAlloc referenced in function \"public: __cdecl 这个错误。 但是,CoTaskMemAlloc这个函数,你右键点击  查看函数的定义,EVC又能自动定位到   ...…

查看全部问答>

关于基于SJA1000的can节点通信

本人做了两个基于SJA1000的can节点,每个节点在PELI模式下都能实现自发自收,但连在总线上时不能通信。 当一个节点发送数据时,查了SR的状态标志位0x08,一直为1,说明上次的发送还未处理完,应该是没有收到另外一个节点的应答信号吧。我查了资料 ...…

查看全部问答>

EVC 中结构体的问题

  如果头文件中有个结构体: struct FvFixed {         CString m_str; public:         friend FvFixed const        operator+(const FvFixed x, const FvFixed y); ...…

查看全部问答>

请教关于EVC中树控件CTreeCtrl的问题

   我的程序中用到CTreeCtrl,调试单步运行到InsertItem()(即使程序是从EVC的帮助文件上COPY下来)语句时就出现0xC0000005的错误,直接运行的话到相应的地方模拟器就死掉了,但是下到板子上时可以运行的,焕一个其他的SDK也可以,实在 ...…

查看全部问答>

请问32位机器寻址空间4G,为何能够访问80G的硬盘

应该是某些概念没有弄清楚,请大虾提示。。…

查看全部问答>