基于单片机的音乐数字钟的设计与仿真毕业设计(编辑修改稿)内容摘要:

的供动态扫描显示的多位数码管,这些数码管内部已经将相应的笔段连接在一起,引出一组段控脚,每一位数码管引出一个公共端。 键盘 方案一I/O 口占用较多。 I/O口的使用。 4*3 的键盘。 基于单片机的音乐数字钟的设计与仿真 14 例 1. 行列键盘的接口电路 行列键盘又叫做矩阵键盘。 行列键盘的接口电路如图 423 所示,用一些 I/O 口线组成行结构,用另一些 I/O 口线组成列结构,其交叉点处不接通,设置为按键,这种接法称为行列式键盘。 利用这种行列结构只需 M 条行线和 N 条列线,就可组成具有 MN 的键盘,因此减 少了键盘与单片机接口时所占用 I/O 接口的数目。 同样,如果是接于 P0 口,必须要有上拉电阻,如果接于 P P2 或 P3 口,上拉电阻可以省略。 图 423 行列式键盘接口电路 2. 闭合键的识别 为了提高 CPU 的效率,对闭合键的识别一般分为两步:第一步是快速检查整个键盘中是否有键按下,如果没有键按下,则直接转到其它程序,如果有键按下,再进行下一步;第二步是确定按下的是哪一个键。 第一步:快速检查整个键盘中是否有键按下。 其方法是先通过输出端口在所有的行线上发出全 “0”信号,然后检查输入端口的列线信号是否为全 “1”。 若为全 “1”,表示无键按下,如图 424( a)所示;若不是全 “1”,则表示有键按下,如图 424( b)所示。 这时还不能确定按下的键处于哪一行上。 基于单片机的音乐数字钟的设计与仿真 15 ( a)无键按下 ( b)有键按下 图 424 检查是否有键按下示意图 第二步:确定按下的是哪一个键。 识别闭合键有两种方法:一种称为逐行扫描法,另一种称为线反转法。 ( 1)逐行扫描法 逐行扫描法是识别闭合键的常用方法,在硬件电路上要求行线作输出、列线作输入,列线上要有上拉电阻。 44 键盘逐行扫描法的工作原理是:先扫描第 0 行, 即输出 1110(第 0 行为 “0”,其余3 行为 “1”),然后读入列信号,判断是否为全 “1”。 若为全 “1”,表示第 0 行无键按下;若不为全 “1”,则表示第 0 行有键按下,闭合键的位置处于第 0 行和不为 “1”的列线相交之处。 如果第 0 行无键按下,就扫描第 1 行,用同样的方法判断第 1 行有没有键按下,直到找到闭合键为止,如图 425(a)~ (d)所示。 ( a)扫描第 0 行 ( b)扫描第 1 行 ( c)扫描第 2 行 ( d)扫描第 3 行 图 425 逐行扫描法示意图 行列式键盘 的闭合键处理程序中,仍需要进行按键去抖和等待按键的释放。 在图 423所示的行列键盘 电路中,采用逐行扫描法识别闭合键的程序如下: P1=0xf0。 基于单片机的音乐数字钟的设计与仿真 16 if (P1!=0xf0) //判断是否有按键按下 { delay()。 //延时去抖 if (P1!=0xf0) //再次判断是否有按键按下 { P1=0xfe。 //扫描第 0 行 switch (P1) { case 0xee:第 0 行第 0 个按键的功能代码。 break。 case 0xde:第 0 行第 1 个按键的功能 代码。 break。 case 0xbe:第 0 行第 2 个按键的功能代码。 break。 case 0x7e:第 0 行第 3 个按键的功能代码。 break。 } P1=0xfd。 //扫描第 1 行 switch (P1) { case 0xed:第 1 行第 0 个按键的功能代码。 break。 case 0xdd:第 1 行第 1 个按键的功能代码。 break。 case 0xbd:第 1 行第 2 个按键的功能代码。 break。 case 0x7d:第 1 行第 3 个按键的 功能代码。 break。 } P1=0xfb。 //扫描第 2 行 switch (P1) { case 0xeb:第 2 行第 0 个按键的功能代码。 break。 case 0xdb:第 2 行第 1 个按键的功能代码。 break。 case 0xbb:第 2 行第 2 个按键的功能代码。 break。 case 0x7b:第 2 行第 3 个按键的功能代码。 break。 } P1=0xf7。 //扫描第 3 行 switch (P1) { case 0xe7:第 3 行第 0 个按键的功能代码。 break。 case 0xd7:第 3 行第 1 个按键的功能代码。 break。 case 0xb7:第 3 行第 2 个按键的功能代码。 break。 case 0x77:第 3 行第 3 个按键的功能代码。 break。 } P1=0xf0。 while (P1!=0xf0)。 } } ( 2)线反转法 线反转法也是识别闭合键的一种常用方法,该方法比行扫描法速度要快,但在硬件电路基于单片机的音乐数字钟的设计与仿真 17 上要求行线与列线都要既能作输出又能作输入,行线和列线上都要有上拉电阻。 下面仍 以 44 键盘为例说明线反转法的工作原理。 首先将行线作为输出线,列线作为输入线,先通过行线输出全 “0”信号,读入列线的值,如果此时有某 1 个键被按下,则必然使某 1 列线值为 “0”;然后将行线和列线的输入输出关系互换(输入输出线反转),列线作输出线、行线作输入线,再通过列线输出全 “0”信号,读入行线的值,那么闭合键所在的行线上的值必定为 “0”。 这样当 1 个键被按下时,必定读得一对唯一的行值和列值,根据这一对值即可确定闭合键。 线反转法示意图如图 426 所示。 ( a)行线输出全 “0”得列值 1101 ( b)列输 出全 “0”得行值 1011 图 426 线反转法示意图 在图 423 所示的行列键盘 电路中,采用线反转法识别闭合键的程序如下: unsigned char temp。 temp=0xff。 P1=0xf0。 if (P1!=0xf0) //判断是否有按键按下 { delay()。 //延时去抖 if (P1!=0xf0) //再次判断是否有按键按下 { P1=0xf0。 //行作输出,列作输入 temp=P1。 //读取列值 P1=0x0f。 //列作输出,行作 输入 temp=temp|P1。 //读取行值并和列值合并 switch (temp) { case 0xee:第 0 行第 0 个按键的功能代码。 break。 case 0xde:第 0 行第 1 个按键的功能代码。 break。 case 0xbe:第 0 行第 2 个按键的功能代码。 break。 case 0x7e:第 0 行第 3 个按键的功能代码。 break。 case 0xed:第 1 行第 0 个按键的功能代码。 break。 case 0xdd:第 1 行第 1 个按键的功能代码。 break。 case 0xbd:第 1 行第 2 个按键的功能代码。 break。 case 0x7d:第 1 行第 3 个按键的功能代码。 break。 case 0xeb:第 2 行第 0 个按键的功能代码。 break。 case 0xdb:第 2 行第 1 个按键的功能代码。 break。 基于单片机的音乐数字钟的设计与仿真 18 case 0xbb:第 2 行第 2 个按键的功能代码。 break。 case 0x7b:第 2 行第 3 个按键的功能代码。 break。 case 0xe7:第 3 行第 0 个按键的功能代码。 break。 case 0xd7:第 3 行第 1 个按键的功能代码。 break。 case 0xb7:第 3 行第 2 个按键的功能代码。 break。 case 0x77:第 3 行第 3 个按键的功能代码。 break。 } P1=0xf0。 while (P1!=0xf0)。 } } 需要说明的是,若用线反转法来确定闭合键时,如果遇到多个键闭合的情况,则得到的行值和列值中一定有 1 个以上的 “0”。 由于按键处理程序中没有这样的值,因而可以判断为重键而丢弃,由此可见,用这种方法可以很方便地解决重键问题。 74LS245 简介 74ls245引 脚图 与用法 74LS245引脚图 74LS245是我们 常用的 芯片, 用来 驱动 led 或 者其他 的设备 ,用法 很简单 如上 图 ,这里 简单 的给 出一些 资料 ,他 是 8路同 相三态 双向总 线收发 器,可 双向传 输数据。 74LS245还具 有双向 三 态 功 能 ,既可 以输出 ,也可 以输入 数据。 当 8051单片 机的 P0口 总线负 载达到 或超过 P0最大负 载能力 时 , 必 须 接入 74LS245等总 线驱动 器。 基于单片机的音乐数字钟的设计与仿真 19 当 片 选 端 /CE 低 电 平 有 效 时 , DIR=“ 0” , 信 号由 B 向 A 传输 ;( 接收) *DIR=“ 1” ,信号由 A 向 B 传输 ;( 发 送 )当 /CE 为高电 平时, A、 B 均为 高阻 态。 蜂鸣器 蜂鸣器 一)蜂鸣器的介绍 1.蜂鸣器的作用 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 2.蜂鸣器的分类 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 3.蜂鸣器的电路图形符号 蜂鸣器在电路中用字母 “H”或 “HA”(旧标 准用 “FM”、 “LB”、 “JD”等)表示。 (二)蜂鸣器的结构原理 蜂鸣器的原理图 1.压电式蜂鸣器 压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。 有的压电式蜂鸣器外壳上还装有发光二极管。 多谐振荡器由晶体管或集成电路构成。 当接通电源后( ~15V 直流工作电压) ,多谐振荡器起振 ,输出 ~ 的音频信号,阻抗匹配器推动压电蜂鸣片发声。 压电蜂鸣片由锆钛酸铅或铌镁酸铅压电陶瓷材料制成。 在陶瓷片的两面镀上银电极, 经极化和老化处理后,再与黄铜片或不锈钢片粘在一起。 基于单片机的音乐数字钟的设计与仿真 20 2.电磁式蜂鸣器 电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。 接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。 振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。 蜂鸣器 的制作 ( 1)制备电磁铁 M:在长约 6厘米的铁螺栓上绕 100圈导线 ,线端留下 5厘米作引线 ,用透明胶布把线圈粘好 ,以免线圈松开 ,再用胶布把它粘在一个盒子上 ,电磁铁就做好了 . ( 2)制备弹片 P:从铁罐头盒上剪下一条宽约 2厘米的长铁片,弯成直 角,把电磁铁的一条引线接在弹片上,再用胶布把弹片紧贴在木板上. ( 3)用曲别针做触头 Q,用书把曲别针垫高,用胶布粘牢,引出一条导线,如图连接好电路. ( 4)调节 M 与 P 之间的距离(通过移动盒子),使电磁铁能吸引弹片,调节触点与弹片之间的距离,使它们能恰好接触,通电后就可以听到蜂鸣声。 3 控制部分电路的设计 系统复位设置 单片机复位电路是使 CPU 和系统中的其他功能部件都处在一个确定的初始状态, PC=0000H论是在单片 单片机各种复位电路原理 复位电路的作用 在上电或复位过程中,控制 CPU 的复位状态:这段时间内让 CPU 保持复位状态,而不是一上电或刚复位完毕就工作,防止 CPU 发出错误的指令、执行错误操作,也可以提高电磁兼容性能。 无论用户使用哪种类型的单片机 ,总要涉及到单片机复位电路的设计。 而单片机复位电路设计的好坏 ,直接影响到整个系统工作的可靠性。 许多用户在设计完单片机系统 ,并在实验室调试成功后 ,在现场却出现了“死机”、“程序走飞”等现象 ,这主要是单片机的复位电路 设计不可靠引起的。 基本的复位方式 单片机在启动时都需要复位,以使 CPU 及系统各部件处于确定的初始状态,并从初态开始工作。 89 系列单片机的复位信号是从 RST 引脚输入到芯片内的施密特触发器中的。 当系统处于正常工作状态时,且振荡器稳定后,如果 RST 引脚上有一个高电平并维持 2 个机器周期 (24 个振荡周期 )以上,则 CPU 就可以响应并将系统复位。 单片机系统的复位方式有:手动按钮复位和上电复位 手动按钮复位 手动按钮复位需要人为在复位输入端 RST 上加入高电平(图 1)。 一般采用的办法是在RST 端和正电源 Vcc 之间 接一个按钮。 当人为按下按钮时,则 Vcc 的 +5V 电平就会直接加到 RST 端。 手动按钮复位的电路如所示。 由于人的动作再快也会使按钮保持接通达数十毫基于单片机的音乐数字钟的设计与仿真 21 秒,所以,完全能够满足复位的时间要求。 数字时钟的设计 而。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。