中国矿业大学
计算机科学与技术学院
2017 级本科生课程报告
课程名称 硬件课程设计
设计题目 存储式电子琴设计(C 语言)
开课学期 2019-2020 第一学期
报告时间 2019 年 12 月 26 日
学生姓名 王斌
学
班
专
号 08173040
级 计科 6 班
业 计算机科学与技术
任课教师 王凯
《硬件课程设计》课程报告评分表
开课学期:2019-2020 第一学期
姓名:王斌
序
号
毕业
要求
学号:08173040
课程教学目标
专业班级:计科 6 班
考查方式与考查点 占比 得分
1
1.3
2
4.3
3
9.1
目标 1:了解微机应用系统解决复杂
工程问题的基本方法。掌握微机应
用系统硬件电路设计及软件功能需
求分析方法和模型。能够针对微机
系 统 应 用 领 域 工 程 需 求 的 系 统 要
求,进行分析与设计。
目标 2:能够针对硬件电路组成需求
描述进行系统硬件设计,能够分析
系统功能的软件需求,根据模块设
计原则,综合考虑系统的算法模型
和软硬件开发,进行合理的方案设
计、编程实现、系统测试及对设计
方案进行优化。
目标 3:具备多学科背景知识,并制
定项目计划,能够按照标准规范进
行设计。能够在多学科背景下具备
独立分析问题解决问题的能力。
4
10.3
目标 4:掌握设计报告撰写,通过成
果演示、陈述发言的清晰表达、回
答问题准确性等。
5
12.1
目标 5:对选题主动通过各种途径寻
求解决方法(主动查阅资料、请教
老师、同学讨论等)。通过各种资
源平台的使用及教师意见的反馈,
完成高质量的设计任务,有无创新
意识。
中期检查与设计文档
掌握解决复杂工程问题的
基本方法。微机应用系统
10%
软硬件设计相关的理论知
识。
中期检查与设计文档
考核题目需求分析和功能
分析;综合知识应用能力
及设计方案的完整性;
考核软件编程及系统调试
测试,设计方案进行优化。
30%
中期检查与设计文档
考核独立分析问题解决问
题的能力
10%
现场验收与答辩
考核编程实现的代码难度
和复杂性、设计工作量等;
考核设计成果、所涉及的
问题答辩。验收设计报告
的结构合理性、内容和图
表的正确性。验收设计报
告排版的规范性。
40%
现场验收与答辩
考核设计成果完整性;所
涉 及 的 设 计 课 题 的 创 新
性。
10%
总成绩
100%
任课教师:
年
月
日
目 录
1. 绪论...................................................................................................................................... 1
1.1 问题提出..................................................................................................................... 1
1.2 设计任务与要求......................................................................................................... 1
2.系统设计需求分析................................................................................................................ 2
2.1 开发环境及开发平台................................................................................................. 2
2.2 设计的主要算法及分析............................................................................................. 2
2.2.1 程序的主要算法.............................................................................................. 2
2.2.2 识别 4*4 键盘所按下的按键部分的算法...................................................... 2
2.2.3 显示预存歌曲名部分的算法.......................................................................... 3
2.3 系统的组成及工作原理............................................................................................. 3
2.3.1 系统组成.......................................................................................................... 3
2.3.2 工作原理.......................................................................................................... 4
3.系统的总体设计.................................................................................................................... 7
3.1 系统功能层次图......................................................................................................... 7
3.2 系统功能描述............................................................................................................. 7
4.系统的详细设计.................................................................................................................... 9
4.1 主程序设计................................................................................................................. 9
4.1.1 程序流程图...................................................................................................... 9
4.1.2 系统功能描述.................................................................................................. 9
4.2 LCD 屏显示模块设计................................................................................................ 10
4.2.1 程序流程图.................................................................................................... 10
4.2.2 系统功能描述................................................................................................ 10
4.3 键盘识别模块设计................................................................................................... 11
4.3.1 程序流程图.................................................................................................... 11
4.3.2 系统功能描述................................................................................................ 11
4.4 弹奏模块设计........................................................................................................... 12
4.4.1 程序流程图.................................................................................................... 12
4.4.2 系统功能描述................................................................................................ 13
4.5 播放预存歌曲模块设计........................................................................................... 14
4.5.1 程序流程图.................................................................................................... 14
4.5.2 系统功能描述................................................................................................ 14
4.6 高中低音转换模块设计........................................................................................... 15
4.6.1 程序流程图.................................................................................................... 15
4.6.2 系统功能描述................................................................................................ 15
4.7 录音模块设计........................................................................................................... 16
4.7.1 程序流程图.................................................................................................... 16
4.7.2 系统功能描述................................................................................................ 16
4.8 播放录音模块设计................................................................................................... 17
4.8.1 程序流程图.................................................................................................... 17
4.8.2 系统功能描述................................................................................................ 17
4.9 运行界面截图........................................................................................................... 18
5.系统测试.............................................................................................................................. 19
5.1 项目创建过程........................................................................................................... 19
5.2 遇到的问题与解决办法........................................................................................... 19
6.系统设计结果分析及结论.................................................................................................. 20
7.设计体会.............................................................................................................................. 20
参考文献.................................................................................................................................. 21
附录.......................................................................................................................................... 22
1.绪论
1.1 问题提出
作为新时代的产物,电子琴具有便携、体积小、重量轻、音色多等其他乐器无法比
拟的优势。目前我国接触电子琴文化的人有数亿人,正在学习电子琴的人数也在逐年上
长。我国已成为全世界电子琴拥有量最大、普及率最高的国家。通过本次硬件课程设计,
我可以在实验室中研究简单的可存储式电子琴,了解其中基础的理论与原理。针对可存
储式电子琴,所提出的首要问题如下:
问题一:设计的电子琴具有哪些功能?
问题二:应该选用哪些硬件来实现?
问题三:如何发出不同频率的声音?
问题四:如何实现录音和播放录音的功能?
问题五:使用 C 语言编程需要哪些动态库和静态库,有哪些接口函数
1.2 设计任务与要求
本次硬件课程选题为存储式电子琴。设计任务为利用实验平台的 8255 芯片、8254
芯片、键盘部分以及扬声器等硬件,通过编程,使其分工协作,紧密联系在一起,来模
拟一台电子琴,并使其具有弹奏乐曲、切换高中低音、播放预存音乐、录音、播放录音
的功能。要求利用 8255 控制键盘模拟电子琴键盘,由 8253 产生音节频率输出,完成弹
奏乐曲。设定存储键完成所弹奏乐曲的存储,并设计回放键播放所存储的乐曲。使用 C
语言,并添加 12864LCD,用来显示预存的歌曲。
1
2.系统设计需求分析
2.1 开发环境及开发平台
开发环境:
操作系统:Windows 7 64 位
集成开发环境:VC6.0
开发平台:
TPC-ZK-II 综合开放式微机原理及接口技术实验系统
2.2 设计的主要算法及分析
2.2.1 程序的主要算法
1.启动设备;
2.显示预存歌曲名;
3.若电脑键盘没有键按下,转 4,否则转 10;
4.等待并识别 4*4 键盘按下的按键,若按下的按键为 1-7,转 5;若按下的按键为 8 或 9,
转 6;若按下的按键为 A-C,转 7;若按下的按键为 D,转 8;若按下的按键为 E,转 9。
若上述条件均不满足,则继续识别按键。
5.发出相应的音调,延时一段时间后停止发声,转 4;
6.播放预存音乐,转 4;
7.按键 A-C 分别对应设置电子琴发音为高、中、低音,转 4;
8.设置当前模式为录音模式,存储接下来弹奏的乐曲,转 4;
9.取消录音模式,播放存储的音乐,转 4;
10.关闭设备,退出程序。
2.2.2 识别 4*4 键盘所按下的按键部分的算法
1.设置 8255 芯片 C 端口高四位输出,低四位输入;
2
2.向 C 口高四位送 0;
3.读 C 口值存放到变量 i 中,若低四位值全为 1,转 1,否则转 4;
4.设置 8255 芯片 C 端口高四位输入,低四位输出;
5.向 C 口低四位送 0;
6.读 C 口值并与 i 进行按位或,得到按键编码;
7.查表,得到 6 中编码对应的按键。
2.2.3 显示预存歌曲名部分的算法
1.初始化 LCD,将其整体显示设置为“ON”,并初始化 8255;
2.设置要显示汉字的起始行端口地址;
3.将歌曲名各个汉字的编码依次写入 LCD。
2.3 系统的组成及工作原理
2.3.1 系统组成
硬件选择:8255 芯片和 8254 芯片,4*4 键盘,喇叭单元,12864LCD。
系统的接线如下图所示:
图 2-1 系统接线图
3
2.3.2 工作原理
系统通过 8255 芯片向 4*4 键盘的行线和列线分别送 0,再分别读取键盘的列线和行
线状态,从而得到按键编码,通过查编码表即可得到所按下的按键。通过向 8254 写入
不同的计数初值,8254 可以输出不同频率的方波,如果用 8255 的输出口连接 8254 输出
一同连接到与门的输入,再将与门的输出连接到喇叭单元,则可以控制喇叭的发声与停
止发声,从而实现发出不同频率的声音,并可以控制发声时长。通过向 LCD 写入不同指
令以及字符编码,可以使 LCD 显示不同字符。各个硬件的组成以及工作原理如下:
可编程计数器/定时器 8253
在本次课程设计中 8253 的功能为:产生与各音符频率一致的方波。通道 0 工作在
方式 3 下,先低后高写入计数初值,并采用二进制计数。每个音阶都有一个确定的频率,
计数初值 N=时钟频率/音阶频率。C 调各音符对应的频率如下表所示:
表 2-1 音符频率表
音符
频率(低)
频率(中)
1
262
523
2
294
587
3
330
659
4
349
698
5
392
784
6
440
880
7
494
988
频率(高) 1046
1175
1318
1397
1568
1760
1976
可编程外围接口芯片 8255
在本次课程设计中 8255 的功能为:
(1)识别键盘所按下的按键:先向行线送 0,读取并保存列线的值;再向列线送 0,
读取并保存行线的值,将两个值按位相与,得到能唯一确定所按下按键的编码值。从而
确定所按下的按键。各按键对应编码值如表 2.2 所示。
表 2-2 键盘按键对应的键值
按键
0
1
2
3
4
5
6
7
键值 0x77
0x7b
0x7d
0x7e
0xb7
0xbb
0xbd
0xbe
按键
8
9
A
B
C
D
E
F
键值 0xd7
0xdb
0xdd
0xde
0xe7
0xeb
0xed
0xee
4