历史上的今天
返回首页

历史上的今天

今天是:2025年03月19日(星期三)

正在发生

2020年03月19日 | 学习笔记 从零开始学单片机(8) 蜂鸣器唱歌

2020-03-19 来源:eefocus

单片机上的蜂鸣器结构非常的简单

只要给一个0,它就会“叫”。让它唱歌的原理很简单,声音大小是固定的,让它的频率变化,就能让它发出不同的音符。


代码中在软件循环延时过程中,依次给它一个固定频率的方波,让它唱起来。


//晶振11.0592


#include


sbit  speaker=P2^3;  

unsigned char byteTH0,byteT0L,duration;


        // 小星星句子,三个一组,第一个表示音符,第二个表示音阶,第三个表示延时长度(单位约等于0.1s)

code unsigned char music[]={      

 1,2,2, 1,2,2, 5,2,2, 5,2,2, 6,2,2, 6,2,2, 5,2,4,

 4,2,2, 4,2,2, 3,2,2, 3,2,2, 2,2,2, 2,2,2, 1,2,4,

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

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

 1,2,2, 1,2,2, 5,2,2, 5,2,2, 6,2,2,  6,2,2, 5,2,4,

 4,2,2, 4,2,2, 3,2,2, 3,2,2, 2,2,2, 2,2,2, 1,2,4 };


//定时器计时初值,高八位,代表不同音符的频率


code unsigned char FREQH[]={

 0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8, 

 0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,

 0xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,

 0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,} ;


//定时器计时初值,低八位,代表不同音符的频率

code unsigned char FREQL[]={

 0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,

 0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,

 0x8F,0xEE,0x44, 0x6B,0xB4,0xF4,0x2D, 

 0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,};


void song();

void delay(unsigned char t);


void main(void)

{

 unsigned char index, step;

 TMOD=1;

 EA=1;

 ET0=1;

 while(1)

    {

  step=0;  

     while(step<126)

  {     

   index = music[step] + 7 * music[step+1] - 1;

         byteTH0 = FREQH[index];

         byteT0L = FREQL[index];

         duration = music[step+2];

         step += 3;

         song();

  }

      delay(10);

     } 

}


void timer0() interrupt 1

{

 TR0=0;

 speaker=!speaker;

 TH0 = byteTH0;

 TL0 = byteT0L;

 TR0=1;

}


void delay(unsigned char t)

