本科毕业论文-—基于单片机的音乐数字钟的设计与仿真.doc
基于单片机的音乐数字钟的设计与仿真 郑州轻工业学院轻工职业学院专科毕业设计 题 目 基于单片机的音乐数字钟的设计与仿真 学生姓名 张培成 专业班级 自动化生产设备及应用121 学 号 院 (系)机电工程系 指导教师(职称) 徐艳 完成时间 2基于单片机的音乐数字钟的设计与仿真摘要 近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。单片机是单片微型计算机的简称,随着制造集成电路技术的发展可以将完成计算机功能的零部件集成在一个芯片上。这样的一个芯片就具有计算机的全部或大部分功能,称为单片机微型计算机,简称单片机。关键词 单片机/设计/开发/调试40Music based on single chip microcomputer digital clock design and simulationABSTRACT In recent years, along with the computer penetration in the field of society and the development of large scale integrated circuit, SCM applications are constantly go, because it has strong function, small volume, low power consumption, cheap, reliable work, convenient use, etc, therefore particularly suitable for related to the control system, more and more widely used in automatic control, intelligent instruments, meters, data acquisition, military products and household appliances and other fields, the microcontroller is often used as a core component, in according to the specific hardware structure, and in combination with the software according to the characteristics of the specific application object, to be improved. Microcontroller is short for single chip microcomputer, with the development of integrated circuit technology manufacturing complete computer functions of components can be integrated on a chip. Such a chip has all or most of the function of the computer, known as the single chip microcomputer, referred to as "single chip microcomputer.KEY WORDS SCM,design,development,debugging目录摘要 ············································1ABSTRACT ········································21课题介绍 ······································5 1.1 单片机与单片机系统 ·······················52单片机系统的硬件设计 2.1系统构成 2.1.1AT89C51芯片的介绍 ·····················6 2.1.2引脚功能 ·······························92.2显示部分 2.2.1 LED显示器·····························92.2.2 LED数码显示管的基本原理 ··············92.2.3 数码管显示模块分析 ···················112.3 键盘 ·······································132.4 74LS245简介 ································182.5 蜂鸣器 ····································193 控制部分电路的设计 3.1 系统复位设置 ····························20 3.2 数字时钟的设计 ··························21 3.3 音乐模块 ································22 4 硬件电路端口分配 ···························24 5 软件设计 5.1 程序 ····································25 5.2 Proteus软件仿真与实现 ··················32结束语 ··········································35致谢 ············································36参考文献 ········································36 1 课题介绍本设计是基于单片机的音乐数字钟设计,由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机电子音乐数字钟。要求利用I/O口产生一定频率的方波,来驱动蜂鸣器,发出相应的音调。可通过功能键选择乐曲,暂停,播放。本设计采用4*3键盘,七段显示数码管LED。蜂鸣器、按键电路、复位电路、时钟电路,通过软件程序来控制单片机内部的定时器使其产生音乐频率。与传统的机械式相比,用单片机设计的音乐数字钟体积更小巧,且制作工艺简单。课设准备中根据具体的要求,查找资料,然后根据已经学过的始终程序编写定时闹钟的程序,依据程序利用Proteus软件进行了仿真实验,对出现的问题进行分析和反复修改原程序,最终得到正确并符合要求的结果。1.1 机与单片机系统随着电子技术的发展,电子设备、仪器的智能化水平越来越高,而且越来越来多的家用电器具备了“自动”、“智能”、“电脑”和“微电脑控制”等功能,如全自动洗衣机、智能冰箱、电脑万年历、微电脑控制电磁炉等。这些“自动”、“智能”和“电脑控制”是怎么回事?又是如何实现的呢?事实上,能够实现这些功能全是单片机的功劳,下面我们就先来认识一下单片机吧。一、什么是单片机大家都使用过计算机,我们知道计算机最主要的部分就是主板了。主板就是一块电路板,在这块电路板上有CPU、存储器、时钟等,还有很多接口电路,以便和各种设备连接。如果把这些组成计算机的基本部件集成在一块集成电路上就构成了单芯片微型计算机。单片微型计算机,简称单片机,它是把组成微型计算机的各功能部件:中央处理器CPU、随机存取存储器RAM、只读存储器ROM、多种I/O接口电路、定时器/计数器、中断系统以及串行通讯系统等部件制作在一块硅片上,构成一个小而完善的微型计算机系统。有的单片机可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路。单片机示意图如图1-34所示。CPU 中央处理器(运算器和控制器)时钟电路只读存储器随机存储器定时器/计数器输入/输出接口中断系统图1-34 单片机示意图单片机既是一块集成电路,也是一个微型计算机,和计算机相比,单片机缺少了外围设备等。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。各种单片机实物图如图1-35所示。AT89S51-DIP STC89C52RC-DIP AT89S52-TQFP AT89C2051-DIP 图1-35 各种单片机实物图单片机是其早期的含义,由于单片机更多的应用于控制系统及与控制有关的数据处理场合,是典型的嵌入式微控制器,因而目前应确切称其为微控制器(Microcontroller Unit),英文缩写为MCU,单片机的称谓只是保留了其习惯称呼。单片机的应用从根本上改变着传统的控制系统设计思想和设计方法。以往由继电器接触器控制,模拟电路、数字电路实现的大部分控制功能,现在都能够使用单片机通过软件的方式来实现,这种以软件取代硬件并能够提高系统性能的微控制技术,随着单片机应用的推广普及,不断发展,日益完善。因此,了解单片机,掌握其应用及开发技术,具有划时代的意义。二、什么是单片机系统在各类电子产品中,利用单片机实施控制的系统称为单片机应用系统。单片机应用系统是由硬件系统和软件系统两部分组成,二者缺一不可,如图1-36所示。单片机接口电路及外设等单片机程序+硬件软件单片机应用系统图1-36 单片机应用系统硬件是应用系统的基础,软件则是在硬件的基础上对其资源进行合理调配和使用,从而完成应用系统所要求的任务,软件是单片机应用系统的灵魂。2单片机系统的硬件设计 2.1系统构成 2.1.1 AT89C51芯片的介绍 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压高性能CMOS8位微处理器俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中ATMEL的AT89C51是一种高效微控制器为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 1>主要特性 ·与MCS-51 兼容 ·4K字节可编程闪烁存储器 ·寿命1000写/擦循环 ·数据保留时间10年 ·全静态工作0Hz-24Hz ·三级程序存储器锁定 ·128*8位内部RAM ·32可编程I/O线 ·两个16位定时器/计数器 ·5个中断源 ·可编程串行通道 ·低功耗的闲置和掉电模式 ·片内振荡器和时钟电路 2> 管脚说明如图3.1 图3.1 VCC供电电压。 GND接地。图 3.1 P0口P0口为一个8位漏级开路双向I/O口每脚可吸收8TTL门电流。当P1口的管脚第一次写1时被定义为高阻输入。P0能够用于外部程序数据存储器它可以被定义为数据/地址的第八位。在FIASH编程时P0 口作为原码输入口当FIASH进行校验时P0输出原码此时P0外部必须被拉高。 P1口P1口是一个内部提供上拉电阻的8位双向I/O口P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后被内部上拉为高可用作输入P1口被外部下拉为低电平时将输出电流这是由于内部上拉的缘故。在FLASH编程和校验时P1口作为第八位地址接收。 P2口P2口为一个内部上拉电阻的8位双向I/O口P2口缓冲器可接收输出4个TTL门电流当P2口被写“1”时其管脚被内部上拉电阻拉高且作为输入。并因此作为输入时P2口的管脚被外部拉低将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时P2口输出地址的高八位。在给出地址“1”时它利用内部上拉优势当对外部八位地址数据存储器进行读写时P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口P3口管脚是8个带内部上拉电阻的双向I/O口可接收输出4个TTL门电流。当P3口写入“1”后它们被内部上拉为高电平并用作输入。作为输入由于外部下拉为低电平P3口将输出电流ILL这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口如下表所示 管口管脚 备选功能 P3.0 RXD串行输入口 P3.1 TXD串行输出口 P3.2 /INT0外部中断0 P3.3 /INT1外部中断1 P3.4 T0记时器0外部输入 P3.5 T1记时器1外部输入 P3.6 /WR外部数据存储器写选通 P3.7 /RD外部数据存储器读选通 P3口同时为闪烁编程和编程校验接收一些控制信号。 RST复位输入。当振荡器复位器件时要保持RST脚两个机器周期的高电平时间。 ALE/PROG当访问外部存储器时地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间此引脚用于输入编程脉冲。在平时ALE端以不变的频率周期输出正脉冲信号此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是每当用作外部数据存储器时将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时 ALE只有在执行MOVXMOVC指令是ALE才起作用。另外该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止置位无效。 /PSEN外部程序存储器的选通信号。在由外部程序存储器取指期间每个机器周期两次/PSEN有效。但在访问外部数据存储器时这两次有效的/PSEN信号将不出现。 /EA/VPP/EA保持低电平时在此期间外部程序存储器0000H-FFFFH不管是否有内部程序存储器。注意加密方式1时/EA将内部锁定为RESET当/EA端保持高电平时此间内部程序存储器。在FLASH编程期间此引脚也用于施加12V编程电源VPP。 XTAL1反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2来自反向振荡器的输出。 3 >振荡器特性 XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为 片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器因此对外部时钟信号的脉宽无任何要求但必须保证脉冲的高低电平要求的宽度。 4> 芯片擦除 整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合并保持ALE 管脚处于低电平10ms 来完成。在芯片擦操作中代码阵列全被写“1”且在任何非空存储字节被重复编程以前该操作必须被执行。此外AT89C51设有稳态逻辑可以在低到零频率的条件下静态逻辑支持两种软件可选的掉电模式。在闲置模式下CPU停止工作。但RAM定时器计数器串口和中断系统仍在工作。在掉电模式下保存RAM的内容并且冻结振荡器禁止所用其他芯片功能直到下一个硬件复位为止。2.2显示部分 2.2.1 LED显示器基本介绍 LED显示屏(LED panel),是一种通过控制半导体发光二极管的显示方式,用来显示文字、图形、图像、动画、行情、视频、录像信号等各种信息的显示屏幕。LED显示器分类 (1)按字高分:笔画显示器字高最小有1mm(单片集成式多位数码管字高一般在23mm)。其他类型笔画显示器最高可达12.7mm(0.5英寸)甚至达数百mm。(2)按颜色分有红、橙、黄、绿等数种。(3)按结构分,有反射罩式、单条七段式及单片集成式。(4)从各发光段电极连接方式分有共阳极和共阴极两种。 2.2.2 LED显示器工作原理 多个发光二极管封装在一起的七段数码显示器按其连接形式可分为共阳显示器和共阴显示器。图7-1所示为共阳和共阴的七段显示器,在显示器中除了显示数字必须的七段笔画外,还提供了小数点。共阳显示器的阳极连接在一起,此时对阳极提供一正电压,通过限流电阻控制其阴极为高电平或是低电平来决定其暗或是亮。共阴显示器的阴极连在一起,此时可将阴极接地,通过限流电阻控制其阳极为高电平或是低电平来决定其亮或是暗。图7-1七段数码显示器采用七段数码显示器显示的字型受到显示器本身结构的限制。因此,在显示比较复杂的字符、汉字或图形时,可采用点陈显示的办法。用单片机驱动LED数码管有很多方法按显示方式分有静态显示和动态显示按译码方式可分为硬件译码和软件译码。 静态显示是显示驱动电路具有输出锁存功能单片机将要显示的数据送出后不再控制LED直到下次显示时再传送一次新的显示数据。静态显示的数据稳定占用CPU时间少。 动态显示要CPU时刻对显示器件进行刷新显示数据有闪烁感占用CPU时间多。 这两种显示方式各有利弊静态显示虽然数据显示稳定占用很少的CPU时间但每个显示单元都需要单独的显示驱动电路使用的电路硬件较多动态显示虽然有闪烁感占用的CPU时间多但使用的硬件少能节省线路板空间。 动态扫描显示接口是单片机中应用最广泛的一种显示方式。其接口电路是把所有LED显示器的8个笔划段AD、DP的同名端连在一起而每一个数码管的公共端COM是各自独立地受I/O线控制。CPU向字段输出口送出字形码时所有显示器接受到相同的字形码但究竟是哪个显示器亮则取决于COM端而这一端是由I/O控制的可以自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的方法轮流控制各个显示器的COM端是各个显示器轮流点亮。 在轮流点亮扫描过程中每位显示器的点亮时间是极为短暂的约1ms左右但由于人的视觉暂留现象及发光二极管的余辉效应尽管实际上各位显示器并非同时点亮但只要扫描的速度足够快给人的印象就是一组稳定的显示数据不会有闪烁感。 从上述的论述中可以看出动态显示方案具备一定的实用性也是目前单片机数码管显示中较为常用的一种显示方法。所以本设计也采用动态显示方案。 2.2.3 数码管显示模块分析 译码器驱动数码管显示数值, 显示部分采用普通共阳极数码管显示采用动态扫描,以减少硬件电路。考虑到一次扫描12位数码管显示时会出现闪烁情况设计时分两排显示一排显示时间和年月日一排显示星期和温度 共阳极数码管中8个发光 二极管的阳极二极管正端连在一起。通常公共阳极接高电平一般接电源其它管脚接段驱动电路输出端。当某段驱动电路的输入端为低电平时该端所连接的字段导通并点亮。根据发光字段的不同组合可显示出各种数字或字符。此时要求段驱动电路能吸收额定的段导通电流还需根据外接电源及额定段导通电流来确定相应的限流电阻。采用动态显示方式比较节省I/O口硬件电路也较静态显示简单但其亮度不如静态显示方式而且在显示位数较多时CPU要依次扫描占用CPU较多时间。 为了提供共阳LED数码管的驱动电压用三极管9012作电源驱动输出。采用12MHz晶振有利于提高秒计时的精确性。数码管字形段码共阴型和共阳型的LED数码管各笔划段名和安排位置是相同的,分别用a、b、c、d、e、f、g和dp表示,如图4-15(a)所示。将单片机的一个8位并行I/O接口与七段LED数码管的管脚ag端及dp端对应相连,并输出不同的8位二进制数,即可显示不同的数字或字符。控制8个发光二极管的8位二进制数称为段码。例如,对于共阳极型LED数码管,当公共阳极接高电平,单片机并行口输出二进制数11000000(对应十六进制数C0)时,显示数字“0”,则数字“0”的段码是0xC0。依此类推可求得数码管段码表如表4-2所示。表4-2 七段LED数码管段码表显示字符字形共 阳 极共 阴 极dpgfedcba段码dpgfedcba段码0110000000xC0001111110x3F1111110010xF9000001100x062101001000xA4010110110x5B3101100000xB0010011110x4F4100110010x99011001100x665100100100x92011011010x6D6100000100x82011111010x7D7111110000xF8000001110x078100000000x80011111110x7F9100100000x90011011110x6F熄灭111111110xFF000000000x00小帖士:在单片机系统开发时,有时为了接线方便,有时不按I/O口的高低位与数码管各段的顺序接线,这时的段码就需要根据接线进行调整。数码管的静态显示方式数码管的静态显示是指数码管显示某一数字或字符时,相应的发光二极管恒定导通或恒定截止。这种显示方式的各位数码管相互独立,公共端恒定接地(共阴极)或接正电源(共阳极)。每个数码管的8个笔段分别与一个8位I/O口相连,I/O口只要有段码输出,相应字符即显示出来,并保持不变,直到I/O口输出新的段码,其示意图如图4-17所示。采用静态显示方式占用CPU时间少、编程简单、便于控制,但是每1个数码管要占用一个并行I/O口,所以只适合于显示位数较少的场合。 (a)显示数字“0” (b)显示数字“5”图4-17 数码管静态显示方式示意图数码管的动态扫描显示方式当单片机系统中需要多个数码管显示时,如果采用静态显示方式,并行I/O接口的引脚数将不能满足需要,这时可采用动态扫描显示方式。动态扫描显示是一位接一位的轮流点亮各位数码管。动态扫描显示方式在接线上不同于静态显示方式,它是将所有七段LED数码管的8个显示笔段a、b、c、d、e、f、g、dp中相同的笔段连接在一起,称为段控端,每个数码管的公共端COM不再接固定高电平或低电平,而是由独立的I/O口线控制,称为位控端,2位数码管动态扫描显示方式接线示意图如图4-18所示。图4-18 两位数码管动态扫描显示方式接线示意图动态扫描显示方式的显示过程:当CPU送出某个数字的段码时,所有的数码管都会接收到,但只有需要显示的数码管的位控端COM被选通时,接收到有效电平才被点亮,而没有被选通的数码管不会亮。这种通过分时轮流控制各个数码管的COM端送出相应段码,使各个数码管轮流受控、依次显示且循环往复的方式称为动态扫描显示。动态扫描显示意图如图4-19所示。 图4-19 动态扫描显示示意图在数码管轮流显示的过程中,每个数码管被点亮的时间为1ms左右,虽然各位数码管并非同时点亮,但由于人眼的视觉暂留效应,主观感觉各位数码管同时在显示。为了使用方便,有专门生产的供动态扫描显示的多位数码管,这些数码管内部已经将相应的笔段连接在一起,引出一组段控脚,每一位数码管引出一个公共端。2.3 键盘 方案一采用独立式按键。独立式按键易于控制编写程序简单容易理解但I/O口占用较多。 方案二采用阵列式按键。阵列式按键编程困难按键过多减少了I/O口的使用。 经过两种方案比较选择方案二。采用4*3的键盘。例 1. 行列键盘的接口电路行列键盘又叫做矩阵键盘。行列键盘的接口电路如图4-23所示,用一些I/O口线组成行结构,用另一些I/O口线组成列结构,其交叉点处不接通,设置为按键,这种接法称为行列式键盘。利用这种行列结构只需M条行线和N条列线,就可组成具有M×N的键盘,因此减少了键盘与单片机接口时所占用I/O接口的数目。同样,如果是接于P0口,必须要有上拉电阻,如果接于P1、P2或P3口,上拉电阻可以省略。图4-23 行列式键盘接口电路2. 闭合键的识别为了提高CPU的效率,对闭合键的识别一般分为两步:第一步是快速检查整个键盘中是否有键按下,如果没有键按下,则直接转到其它程序,如果有键按下,再进行下一步;第二步是确定按下的是哪一个键。第一步:快速检查整个键盘中是否有键按下。其方法是先通过输出端口在所有的行线上发出全“0”信号,然后检查输入端口的列线信号是否为全“1”。若为全“1”,表示无键按下,如图4-24(a)所示;若不是全“1”,则表示有键按下,如图4-24(b)所示。这时还不能确定按下的键处于哪一行上。(a)无键按下 (b)有键按下图4-24 检查是否有键按下示意图第二步:确定按下的是哪一个键。识别闭合键有两种方法:一种称为逐行扫描法,另一种称为线反转法。(1)逐行扫描法逐行扫描法是识别闭合键的常用方法,在硬件电路上要求行线作输出、列线作输入,列线上要有上拉电阻。4×4键盘逐行扫描法的工作原理是:先扫描第0行,即输出1110(第0行为“0”,其余3行为“1”),然后读入列信号,判断是否为全“1”。若为全“1”,表示第0行无键按下;若不为全“1”,则表示第0行有键按下,闭合键的位置处于第0行和不为“1”的列线相交之处。如果第0行无键按下,就扫描第1行,用同样的方法判断第1行有没有键按下,直到找到闭合键为止,如图4-25(a)(d)所示。(a)扫描第0行 (b)扫描第1行(c)扫描第2行 (d)扫描第3行图4-25 逐行扫描法示意图行列式键盘的闭合键处理程序中,仍需要进行按键去抖和等待按键的释放。在图4-23所示的行列键盘电路中,采用逐行扫描法识别闭合键的程序如下:P1=0xf0;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)线反转法线反转法也是识别闭合键的一种常用方法,该方法比行扫描法速度要快,但在硬件电路上要求行线与列线都要既能作输出又能作输入,行线和列线上都要有上拉电阻。下面仍以4×4键盘为例说明线反转法的工作原理。首先将行线作为输出线,列线作为输入线,先通过行线输出全“0”信号,读入列线的值,如果此时有某1个键被按下,则必然使某1列线值为“0”;然后将行线和列线的输入输出关系互换(输入输出线反转),列线作输出线、行线作输入线,再通过列线输出全“0”信号,读入行线的值,那么闭合键所在的行线上的值必定为“0”。这样当1个键被按下时,必定读得一对唯一的行值和列值,根据这一对值即可确定闭合键。线反转法示意图如图4-26所示。(a)行线输出全“0”得列值1101 (b)列输出全“0”得行值1011图4-26 线反转法示意图在图4-23所示的行列键盘电路中,采用线反转法识别闭合键的程序如下: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;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”。由于按键处理程序中没有这样的值,因而可以判断为重键而丢弃,由此可见,用这种方法可以很方便地解决重键问题。2.4 74LS245简介 74ls245引脚图与用法 74LS245引脚图 74LS245是我们常用的芯片,用来驱动led或者其他的设备,用法很简单如上图,这里简单的给出一些资料,他是8路同相三态双向总线收发器,可双向传输数据。 74LS245还具有双向三态功能,既可以输出,也可以输入数据。 当8051单片机的P0口总线负载达到或超过P0最大负载能力时,必须接入74LS245等总线驱动器。 当片选端/CE低电平有效时,DIR=“0”,信号由 B 向 A 传输;(接收) *DIR=“1”,信号由 A 向 B 传输;(发送)当/CE为高电平时,A、B均为高阻态。2.5 蜂鸣器 蜂鸣器 一)蜂鸣器的介绍1蜂鸣器的作用 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。2蜂鸣器的分类 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。3蜂鸣器的电路图形符号 蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“