




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于SST89C51上课铃的设计方案第1章 绪论1.1 设计的意义课程设计是学生理论联系实际的重要实践教学环节,是对学生进行的一次综合性专业设计训练。通过课程设计使学生获得以下几方面能力,为毕业设计(论文)奠定基础。1进一步巩固和加深学生所学一门或几门相关专业课(或专业基础课)理论知识,培养学生设计、计算、绘图、计算机应用、文献查阅、报告撰写等基本技能;2培养学生实践动手能力及独立分析和解决工程实际问题的能力;3培养学生的团队协作精神、创新意识、严肃认真的治学态度和严谨求实的工作作风。1.2 设计的基本任务本设计是模拟学校自动铃声的一个装置,通过单片机驱动后的时钟芯片进行计时同时将计时用数码管进行显示以及驱动发光二极管的操作,从而实现可调,可控,可视化的自动化装置。1.3 设计的基本要求设计基于时钟芯片计时功能,通过单片机的处理将计时信号能够以数字形式显示出来在led数码管上,实现可视化。具有可调功能,单片机通过采集按键模块输入的信号处理可实现对led数码管显示调整。而且通过模拟将铃声信号通过蜂鸣器鸣叫体现出来。 第2章 设计方案的论证及确定2.1 方案比较与选择2.1.1 系统方案选择 方案一:采用数字电路来搭建,利用555时基电路构成振荡器产生100Hz频率的震荡电路,再通过分频器得到1Hz频率,即产生1秒计时时间,显示部分通过锁存器和驱动芯片将计时时间送入数码管显示。设计框图如图2-1所示。这种方案电路结构比较复杂,芯片使用比较多,灵活性不高而且精读不够精确不利于系统的扩展。而且这种电路中需要使用独立式的数码管,每个数码管都需要了解一个数据锁存器和数码管的驱动芯片,连线比较多,制作的过程中很容易出错。NE555时基电路数码管显示100Hz信号分频器数码管驱动1Hz信号数据锁存器图2-1 方案一设计框图方案二:采用SST89C51单片机作为系统控制单元,通过时钟芯片来实现计时功能,单片机负责将时间送入显示电路显示。设计框图如图2-2所示、这种方案电路设计简单,时间精确,使用方便。而且单片机的强大功能使得系统方便扩展,有利于提高智能性。时钟芯片秒计时单片机四位一体数码管显示计时时间图2-2 方案二设计框图2.2 整体方案设计本设计设计的自动铃声装置是通过对时钟芯片的定时。经过单片机的处理,完成对显示模块显示和对发光二极管的控制。单片机将处理后的数据显示在led数码管上,将铃声信号通过二极管的闪烁表现出来。整体方案设计如图2-3所示。电源计时装置键盘输入显示模块蜂鸣器单片机图2-3 整体方案设计图2.3 时钟芯片DS1302的结构及工作原理DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的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大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.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位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 DS1302 存在时钟精度不高,易受环境影响,出现时钟混乱等缺点。DS1302可以用于数据记录,特别是对某些具有特殊意义的数据点的记录,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析及对异常数据出现的原因的查找具有重要意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此,只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且,某些测控系统可能不允许。但是,如果在系统中采用时钟芯片DS1302,则能很好地解决这个问题。3.2.5 DS1302的性能特性 实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行比较; 用于高速数据暂存的31*8位RAM; 最少引脚的串行I/O; 2.55.5V电压工作范围; 2.5V时耗小于300nA; 用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式; 简单的三线接口; 可选的慢速充电(至Vcc1)的能力。DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被访问到。在开始8个时钟周期,把命令字节装入移位寄存器后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8+8,在多字节方式下为8+字节数,最大可达248字节数。如果在传送过程中置RST脚为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在Vcc2.5V之前,RST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。DS1302的控制字如表所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6如果为0,则表示存取日历时钟数据;为1则表示存取RAM数据。位51(A4A0)指示操作单元的地址。最低有效位(位0)如果为0,则表示药进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出。为了提高对32个地址寻址能力(地址/命令位15=逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。位6规定时钟或RAM,而位0规定读或写。在时钟/日历寄存器中的地址931或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小时位(2023h)。 DS1302的晶振选用32768Hz,电容推荐值为6pF。因为振荡频率较低,也可以不接电容,对计时精度影响不大。3.3 单片机最小系统的设计3.3.1 单片机系统单片机系统是单片机能正常工作的条件,如图4-7所示。它主要由时钟电路、复位电路构成。P3.0和P3.1与MAX232的RX和TX相连,保证了能正常的下载调试程序。为了实现更为复杂的功能,我们得对接口电路进行设计和扩展。由于P0口输出三态门,不能产生高电平,所以需要接上拉电阻。其中,P0口与DAC0832的DI1DI8连接,与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,可显示任意字段笔划,具有34线串行接口,可与任何单片机、IC接口。功耗低,显示状态时电流为2A (典型值),省电模式时小于1A,工作电压为2.4V3.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机所用的键盘就属于这种。非编码键盘仅提供按键开关工作状态,其他工作由软件完成,这种键盘键数较少,硬件简单,一般在单片机应用系统中广泛使用。此处主要介绍该类非编码键盘及其与MCS51型单片机的接口。5.5.1按键开关去抖动问题按键开关在电路中的连接如图所示。按键未按下时,A点电位为高电平5V;按键按下时,A点电位为低电平。A点电位就用于向CPU传递按键的开关状态。但是由于按键的结构为机械弹性开关,在按键按下和断开时,触点在闭合和断开瞬间还会接触不稳定,引起A点电平不稳定,如图2-11b所示,键盘的抖动时间一般为510ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。因此必须设法消除抖动的不良后果。图2.3 键操作和键抖动消除抖动的不良后果的方法有硬、软件两种。为了节省硬件,通常在单片机系统中,一般不采用硬件方法消除键的抖动,而是用软件消除抖动的方法。根据抖动特性,在第一次检测到按键按下后,执行一段延时510ms让前延抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认真正有键按下。当检测到按键释放后,也要给510ms的延时,待后延抖动消失后才转入该键处理程序。5.5.2查询式按键及其接口按照键盘与CPU的连接方式可以分为查询按键和矩阵式键盘。查询式按键是各按键相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上按键的工作状态。查询式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大,且电路结构显得繁杂。故这种形式适用于按键数量较少的场合。5.5.3矩阵式键盘及其接口矩阵式键盘又称行列式键盘,有n个行线和m个列线,经限流电阻接+5V电源上,按键跨接在行线和列线上,nm行列结构可构成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.4P1.7置输出0,P1.0P1.3置为输入态,P1.0P1.3分别接至与门各输入端。当有键闭合时=0,CPU中断后,在中断服务子程序中,再完成键识别和键功能处理。本设计采用程序控制扫描方式,在对日期和时间进行切换,我们有以下几个方案。方案一:使用独立式键盘。独立式键盘是指直接用I/O口线构成的单个按键电路。独立式按键电路配置灵活,软件结构简单。方案二:使用矩阵式键盘。矩阵式键盘是由行线和列线组成,按键位于行、列的交叉点上,行线、列线分别连接到按键开关的两端。其特点是简单且不增加成本,这种键盘适合按键数量较多的场合。 根据以上的论述,因本系统需要的按键不多,日期加1键,月数加1键,年数加1键,分数加1键,时数加1键,时间/日期切换键,要求简单。所以采用方案一独立式键盘。按键K1K2K3K4K5功能数码管选择键,两个一组自后至前切屏键自加一键自减一键设定报警键图5.5 按键分析第6章 结论经测试本设计达到设计要求。 通过3周的综合设计实习,我学到了许多书本上学不到的许多知识,对电子设计有了更深刻的了解。 我们这次设计课题是基于SST89C51上课铃的设计,要求我们自主独立设计方案、焊接电路、编写程序、调试程序、专用芯片下载程序,最后实现设计。本次我是用DS1302芯片产生的电子时钟,可通过按键实现可调时钟,而且能实现定时上课时间打铃,打铃设备用蜂鸣器实现,时钟显示和定时显示通过数码管显示出来。在指导老师的带领下,我们基本完成了任务书中的设计要求 ,实现了上课铃的功能,能够以数字形式显示出来,但是也有多多问题。 总体来说我的电子设计知识和硬件焊接技术都有限,也发现了很多不足之处。我很感谢学校老师给我的这次实习机会,感谢王影老师百忙之中来指导我们实习。在此我深表感谢!参考文献.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=P32;sbit k1=P12;sbit k2=P11;sbit k3=P10; sbit k4=P17;sbit k5=P33;sbit SCLK=P35;sbit IO=P36;sbit Rest=P37;uchar bdata SDat ;sbit D0=SDat0;sbit D7=SDat7;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 HC8=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 = P37;/ Write Protectedsbit X25045_CS = P14;/ Chip Selectedsbit X25045_SCK = P16;/ Serial Clocksbit X25045_SO = P13;/ Output from X25045sbit X25045_SI = P15;/ Input for X25045/=void ym() if(e=0)HC0=z/16;HC1=z%16; HC2=h/16;HC3=h%16;HC4=m/16;HC5=m%16;HC6=s/16;HC7=s%16; else if(e=1) HC0=2;HC1=0;HC2=n/16;HC3=n%16;HC4=y/16;HC5=y%16;HC6=ri/16;HC7=ri%16;else if(e=2&Q=0)HC0=z1/10;HC1=z1%10;HC2=h1/10;HC3=h1%10;HC4=m1/10;HC5=m1%10;HC6=s1/10;HC7=s1%10; else if(e=3&Q=0) HC0=2;HC1=0;HC2=n1/10;HC3=n1%10;HC4=y1/10;HC5=y1%10;HC6=ri1/10;HC7=ri1%10;else if(e=2&Q=1)HC0=z1/10;HC1=z1%10;HC2=h2/10;HC3=h2%10;HC4=m2/10;HC5=m2%10;HC6=s2/10;HC7=s2%10; else if(e=3&Q=1) HC0=2;HC1=0;HC2=n1/10;HC3=n1%10;HC4=y1/10;HC5=y1%10;HC6=ri1/10;HC7=ri1%10;/=void delay()uint F;for(F=0;F10000;F+); void delay1(uint v) while(v!=0) v-;/=void WByte(uchar x)uchar i;SDat=x;for(i=0;i=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=DMHCi&0x7f; elseif(i=1)&(e=0|e=2) P0=DMHCi&0x7f; else if(i=5)&(e=1|e=3) P0=DMHCi&0x7f;elseP0=DMHCi;P2=WMi;i+;if(i7) i=0;uchar RByte( )uchar i;for(i=0;i=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 1TH0=(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(Q1)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(e3)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 听力筛查考试题及答案
- 天天学农各章节测试考试题及答案
- 2025年公营养师之三级营养师题库附答案
- 2025年高级钳工题库+答案
- 2025年高级技师钳工试题及答案
- 2025年高级焊工职业技能考试练习题附答案
- 物竞预赛试题及答案
- 营销经营与管理办法
- 纸张使用及管理办法
- gmp认证与管理办法
- 八年级心理健康教育课件
- 产品标签管理制度
- 2025-2030中国除尘设备行业市场发展分析及前景趋势与投资研究报告
- 开学第一课校园防骗课件(小学生)
- 《华为存储产品介绍》课件
- DB33T 1197-2020 建筑地基基础工程施工质量验收检查用表标准
- 完全植入式输液港研究对比分析
- 经皮冠状动脉腔内冲击波球囊导管成形术临床应用中国专家建议
- 七上语文全册【古诗词文言文】注释译文解析
- 餐饮连锁企业食品安全体系
- DB11T 1544-2018 清洁生产评价指标体系 集成电路制造业
评论
0/150
提交评论