首页 基于单片机的上课铃设计说明书带程序

基于单片机的上课铃设计说明书带程序

举报
开通vip

基于单片机的上课铃设计说明书带程序信息与控制工程学院硬件课程设计说明书 基于SST89C51上课铃的设计 学生学号: 11510225          学生姓名: 高海昌            专业班级: 自动化1102          指导教师:    王冲          职    称:                    起止日期: 2014.3.24~2013.4.4 吉林化工学院 Jilin Institute of Chemical Technology                           摘要 在嵌...

基于单片机的上课铃设计说明书带程序
信息与控制 工程 路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理 学院硬件课程设计说明书 基于SST89C51上课铃的设计 学生学号: 11510225          学生姓名: 高海昌            专业班级: 自动化1102          指导教师:    王冲          职    称:                    起止日期: 2014.3.24~2013.4.4 吉林化工学院 Jilin Institute of Chemical Technology                           摘要 在嵌入式技术的不断发展和广泛应用中 单片机技术起着不可忽视的作用 并且在智能控制领域有着举足轻重的地位。本设计是以单片机为核心 以时钟 芯片DS1302、蜂鸣器、LED数码显示器等共同实现的小型嵌入式铃声 控制系统——上课铃响系统设计 设计实现了实时时间以及每天上下午第一节 上课时间可显示并通过键盘可以调整 准时播放铃声以及上下课铃声不同、可 调等功能。可以广泛应用到学校 车站 工厂等地方 更好的方便人们的生产、 学习和生活。 嵌入式系统从系统的角度来定义就是完成复杂功能的硬件和软件 并使其 紧密耦合在一起的计算机系统。所以将论文从硬件和软件两方面的设计来阐述 本设计的设计过程。硬件设计部分分别从各个功能模块进行阐述 包括主控模 块、显示模块、铃声录放模块、时钟电路模块和电源电路模块。 软件部分则分成了四个板块 主程序设计、调时程序设计、时间显示程序设计 以及定时铃声播放程序设计。 关键词 单片机 铃声控制 时钟芯片DS1302 蜂鸣器    LED数码管。                                       课程设计任务 一、设计题目:基于CPLD的数字钟设计 二、设计目的 1.进一步巩固和加深学生所学一门或几门相关专业课(或专业基础课)理论知识,培养学生设计、计算、绘图、计算机应用、文献查阅、 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 撰写等基本技能; 2.培养学生实践动手能力及独立分析和解决工程实际问题的能力; 3.培养学生的团队协作精神、创新意识、严肃认真的治学态度和严谨求实的工作作风。 三、设计任务及要求   本设计是模拟学校自动铃声的一个装置,通过单片机驱动后的时钟芯片进行计时同时将计时用数码管进行显示以及驱动蜂鸣器的操作,从而实现可调,可控,可视化的自动化装置。   设计基于时钟芯片计时功能,通过单片机的处理将计时信号能够以数字形式显示出来在LED数码管上,实现可视化。 具有可调功能,单片机通过采集按键模块输入的信号处理可实现对LED数码管显示调整。而且通过模拟将铃声信号通过二极管的闪烁体现出来。 四、设计时间及进度安排    设计时间共三周(2013.4.1~2013.4.21),具体安排如下 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf : 周安排 设  计  内  容 设计时间 第一周 1. 学习SST89C51单片机体系结构及程序开发; 2. 设计热电阻测温电路,并应用Protel画出其电路原理图。 2013.4.1 ~4.7 第二周 1. 完成C8051F410的热电阻测温系统的焊装和硬件调试; 2. 编写实验程序。 2013.4.8 ~4.14 第三周 1. 整机调试; 2. 撰写设计说明书; 3. 答辩。 2013.4.15 ~4.21 五、指导教师评语及学生成绩 指导教师评语: 年    月    日 成绩 指导教师(签字): 目    录 摘要    I 第1章 绪论    1 1.1 设计的意义    1 1.2 设计的基本任务    1 1.3 设计的基本要求    1 第2章 设计 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 的论证及确定    2 2.1 方案比较与选择    2 2.2 整体方案设计    3 2.3 时钟芯片DS1302的结构及工作原理    3 第3章 硬件电路的设计    4 3.1 电源模块    4 3.2 时钟芯片模块    4 3.3 单片机最小系统的设计    8 3.4 看门狗模块    11 3.5  蜂鸣器模块    11 第4章 软件设计    12 4.1 编程环境    12 4.2 编程步骤    12 第5章 调试    14 5.1 调试步骤    14 5.3 调试结果    14 5.4 误差分析    14 5.5 按键分析    15 第6章 结论    18 参考文献.    19 附录--电路和程序    20 第1章 绪论 1.1 设计的意义 课程设计是学生理论联系实际的重要实践教学环节,是对学生进行的一次综合性专业设计训练。通过课程设计使学生获得以下几方面能力,为毕业设计(论文)奠定基础。 1.进一步巩固和加深学生所学一门或几门相关专业课(或专业基础课)理论知识,培养学生设计、计算、绘图、计算机应用、文献查阅、报告撰写等基本技能; 2.培养学生实践动手能力及独立分析和解决工程实际问题的能力; 3.培养学生的团队协作精神、创新意识、严肃认真的治学态度和严谨求实的工作作风。 1.2 设计的基本任务 本设计是模拟学校自动铃声的一个装置,通过单片机驱动后的时钟芯片进行计时同时将计时用数码管进行显示以及驱动发光二极管的操作,从而实现可调,可控,可视化的自动化装置。 1.3 设计的基本要求 设计基于时钟芯片计时功能,通过单片机的处理将计时信号能够以数字形式显示出来在led数码管上,实现可视化。 具有可调功能,单片机通过采集按键模块输入的信号处理可实现对led数码管显示调整。而且通过模拟将铃声信号通过蜂鸣器鸣叫体现出来。 第2章 设计方案的论证及确定 2.1 方案比较与选择 2.1.1 系统方案选择     方案一:采用数字电路来搭建,利用555时基电路构成振荡器产生100Hz频率的震荡电路,再通过分频器得到1Hz频率,即产生1秒计时时间,显示部分通过锁存器和驱动芯片将计时时间送入数码管显示。设计框图如图2-1所示。这种方案电路结构比较复杂,芯片使用比较多,灵活性不高而且精读不够精确不利于系统的扩展。而且这种电路中需要使用独立式的数码管,每个数码管都需要了解一个数据锁存器和数码管的驱动芯片,连线比较多,制作的过程中很容易出错。 数据锁存器     图2-1 方案一设计框图 方案二:采用SST89C51单片机作为系统控制单元,通过时钟芯片来实现计时功能,单片机负责将时间送入显示电路显示。设计框图如图2-2所示、这种方案电路设计简单,时间精确,使用方便。而且单片机的强大功能使得系统方便扩展,有利于提高智能性。 计时时间 图2-2 方案二设计框图 2.2 整体方案设计    本设计设计的自动铃声装置是通过对时钟芯片的定时。经过单片机的处理,完成对显示模块显示和对发光二极管的控制。单片机将处理后的数据显示在led数码管上,将铃声信号通过二极管的闪烁表现出来。整体方案设计如图2-3所示。 电源 单片机 图2-3 整体方案设计图 2.3 时钟芯片DS1302的结构及工作原理 DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 第3章 硬件电路的设计 本设计的电路主要由电源模块、时钟芯片模块、单片机最小系统,显示模块、蜂鸣器模块、键盘模块,看门狗模块。具体电路和工作原理下面一一介绍。 3.1 电源模块 电子技术课程中所介绍的直流稳压电源一般是线性稳压电源, 它的特点是起电压调整功能的器件始终工作在线性放大区,由50Hz工频变压器、整流器、滤波器和串联调整稳压器组成。 它的基本工作原理为:工频交流电源经过变压器降压、 整流、滤波后成为一稳定的直流电。图中其余部分是起电压调节,实现稳压作用的控制部分。电源接上负载后,通过采样电路获得输出电压,将此输出电压与基准电压进行比较。如果输出电压小于基准电压,则将误差值经过放大电路放大后送入调节器的输入端,通过调节器调节使输出电压增加,直到与基准值相等;如果输出电压大于基准电压,则通过调节器使输出减小。这种稳压电源具有优良的纹波及动态响应特性。 本设计采用固定集成输出集成稳压电路,它主要由变压器(双9V,5W)、集成整流桥、集成稳压器LM7805(+5V)和LM7905(-5V)构成。如图3-1所示。 图3-1 稳压电源 3.2 时钟芯片模块 3.2.1 时钟芯片与连接  DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc>2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK为时钟输入端。 下图为DS1302的引脚功能图:   图3-2 DS1302封装图 图3-3 DS1302连线图 3.2.2 DS1302的控制字节 DS1302 的控制字如图2所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。 表3-1 DS1302的控制字节  3.2.3 数据输入输出(I/O)   在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。 3.2.4 DS1302的寄存器   DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表1。   此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。    DS1302 存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。 3.2.5 DS1302的性能特性 ● 实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行比较; ● 用于高速数据暂存的31*8位RAM; ● 最少引脚的串行I/O; ● 2.5~5.5V电压工作范围; ● 2.5V时耗小于300nA; ● 用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式; ● 简单的三线接口; ● 可选的慢速充电(至Vcc1)的能力。 DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被访问到。在开始8个时钟周期,把命令字节装入移位寄存器后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8+8,在多字节方式下为8+字节数,最大可达248字节数。如果在传送过程中置RST脚为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。 DS1302的控制字如表所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6如果为0,则表示存取日历时钟数据;为1则表示存取RAM数据。位5~1(A4~A0)指示操作单元的地址。最低有效位(位0)如果为0,则表示药进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出。 为了提高对32个地址寻址能力(地址/命令位1~5=逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。位6规定时钟或RAM,而位0规定读或写。在时钟/日历寄存器中的地址9~31或RAM寄存器中的地址31不能存储数据。在多字节方式下,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写RAM时,为了传送数据不必写所有的31字节,不管是否谢了全部31字节,所写的每一字节都将传送至RAM。       表3-2  DS1302控制字       DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字如上表所示,其中奇数为读操作,偶数为写操作。 时钟暂停:秒寄存器的位7定义位时钟暂停位。当它为1时,DS1302停止振荡,进入低功耗的备份方式,通常在对DS1302进行写操作时(如进入时钟调整程序),停止振荡。当它为0时,时钟将开始启动。     AM-PM/12-24小时方式:小时寄存器的位7定义为12或24小时方式选择位。它为高电平时,选择12小时方式。在此方式下,位5为第二个10小时位(20~23h)。     DS1302的晶振选用32768Hz,电容推荐值为6pF。因为振荡频率较低,也可以不接电容,对计时精度影响不大。 3.3 单片机最小系统的设计 3.3.1 单片机系统 单片机系统是单片机能正常工作的条件,如图4-7所示。它主要由时钟电路、复位电路构成。P3.0和P3.1与MAX232的RX和TX相连,保证了能正常的下载调试程序。为了实现更为复杂的功能,我们得对接口电路进行设计和扩展。由于P0口输出三态门,不能产生高电平,所以需要接上拉电阻。其中,P0口与DAC0832的DI1~DI8连接,与DAC0832的连接。单片机P2.7口与ICL7135的POL相连, INT0与BUSY相连,T0与ICL7135的LOCK相连。P3.3与按键S1相连,按键主要是为了实现对不同型号热电阻的选择。P1和P2的其余引脚接段码管的段选和位选。具体接法请观察各个端口的网络标号。         图3-4 单片机系统及接口电路 3.3.2 单片机与显示模块的基本电路 保证了调节初始实时时间,实现调节时间的目的。 图3-4 显示电路 3.3.3单片机与键盘模块 图3-5 单片机与键盘的连接 3.3.4 单片机与时钟芯片DS1302的连接 实际上,在调试程序时可以不加电容器,只加一个32.768kHz 的晶振即可。只是选择晶振时,不同的晶振,误差也较大。另外,还可以在上面的电路中加入DS18B20,同时显示实时温度。只要占用CPU一个口线即可。 LCD还可以换成LED,还可以使用北京卫信杰科技发展有限公司生产的10位多功能8段液晶显示模块LCM101,内含看门狗(WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示RAM,可显示任意字段笔划,具有3-4线串行接口,可与任何单片机、IC接口。功耗低,显示状态时电流为2μA (典型值),省电模式时小于1μA,工作电压为2.4V~3.3V,显示清晰。 图3.6  单片机与时钟芯片接口  DS1302 存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。 3.3.5单片机与PC间通信接口电路 保证了能正常的下载调试程序,设计单片机与PC间通信接口电路如图2-8所示。 图3.7 单片机与PC间通信接口电路 3.4 看门狗模块 3.4.1 看门狗芯片与单片机的连接 图3.8 看门狗芯片与单片机的连接 3.4.2  看门狗定时器的基本工作原理 看门狗定时器(WDT,Watch Dog Timer)实际上是一个计数器,一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。 此外,WatchDog还可以在你的程序陷入死循环的时候,让单片机复位而不用整个系统断电,从而保护你的硬件电路。看门狗定时器对微控制器提供了独立的保护系统,当系统出现故障时,在可选的超时周期之后,看门狗将以RESET信号作出响应,像x25045就可选超时周期为1.4秒、600毫秒、200毫秒三种。当你的程序死机时,x25045就会使单片机复位。看门狗实际上是一个计数器,一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。 3.5  蜂鸣器模块 3.5.1 蜂鸣器与单片机的连接 图3.9 蜂鸣器驱动电路 3.5.2蜂鸣器的基本工作原理 蜂鸣器的作用  蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 本次用于报警器。由单片机P3.2发出高电平信号经三极管放大电流使得蜂鸣器工作。 第4章 软件设计 4.1 编程环境 KeilC51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。我们用开发软件Keil uVision3来编写、修改所需程序和下载程序到单片机运行。 4.2 编程步骤 其下介绍Keil uVision3的使用步骤: 1. 双击Keil uVision3,得到主画面:  图4.1 Keil uVision3基本画面 2. 新建界面  Project--new project。 图4.2 KeiluVision3的新建界面 3. 单片机的选择 图4.3 单片机的选择界面 如图所示能找到本次实习所需主要芯片SST89C51。 3. C文件的建立 图4.4 添加C文件 在添加C文件之后,就可以在里面编写自己的程序了,在编写完后编译,下载调试。如果没有错误,就可以烧录在芯片当中。 第5章 调试 5.1 调试步骤 制作调试过程中所用仪器有:数字万用表、电烙铁、焊锡丝、焊锡膏、剥线钳、尖嘴钳、圆口钳、镊子、吸锡器等,另外准备尽量多的导线。   制作与调试过程如下: 1、 按照元器件清单准备好所需要用到的元器件。 2、 按照电路原理图焊接硬件电路板,先焊接芯片的底座,再焊接其外围电路。 3、 编译软件程序,将生成的.hex文件烧写入单片机内。 4、 给系统上电,数码管显示时间,利用按键可设置定时时间和打铃时间。 5、 当定时的时间到时,蜂鸣器响,实现打铃功能。 6、 每个设置的打铃时间间隔,蜂鸣器响,实现打铃功能。 5.3 调试结果 经上述调试,系统工作正常,实现设计要求的功能。 5.4 误差分析 1.电路 任何组装好的电子电路,在通电调试之前,必须认真检查电路连线是否有错误。对照电路图,按一定的顺序逐级对应检查。   特别要注意检查电源是否接错,电源与地是否有短路,二极管方向是否接反,集成电路和晶体管的引脚是否接错,轻轻拔一拔元器件,观察焊点是否牢固,等等。 2.器件     元器件之间最大的误差就是三极管,基极大于集电极电压,使其放大电流,既符合我们的要求。 本次硬件设计主要采用了E24(±5%)系列电阻,由于这类碳膜电阻精度低,最高只能做到±5%,且碳膜电阻器属于负温度系数的电阻,即温度升高时其电阻阻值随之减小。从根本上影响了输出精度。 3.连线     数字设计电路布局要达到良好效果,仔细布线是完成电路板设计重要关键。需要考虑旁路电容、电源供应及接地布线、电压误差,以及因电路板布线引起电磁干扰。所以在硬件设计过程中:1旁路或反交连电容(0.1uF)应尽可能靠近组件。2电源与接地走线相互搭配。3走线整齐,尽量避免交叉。 5.5 按键分析 键盘在单片机系统中是一个很重要的部件。为了输入数据、查询和控制系统的工作状态,都要用到键盘,键盘是人工干预计算机的主要手段。 键盘可分为编码和非编码键盘两种。编码键盘采用硬件线线路来实现键盘编码,每按下一个键,键盘能自动生成按键代码,键数较多,而且还具有去抖动功能。这种键盘使用方便,但硬件较复杂,PC机所用的键盘就属于这种。非编码键盘仅提供按键开关工作状态,其他工作由软件完成,这种键盘键数较少,硬件简单,一般在单片机应用系统中广泛使用。此处主要介绍该类非编码键盘及其与MCS—51型单片机的接口。 5.5.1按键开关去抖动问题 按键开关在电路中的连接如图所示。按键未按下时,A点电位为高电平5V;按键按下时,A点电位为低电平。A点电位就用于向CPU传递按键的开关状态。但是由于按键的结构为机械弹性开关,在按键按下和断开时,触点在闭合和断开瞬间还会接触不稳定,引起A点电平不稳定,如图2-11b所示,键盘的抖动时间一般为5~10ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。因此必须设法消除抖动的不良后果。 图2.3 键操作和键抖动 消除抖动的不良后果的方法有硬、软件两种。 为了节省硬件,通常在单片机系统中,一般不采用硬件方法消除键的抖动,而是用软件消除抖动的方法。根据抖动特性,在第一次检测到按键按下后,执行一段延时5~10ms让前延抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认真正有键按下。当检测到按键释放后,也要给5~10ms的延时,待后延抖动消失后才转入该键处理程序。 5.5.2查询式按键及其接口 按照键盘与CPU的连接方式可以分为查询按键和矩阵式键盘。查询式按键是各按键相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上按键的工作状态。查询式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大,且电路结构显得繁杂。故这种形式适用于按键数量较少的场合。 5.5.3矩阵式键盘及其接口 矩阵式键盘又称行列式键盘,有n个行线和m个列线,经限流电阻接+5V电源上,按键跨接在行线和列线上,n×m行列结构可构成mn个按键,组成一个键盘。与独立式按键相比,mn个按键只占用m+n根I/O口线,因此适用于按键较多的场合。 当无键闭合时,相应的I/O之间开路。当有键闭合时,与闭合键相连接的两条I/O口线之间短路。判断有无键按下的方法是:第一步,置列线相关I/O口为输入态,从行线相对应的I/O口输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,置行线相关I/O口输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等待近按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。 5.5.4.键盘扫描控制方式 在单片机应用系统中,对键盘的处理工作仅是CPU工作内容的一部分,CPU还要进行数据处理、显示和其他输入输出操作,因此键盘处理工作既不能占用CPU太多时间,又需要CPU对键盘操作及时作出响应。CPU对键盘处理控制的工作方式有以下几种: 1. 程序控制扫描方式 程序控制扫描方式是在CPU工作空余,调用键盘扫描子程序,响应键输入信号要求。 2. 定时控制扫描方式 定时控制扫描方式是利用定时/计数器每隔一段时间产生定时中断,CPU响应中断后对键盘进行扫描,并在有键闭合时转入该键的功能子程序。 3. 中断控制扫描方式 中断控制扫描方式是利用外部中断源,响应输入信号。当无按键按下时,CPU执行正常工作程序。当有按键按下时,CPU立即产生中断。在中断服务子程序中扫描键盘,判断是哪一个键被按下,然后执行该键的功能子程序。这种控制方式克服了前两种控制方式可能产生的空扫描和不能及时响应键输入的缺点,既能及时处理键输入,又能提高CPU运行效率,但要占用一个宝贵的中断资源。图即工作于中断方式的矩阵式键盘接口电路。在初始化时P1.4~P1.7置输出0,P1.0~P1.3置为输入态,P1.0~P1.3分别接至与门各输入端。当有键闭合时=0,CPU中断后,在中断服务子程序中,再完成键识别和键功能处理。 本设计采用程序控制扫描方式,     在对日期和时间进行切换,我们有以下几个方案。 方案一:使用独立式键盘。独立式键盘是指直接用I/O口线构成的单个按键电路。独立式按键电路配置灵活,软件结构简单。 方案二:使用矩阵式键盘。矩阵式键盘是由行线和列线组成,按键位于行、列的交叉点上,行线、列线分别连接到按键开关的两端。其特点是简单且不增加成本,这种键盘适合按键数量较多的场合。     根据以上的论述,因本系统需要的按键不多,日期加1键,月数加1键,年数加1键,分数加1键,时数加1键,时间/日期切换键,要求简单。所以采用方案一独立式键盘。 按键 K1 K2 K3 K4 K5 功能 数码管选择键,两个一组自后至前 切屏键 自加一键 自减一键 设定报警键     图5.5 按键分析 第6章 结论 经测试本设计达到设计要求。     通过3周的综合设计实习,我学到了许多书本上学不到的许多知识,对电子设计有了更深刻的了解。 我们这次设计课题是基于SST89C51上课铃的设计,要求我们自主独立设计方案、焊接电路、编写程序、调试程序、专用芯片下载程序,最后实现设计。本次我是用DS1302芯片产生的电子时钟,可通过按键实现可调时钟,而且能实现定时上课时间打铃,打铃设备用蜂鸣器实现,时钟显示和定时显示通过数码管显示出来。在指导老师的带领下,我们基本完成了 任务书 毕设任务书免费下载LOGO设计任务书pdfLOGO设计任务书pdf毕设任务书免费下载财经本科住任务书下载 中的设计要求 ,实现了上课铃的功能,能够以数字形式显示出来,但是也有多多问题。 总体来说我的电子设计知识和硬件焊接技术都有限,也发现了很多不足之处。我很感谢学校老师给我的这次实习机会,感谢王影老师百忙之中来指导我们实习。在此我深表感谢! 参考文献. [1] 何立民. 单片机高级教程——应用与设计 第2版 [M].北京航空航天大学 出版社,2003. [2] 王幸之,钟爱琴,王雷,王闪. AT89系列单片机原理与接口技术[M]. 北京航空 航天大学出版社,2004. [3] 蔡美琴,张为民,沈新群. MCS-51系列单片机系统及其应用[M].高等教育出版 社,1992.  [4] 王毓银. 数字电路逻辑设计(脉冲与数字电路 第三版)[M].高等教育出版 社,2003. [5] 张毅刚。单片机原理及应用.[M].教育出版社.2003 [6] 杨将新,李华军,刘东骏.单片机程序设计及应用从基础到实践[M].电子工业 出版社,2006. [7] 赵亮,侯国锐.单片机C语言编程与实例[M].人民邮电出版社,2003. [8] 刘修文 .图解单片机应用技术要诀[M].中国电力出版社,2006. [9] 王建校,杨建国,宁改娣,危建国.51系列单片机及C51程序设计[M].科学出版 社,2002. [10] 张培仁.基于C语言编程MCS-51单片机原理与应用[M].清华大学出版社,2003. 附录Ⅰ电路                                                                               附录Ⅱ程序 #include #include #define  uchar  unsigned  char #define  uint  unsigned    int #define  ads  0x8e #define  sads  0x80 #define  mads  0x82 #define  hads  0x84 #define  rads  0x86 #define  yads  0x88 #define  zads  0x8a #define  nads  0x8c //================================================================================ sbit  fengming=P3^2; sbit k1=P1^2; sbit k2=P1^1; sbit k3=P1^0; sbit k4=P1^7; sbit k5=P3^3; sbit  SCLK=P3^5; sbit  IO=P3^6; sbit  Rest=P3^7; uchar  bdata SDat ; sbit  D0=SDat^0; sbit  D7=SDat^7; uchar    b,y,z,n,e, i,s,h,m,ri,y1,z1,n1,e, i,s1,h1,m1,ri1,A,W,R,Q,s2,m2,h2; uchar code DM[ ]={    0x88,0xeb,0x92,0xa2,0xe1,                     0xa4,0x84,0xea,0x80,0xa0,}; uchar code WM[ ]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; uchar HC[8]={0}; //================================================================================ #define X25045_RS_WIP 0X01 #define X25045_MAX_POLL  0x99 #define X25045_RDSR_INST 0X05 #define X25045_WRSR_INST 0X01 #define X25045_WREN_INST 0X06 #define X25045_WRDI_INST 0X04 #define X25045_WRITE_INST 0X02 #define X25045_READ_INST 0X03       //sbit X25045_WP = P3^7;// Write Protected sbit X25045_CS = P1^4;// Chip Selected sbit X25045_SCK = P1^6;// Serial Clock sbit X25045_SO = P1^3;// Output from X25045 sbit X25045_SI = P1^5;// Input for X25045 //================================================================================ void  ym() {              if(e==0)                         {        HC[0]=z/16;                         HC[1]=z%16;                              HC[2]=h/16;                         HC[3]=h%16;                         HC[4]=m/16;                         HC[5]=m%16;                         HC[6]=s/16;                         HC[7]=s%16;                 }                 else  if(e==1)                     {                         HC[0]=2    ;                         HC[1]=0    ;                         HC[2]=n/16;                         HC[3]=n%16;                         HC[4]=y/16;                         HC[5]=y%16;                         HC[6]=ri/16;                         HC[7]=ri%16;                         }                     else if(e==2&&Q==0)                         {        HC[0]=z1/10;                         HC[1]=z1%10;                         HC[2]=h1/10;                         HC[3]=h1%10;                         HC[4]=m1/10;                         HC[5]=m1%10;                         HC[6]=s1/10;                         HC[7]=s1%10;                 }                 else  if(e==3&&Q==0)                     {                         HC[0]=2    ;                         HC[1]=0    ;                         HC[2]=n1/10;                         HC[3]=n1%10;                         HC[4]=y1/10;                         HC[5]=y1%10;                         HC[6]=ri1/10;                         HC[7]=ri1%10;                         }                     else if(e==2&&Q==1)                         {        HC[0]=z1/10;                         HC[1]=z1%10;                         HC[2]=h2/10;                         HC[3]=h2%10;                         HC[4]=m2/10;                         HC[5]=m2%10;                         HC[6]=s2/10;                         HC[7]=s2%10;                 }                 else  if(e==3&&Q==1)                     {                         HC[0]=2    ;                         HC[1]=0    ;                         HC[2]=n1/10;                         HC[3]=n1%10;                         HC[4]=y1/10;                         HC[5]=y1%10;                         HC[6]=ri1/10;                         HC[7]=ri1%10;                         } } //================================================================================ void delay() {     uint F;     for(F=0;F<10000;F++); } void delay1(uint v) {   while(v!=0) v--; } //================================================================================ void WByte(uchar  x) {     uchar  i;     SDat=x;     for(i=0;i<8;i++)     {         SCLK=0;         IO=D0;         SCLK=1;         SDat>>=1;        }            } void  WByteData(uchar  ad , uchar Data) {     Rest=0;     SCLK=0;     Rest=1;     WByte(ad);     WByte(Data);     Rest=0; } //================================================================================ void display() {     uchar i;     if((i==5)&&(s%2==0)&&(e==0||e==2))     {       P0=DM[HC[i]]&0x7f;       }     else    if((i==1)&&(e==0||e==2))       {       P0=DM[HC[i]]&0x7f;     }     else  if((i==5)&&(e==1||e==3))     {               P0=DM[HC[i]]&0x7f;         }     else     P0=DM[HC[i]];     P2=WM[i];     i++;     if(i>7) i=0; } uchar  RByte( ) {     uchar  i;         for(i=0;i<8;i++)     {            SDat>>=1;           SCLK=0;           D7=IO;           SCLK=1;                       }     return  SDat; } uchar  RByteData(uchar a) {     uchar  u;     Rest=0;     SCLK=0;     Rest=1;     WByte(a);     u=RByte();     Rest=0;     return  u; } //================================================================================ void  kaiguan() {     TMOD=0x01;     TH0=(65536-1000)/256;     TL0=(65536-1000)%256;     EA=1;     ET0=1;     TR0=1; } void  zhong()    interrupt  1 {         TH0=(65536-1000)/256;     TL0=(65536-1000)%256;       ym();       display(); } //================================================================================ void anjian() {         uchar  G,B, w;    //    ym(); //    display();         if(k1==0) //选择操作位         {             delay();             if(k1==0)             {                 while(k1==0);                 b++;                 if(b==5)                 {                     b=0;                 }             }         }                     if(k5==0)                {                        delay();                 if(k5==0)                     while(k5==0);                       Q++;                        if(Q>1)                     {                         Q=0;                     }                    } //=========================================================================                                if(k2==0)             {             // WByteData(ads,0x00);                 delay();                 if(k2==0)                 {                     while(k2==0);                     e++;                     // i++;                     if((Q==0)&&(e==2)||(Q==1)&&(e==2))                     {                         h1=h/16*10+h%16;                         m1=m/16*10+m%16;                         s1=s/16*10+s%16-1;                         ri1=ri/16*10+ri%16;                            h2=h/16*10+h%16;                         m2=m/16*10+m%16;                         s2=s/16*10+s%16-1;                                             }                     if((Q==0)&&(e==3)||(Q==1)&&(e==2))                     {                           y1=y/16*10+y%16;                         z1=z/16*10+z%16;                         n1=n/16*10+n%16;                                                                }                                     if(e>3)                     {                           //i=0;                         e=0;                     }                 }             }        //================================================================================                if(k3==0)             {                 delay();                 if(k3==0)                 {                     while(k3==0);                     if(b==1&&e==0)                     {                         B= s%16;                         G= s/16;                         s=G*10+B;                              s++;                         if(s>59)                         {                             s=0;                         }                         w=s/10;                         G=s%10;                         s=G+w*16;                           WByteData(ads,0x00);                         WByteData(sads,s);                             WByteData(ads,0x80);                     }                     if(b==4&&e==0)                     {                               B= z%16;                         G= z/16;                         z=G*10+B;                              z++;                         if(z>7)                         {                             z=1;                         }                         w=z/10;                         G=z%10;                         z=G+w*16;                           WByteData(ads,0x00);                         WByteData(zads,z);                             WByteData(ads,0x80);                                        }                     if((b==1)&&(e==2)&&(Q==0))                     {                         s1++;                                             if(s1>59)                         {                             s1=0;                                                 }                                             }                            if((Q==1)&&(e==2)&&(b==1))                         {                             s2++;                                                         if(s2>59)                             {                                 s2=0;                             }                                                                         }                                                                if(b==2&&e==0)                         //    mm=m;                     {        //mm++;                         B= m%16;                         G= m/16;                         m=G*10+B;                          m++;                        if(m>59)                         {                             m=0;                         }                                        w=m/10;                         G=m%10;                         m=G+w*16;                           WByteData(ads,0x00);                         WByteData(mads,m);                             WByteData(ads,0x80);                                                                                           }                       if(b==2&&e==1)                         //    mm=m;                     {        //mm++;                         B= y%16;                         G= y/16;                         y=G*10+B;                          y++;                        if(y>12)                         {                             y=1;                         }                                        w=y/10;                         G=y%10;                         y=G+w*16;                           WByteData(ads,0x00);                         WByteData(yads,y);                             WByteData(ads,0x80);                                                                                           }                       if((b==2)&&(e==2)&&(Q==0))                       {                               m1++;                                     if(m1>59)                             {                                 m1=0;                             }                                             }                           if((Q==1)&&(e==2)&&(b==2))                         {                             m2++;                                 if(m2>59)                             {                                 m2=0;                             }                                                                         }                     if(b==3&&e==0)                     {                            B= h%16;                         G= h/16;                         h=G*10+B;                                  h++;                         if(h>23)                         {                             h=0;                         }                         w=h/10;                         G=h%10;                         h=G+w*16;                             WByteData(ads,0x00);                         WByteData(hads,h)     ;                             WByteData(ads,0x80);                     }                       if(b==3&&e==1)                         //    mm=m;                     {        //mm++;                         B= n%16;                         G= n/16;                         n=G*10+B;                          n++;                        if(n>99)                         {                             n=0;                         }                                        w=n/10;                         G=n%10;                         n=G+w*16;                           WByteData(ads,0x00);                             WByteData(nads,n);                             WByteData(ads,0x80);                                                                                           }                     if((b==3)&&(e==2)&&(Q==0))                     {                             h1++;                                                 if(h1>23)                             {                                 h1=0;                             }                                             }                            if((Q==1)&&(e==2)&&(b==3))                         {                             h2++;                                 if(h2>59)                             {                                 h2=0;                             }                                                                         }                                                              if(b==1&&e==1)                     {                            B= ri%16;                         G= ri/16;                         ri=G*10+B;                                  ri++;                         if(ri>31)                         {                             ri=1;                         }                         w=ri/10;                         G=ri%10;                         ri=G+w*16;                             WByteData(ads,0x00);                         WByteData(rads,ri)     ;                             WByteData(ads,0x80);                     }                       if(b==1&&e==3)                     {                             ri1++;                             if(ri1>31)                             {                                 ri1=1;                             }                                        }                                           if(b==4&&e==2)                     {                             z1++;                             if(z1>7)                             {                                 z1=1;                             }                                        }                       if(b==2&&e==3)                     {                             y1++;                             if(y1>12)                             {                                 y1=1;                             }                                        }                       if(b==3&&e==3)                     {                             n1++;                             if(n1>99)                             {                                 n1=0;                             }                                        }                                       }                 } //================================================================================                                if(k4==0)             {                 delay();                 if(k4==0)                 {                     while(k4==0);                     if(b==1&&e==0)                     {                                B= s%16;                         G= s/16;                         s=G*10+B;                                s--;                         if(s<1)                         {                             s=59;                         }                             w=s/10;                         G=s%10;                         s=G+w*16;                           WByteData(ads,0x00);                         WByteData(sads,s);                             WByteData(ads,0x80);                                              }                           if(b==4&&e==0)                     {                               B= z%16;                         G= z/16;                         z=G*10+B;                              z--;                         if(z<1)                         {                             z=7;                         }                         w=z/10;                         G=z%10;                         z=G+w*16;                           WByteData(ads,0x00);                         WByteData(zads,z);                             WByteData(ads,0x80);                                                             }                       if(b==1&&e==2)                     {                             s1--;                             if(s1<1)                             {                                 s1=59;                             }                                                    }                         if((Q==1)&&(e==2)&&(b==1))                         {                             s2--;                                                         if(s2<1)                             {                                 s2=0;                             }                                                                         }                                                                if(b==2&&e==0)                     {                                  B= m%16;                         G= m/16;                         m=G*10+B;                              m--;                         if(m<1)                         {                             m=59;                         }                         w=m/10;                         G=m%10;                         m=G+w*16;                       WByteData(ads,0x00);                         WByteData(mads,m);                             WByteData(ads,0x80);                                              }                       if(b==2&&e==1)                         //    mm=m;                     {        //mm++;                         B= y%16;                         G= y/16;                         y=G*10+B;                          y--;                        if(y<1)                         {                             y=12;                         }                                        w=y/10;                         G=y%10;                         y=G+w*16;                           WByteData(ads,0x00);                         WByteData(yads,y);                             WByteData(ads,0x80);                                                                                           }                             if(b==2&&e==2)                     {                             m1--;                             if(m1<0)                             {                                 m1=59;                             }                                                    }                         if((Q==1)&&(e==2)&&(b==2))                         {                             m2--;                                 if(m2<1)                             {                                 m2=0;                             }                                                                         }                     if(b==3&&e==0)                     {                                B= h%16;                         G= h/16;                         h=G*10+B;                                  h--;                         if(h<1)                         {                             h=23;                         }                         w=h/10;                         G=h%10;                         h=G+w*16;                             WByteData(ads,0x00);                         WByteData(hads,h)     ;                             WByteData(ads,0x80);                                                }                       if(b==3&&e==1)                         //    mm=m;                     {        //mm++;                         B= n%16;                         G= n/16;                         n=G*10+B;                          n--;                        if(n<1)                         {                             n=99;                         }                                        w=n/10;                         G=n%10;                         n=G+w*16;                           WByteData(ads,0x00);                         WByteData(nads,n);                             WByteData(ads,0x80);                                                                                           }                           if(b==3&&e==2)                     {                             h1--;                             if(h1<-1)                             {                                 h1=23;                             }                                                    }                         if((Q==1)&&(e==2)&&(b==3))                         {                             h2--;                                 if(h2<1)                             {                                 h2=23;                             }                                                                         }                                         if(b==1&&e==1)                     {                            B= ri%16;                         G= ri/16;                         ri=G*10+B;                                  ri--;                         if(ri<1)                         {                             ri=31;                         }                         w=ri/10;                         G=ri%10;                         ri=G+w*16;                             WByteData(ads,0x00);                         WByteData(rads,ri)     ;                             WByteData(ads,0x80);                     }                       if(b==1&&e==3)                     {                             ri1--;                             if(ri1<1)                             {                                 ri1=31;                             }                                        }                       if(b==4&&e==2)                     {                             z1--;                             if(z1<1)                             {                                 z1=7;                             }                                        }                       if(b==2&&e==3)                     {                             y1--;                             if(y1<1)                             {                                 y1=12;                             }                                        }                       if(b==3&&e==3)                     {                             n1--;                             if(n1<1)                             {                                 n1=99;                             }                                        }                 }             }         } //=============看门狗=========================================================================================== //#define uchar unsigned char //#define uint  unsigned int //#define DWORD unsigned long /* Status Register 7 6  5  4  3  2  1  0 X X WD1 WD0 BL1 BL0 WEL WIP   WD1 WD0   0 0 1.4 Seconds   0 1 600 Milliseconds   1 0 200 Milliseconds   1 1 Disabled   BL1 BL0   0 0 None   0 1 $180-$1FF   1 0 $100-$1FF   1 1 $000-$1FF   WEL (Write Enable Latch, WREN  Set to 1, WRDI Reset to 0)   WIP (Write In Process) Indicate whether current writting */ void X25045_ResetDog(void) {   X25045_CS = 0;   X25045_CS = 1; } void X25045_OutByte(uchar byData)        //写入 {     uchar data i;     for (i=0;i<8;i++)     {         X25045_SCK = 0;         X25045_SI = (bit)(byData&0x80);         byData <<=1;         X25045_SCK = 1;     } } uchar X25045_InByte(void)                //读出 {     uchar data i,byRet;     X25045_SCK = 0;     byRet = 0;     for (i=0;i<8;i++)     {         X25045_SCK = 1;         byRet <<= 1;         byRet |= (uchar)(X25045_SO);         X25045_SCK = 0;     }     return byRet; } uchar X25045_ReadStatusReg(void)          //读函数 {     uchar data byRet;     X25045_CS = 1;     X25045_SCK = 0;     X25045_CS = 0;     X25045_OutByte(X25045_RDSR_INST);     byRet = X25045_InByte();     X25045_SCK = 0;     X25045_CS = 1;     return byRet; } void X25045_WriteStatusReg(uchar byReg)    //写函数 {     X25045_CS = 1;     X25045_SCK = 0;     X25045_CS = 0;     X25045_OutByte(X25045_WRSR_INST);     X25045_OutByte(byReg);     X25045_SCK = 0;     X25045_CS = 1; } void X25045_WriteEnable(void) {     X25045_CS = 1;     X25045_SCK = 0;     X25045_CS = 0;     X25045_OutByte(X25045_WREN_INST);     X25045_SCK = 0;     X25045_CS = 1; } void X25045_WriteDisable(void) {     X25045_CS = 1;     X25045_SCK = 0;     X25045_CS = 0;     X25045_OutByte(X25045_WRDI_INST);     X25045_SCK = 0;     X25045_CS = 1; } uchar X25045_ReadByte(uint wAddress) {     uchar data byRet;     X25045_CS = 1;     X25045_SCK = 0;     X25045_CS = 0;     X25045_OutByte(((uchar)((wAddress&0x100)>>5))|X25045_READ_INST);     X25045_OutByte((uchar)(wAddress&0xff));     byRet = X25045_InByte();     X25045_SCK = 0;     X25045_CS = 1;     return byRet; } void WritePoll() {     uchar data i;     for (i=0;i>5))|X25045_WRITE_INST);     X25045_OutByte((uchar)(wAddress&0xff));     X25045_OutByte(byData);     X25045_SCK = 0;     X25045_CS = 1;     WritePoll(); } //// /*void X25045_ReadSequence(WORD wAddress,uchar *pBuf,uchar nLen) {     X25045_CS = 1;     X25045_SCK = 0;     X25045_CS = 0;     X25045_OutByte(((uchar)((wAddress&0x100)>>5))|X25045_READ_INST);     X25045_OutByte((uchar)(wAddress&0xff));     while(nLen--) *pBuf++ = X25045_InByte();     X25045_SCK = 0;     X25045_CS = 1; } void X25045_WritePage(WORD wAddress,uchar D1,uchar D2,uchar D3,uchar D4) {     X25045_CS = 1;     X25045_SCK = 0;     X25045_CS = 0;     X25045_OutByte(((uchar)((wAddress&0x100)>>5))|X25045_WRITE_INST);     X25045_OutByte((uchar)(wAddress&0xff));     X25045_OutByte(D1);     X25045_OutByte(D2);     X25045_OutByte(D3);     X25045_OutByte(D4);     X25045_SCK = 0;     X25045_CS = 1;     WritePoll(); } */ //================================================================================ void  main() {            X25045_WriteEnable();     X25045_WriteStatusReg(0x00);     X25045_WriteEnable();     X25045_WriteByte(0x70,0x55);     X25045_WriteEnable();     X25045_WriteByte(0x71,0xaa);                                              kaiguan();     WByteData(ads,0x00);     WByteData(sads,0x20);     WByteData(mads,0x50);     WByteData(hads,0x10);     WByteData(rads,0x06);     WByteData(yads,0x04);     WByteData(zads,0x01);       WByteData(nads,0x13);         WByteData(ads,0x80);     while(1)     {                                          anjian();           s=RByteData(sads+1);         m=RByteData(mads+1);         h=RByteData(hads+1);         ri=RByteData(rads+1);         y=RByteData(yads+1);         z=RByteData(zads+1);         n=RByteData(nads+1);         //    ym();           // display();             if(h==(A=(h1/10*16+h1%10))&&m==(W=(m1/10*16+m1%10))&&s==(R=(s1/10*16+s1%10)))             {                 fengming=0;                 delay1(100000);                 delay1(100000);                 delay1(100000);                     delay1(100000);                         delay1(100000);                             delay1(100000);                 fengming=1;             }             if(h==(A=(h2/10*16+h2%10))&&m==(W=(m2/10*16+m2%10))&&s==(R=(s2/10*16+s2%10)))             {                 fengming=0;                 delay1(100000);                 delay1(100000);                 delay1(100000);                     delay1(100000);                         delay1(100000);                             delay1(100000);                 fengming=1;             }                     } }
本文档为【基于单片机的上课铃设计说明书带程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_792768
暂无简介~
格式:doc
大小:288KB
软件:Word
页数:43
分类:生活休闲
上传时间:2017-09-19
浏览量:25