《[毕业设计精品]教学楼课铃系统硬件电路设计.doc》由会员分享,可在线阅读,更多相关《[毕业设计精品]教学楼课铃系统硬件电路设计.doc(44页珍藏版)》请在三一办公上搜索。
1、信息与控制工程学院硬件课程设计说明书 教学楼课铃系统硬件电路设计学生学号: XXX 学生姓名: XXX 专业班级: XXX 指导教师: XXX 职 称: XXX 起止日期: XXX 课程设计任务书一、 设计题目:教学楼课铃系统二、设计目的1、掌握DS1302时钟芯片的硬件电路构成原理及软件编程方法,熟悉DS1302时钟芯片的性能指标及特点;2、熟悉SST89E/V516RD2单片机的性能特点,并掌握SST89E/V516RD2单片机控制DS1302读写时间、日期的硬件电路组成及软件编程方法;3、了解LED显示及按键电路的组成原理,熟悉LED动态显示原理及实现方法;4、了解7805构成直流稳压电
2、源的电路组成及工作原理。三、设计任务及要求 设计并实现具有显示日期和时间的电子数字钟,数字钟具有以下基本功能:1、使用7位LED显示时间、日期和星期,正常显示时、分、秒、星期,使用按键可切换显示年、月、日;2、具有时间、日期调整功能,通过键盘可进行时间、日期的调整;3、具有闹钟功能,使用键盘设定闹铃时间,由蜂鸣器产生闹铃;4、定时控制功能,使用小型继电器完成定时控制功能(发挥部分)。4、定时控制功能,使用小型继电器完成定时控制功能(发挥部分)。四、设计时间及进度安排设计时间共三周(),具体安排如下表:周安排设 计 内 容设计时间第一周硬件电路设计2011.3.282011.4.3第二周硬件电路
3、焊接与调试2011.4.42011.4.10第三周编写课程设计说明书,课程设计答辩。2011.4.112011.4.15五、 指导教师评语及学生成绩指导教师评语:年 月 日成绩指导教师(签字):目 录课程设计任务书2第一章 总体电路说明11.1 总体电路框图11.2 总体电路工作的基本原理21.2.1 X5045看门狗电路21.2.2 DS1302时钟芯片21.2.3 键盘电路21.2.4 显示电路21.2.5 晶振电路21.2.6 电源3第二章 硬件电路设计42.1 SST89E51主控制电路42.2 时钟模块系统62.3 看门狗模块系统92.4显示模块系统11图 2-11 显示模块电路11
4、2.5键盘接口设计122.6 响铃系统设计12第三章 焊接与调试133.1.焊接方法133.2 注意事项13第四章 软件设计流程图14总结15附录 总体电路图17附录 程序18附录元件清单40第一章 总体电路说明 1.1 总体电路框图该电路由51系列单片机,X5045,DS1302时钟芯片,键盘,晶振,电源指示,显示电路,电源7大部分组成。期中X5045和DS1302均与单片机进行双向数据的交换。其余的部件则与单片机直接相连。采用了LED动态扫描作为显示系统,以SST89E51RD单片机为核心。电源X5045或X25045SST51单片机显示电路电源指示DS1302蜂鸣器键盘(4个)晶振图1-
5、1 课铃系统基本结构工作原理:教学课铃系统以SST51芯片为核心,主要采用DS1302芯片对时间的采集传递数据给数码管显示,通过写数据初始化。四个按键改变DS1302中的数据(包括年、月、周、日、时、分、秒)并切换显示,设定闹铃。当设定的闹铃时间与DS1302时钟芯片内的时间数据吻合是,系统发出响铃命令,此时蜂鸣器鸣叫。1.2 总体电路工作的基本原理1.2.1 X5045看门狗电路X5045看门狗电路,在此电路设计中,它的主要功能是:(1)硬件复位;(2)可选时间的看门狗电路;(3)低电压检测;(4)拥有512个字节的EPROM。1.2.2 DS1302时钟芯片DS1302可令系统电路中重要组
6、成部分,它主要作用是:(1)生成时钟;(2)拥有31个字节的RAM;1.2.3 键盘电路键盘电路中共有四个按键,它们的主要用途是:(1)日期切换;(2)设置选择;(3)设置闹铃;(4)加1。1.2.4 显示电路显示电路由6个LED的8段数码管构成六位动态显示电路,它们按照共阳极的方式互相连接,主要作用是现实时间,日期等数据,可以切换显示。三极管9012(PNP型)作为显示电路的为控制链接在电路中。1.2.5 晶振电路经真是晶体振荡器的简称。它是一种能把电能和机械能互相转化的晶体,它在共振的状态下工作,以提供稳定,精确的单频震荡。在通常工作条件下,普通的经振频率绝对精度可达百万分之五十。高级竟真
7、的精度更高。有些晶振还可以通过外加电压在一定范围内调整频率。它是响铃电路中最重要的部件,它就像个标尺,工作频率不稳定就会造成相关设备工作频率不稳定,自然容易出现问题。晶振另外一个作用就是在电路产生振荡电路,发憷时钟信号。在此电路设计中,晶振电路只为51单片机正常工作提供稳定的时钟信号,以确保单片机能够正常工作,而没有别的作用,所以在这个电路中,晶振元件没有输入端和输出端之分,只是仅仅与51单片机直接相连,作用也只有前者。图4-15 晶振 图1-2 1.2.6 电源在这里,我们原用的是+5V的直流稳压电源,作为外部电源接入,从而保证了电路的正常运行过程中时间精确性最高,因外部干扰产生的误差最小,
8、为整体电路功能的正常实现提供了保障。为了确保电压的稳定,我们还可以在电路中介入二极管整流,并利用电容进行滤波。第二章 硬件电路设计2.1 SST89E51主控制电路根据课题的具体内容,任务要求,计时,校时,定时,键盘显示等功能经多方考虑,采用SST89C51低功耗单片机。SST89E51是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:8K字节的程序存储器,128字节的RAM,32条I/O线,3个16位定时器/计数器,9个中断源4级中断优先权的中断结构,一个全双工的串行口,片上振荡器和时钟电路,单片机程序和数据存储空间分开独立寻址,有两个片内 FLASH 存储块。基本
9、FLASH (Block 0)占用64K 字节,二级FLASH 存储块Block 1 为8K 字节。图2-1 SST89E51单片机的片内结构图引脚说明:P07:0 I/O: P0 是一个漏极开路的8位双向I/O 口。作为输出口,每位能驱动多个LS 型TTL 负载。 P0 浮空,锁存器为“1”,可作为高阻抗输入。在访问外部存储器时,P 0 口 作为低8 位地址和数据总线分时复用。在这种应用中,当转为高电平时,它用了强大 的内部上拉。在外部主模式编程状态下,P0 接收代码字节,在外部主模式校验过程中 输出代码字节。在程序校验过程中需要外部上拉电阻。P17:0 : 带内部上拉的I/O:P1 是一个
10、带内部上拉电阻的8 位准双向I/O 口。每位能驱动 LS 型TTL负载。当P1 口作为输入口用时,向内部锁存器写入“1”,P1 引脚被内部上 拉电阻拉为高电平。由于内部上拉电阻,被拉为低的P1 引脚能向外提供电流。P15, 6,7 有16 毫安的高电流驱动能力。当外部主模式在编程和测试时,P1 也接收低8 位 地址。P10 I/O T2 :定时器 /计数器2 外部计数输入或时钟输出从定时器/计数器2。P11 I T2EX: 定时器/计数器2 捕捉/重装触发器和方向控制。P12 I EC1:PCA 定时器/计数器外部输入。P13 I/O CEX0:比较/捕捉外部输入输出模块,每个比较/捕捉模块连
11、接到一P1口引脚,当不用 于PCA 时,这个口用作标准I/O。 P14 I/O SS#:主机输入、从机输出(SPI)或CEX1:比较/捕捉外部输入输出模块。P15 I/O MOSI:主机输出,从机输入(SPI)或CEX2:比较/捕捉外部输入输出模块。P17 I/O SCK: 主机时钟输出、从机时钟输入或CEX4:比较/捕捉外部输入输出模块。P27:0 :带内部上拉的I/O: P2 是一个带内部上拉电阻的8 位准双向I/O 端口,当被作为 输入时,向它写“1”,P2 引脚被内部上拉电阻拉为高电平。作为输入使用时,被内部 上拉电阻下拉为低电平的P2 会产生电流。当从片外程序存储器取数和访问片外数据
12、存 储器时,P2 能提供高8 位地址。在此应用中,当转为VOH 时,它利用了功能极强的 内部上拉电阻。当外部主模式在编程和测试时,它还接收控制信号和部分高8 位地址。P37:0 带内部上拉的I/O: P3 是一个带内部上拉电阻的8 位准双向I/O 口。P 3 的输出缓冲能驱动多个LS 型TTL 。当被作为输入时,向它写“1”,PORT 3 引脚被内部上拉电阻拉为高电平,作为输入使用时,被外部拉为低,能驱动电流。当外部主机在编程和校验时,它还能接收控制信号和部分高8 位地址。P30 I RXD :串行数据接收。P31 O TXD: 串行数据发送。P32 I INT0#:外部中断0 输入。P33
13、I INT1#:外部中断1 输入。P34 I T0:定时/计数器0 的外部计数输入。P35 I T1:定时/计数器1 的外部计数输入。P36 O WR#:外部数据存储器写选通。P37 O RD#:外部数据存储器读选通。P47:0 :带内部上拉的I/O: P3 是一个带内部上拉电阻的4 位准双向I/O 口。P 3 口输出缓冲能驱动多个LS 型TTL 。当被作为输入时,向它写“1”,PORT 3 引脚被内部上拉电阻拉为高电平,作为输入使用时,被外部拉为低,能驱动电流。P40 I RXD :串行数据接收。P41 O TXD: 串行数据发送。P42 I INT3#:外部中断3 输入。P43 I INT
14、2#:外部中断2 输入。 PSEN# I/O 程序存储器允许:PSEN#是外部程序存储器读选通。当从内部程序存 储器执行时,PSEN#不激活。当从外部程序存储器执行时,每个机器周期PSEN#两 次有效,除了当进入外部数据存储器时,在每个机器周 期都有一个PSEN#信号跳过。当RST 输入能持续保持高电平多于10个机器周期时 ,迫使PSEN#由低到高的转换会使单片机进入主编程模式。RST:振荡器在工作时,此脚如能保持两个机器周期以上的高电平复位器复位后,当RST 输入 保持高电平,PSEN#引脚被高到低的电平转换驱动,器件将进入外部主模式,否则, 器件将进入通用操作模式。EA# I: 外部访问允
15、许:为了使单片机能从片外程序存储器取指令,EA#必为低内部程序执行 时,EA#必为高电平。然而,第四级加密锁将禁止EA#,程序只能从片内程序存储器 开始执行。EA#能承受12V 的高电压。(“绝对最大承受值 )。ALE/PROG I/0: 地址允许:在访问外部存储器时,ALE 用于锁存出现在P0 口 的低8 位地址。此引脚也是外部主模式编程脉冲输入端(PROG#)。除 了访问外部数据存储器,ALE 在每个机器周期有效两次,在第二个机 器周期有一个ALE 有效被跳过。然而,如果AO 置“1“,ALE 被禁止。XTAL1/ I/0 振荡器:输入输出来转换振荡放大器。XTAL 1 是内部时钟产生电路
16、的输入从 外部时钟源。VDD 输入 电源输入:通用、IDLE、省电、备用模式下的电源供应。VSS 输入 接地端:电源接地端(参考电压为0V)。图2-2 主控制电路2.2 时钟模块系统如图2-6,该系统采用了DS1302时钟芯片,DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,工作电压在2.55.5V,采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓电流充电的能力,本系统采用5V电源供电。实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31天时可以自动调整,且具有闰年补偿功能。DS1302的外部引脚分配如图2-4所示。时钟芯片DS
17、1302在任何数据传送时必须先初始化,把RST引脚置为高电平,然后把8位地址和命令装入移位寄存器,数据在SCLK的上升沿被输入,无论是读周期还是写周期开始8位指定40个寄存器中哪个将被访问到,在开始8个时钟周期,把命令字节装入揿位寄存器,在写操作时写入数据,时钟脉冲的个数在单位字节下为8加8,在多字节方式下为8加字节数,最大可达248字节数。为了提高对32个地址的寻址能力,可以把时钟或RAM寄存器规定为多字节方式,在多字节方式中,读或写从地址0的位0开始,必须按照数据传送的次序最先的8个寄存器。但是当以多个字节写RAM时,为了传送数据不必写所有31字节,不管是否写了全部31字节,所写的每个字节
18、都将传送至RAM。时钟暂停:秒寄存器的位7定义位时钟暂停位,当它为1时,DS1302停止振荡,进入低功耗的备份方式,通常在对DS1302进行写操作时,停止振荡,当它为0时时钟将开始启动。DS1302是SPI总线驱动方式,它不仅要向总线写入控制字,还需要读取寄存器数据。要想与DS1302通信,首先要了解DS1302的控制字,如图2-3表2-3 DS1302的控制字 7 6 5 4 3 21 0 1 RAM A4 A3A2A1A0RD控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到 DS1302中。位 6:如果为0,则表示存取日历时钟数据,为1表示存取 RAM 数据;位 5至
19、位1(A4A0):指示操作单元的地址;位 0(最低有效位):如为0,表示要进行写操作,为1表示进行读操作。控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。DS1302内部的RAM分为两类,一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制字为COHFDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(
20、写),FFH(读)。单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令帧,最高位BIT7固定为1,BIT6决定操作是针对RAM还是时钟寄存器,接着的5个BIT 是RAM或时钟寄存器在DS1302的内部地址,最后一个BIT表示这次操作是读操作还是写操作。物理上,DS1302的通讯接口由3个口线组成,即 RST,SCLK,I/O。其中RST从低电平变成高电平启动一次数据传输过程,SCLK 是时钟线,I/O 是数据线。图 2-4 DS1302的内部结构图图2-5 DS1302外部管脚分配如图2-5为该芯片的管脚
21、图,各引脚的功能为:Vcc1:主电源;Vcc2:备份电源。当 Vcc2Vcc1+0.2V 时, 由 Vcc2向 DS1302 供电,当 Vcc2 Vcc1时,由 Vcc1向 DS1302供电。SCLK:串行时钟,输入,控制数据的输入与输出;I/O: 三线接口时的双向数据线;CE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE开始控制字访 问移位寄存器的控制逻辑;其次,CE 提供结束单字节或多字节数据传输的方法。图2-6时钟模块电路2.3 看门狗模块系统本系统复位电路采用了X25045看门狗电路,X25045是美国Xicor公司的生产的标准化8脚集成电路,它将EEPROM、看
22、门狗定时器、电压监控三种功能组合在单个芯片之内,大大简化了硬件设计,提高了系统的可靠性,减少了对印制电路板的空间要求,降低了成本和系统功耗,是一种理想的单片机外围芯片。 看门狗定时器的预置时间是通过X25045的状态寄存器的相应位来设定的。如表2所示,X25045状态寄存器共有6位有含义,其中WD1、WD0和看门狗电路有关,其余位和EEPROM的工作设置有关。表2-7 X25045状态寄存器 D7 D6 D5 D4 D3 D2 D1 D0 X X WD1 WD0 BL1 BL0 WEL WIPWD10,WD0=0,预置时间为1.4s;WD10,WD0=1,预置时间为0.6s。WD11,WD0=
23、0,预置时间为0.2s;WD11,WD0=1,禁止看门狗工作。看门狗电路的定时时间长短可由具体应用程序的循环周期决定,通常比系统正常工作时最大循环周期的时间略长即可。编程时,可在软件的合适地方加一条喂狗指令,使看门狗的定时时间永远达不到预置时间,系统就不会复位而正常工作。当系统跑飞,用软件陷阱等别的方法无法捕捉回程序时,则看门狗定时时间很快增长到预置时间,迫使系统复位。看门狗电路硬件连接如图2-8所示。X25045在读写操作之前,需要先向它发出指令,指令名及指令格式如下表。表2-8 X25045指令及其含义指令名指令格式操作WRENWRDIRDSRWRSRREADWRITE0000011000
24、00010000000101000000010000A80110000A8010设置写使能锁存器(允许写操作)复位写使能锁存器(禁止写操作)读状态寄存器写状态寄存器把开始于所选地址的存储器中的数据读出把数据写入开始于所选地址的存储器图2-9 X25045引脚图如图2-9外部引脚封装,其引脚功能如下:CS:片选择输入;SO:串行输出,数据由此引脚逐位输出;SI:串行输入,数据或命令由此引脚逐位写入X25045;SCK:串行时钟输入,其上升沿将数据或命令写入,下降沿将数据输出;WP:写保护输入。当它低电平时,写操作被禁止;Vss:地;Vcc:电源电压;RESET:复位输出。2.4显示模块系统显示部
25、分采用普通的共阳数码管显示,采用动态扫描,以减少硬件电路,数码管分别为十时,时,十分,分,十秒,秒显示,显示时采用串行口输出段码,用74LS164来驱动数码管扫描只需7ms。74LS164内部为8个D触发器,用以实现数据的串行移位,74LS164为TTL单向8位移位寄存器,可实现串行输入并行输出,CPU为时钟输入端,可连接到串行口TXD端。每个时钟信号的上升沿加到CP端时,移位寄存器移一位,8个时钟脉冲过后8位二进制数全部移入74LS164中,MR脚为复位端,当该位为低电平时,移位寄存器各位复0。当它为高电平时时钟脉冲才起作用。Q1Q8并行输出分别接数码管的各段对应脚上,在给出8个脉冲后,最先
26、进入74LS164的第一个字节数据到达最高位,再来1个脉冲,第一个脉冲就会从最高位移出,进入下一个74LS164的第一位。图2-10 74LS164外部封装图引脚功能:CLOCK :时钟输入端CLEAR: 同步清除输入端(低电平有效) A,B :串行数据输入端QAQH: 输出端图 2-11 显示模块电路 引脚功能:CLOCK :时钟输入端CLEAR: 同步清除输入端(低电平有效) A,B :串行数据输入端QAQH: 输出端2.5键盘接口设计本设计采用独立键盘按钮,分别与单片机的P3.1,P3.3,P3.4,P3.5端口相连,P3.1来控制时间的显示,P3.3来调节时间,P3.4来控制时间的加,
27、P3.5来设置闹铃。 图 2-12电路键盘设计 2.6 响铃系统设计响铃采用了一个PNP三极管来驱动一个蜂鸣器,简单方便,响铃效果好。图 2-13 响铃设计第三章 焊接与调试3.1.焊接方法焊接是将各种元件与印制导线牢固的连接在一起的过程,是制造电子产品的重要环节之一。如果没有响应的工艺质量的保证,任何一个设计精良的电子产品都难以达到设计要求。(1) 电烙铁的使用通常握持电烙铁的方法有握笔法和握拳法:握笔法适用于轻型的烙铁如30W的内热式。它的烙铁头是直的,头端挫成一个斜面或圆锥状的,适宜焊接面积较小的焊盘;握拳法,适用于功率较大的烙铁,我们做电子制作的一般不是大用功率的烙铁。使用烙铁时,烙铁
28、的温度太低则熔化不了焊锡,或者使焊点未完全熔化而成不好看、不可靠的样子。太高又会使烙铁“烧死”(尽管温度很高,却不能蘸上锡)。 另外也要控制好焊接的时间,电烙铁停留的时间太短,焊锡不易完全熔化、接触好,形成“虚焊”,而焊接时间太长又容易损坏元器件一般一两秒内要焊好一个焊点,若没完成,宁愿等一会儿再焊一次。焊接时电烙铁不能移动,应该先选好接触焊点的位置,再用烙铁头的搪锡面去接触焊点。(2) 原件焊接顺序先难后易,先帝后高,先贴片后插袋。宗旨:焊接方便,节省时间。3.2 注意事项要避免虚焊,漏焊的情况;要注意焊锡的多少,太多或太少都不好,要适中;电子元器件在电路板间的距离要合理,同意要注意美观;注
29、意焊接与元器件的顺序;注意电子器件的摆放是否正确以及线路间的连接是否正确。第四章 软件设计流程图本程序采用C语言编程,C语言作为一种非常方便的语言而得到广泛的支持,国内最通用的是KEIL C51。C语言程序本身不依赖于极其硬件系统,基本上不作修改就能将程序从不同单片机中移植过来。C提供了很多数学函数并支持浮点运算,开发效率高,顾客缩短开发时间。增加程序可读性和可维护性。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。C51
30、工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。开始初始化参数设置调
31、用键盘子程序调用显示子程序调用控制子程序图 4-1 主程序流程图总结单片机应用广泛,在这次硬件实习中,通过焊电路板,软件编程,了解了更多有用的东西,比如在设计电路时,要考虑电阻的大小,引脚的作用。焊电路板时注意力集中,不要虚焊等等。在这次实践过程中我也和我们小组的成员共同努力,最终完成了任务,也使我们更加了解实践的重要性以及同学间的交流。系统可以被学校、工厂等企事业单位应用,设计比较简单。经过我们的努力,使我对单片机有了初步的认识,了解了一些软件编程的技巧。通过本次硬件实习,使我学会了课堂上学不到的知识。对单片机又有了更深的认识,掌握单片机设计步骤,知道这门课程在工作中的重要性。在课程设计过程
32、中也遇到了许多困难,但在老师和同学们的同共努力下都得到解决,最终看到了成果.我感谢老师这三周来对我们细心的教导,使我熟悉了一些软件方面的知识,相信定会为日后工作打下坚实基础.硬件设计加深了学生对所学理论的理解,扩展了教学中的实验内容和要求,积累了实践体验和经验,让我们提前感受到毕业设计的大致过程,进而为我们的毕业设计奠定了良好的基础,也提高学生实际应用能力。参考文献1阎石.数字电子技术基础.北京:高等教育出版社,2009,32翟玉文.电子设计与实践.北京:中国电力出版社,2006,83龙可微.X25045芯片及其应用:电子技术应用,1999.94张毅刚.单片机原理及其应用:高等教育出版社,20
33、03,12 附录 总体电路图 附录 程序/*包含头文件*/#include#include#define uchar unsigned char#define uint unsigned int#define wei P2#define WREN 0x06#define WRDI 0x04#define RDSR 0x05#define WRSR 0x01#define READ 0x03#define WRITE 0x02/*端口定义*/sbit ds1302_clk=P14;sbit ds1302_io=P15;sbit ds1302_rst=P16;sbit Dat=P37; sbit
34、CLK=P36;sbit key1=P31; /时间日期转换sbit set=P33; /设置选择键sbit up=P34; /+1sbit arm=P35; /设定闹铃sbit bing=P30; /响铃sbit SO=P10; /定义输出端口sbit CS=P11; /定义片选端口sbit SCK=P12; /定义时钟端口sbit SI=P13; /定义输入端口sbit C=ACC7; /*定义位变量*/*共阳led段码表*/unsigned char code tab= 0x30,0xf9,0x52,0xd0,0x99,0x94,0x14,0xF1,0x10,0x90; /0-9,/*l
35、ed显示位控码*/unsigned char code dispbitcode=0xdf,0xef,0xf7,0xfd,0xfb,0xfe;/*led显示缓存区*/unsigned char dispbuf8=0,0,10,0,0,10,0,0;unsigned char disp8=0,0,10,0,0,10,0,0;/*定义全局变量*/unsigned char hour,minute,second,year,month,day,key,room;unsigned char shi,fen,miao,nian,yue,ri;unsigned char mscnt,cont;unsigned
36、 char hor,min,sec,nn,yy,rr;unsigned char time=0x06,0x03,0x03,0x03,0x00,0x00,0x00;/初始时间数组unsigned char id;bit flag;/*函数功能:数码管扫描延时子程序入口参数:出口参数:*/void delay(void) int k;for(k=0;k0;i-) for(j=110;j0;j-); /-bdata unsigned char Com;void Tran() /*发送一字节数据子函数*/ unsigned char I; for(I=0; I8; I+) ACC=Com; /*将数据
37、放入A中*/ SI=C; SCK=0; /*Sck产生一个上跳变*/ SCK=1; Com=Com0;i-) ds1302_io=(bit)(byte1&0x01);/先进最低位 ds1302_clk=1; _nop_(); ds1302_clk=0; byte1=1; /*函数功能:从ds1302读取一字节数据入口参数:出口参数:temp*/unsigned char outputbyte(void) unsigned char i; unsigned char temp=0; for(i=8;i0;i-) temp=temp1; if(ds1302_io) temp=temp|0x80;
38、/先出最低位 ds1302_clk=1; _nop_(); ds1302_clk=0; return(temp);/*函数功能:向ds1302某地址写入一字节数据入口参数:addr,tdat出口参数:*/void write_ds1302(unsigned char addr,unsigned char tdat) ds1302_rst=0; _nop_(); ds1302_clk=0; _nop_(); ds1302_rst=1; inputbyte(addr); _nop_(); inputbyte(tdat); ds1302_clk=1; _nop_(); ds1302_rst=0;/*函数功能:从ds1302某地址读取数据入口参数:add出口参数:timedata*/unsigned char read_ds1302(unsigned char add) unsigned char timedata; ds1302_rst=0; _nop_(); ds1302_clk=0; _nop_(); ds1302_rst=1; inputbyte(add); _nop_(); timedata=outputbyte(); ds1302_clk=1; _nop_()