程煜钧 通信1001 基于stc89c52单片机的16音阶电子琴设计
更新时间:2023-06-06 04:58:01 阅读量: 实用文档 文档下载
- 程煜钧 清华大学推荐度:
- 相关推荐
单片机原理课程设计
学生姓名: 程煜钧 学生学号: 10211004 指导教师: 黄赞武
基于stc89c52单片机的十六音阶电子琴设计
一、 设计目标
设计方案以STC89C52单片机为核心,设计一个由4×4矩阵式键盘组成,能提供16个音阶的电子琴,可随意弹奏想要表达的音乐。因此本方案以AT89S51单片机为主控芯片,使4×4矩阵键盘电路、功率放大电路、扬声器等各功能电路协调工作。多音阶电子琴的主电路主要由4×4矩阵键盘电路、功率放大电路、扬声器、复位电路、晶振电路、电源电路等几部分组成。
二、 主要元件介绍 1. STC89C52
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,2个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保
存,振荡器被冻结,单片机一切工作停止,直到下一个中断
或硬件复位为止。最高运作频率35MHz,6T/12T可选。图为STC89C52的管脚图。
2. LM386
LM386是美国国家半导体公司生产的音频功率放大 器,主要应用于低电压消费类产品。为使外围元件最少,电压增益内置为20。但在1脚和8脚之间增加一只外接电阻和电容,便可将电压增益调为任意值,直至 200。输入端以地位参考,同时输出端被自动偏置到电源电压的一半,在6V电源电压下,它的静态功耗仅为24mW,使得LM386特别适用于电池供电的场合。LM386是一种音频集成功放,具有自身功耗低、电压增益可调整、电源电压范围大、外接元件少和总谐波失真小等优点,广泛应用于录音机和收音机之中。图为LM386的芯片管脚图。
三、 软件设计
1.音调发生
了解音乐的一些基本知识后可知,产生不同频率的音频脉冲即能产生音乐,对于单片机而言,产生不同频率有脉冲非常方便,可以利用它的定时/计数器来产生这样的方波频率信号,因此,需要弄清楚音乐中的音符和对应的频率,以及单片机定时计数的关系。
在本实验中,单片机工作于12MHZ时钟频率,使用其定时/计数器T0,工作模式为1,改变计数值TH0和TL0可以产生不同频率的脉冲信号,在此情况下,C调的各音符频率与计数值T的对照如下表:
通过该表,就可以通过编程实现按键发声的功能。
2. 4×4矩阵键盘识别处理
键盘只简单地提供按键开关的行列矩阵。有关按键的识别、键码的确定与输入、去抖等功能均由软件完成。
每个按键都有它的行值和列值,行值和列值的组合就是识别这个按键的编码。矩阵的行线和列线通过P3口和单片机相连。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么,还要消除按键在闭合或断开时的抖动。通过行线输出扫描码,使按键逐行动态接地,列线输入按键状态,无键按下,列线输入1,有键按下,列线输入0,由行扫描值和列线的回馈信号共同形成键编码而识别按键,通过软件查表,查出该键功能。
3. 程序流程图
(a) 主程序流程图(b) T0中断服务程序流程图
图-5 主程序和T0中断服务程序流程图
四、 硬件连接图
系统硬件连接如下图所示,单片机P1.0的输出作为音频放大电路的输入,P3口分别作为4×4矩阵键盘的行和列。
五、 课程设计总结
从大一到现在,做过了很多的课程设计也焊过很多的电路板,但是这是第一次接触单片机,也是第一次接触软件和硬件同时开工的课程设计。因为以前的课程设计都是要么纯硬件的焊接,要么就是仅仅只是编程序。而这次把这二者结合了起来对我来说确实是有一定的难度。首先是焊接的方面,虽然这次的电路较为简单,但是16个按钮的连接方式也着实让我为难了一番。其次就是如何将程序烧到芯片里面,这也是一个问题,还好有同学的帮助,用它的实验平台帮我将程序烧了进去。
而这次实验最大的体会便是仔细和认真的态度才能让你成功,所谓慢工出细活,只有一步一步把该做好的东西都做好了,该实现的功能才会实现,实验才会成功。我想这也是电信所有的课程设计想要教会我们的东西吧。
附表:实验所用程序
KEYBUF EQU 30H ;KEYBUF定义为30H STH0 EQU 31H ;STH0 定义为,31H STL0 EQU 32H ;STL0 定义为,32H TEMP EQU 33H ;TEMP 定义为,33H ORG 00H LJMP START ORG 0BH LJMP INT_T0
START: MOV TMOD,#01H ; SETB ET0 ; SETB EA ;WAIT: MOV P3,#0FFH ; CLR P3.4 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1
LCALL DELY10MS ; MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY1 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK1 MOV KEYBUF,#0 LJMP DK1
NK1: CJNE A,#0DH,NK2 ; K1 MOV KEYBUF,#1 LJMP DK1
NK2: CJNE A,#0BH,NK3 ;K2 MOV KEYBUF,#2
设置定时器0的工作方式 设置定时器中断 开总中断
设置P3口为输入模式 ; P3.4清0,按键的第一行扫描延时10ms 键按下 键按下
LJMP DK1
NK3: CJNE A,#07H,NK4 ;K3键按下 MOV KEYBUF,#3 LJMP DK1
NK4: NOP ;K4键按下 DK1: MOV A,KEYBUF MOV B,#2
MOV TEMP,A
MOV DPTR,#TABLE ; MOVC A,@A+DPTR ; MOV STH0,A
MOV TH0,A ; INC TEMP MOV A,TEMP MOVC A,@A+DPTR MOV STL0,A
MOV TL0,A ; SETB TR0 ; DK1A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK1A
CLR TR0 ;NOKEY1: MOV P3,#0FFH ; CLR P3.5 ; MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY2
LCALL DELY10MS ; MOV A,P3 ANL A,#0FH XRL A,#0FH
因为查表里都是字,所以乘2的查表数据指向表头 查表 将数据高位送TH0 将数据低位送TH0 启动定时器T0 关闭定时器T0
设置P3口为输入模式 清0 P3.5,按键的第二行扫描 延时10ms MUL AB ;
JZ NOKEY2 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK5 MOV KEYBUF,#4 LJMP DK2
NK5: CJNE A,#0DH,NK6 ;K5键按下 MOV KEYBUF,#5 LJMP DK2
NK6: CJNE A,#0BH,NK7 ;K6键按下 MOV KEYBUF,#6 LJMP DK2
NK7: CJNE A,#07H,NK8 ;K7键按下 MOV KEYBUF,#7 LJMP DK2 NK8: NOP DK2: MOV A,KEYBUF
MOV B,#2
MUL AB ;因为查表里都是字,所以乘2的查表数据
MOV TEMP,A
MOV DPTR,#TABLE ; 指向表头 MOVC A,@A+DPTR ; 查表 MOV STH0,A ;
MOV TH0,A ;将数据高位送TH0 INC TEMP MOV A,TEMP MOVC A,@A+DPTR MOV STL0,A
MOV TL0,A ;将数据低位送TH0 SETB TR0 ;启动定时器T0 DK2A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK2A
;K8键按下
CLR TR0 ; 关闭定时器T0
NOKEY2: MOV P3,#0FFH ;设置P3口为输入模式 CLR P3.6 ; 清0 P3.6,按键的第三行扫描 MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY3
LCALL DELY10MS ; 延时10ms MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY3 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK9 MOV KEYBUF,#8 LJMP DK3
NK9: CJNE A,#0DH,NK10 ;K9键按下 MOV KEYBUF,#9 LJMP DK3
NK10: CJNE A,#0BH,NK11 ;K10键按下 MOV KEYBUF,#10 LJMP DK3
NK11: CJNE A,#07H,NK12 ;K11键按下 MOV KEYBUF,#11 LJMP DK3
NK12: NOP ; K12键按下 DK3: MOV A,KEYBUF MOV B,#2
MUL AB ;因为查表里都是字,所以乘2的查表数据
MOV TEMP,A
MOV DPTR,#TABLE ;指向表头 MOVC A,@A+DPTR ;查表 MOV STH0,A
MOV TH0,A ;将数据高位送TH0 INC TEMP MOV A,TEMP MOVC A,@A+DPTR MOV STL0,A
MOV TL0,A ;将数据低位送TH0 SETB TR0 ;启动定时器T0 DK3A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK3A
CLR TR0 ;NOKEY3: MOV P3,#0FFH ; CLR P3.7 ; MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4
LCALL DELY10MS ; MOV A,P3 ANL A,#0FH XRL A,#0FH JZ NOKEY4 MOV A,P3 ANL A,#0FH CJNE A,#0EH,NK13 MOV KEYBUF,#12 LJMP DK4
NK13: CJNE A,#0DH,NK14 ; K13 MOV KEYBUF,#13 LJMP DK4
NK14: CJNE A,#0BH,NK15 ;K14 MOV KEYBUF,#14 LJMP DK4
关闭定时器T0
设置P3口为输入模式 清0 P3.7,按键的第四行扫描延时10ms 键按下 键按下
NK15: CJNE A,#07H,NK16 ;K15键按下 MOV KEYBUF,#15 LJMP DK4
NK16: NOP ; K16键按下 DK4: MOV A,KEYBUF MOV B,#2
MOV TEMP,A
MOV DPTR,#TABLE ; MOVC A,@A+DPTR ; MOV STH0,A
MOV TH0,A ; INC TEMP MOV A,TEMP MOVC A,@A+DPTR MOV STL0,A
MOV TL0,A ; SETB TR0 ;DK4A: MOV A,P3 ANL A,#0FH XRL A,#0FH JNZ DK4A
CLR TR0 ; NOKEY4: LJMP WAIT
DELY10MS: MOV R6,#10 ; 10msD1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 RET
INT_T0: CPL P1.0 ; T0 MOV TL0,STL0 RETI
TABLE: DW MUL AB
; 因为查表里都是字,所以乘2的查表数据
指向表头 查表 将数据高位送TH0 将数据低位送TH0 启动定时器T0 关闭定时器T0 延时子程序 中断服务程序,输出方波
MOV TH0,STH0
64021,64103,64260,64400 ;低3,低4,低5,低6
DW 64524,64580,64684,64777 ;低7,中1,中2,中3 DW 64820,64898,64968,65030 ;中4,中5,中6,中7 DW 65058,65110,65157,65178 ;高1,高2,高3,高4 END
正在阅读:
程煜钧 通信1001 基于stc89c52单片机的16音阶电子琴设计06-06
有关抢座位的看图写话作文06-14
《c++》复习题集及答案04-02
关于公司数据中心机房建设方案的汇报04-11
河南专升本院校有哪些06-09
寄语大全之最后一个儿童节寄语(10页)04-02
《道路工程施工技术》复习05-11
中国海洋大学食品考研生物化学2000-2010真题05-13
2018年高考英语二轮复习 第二部分 知识运用篇 专题4 语法填空 第4讲 冠词、介词和代词练案05-28
成功从优秀员工做起演讲稿03-09
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 音阶
- 电子琴
- 单片机
- stc89c52
- 基于
- 通信
- 设计
- 程煜钧
- 1001
- 安全教案卫生安全我做主
- 2教师招聘考试教育学历年真题试卷及答案解1
- 【5】电源滤波器的设计
- 第五章 区域产业布局
- 射线实时成像检测最新欧洲标准
- 词汇学课程论文要求
- 新人教版七年级下册历史第13课灿烂的宋元文化(一)
- 康养中心项目可行性研究报告
- 2015考研数学 复习从打牢基础开始
- 干法净化高炉煤气脉冲布袋除尘器设计
- (人教版2019)生物必修一第二章《组成细胞的分子》单元测试题(含答案)
- 积累人脉先管住嘴,不能乱讲的8种话
- SMA半导体放电管规格书
- 廉颇蔺相如列传(节选)
- 2006年国内专用车领域建设_重组与合资合作项目回顾
- 魔方盲拧彳亍法双字母记忆完整编码表
- 现货白银交易规则
- 南方cass三角网法和方格网法计算土方量
- 各种寿司的做法技巧
- 计算机软件技术基础5-1 数据库