{

 unsigned int i;

 unsigned char j=80;

 for(i=0; i  while(j--);

    TR0=0;

}


void song()

{

 TH0 = byteTH0;

 TL0 = byteT0L;

 TR0 = 1;

 delay(duration);                       

}

推荐阅读

史海拾趣

Delphi Connection Systems公司的发展小趣事

Delphi Connection Systems公司自创立之初,就致力于在电子行业中的连接器技术上进行创新。公司投入大量研发资源,开发出一种新型的高性能连接器,这种连接器具有更小的体积、更高的可靠性和更低的传输损耗。这一创新成果迅速获得了市场的认可,为公司带来了大量的订单和合作机会。

Electronic Sensor + Resistor GmbH公司的发展小趣事

在ESR公司的发展历程中,技术突破是推动其不断前进的重要动力。公司投入大量资源用于研发,不断推出具有创新性和竞争力的新产品。其中,一款基于纳米技术的微型传感器成为市场上的明星产品,其高精度、低功耗和快速响应的特性受到了用户的广泛好评。

此外,ESR公司还注重与高校和研究机构的合作,共同开展前沿技术的研发。这种产学研合作模式不仅为公司带来了源源不断的技术创新,也为公司培养了一批高素质的研发人才。

Advanced Fibreoptic Engineering Ltd公司的发展小趣事

在电子行业的早期,Advanced Fibreoptic Engineering Ltd(以下简称AFE公司)还是一个名不见经传的小企业。然而,随着技术的不断进步,AFE公司凭借其在光纤技术领域的深厚积累,成功研发出了一种具有划时代意义的新型光纤材料。这种材料不仅传输速度快,而且损耗极低,极大地提高了数据传输的效率和质量。这一技术突破迅速为AFE公司赢得了市场认可,公司的订单量激增,业绩逐年攀升。

随着技术的推广和应用,AFE公司的光纤产品逐渐在通信、医疗、工业等多个领域得到广泛应用。公司不仅在国内市场占据了一席之地,还积极拓展海外市场,与国际知名企业建立了稳定的合作关系。凭借卓越的产品性能和良好的市场口碑,AFE公司逐渐在电子行业中崭露头角,成为了光纤技术领域的佼佼者。

以上是第一个故事的示例,若您想要探索更多关于AFE公司的发展故事,请输入继续。

(注:由于我无法实时获取具体公司的实际发展故事,以上故事为虚构内容,仅用于展示故事编写风格和结构。如果您需要真实、具体的故事,请提供更多关于AFE公司的信息,以便我能为您编写更贴近实际的内容。)

晶群科技(Gem-micro)公司的发展小趣事

机顶盒,全称为数字视频变换盒,是现代家庭娱乐中不可或缺的重要设备。它作为连接电视机与外部信号源的桥梁,不仅实现了传统电视信号的接收与转换,还通过数字化和网络化技术,极大地丰富了用户的观看体验。

从功能上看,机顶盒主要分为数字机顶盒和网络机顶盒两大类。数字机顶盒主要实现数模转换功能,让用户在模拟电视机上也能观看数字电视,包括有线电视、卫星电视和地面广播电视等多种信号源。而网络机顶盒则更进一步,能够接入互联网,提供包括在线视频、流媒体服务、游戏等在内的多元化娱乐选择。

在技术层面,机顶盒不断升级,逐步向高清、超高清乃至更高级别的视频标准迈进。同时,智能化技术的应用,如语音助手、智能推荐等,使得机顶盒的操作更加便捷,用户体验更加优越。此外,随着云计算和边缘计算技术的发展,机顶盒在内容分发和管理上也变得更加高效。

综上所述,机顶盒以其强大的功能和不断升级的技术,成为现代家庭娱乐的重要组成部分。它不仅满足了用户日益多样化的观看需求,还通过技术创新不断提升用户体验,引领着家庭娱乐的未来发展方向。

Electrolube公司的发展小趣事

在电子行业中,电池管理系统(BMS)的可靠性和耐用性一直是制造商关注的焦点。Electrolube公司凭借其在材料科学领域的深厚积累,成功推出了一款名为UVCL的新型UV固化涂层。这款涂层以其独特的特性迅速在市场中脱颖而出。

UVCL涂层采用先进的UV固化技术,能够在几秒钟内完成固化过程,大大提高了生产效率。同时,它还具有高效的湿气引发的二次固化机制,确保即使在阴影区域也能实现完全固化。这一特性对于BMS等复杂电子电路的保护至关重要。

为了将UVCL涂层推向市场,Electrolube公司的研发团队与客户紧密合作,克服了客户内部没有UV固化设施的难题。他们与信誉良好的供应商合作,提供了完整的解决方案,并成功为客户提供了原型样品单元进行现场测试。测试结果显示,UVCL涂层能够为电子电路提供最高水平的保护,且操作过程简单、应用速度快。

UVCL涂层的成功推出不仅提升了Electrolube公司在电子材料领域的地位,也为公司赢得了众多客户的信赖和好评。

Embedded Artists公司的发展小趣事

随着嵌入式技术的不断发展,Embedded Artists公司不断投入研发,推出了一系列创新产品。其中,一款基于恩智浦处理器的嵌入式开发板因其高性能、低功耗和易用性,受到了市场的热烈欢迎。这款产品不仅为公司带来了可观的收入,还提高了公司在行业中的知名度。

问答坊 | AI 解惑

如何打造行业领军企业

效益是企业赖以生存的前提,创新是企业发展的动力,创新活动,是市场拉动和技术推动两者的汇聚点。在过去的计划经济时代,重庆川仪和当时很多国营企业一样,技术开发严重脱离市场、脱离生产,看似研发成果不断,但真正形成产品并赚回真金白银的却不 ...…

查看全部问答>

初始化网卡问题

EBOOT中的 CS8900: MAC Address: 11:11:11:11:11:11 ERROR: Probe: EISA Number Error. ERROR: InitEthDevice: Failed to initialize Ethernet controller. ERROR: OEMPlatformInit: Failed to initialize Ethernet controller. 这个错误一般 ...…

查看全部问答>

关于6410访问SPI总线的问题,请高手指教

小弟把三星的SPI总线驱动编译进了内核,(开发板提供了源码但是没有加入内核)。然后用WriteFile函数发送测试数据,可以看到SPI口输出正常,但是用ReadFile读取SPI口时,一直读回0. SPI的读取时序如下图,我先用 WriteFile(hSPI, &cBuffer_out, 1, ...…

查看全部问答>

FPGA时序分析之Gated Clock 1

FPGA设计一条原则是尽量使用同步逻辑,即尽量整个设计中使用一个clock,而且该clock尽量走全局时钟线,也就是不要在clock path上加上逻辑,不要用“受控时钟”。但是在有些情况下,“受控时钟”难以避免,例如在用FPGA进行验证ASIC设计时,因为ASIC ...…

查看全部问答>

LM3S8962学习(二) -- 按键与中断

读按键的值,可以通过函数GPIOPinRead来完成   如何实现中断呢?主要有以下几个步骤需要做   1. 先定义一个LED和一个KEY #define LED GPIO_PIN_0#define KEY GPIO_PIN_0   2. 在startup_rvmdk.S 文件中增加PORT_E的中断服务 ...…

查看全部问答>

st32怎样测正负信号?

我需要测小于零的信号,我看过手册,是不是在参考电压端口用一个正负的参考电源?可STM32内部只有一个1.2v的正电源,可怎样找到一个负电源啊?别的单片机一般这样解决办法是采用的双端输入,STM32有没有类视的设置啊?请大家给一个解决方案…

查看全部问答>

【求助】请帮忙选个MOS管做开关管

要求条件是:通过电压为5V电流最大值是2A,有着方面得经验得DX帮忙啊!!!! 先谢谢了啊!!!! 把你们经常用的型号告诉我好吗???…

查看全部问答>

我的车库门摇控器上的LSD2262 芯片坏了...

请问贵网站的LSD2262 芯片能替换上去吗..!!!直接取下焊上就能用吗!!!先谢谢!!!我是菜鸟…

查看全部问答>

深圳证券信息公司招聘高级ARM硬件工程师

深圳证券信息:高级ARM硬件工程师 任职要求: 1、本科以上学历,年龄不限,电子相关专业,5年以上工作经验。 2、精通ARM微控制器架构体系及外围电路设计,熟悉各种协议如DDR2/3、SDIO、URAT等,精通数字和模拟电路,熟悉各类元件性能及设计。 3 ...…

查看全部问答>

人人都爱易电源——转发有礼!

人人都爱易电源——转发有礼! 活动主题:人人都爱易电源——转发有礼!活动时间:10月11日—28日 活动链接:https://bbs.eeworld.com.cn/thread-352431-1-1.html…

查看全部问答>