单片机实现蜂鸣器音乐播放与12864显示屏控制
"本资源主要介绍如何利用单片机实现蜂鸣器播放音乐以及12864液晶屏显示功能,其中包含四首歌曲的播放。" 在单片机编程中,实现蜂鸣器播放音乐通常涉及到定时器和中断服务程序的使用。在这个项目中,蜂鸣器通过连接到P1口的某个位(bitspeaker=P1^0;)来控制,而音乐的频率是通过预定义的查找表(FREQH和FREQL数组)来设定的。这些数组存储了不同音符对应的频率值,以便于单片机根据这些值生成相应的音频信号。 音乐播放的核心在于定时器1的配置,通常采用11.0592MHz的晶振频率。定时器的溢出率与系统时钟频率和预分频系数有关,通过设置适当的预分频系数,可以使得定时器在每次溢出时产生特定周期的脉冲,进而控制蜂鸣器的开关,模拟出不同的音高。这里的代码没有具体展示定时器的配置,但可以推断其工作原理是通过调整定时器的初值来改变溢出周期,从而调整蜂鸣器的频率。 12864液晶屏的显示部分则涉及到字符显示和可能的用户交互。例如,sbitkey1-P3^0等定义了四个按键,用于用户选择或控制音乐播放。液晶屏通常使用SPI或I2C接口与单片机通信,通过发送指令和数据来控制显示内容。液晶屏的初始化、字符写入、光标移动等功能都需要编写相应的函数来实现。 在代码的最后部分,提到了一个名为“sszymmh”的字符数组,这可能是用于在12864液晶屏上显示的特定字符或字符串。由于这部分内容不完整,无法详细解析其用途,但可以猜测它可能包含了歌曲名称、播放状态或其他相关信息。 这个项目涉及到了以下几个关键知识点: 1. 单片机的I/O口控制:通过P1口的位操作控制蜂鸣器。 2. 定时器配置和中断服务:用以生成音乐的时序信号。 3. 预定义查找表:存储音乐频率数据,简化代码实现。 4. 液晶屏显示:包括初始化、字符写入和用户交互。 5. 键盘输入处理:用于用户控制和选择。 在实际应用中,还需要编写相应的驱动程序和控制逻辑,以实现音乐的播放、暂停、切换等功能,并且确保12864液晶屏能正确显示音乐的相关信息。这需要对单片机的硬件接口、C语言编程以及音乐理论有一定的理解。
#define uchar unsigned char
#define uint unsinged int
sbit speaker = P1^0;
sbit key1=P3^0;//定义按键位置
sbit key2=P3^1;
sbit key3=P3^2;
sbit key4=P3^3;
uchar t0h,t0l,time;
int j=1;
//--------------------------------------
//单片机晶振采用11.0592MHz
// 频率-半周期数据表 高八位 本软件共保存了四个八度的28个频率数据
uchar code FREQH[] = {0x01, //0的时候没有音符
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
//-----------------------------------------
// 频率-半周期数据表 低八位
uchar code FREQL[] = {0x01, //0的时候没有音符
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
//--------------------------------------
//一个音符有三个数字。前为第几个音、中为第几个八度、后为时长(以1/4拍为单位)。
//6, 2, 6 分别代表:6, 中音, 6个1/4拍;
//5, 2, 2 分别代表:5, 中音, 2个1/4拍;
//5, 2, 4 分别代表:5, 中音, 4个1/4拍;
//1, 3, 4 分别代表:1, 高音, 4个1/4拍;
//低音为1,中音为2,高音为3,超高音为4;
//////////////////////////////////////////////////////////
/********************世上只有妈妈好*********************/
uchar code sszymmh[] = {
6,2,6, 5,2,2, 3,2,4, 5,2,4,
1,3,4, 6,2,2, 5,2,2, 6,2,8,
3,2,4, 5,2,2, 6,2,2, 5,2,4,
3,2,4, 1,2,2, 6,1,2, 5,2,2,
3,2,2, 2,2,8, 2,2,6, 3,2,2,
5,2,4, 5,2,2, 6,2,2, 3,2,4,
2,2,4, 1,2,8, 5,2,6, 3,2,2,
2,2,2, 1,2,2, 6,1,2, 1,2,2,
5,1,16, 0,0,0};
/**********************两只耗子**********************/
uchar code TwoMouse[]={
3,2,2, 6,2,2, 7,2,2, 5,2,2,
3,2,2, 6,2,2, 7,2,2, 5,2,2,
7,2,2, 1,3,2, 2,3,4,
7,2,2, 1,3,2, 2,3,4,
2,3,1, 3,3,1, 2,3,1, 1,3,1, 7,2,2, 5,2,2,
2,3,1, 3,3,1, 2,3,1, 1,3,1, 7,2,2, 5,2,2,
6,2,2, 2,2,2, 5,2,4, 6,2,2, 2,2,2, 5,2,4,
0,0,0};
/***********************两只蝴蝶**********************/
uchar code TwoButterfly[]={
3,2,2, 2,2,2, 3,2,6, 3,2,2, 3,2,2, 2,2,2,
1,2,6, 6,1,2, 1,2,2, 2,2,4, 2,2,2, 3,2,2,
剩余6页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展