基于单片机控制的电子琴设计毕业设计(编辑修改稿)内容摘要:

,需要设置入口、输出口一个,该方法在微机系统中被广泛使用。 线反转法的基本思想是通过行列颠倒两次扫描来识别闭合键,为此需要提供两个可编程的双向输入 /输出端口。 ( 4)键码产生:为了从键的行列坐标编码得到反映键功能的键码,一般在内存区中建立一个键盘编码表,通过查表获得被按键的键码。 用 AT89S51 的并行口 P1 接 4 4 矩阵键盘,以 - 作输入线,以 - P1.7 作输出线; 图 41 键盘识别模块 系统板上硬件连线设计 键盘模块硬件连线如图 41 所示: ( 1.把“单片机系统“区域中的 - 端口用 8 芯排线连接到“ 4X4 行列式键盘”区域中的 C1- C4 R1- R4 端口上; 程序设计 要求 ( 1. 4 4 矩阵键盘识别处理。 ( 2.每个按键有它的行值和列值,行值和列值的组合就是识别这个按键的编码。 矩阵的行线和列线分别通过两并行接口和 CPU 通信。 每个按键的状态同样需变成数字量“ 0”和“ 1”,开关的一端(列 线)通过电阻接 VCC,而接地是通过程序输出数字“ 0”实现的。 键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。 两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。 键盘识别程序框图 键盘识别程序框图如图 42 所示 : 图 42 键盘识别程序框图 触摸式 模块的实现原理 及分析 图 43 触摸式开关电路 从图 43 中 ,开始通电时,由于继电器不吸合,电器电源回路未接通而不工作。 当用手指接触金属片 A 时,人体感应信号加至 BG3 基极,令其导通. R1 获得压降,使 BG2 正偏导通,继而 BG1 导通, LED 点亮,同时继电器 J 得电流动作.其常开触点吸合,接通电器电源回路,电器开始工作。 此时,手 指离开金属触片 A,继电器常开触点 Jk 仍可靠地吸合。 当需要关闭用电器时.用户只要触摸金属片 B,使 BG4 导通,此时相当于 BG1 基极对地短路.因此 BGBG2 同时截止,继电器失去电流触点 Jk 释放,从而切断电器供电电源。 所需元件按照电路图中的标注选择,继电器可根据用电器的功率选择触点电流合适的即可。 单片机产生音乐原理 乐音实际上是有固定周期的信号。 我们可以用 AT89s51 的一个定时器(如 T1)控制,在 P3. 4脚上输出方波周期信号,产生乐音。 根据不同的按键,调节 T1 的溢出时间,可输出不同频率的乐 音,每个乐音的音高(频率)是固定的,表 1 列出了一个 8 度以及其上下共 16 个音的音名、频率及定时器 T1 初值对照(设晶体频率为 6MHz),供参考 44 图 44 音名 ,频率 ,及 T1 初值对照表 音乐产生程序原理图 图 45 音乐产生原理程序图 5 PCB 电路板图 6 汇编程序 KEYBUF EQU 30H。 KEYBUF 定义为 ,30H STH0 EQU 31H。 STH0 定义为 ,31H STL0 EQU 32H。 STL0 定义为 ,32H TEMP EQU 33H。 TEMP 定义为 ,33H ORG 00H。 定义当前位置为 00H LJMP START。 长转移到 START ORG 0BH。 定义当前位置为 0BH LJMP INT_T0。 长转移到 INT_T0 START:MOV TMOD,01H。 传送 TMOD,立即数 01H SETB ET0。 位 置 1 ET0 SETB EA。 位 置 1 EA WAIT:。 MOV P3,0FFH。 传送 接口 3,立即数 0FFH CLR。 清 0 接口 3第 4位 MOV A,P3。 传送 寄存器 A,接口 3 ANL A,0FH。 逻辑 与 寄存器 A,立即数 0FH XRL A,0FH。 逻辑 异或 寄存器 A,立即数 0FH JZ NOKEY1。 寄存器为 0转移 NOKEY1 LCALL DELY10MS。 长调用 DELY10MS MOV A,P3。 传送 寄存器 A,接口 3 ANL A,0FH。 逻辑 与 寄存器 A,立即数 0FH XRL A,0FH。 逻辑 异或 寄存器 A,立即数 0FH JZ NOKEY1。 寄存器为 0转移 NOKEY1 LCALL DELY10MS。 长调用 DELY10MS MOV A,P3。 传送 寄存器 A,接口 3 ANL A,0FH。 逻辑 与 寄存器 A,立即数 0FH CJNE A,0EH,NK1。 比较 不等转移 寄存器 A,立即数 0EH, MOV KEYBUF,0。 传送 KEYBUF,立即数 LJMP DK1。 长转移到 DK1 NK1:CJNE A,0DH,NK2。 比较 不等转移 寄存器 A,立即数 0DH, MOV KEYBUF,1。 传送 KEYBUF,立即数 1 LJMP DK1。 长转移到 DK1 NK2:CJNE A,0BH,NK3。 比较 不等转移 寄存器 A,立即数 0BH, MOV KEYBUF ,2。 传送 KEYBUF ,立即数 2 LJMP DK1。 长转移到 DK1 NK3:CJNE A,07H,NK4。 比较 不等转移 寄存器 A,立即数 07H, MOV KEYBUF ,3。 传送 KEYBUF ,立即数 3 LJMP DK1。 长转移到 DK1 NK4:NOP。 空操作 DK1:。 MOV A ,KEYBUF。 传送 A ,KEYBUF MOV DPTR,TABLE。 传送 DPTR,立即数 TABLE MOVC A,@A+DPTR。 程序存储器 读 寄存器 A,A+DPTR指向的单元的内容 MOV P0,A。 传送 接口 0,寄存器 A MOV A,KEYBUF。 传送 寄存器 A,KEYBUF MOV B,2。 传送 B,立即数 2 MUL AB。 两数相乘 AB MOV TEMP,A。 传送 TEMP,寄存器 A MOV DPTR,TABLE1。 传送 DPTR,立即数 TABLE1 MOVC A,@A+DPTR。 程序存储器 读 寄存器 A,A+DPTR指向的单元的内容 MOV STH0,A。 传送 STH0,寄存器 A MOV TH0,A。 传送 TH0,寄存器 A INC TEMP。 加 1 TEMP MOV A,TEMP。 传送 寄存器 A,TEMP MOVC A,@A+DPTR。 程序存储器 读 寄存器 A,A+DPTR指向的单元的内容 MOV STL0,A。 传送 STL0,寄存器 A MOV TL0,A。 传送 TL0,寄存器 A SETB TR0。 位 置 1 TR0 DK1A:MOV A,P3。 传送 寄存器 A,接口 3 ANL A,0FH。 逻辑 与 寄存器 A,立即数 0FH XRL A,0FH。 逻辑 异或 寄存器 A,立即数 0FH JNZ DK1A。 寄存器不为 0转移 DK1A CLR TR0。 清 0 TR0 NOKEY1:。 MOV P3,0FFH。 传送 接口 3,立即数 0FFH CLR。 清 0 接口 3第 5位 MOV A,P3。 传送 寄存器 A,接口 3 ANL A,0FH。 逻辑 与 寄存器 A,立即数 0FH XRL A,0FH。 逻辑 异或 寄存器 A,立即数 0。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。