【Proteus】蜂鸣器播放音乐

按键按一次,蜂鸣器响一次 ,LCD1602同步。

#include <REGX52.H>
#include <INTRINS.H>unsigned int keynum;
sbit RS=P3^0; //**
sbit RW=P3^1;  //**
sbit E=P3^2; //**
sbit buzzer=P1^5;
void delay(unsigned int n)//1ms  
{unsigned char a,b,c,m;for(m=n;m>0;m--)for(c=1;c>0;c--)for(b=142;b>0;b--)for(a=2;a>0;a--);
}
unsigned char key()
{unsigned char keynumber=0;if(P1_0==0){delay(20);while(P1_0==0);delay(20);keynumber=1;}if(P1_1==0){delay(10);while(P1_1==0);delay(10);keynumber=2;}if(P1_2==0){delay(10);while(P1_2==0);delay(10);keynumber=3;}if(P1_3==0){delay(20);while(P1_3==0);delay(20);keynumber=4;}return keynumber;
}
void writedat(unsigned char dat)
{RS=1;RW=0;E=0;P2=dat;delay(10);	  //看情况要不要延时E=1;E=0;
}
void writecom(unsigned char com)
{RS=0;RW=0;E=0;P2=com;delay(10);E=1;E=0;
}
void initlcd()
{writecom(0x38);writecom(0x0c);writecom(0x06);writecom(0x01);
}
void LCD_SetCursor(unsigned char Line,unsigned char Column)
{if(Line==1){writecom(0x80|(Column-1));}else if(Line==2){writecom(0x80|(Column-1+0x40));}
}
int LCD_Pow(int X,int Y)
{unsigned char i;int Result=1;for(i=0;i<Y;i++){Result*=X;}return Result;
}
void LCD_ShowNum(unsigned char Line,unsigned char Column,unsigned int Number,unsigned char Length)
{unsigned char i;LCD_SetCursor(Line,Column);for(i=Length;i>0;i--){writedat(Number/LCD_Pow(10,i-1)%10+'0');}
}
void buzzer_time(unsigned int ms)
{unsigned int i;for(i=0;i<ms;i++){buzzer=!buzzer;delay(1);			   //每隔1ms翻转一次,周期为2ms,频率500hz}	
}
void main()
{initlcd();while(1){keynum=key();if(keynum){buzzer_time(500);LCD_ShowNum(1,1,keynum,1);	}	}
}

《小星星》乐谱 

#include <REGX52.H>
#include <INTRINS.H>
unsigned int freqtable[]={63628,63731,63835,63928,64021,64103,64185,64260,64331,64400,64463,64528,64580,64633,64684,64732,64777,64820,64860,64898,64934,64968,65000,65030,65058,65085,65110,65134, 65157,65178,65198,65217,65235,65252,65268,65283,};
unsigned char music[]={
12,4,
12,4,
19,4,
19,4,
21,4,
21,4,
19,4+4,
17,4,
17,4,
16,4,
16,4,
14,4,
14,4,
12,4+4,
};
unsigned char freqselect,musicselect;
unsigned int keynum;
sbit RS=P3^0; //**
sbit RW=P3^1;  //**
sbit E=P3^2; //**
sbit buzzer=P1^5;
void delay(unsigned int t)
{unsigned int i=0,j=0;for(i=0;i<t;i++){for(j=0;j<120;j++);}
}void main()
{buzzer=0;inittimer();//initlcd();while(1){freqselect=music[musicselect];musicselect++;delay(125*music[musicselect]);musicselect++;TR0=0;delay(5);TR0=1;}
}
void time0() interrupt 1//定时器0中断函数
{TH0=freqtable[freqselect]/256; //初值=65536-1000=64536=FC18H,定时1msTL0=freqtable[freqselect]%256;buzzer=!buzzer;///1ms翻转一次,相当于一个周期为2ms,频率500hz
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/625798.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字藏品app开发

数字藏品是指使用区块链技术&#xff0c;对应特定的作品、艺术品生成的唯一数字凭证。在保护其数字版权的基础上&#xff0c;数字藏品实现了真实可信的数字化发行、购买、收藏和使用。数字藏品是数字出版物的一种新形态&#xff0c;具有唯一的IP数字身份和所有权信息&#xff0…

用Amazon Bedrock上最新模型Claude3 Opus制作网页小游戏

2024年4月16日&#xff0c;亚马逊云科技官方发布Anthropic Claude系列最强模型 Claude 3 Opus现已在Amazon Bedrock平台上正式可用&#xff0c;这一更新对于亚马逊云科技的用户和开发者们来说是个重大的好消息。因为企业云端应用可以更便捷、安全地集成Claude 3 Opus的API&…

Ubuntu 部署ChatGLM3大语言模型

Ubuntu 部署ChatGLM3大语言模型 ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的对话预训练模型。 源码&#xff1a;https://github.com/THUDM/ChatGLM3 部署步骤 1.服务器配置 Ubuntu 20.04 8核(vCPU) 32GiB 5Mbps GPU NVIDIA T4 16GB 硬盘 100GiB CUDA 版本 12.2.2/…

[2021最新]Java时间戳和日期时间互转换

代码&#xff1a; import java.text.ParseException; import java.text.SimpleDateFormat;public class MainProcess {public static void main(String[] args) throws ParseException {// 1.set formatSimpleDateFormat timeSmat new SimpleDateFormat("yyyy-MM-dd HH:…

多模态之ALBEF—先对齐后融合,利用动量蒸馏学习视觉语言模型表征,学习细节理解与论文详细阅读:Align before Fuse

Align before Fuse: Vision and Language Representation Learning with Momentum Distillation &#xff08;ALBEF&#xff09;在融合之前对齐&#xff1a;利用动量蒸馏进行视觉与语言表示学习 Paper: arxiv.org/pdf/2107.07651.pdf Github: https://github.com/salesforce/…

从零实现诗词GPT大模型:数据集介绍和预处理

专栏规划: https://qibin.blog.csdn.net/article/details/137728228 本章将介绍该系列文章中使用的数据集&#xff0c;并且编写预处理代码&#xff0c;处理成咱们需要的格式。 一、数据集介绍 咱们使用的数据集名称是chinese-poetry&#xff0c;是一个在github上开源的中文诗…

[svelte]属性和逻辑块

属性 / Default values • Svelte 教程 | Svelte 中文网 属性 Declaring props 到目前为止&#xff0c;我们只处理了内部状态——也就是说&#xff0c;这些值只能在给定的组件中访问。 在任何实际应用程序中&#xff0c;都需要将数据从一个组件向下传递到其子组件。为此&…

IO基础合集

IO基础合集 1. File类1.1 概述1.2 构造方法1.3 常用方法获取功能的方法绝对路径和相对路径判断功能的方法创建删除功能的方法 1.4 目录的遍历 2. IO概述2.1 什么是IO2.2 IO的分类2.3 IO的流向说明图解2.4 顶级父类们 3. 字节流3.1 一切皆为字节3.2 字节输出流【OutputStream】3…

Buck变换电路

Buck变换电路 Buck变换电路是最基本的DC/DC拓扑电路&#xff0c;属于非隔离型直流变换器&#xff0c;其输出电压小于输入电压。Buck变换电路具有效率高、输出稳定、控制简单和成本低的优点&#xff0c;广泛应用于稳压电源、光伏发电、LED驱动和能量回收系统。 电路原理 Buck变…

SV-29810T-蓝牙无线IP网络多功能多媒体防水音柱

SV-29810T-蓝牙无线IP网络多功能多媒体防水音柱 ◆室外室内豪华型防水音柱式一体化网络音频解码扬声器&#xff0c;用于广播分区音频解码、声音还原作用 ◆应用场地如火车站、地铁、教堂、工厂、仓库、公园停车场及露天市场等&#xff1b;室外使用效果均佳。 产品特点&#…

每日两题2

不同路径 class Solution { public:int uniquePaths(int m, int n) {vector<vector<int>> dp(m1, vector<int>(n1,0));//创建dp表dp[0][1] 1;//初始化//填表for(int i 1; i < m; i){for(int j 1; j < n; j){dp[i][j] dp[i-1][j] dp[i][j-1];}}ret…

一分钟举例了解AI智能客服机器人的具体应用

AI智能客服机器人广泛应用于多个领域&#xff0c;充斥着我们生活的方方面面。在电商领域、银行业、电信行业、政府机构、教育机构、医疗机构等也借助AI智能客服机器人提供咨询、答疑等服务。但是具体是怎么应用到这些场景的呢&#xff1f;今天就用HelpLook的AI智能机器人的具体…