




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 设 计 课程名称:_ 单片机课程设计 题目名称: 倒计时显示器设计 学生学院:_ 电气工程学院 专业班级:_电气工程及其自动化 6 班 学 号: 学生姓名:_ _ 指导教师:_ 2013 年 1 月 9 号 摘要 近年来随着计算机在社会领域的渗透,单片机的应用正在不断的走向深入,同 时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统 中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还 应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以做完善。生 活中单片机的应用很广,如电子倒计时显示器就能够帮你记住一些重要的日子 叫你不会忘记。它可以用于奥运会的倒计时、世界博览会的倒计时、高考的倒 计时等重要日子。 本文介绍的是以89系列单片机为核心,它是一个可以人机操作的系统。通过控 制电路的按键操作,发出高电平或低电平给单片机处理,并发出指令,可对时 间进行预设。结合译码芯片、时钟芯片以及用LED数码显示管来达到显示功能的 倒计时钟。该倒计时钟能显示当前日期(年、月、日、时、分),以及距离目 标日期所剩下的时间(天数、时、分、秒),倒计时天数可任意调整。他的优点 是成本低、体积小、可靠性高,控制功能强,使用方便,性能价格比高。 【关键词】:倒计时 单片机 时钟芯片 LED 数码显示 目录 摘要 1.设计任 3 务 4 1.1 设计内容及技术要 求 4 1.2 课程设计要 求 4 1.3 总体设 计 4 2.系统方案设 计 4 2.1 方案选 择 5 2.2 系统的功能分 析 5 2.3 系统的结构框 图 5 2.4 各功能部件单元电路设 计 8 2.4.1 电源电 路 8 2.4.2 复位电 路 9 2.4.3 时钟电 路 10 2.4.4 按键电 路 11 2.4.5 LED 模块和显示原 理 12 3.心得体 会 14 附页 程序清单 仿真结果 1.设计任务 1. 1 设计内容及技术要求 5 借助 201*年*会,设计 201*年*会倒计时显示器设计。 综合应用并行接口,定时器、计数器电路,中断技术,设计显示电路,显 示时间和倒计时天数显示,显示方式课通过键盘调节。 1.2 课程设计要求 (1).画出硬件原理图,软件流程图。 (2).写出地址分配表,完成软件代码的编写与编译。 (3).在软件环境中完成调试与仿真。 (4).在硬件环境中完成调试与仿真。 (5).完成芯片烧写与硬件搭建,实现设计功能。 1.3 总体设计 本倒计时以 AT89C51 单片机作为核心,最长可以倒计时 999 天。可以显示距 倒计时时刻还有多长时间,显示格式天/时/分/秒;倒计时时间可以认为设定;另 外可以显示当前日历。 倒计时设置时间的位切换、设置数值、启动定时器、切换日历通过外部中断 来实现。 倒计时天/时/分/秒的计时分别利用 100、24、60、60 进制自减计数来实现。 倒计时的显示电路由 LED 数码管组成,利用 8 只数码管显示,从左至右依次 显示为天/时/分/秒。 2.系统方案设计 2.1 方案选择 近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入, 同时带动传统控制检测日新月益更新。现在,在许多领域中,定时器得到了广 泛的应用,比如在体育比赛中的计时器;安全措施中的定时报警器;游戏中的 倒计时;维持秩序的交通信号灯;红路灯,交通控制器,闹钟等等。可见倒计 时器在社会中的重要性。当然,设计倒计时器的方法很多,以下是两个设计方 案。 方案一:基于 AT89S51 单片机的 LCD 液晶显示模块 1602 显示的倒计时器。 主要是以单片机来控制,用按键来设定倒计时初始时刻的值,LCD1602 液晶作 为显示模块来显示剩余的时间。 方案二:基于 AT89S51 单片机的数码管显示模块显示的倒计时器。主要是 以单片机来控制,用按键来设定倒计时初始时刻的值,数码管作为显示模块来 显示剩余的时间。此电路对于倒计时器中的 LED 数码管示器来说,采用以软件 为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。 方案比较:通过以上两个方案,我们发现,方案二总体比方案一好。首先 方案一虽然硬件电路简单,但造价较高,且在编写程序实现所要求的功能时较 难,而方案二所用的显示模块是比较熟悉的数码管,编写程序是相对容易,且 电路造价不高,因此,综合考虑之后决定采用方案二。 2.2 系统的功能分析 对当前国内外倒计时钟的现状调查分析,设计一个倒计时钟系统应具备三 个功能:时钟功能、倒计时功能和时间调整功能。本系统在尽量达到功能、完 成设计的同时又尽可能减小硬件成本,所以在时钟功能上只选择了对当前年、 月、日、时、分的显示,而放弃了对秒的显示,在倒计时功能上只选择了对倒 计天数的四位显示,而放弃了对到达的时间(北京奥运会开幕式2008年8月8日) 的显示。时间调整功能则是可以将倒计天数调整和设置,通过软件来完成对系 统初始化的要求以及处理系统断电等意外问题。 2.3 系统的结构框图 7 图 2.3 倒计时系统结构框图 通过结构图我们可以看出单片机为本设计的重点所在,我们通过对它的编程, 来完成对时钟产生单元的读与写,然后用时钟显示单元将信息显示给用户。如 需要调整时间可以通过倒计时间调整控制单元进行时间的设定。本设计单片机 选择 AT89S51. AT89S51 是一个低功耗,高性能 CMOS 8 位单片机,片内含 4k Bytes ISP(In-system programmable)的可反复擦写 1000 次的 Flash 只读程序存储器, 器件采用 ATMEL 公司的高密度、非易失性存储技术制造,兼容标准 MCS-51 指令 系统及 80C51 引脚结构,芯片内集成了通用 8 位中央处理器和 ISP Flash 存储 单元,功能强大的微型计算机的 AT89S51 可为许多嵌入式控制应用系统提供高 性价比的解决方案。 AT89S51 具有如下特点:40 个引脚,4k Bytes Flash 片内程序存储器, 128 bytes 的随机存取数据存储器(RAM),32 个外部双向输入/输出(I/O)口, 5 个中断优先级 2 层中断嵌套中断,2 个 16 位可编程定时计数器,2 个全双工串 行通信口,看门狗(WDT)电路,片内时钟振荡器。 此外,AT89S51 设计和配置了振荡频率可为 0Hz 并可通过软件设置省电模 式。空闲模式下,CPU 暂停工作,而 RAM 定时计数器,串行口,外中断系统可 继续工作,掉电模式冻结振荡器而保存 RAM 的数据,停止芯片其它功能直至外 中断激活或硬件复位。同时该芯片还具有 PDIP、TQFP 和 PLCC 等三种封装形式, 以适应不同产品的需求。 (一) 、AT89S51 主要功能列举如下: 1、为一般控制应用的 8 位单芯片 2、晶片内部具时钟振荡器(传统最高工作频率可至 12MHz) 3、内部程式存储器(ROM)为 4KB 4、内部数据存储器(RAM)为 128B 5、外部程序存储器可扩充至 64KB 6、外部数据存储器可扩充至 64KB 7、32 条双向输入输出线,且每条均可以单独做 I/O 的控制 8、5 个中断向量源 9、2 组独立的 16 位定时器 10、1 个全多工串行通信端口 倒计时间调整控 制单元 单片机 时钟信息产 生单元 时钟信息显示 单元 11、8751 及 8752 单芯片具有数据保密的功能 12、单芯片提供位逻辑运算指令 (二) 、AT89S51 各引脚功能介绍: VCC: AT89S51 电源正端输入,接+5V。 VSS: 电源地端。 XTAL1: 单芯片系统时钟的反相放大器输入端。 XTAL2: 系统时钟的反相放大器输出端,一般在 设计上只要在 XTAL1 和 XTAL2 上接上一 只石英振荡晶体系统就可以动作了,此外可 以在两引脚与地之间加入一 20PF 的小电容, 可以使系统更稳定,避免噪声干扰而死机。 RESET: AT89S51 的重置引脚,高电平动作,当 要对晶片重置时,只要对此引脚电平提升至 高电平并保持两个机器周期以上的时间, AT89S51 便能完成系统重置的各项动作,使 得内部特殊功能寄存器之内容均被设成已知 状态,并且至地址 0000H 处开始读入程序代 码而执行程序。 EA/Vpp: “EA“为英文“External Access“的缩写,表示存取外部程序代码之意,低电平 动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部 EPROM 中)来执行程序。因此在 8031 及 8032 中,EA 引脚必须接低电平,因 为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接 成高电平。此外,在将程序代码烧录至 8751 内部 EPROM 时,可以利用此引脚 来输入 21V 的烧录高压(Vpp) 。 ALE/PROG: ALE 是英文“Address Latch Enable“的缩写,表示地址锁存器启用信号。 AT89S51 可以利用这支引脚来触发外部的 8 位锁存器(如 74LS373) ,将端口 0 的地址总线(A0A7)锁进锁存器中,因为 AT89S51 是以多工的方式送出地 址及数据。平时在程序执行时 ALE 引脚的输出频率约是系统工作频率的 1/6, 因此可以用来驱动其他周边晶片的时基输入。此外在烧录 8751 程序代码时,此 引脚会被当成程序规划的特殊功能来使用。 PSEN: 此为“Program Store Enable“的缩写,其意为程序储存启用,当 8051 被设成 为读取外部程序代码工作模式时(EA=0) ,会送出此信号以便取得程序代码, 通常这支脚是接到 EPROM 的 OE 脚。AT89S51 可以利用 PSEN 及 RD 引脚分 别启用存在外部的 RAM 与 EPROM,使得数据存储器与程序存储器可以合并在 一起而共用 64K 的定址范围。 AT89S51 9 PORT0(P0.0P0.7): 端口 0 是一个 8 位宽的开路汲极(Open Drain)双向输出入端口,共有 8 个位,P0.0 表示位 0,P0.1 表示位 1,依此类推。其他三个 I/O 端口 (P1、P2、P3 )则不具有此电路组态,而是内部有一提升电路,P0 在当做 I/O 用时可以推动 8 个 LS 的 TTL 负载。如果当 EA 引脚为低电平时(即取用外部 程序代码或数据存储器) ,P0 就以多工方式提供地址总线(A0 A7 )及数据总 线(D0D7) 。设计者必须外加一锁存器将端口 0 送出的地址栓锁住成为 A0A7,再配合端口 2 所送出的 A8A15 合成一完整的 16 位地址总线,而定 址到 64K 的外部存储器空间。 PORT2(P2.0P2.7): 端口 2 是具有内部提升电路的双向 I/O 端口,每一个引脚可以推动 4 个 LS 的 TTL 负载,若将端口 2 的输出设为高电平时,此端口便能当成输入端口来使 用。P2 除了当做一般 I/O 端口使用外,若是在 AT89S51 扩充外接程序存储器或 数据存储器时,也提供地址总线的高字节 A8A15,这个时候 P2 便不能当做 I/O 来使用了。 PORT1(P1.0P1.7): 端口 1 也是具有内部提升电路的双向 I/O 端口,其输出缓冲器可以推动 4 个 LS TTL 负载,同样地若将端口 1 的输出设为高电平,便是由此端口来输入 数据。如果是使用 8052 或是 8032 的话,P1.0 又当做定时器 2 的外部脉冲输入 脚,而 P1.1 可以有 T2EX 功能,可以做外部中断输入的触发脚位。 PORT3(P3.0P3.7): 端口 3 也具有内部提升电路的双向 I/O 端口,其输出缓冲器可以推动 4 个 TTL 负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控 制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。 其引脚分配如下: 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,外部数据存储器的读取信号。 2.4 各功能部件单元电路设计 2.4.1 电源电路 根据电路图分析,本此设计需要一个的+5V 直流稳压电源, GND、Vcc 是提 供直流电源的两个引脚。电源电路图如图 3 所示。 图2.4.1 电源部分电路图 其电源工作原理:220V 的交流电压变压成 12V,再经过桥式整流、滤波输出直 流电源,通过稳压芯片 7850 输出+5V 直流稳压电源。输出给各个需要供电的单 元。 2.4.2 复位电路 复位是单片机的初始化操作,只需给 AT89S52 的复位引脚 RST 加上大于 2 个机器周期(即 24 个时钟振荡周期)的高电平就可得单片机复位,复位时,PC 初始化为 0000H,使单片机从 OUT 单元开始执行程序。除了进入系统的正常初 始化之外由于程序运行出错或操作错误而使系统处于死锁状态,为摆脱死锁状 态,也需按复位键使得 RST 脚为高电平,使单片机重新启动。 在系统中,有时会出现显示不正常,也为了调试方便,我们需要设计一个 复位电路,AT89S52 单片机复位电路共有上电复位、按键电平复位和按键脉冲 复位。本系统是的复位电路主要完成系统的上电复位和系统在运行时用户的按 键复位功能。复位电路可由简单的 RC 电路构成,也可使用其它的相对复杂,但 功能更完善的电路。本系统采用的电路如图 5-1 所示。工作原理是:上电瞬间, RC 电路充电,RESET 引脚端出现正脉冲,只要 RESET 保持 10ms 以上高电平,就 能使单片机有效的复位。当时钟频率选用 12MHz 时,C 取 10uF,R 取 10K。上 电自动复位电路由上电瞬间 C 与 R 构成充电电路,RESET 端的电位与电源 Vcc 相同,随着充电电流的减少,RESET 的电位逐渐下降。图中 RC 时间常数越大, 上电时 RESET 端保持高电平的时间越长,图中这组参数足以保证复位操作。若 复位电路失效,加电后 CPU 从一个随机的状态开始工作,系统就不能正常运行。 图中的按键 S5 的功能是按键复位,按下 S5 键时 RST 为高电平,只要保持 10ms 11 以上的高电平,就可以时单片机复位。按键复位用在系统运行时的复位,使系 统重新运行。复位电路如下图所示。 图 2.4.2 复位电路原理图 2.4.3 时钟电路 时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准, 有条不紊地一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电 路的质量也直接影响单片机系统稳定性。常用的时钟电路有两种方式,一种是 内部时钟方式,另一种是外部时钟方式。 单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路, 只要外界一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决 定单片机的工作速度。本系统使用的是内部时钟方式。时钟电路如下图 5-2 所 示。 图 2.4.3 时钟电路原理图 一般选用石英晶体振荡器。此电路在加电大约延迟 10ms 后振荡器起振,在 XTAL2 引脚产生幅度为 3V 左右的正弦波时钟信号,其振荡频率主要由石英晶振 的频率确定。电路中两个电容 C1、C2 的作用有两个:一是帮助振荡器起振;二 是对振荡器的频率进行微调。本系统的 C1、C2 的值为 30pf。 单片机在工作时,有内部振荡器产生或由外直接输入的送至内部控制逻辑 单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数,f 表示。 图 5-2 中的时钟频率为 12MHz,即 f=12MHz,则时钟周期为 1/12us。 2.4.4 按键电路 本系统的按键电路的作用是能够调整倒计时的初始值,倒计时是按天、时、 分、秒顺寻排列显示的,用四个按键分别设定天、时、分、秒,所达到的效果 是按一下对应的键时,所对应的值加一。在程序中用 K4 对应天的设定,K3 对 应时的设定,K2 对应分的设定,K1 对应秒的设定。另外 K1 按键不但作为可以 设定秒的初值,还可以起到暂停倒计时运行的作用;即当系统在运行时,按 K1 键,系统暂停,如果继续按 K1 键,则秒的值增加,完成的是设定秒的功能。同 样,K4 也有两个功能。一个是设定天的初值,一个是起到开启系统的作用,即 当系统处于暂停时,按 K4 键,则系统开始运行,如果继续按 K4 键,则完成的 是设定天的初值的功能。按键电路如下图 5-3 所示。 13 图 2.4.4 按键电路原理图 2.4.5 LED模块和显示原理 LED 显示器又称为数码管,LED 显示器由 8 个发光二极管组成。中 7 个长条 形的发光管排列成“日”字形,另一个贺点形的发光管在显示器的右下角作为 显示小数点用,它能显示各种数字及部份英文字母。LEDD 显示器有两种不同的 形式:一种是 8 个发光二极管的阳极都连在一起的,称之为共阳极 LED 显示器; 另一种是 8 个发光二极管的阴极都连在一起的,称之为共阴极 LED 显示器 数码管的分类:数码管按段数分为七段数码管和八段数码管,八段数码管比 七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个 “8”可分为 1 位、2 位、4 位等等数码管;按发光二极管单元连接方式分为共 阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一 起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极 COM 接到 +5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段 的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴 极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极 COM 接到地线 GND 上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。 当某一字段的阳极为低电平时,相应字段就不亮。 数码管的驱动方式:数码管要正常显示,就要用驱动电路来驱动数码管的各 个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以 分为静态式和动态式两类。 1) 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的 每一个段码都由一个单片机的 I/O 端口进行驱动,或者使用如 BCD 码二-十进制 译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用 I/O 端口多,如驱动 5 个数码管静态显示则需要 5840 根 I/O 端口来驱动, 实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。 2) 动态显示驱动:动态驱动是将所有数码管的 8 个显示笔划 “a,b,c,d,e,f,g,dp“的同名端连在一起,另外为每个数码管的公共极 COM 增加 位选通控制电路,位选通由各自独立的 I/O 线控制,当单片机输出字形码时, 所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决 于单片机对位选通 COM 端电路的控制,所以我们只要将需要显示的数码管的选 通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流 控制各个数码管的的 COM 端,就使各个数码管轮流受控显示,这就是动态驱动。 在轮流显示过程中,每位数码管的点亮时间为 12ms,由于人的视觉暂留现象 及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描 的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显 示的效果和静态显示是一样的,能够节省大量的 I/O 端口,而且功耗更低。 本次电路设计采用的是共阴极数码管,通过动态扫描方式驱动,其电路模块如 下: 15 图 2-5 数码管结构 3.总结与心得 通过本次课程设计,我对单片机和 C 语言的相关知识得到了进一步的,刚 开始看到这个题目的时候,感觉倒计时不是很难,有对应的输入,在控制芯片 的作用下,进行递减的控制,就可以达到效果。所以刚开始的时候,做的还不 是很认真,当设计进行到具体环节的时候,问题就体现出来了,并不是像刚开 始的那样简单。 首先要想到芯片的对应 P 口的功能,于是要对所学的单片机的知识进行复习, 查找相关资料对那些知识进行扩充,于是就大量的查找相关资料和阅读,了解 清楚了相应的功能后,开始了设计。 接着就是具体的模块部分的设计。我把整体模块分为三个部分进行,输入 部分,即倒计时的预设置模块,用键盘作为输入模块。显示部分,由于我把设 计的功能扩大到了小时,而且秒、分的设计要显示两位,所以需要用到 8 个七 段数码管。而控制部分则有 AT89C51 芯片来完成其功能。 经过这次课程设计,使我觉得不论从理论知识还是从实际操纵中都学到 了不少知识,我想归纳起来,主要有以下几个方面: 1.经过这次课程设计,它 让我接触更多平时没有接触过的科学仪器设备,元器件以及获得相关的仪器调 试经验,同时我也发现自己在这方面很多不足之处。体会到理论知识对实践有 很大的指导作用,她让我知道,只有在正确的理论指引下,才能设计出合乎实 际需要的硬件电路; 2.学会了高效率的查阅资料、运用工具书、利用网络查找 资料。我发现,在我们所使用的书籍上有一些知识在实际应用中其实并不是十 分理想,各种参数都需要自己去调整。偶而还会遇到错误的资料现象,这就要 求我们应更加注重实践环节;3.在设计中,我们应当注意重点与细节的关系; 4.失败不可怕,只要不趴下,昂首向前走,希望总会有; 5.同组同学相互包容, 彼此合作,取长补短,才能铸就最后的成功。 可以这样说课程设计是对大学所 学知识的一次运用和检阅,同时对自学能力提出很高的要求,所以平时的学习 离开思考,就是严重的错误,我们学习不应该有偏科现象,各方面的知识都应 该要接触,这样做才能把课程设计做得完整。 17 在看到数码管上的数字一个一个的递减的时候,心里感觉还是蛮高兴的。 虽然在这次设计的过程中,困难不少,但是正是在自己的努力,同学们的帮助 下,自己能够顺利的完成,确实还是蛮欣慰的。今后的学习我要理论联系实际, 把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经 常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。感谢 这次课程设计给了自己锻炼的机会,自己在今后的学习和生活中,会更加的努 力,争取更大的进步! 参考文献 1甘勇,张杰,田辉. 微型计算机原理及应用M. 北京:北京航空航天大学出版社, 2006.8 2马潮. AVR 单片机嵌入式系统原理与应用实践 M. 北京:北京航空航天大学出版社, 2007.10 3鲁云飞,阎焕忠,任志禄等. 51 单片机在全自动倒计时控制器中的应用J. 沈阳建筑工程 学院学报(自然科学版) ,2002.1:68-69 4李广弟. 单片机基础M. 北京:北京航空航天大学出版社, 2001.7 5沈文. AVR 单片机 C 语言开发入门指导 M. 北京:清华大学出版社, 2003.5 6黄明强. DS1302 在单片机系统中的应用 J.保定师范专科学校学报, 2004,17(2) 7张毅刚,彭喜元编著. 单片机原理及接口技术M. 北京:人民邮电出版社, 2008.11 8DALLAS SEMICONDUCTOR.DS1302 Trickle Charge Timekeeping Chip 9王明顺,赵德平. 可涓流充电的串行实时时钟芯片 DS1302 及应用设计J. 国外电子元器 件,1997,(2) 10ATmeaga16 Datasheets 11何建国. 倒计时 LED 显示屏的设计J. 国外电子元器件,1999.10(10):40-41 12康华光,陈大钦. 电子技术基础:模拟部分M. 北京:高等教育出版社, 1996.6 13张自聪,金永兴. 基于 AT89S52 的奥运倒计时牌的设计J. 中国计量学院学报, 2007,12:305-307 14王永军,李景华. 数字逻辑与数字系统M. 北京:电子工业出版社, 2006.1 15洪海丽,段传华,王明俊. LED 显示屏闪烁问题的分析及解决J. 仪器仪表,2008.1:27- 29 程序清单 #include #include #define jian P1 unsigned char data dis_digit; unsigned char key_s, key_v; unsigned char code dis_code11= 0x28, 0x7E, 0xA2, 0x62, 0x74, 0x61, 0x21, 0x7A, 0x20, 0x60,0xff;/0,1,2,3,4,5,6,7,8,9,关显示?数码管码表 unsigned char data dis_buf8; unsigned char data dis_index; unsigned int hour,min,sec,day,nian,yue,ri,q,year,month,tian,shi,fen,miao; unsigned char a,b,c,d,e,f,g,h,i,l,m,n,p,o,r; unsigned char sec100; sbit K1 = P30; /按键 1 显示日期 sbit K2 = P31; /按键 2 显示时间 sbit K3 = P32; /按键 3 显示截止日期 sbit K4 = P33; /按键 4 显示倒计时天数 sbit K5 = P34; /按键 5 显示倒计时时间 sbit K6 = P35; /按键 6 调整截止日期年 sbit K7 = P36; /按键 7 调整截止日期月 sbit K8 = P37; /按键 8 调整截止日期日 bit scan_key(); void proc_key(); void inc_sec(); void inc_min(); void inc_hour(); void inc_day(); void inc_year(); void inc_month(); void inc_tian(); void inc_ri(); void inc_yue(); void inc_nian(); void display(); void zhuanhuanxs(); void delayms(unsigned char ms); char code SST5163 _at_ 0x003b; /主程序 void main(void) P0 = 0xff; /数码管显示 P2 = 0xff; TMOD = 0x11; / 定时器 0, 1 工作模式 1, 16 位定时方式 TH1 = 0xdc; TL1 = 0; TH0 = 0xFC; TL0 = 0x17; hour = 23; min = 59; sec = 00; shi=23-hour; fen=59-min; miao=60-sec; nian= 2013; yue = 01; ri = 02; year=2013; month=01; day=03; tian=1; sec100 = 0; /以上程序上电后倒计时器初始值为 2013 年 1 月 2 日 dis_buf0 = dis_codehour / 10; / 时十位 dis_buf1 = dis_codehour % 10; / 时个位 dis_buf2 = dis_codemin / 10; / 分十位 dis_buf3 = dis_codemin % 10; / 分个位 dis_buf4 = dis_codesec / 10; / 秒十位 dis_buf5 = dis_codesec % 10; / 秒个位 dis_buf6 = 0xf7; dis_buf7 = 0xf7; dis_digit = 0xfe; dis_index = 0; /以上程序为初始状态数码管的显示状态为 12:00 TCON = 0x01; IE = 0x8a; / 使能 timer0,1 中断 TR0 = 1; TR1 = 1; key_v = 0x03; /转换子程序 while(1) if(K1=0) 21 delayms(80); q=0; else if(K2=0) delayms(80); q=1; else if(K3=0) delayms(80); q=2; else if(K4=0) delayms(80); q=3; else if(K5=0) delayms(80); q=4; zhuanhuanxs(); if (K6=0) delayms(100); inc_year(); tian=tian+365; if(scan_key() delayms(10); if(scan_key() key_v = key_s; proc_key(); bit scan_key() key_s = 0x00; key_s |= K8; key_s 12) month=1; year+; tian=tian+5; else if(key_v tian+; if(day 30) day= 1; inc_month(); dis_buf2 = dis_codeday / 10; / 分十位 dis_buf3 = dis_codeday % 10; / 分个位 EA = 1; void timer0() interrupt 1 / 定时器 0 中断服务程序, 用于数码管的动态扫描 / dis_index - 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量 / dis_digit - 位选通值, 传送到 P2 口用于选通当前数码管的数值, 如等于 0xfe 时, / 选通 P2.0 口数码管 / dis_buf - 显于缓冲区基地址 /中断子程序设计 TH0 = 0xfc; TL0 = 0x17; P2 = 0xff; / 先关闭所有数码管 P0 = dis_bufdis_index; / 显示代码传送到 P0 口 P2 = dis_digit; dis_digit = _crol_(dis_digit,1); / 位选通值左移, 下次中断时选通下一位数码管 dis_index+; 23 dis_index / 8 个数码管全部扫描完一遍之后 ?再回第一个开始描 void timer1() interrupt 3 TH1 = 0xdc; sec100+; if(sec100 = 100) sec100 = 0; inc_sec(); void inc_sec() sec+; miao=60-sec; if(sec 59) sec = 0; inc_min(); void inc_min() min+; fen=59-min; if(min 59) min = 0; inc_hour(); void inc_hour() hour+; shi=23-hour; if(hour 23) hour = 0; inc_ri(); if(hour 9) dis_buf0 = dis_codehour / 10; / 时十位 void inc_ri() tian-; ri+; dis_buf6 = dis_codetian / 10; dis_buf7 = dis_codetian % 10; if (ri 30) ri=1; inc_yue(); void inc_yue() yue+; if(yue 12) yue = 1; inc_nian(); void inc_nian() nian+; void inc_year() year+; if (yearnian) tian=(year-nian)*365; void inc_month() month+; if(month12) month=1; year+; tian=tian+5; if (month=yue) tian=(month-yue)*30; if(month 30) day= 1; month+; if (dayri) tian=(day-ri); 25 if(dayri) tian=(day+30-ri); void delayms(unsigned char ms) / 延时子程序 unsigned char i; while(ms-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际融资租赁合同
- 畜牧业合作社养殖废弃物处理协议
- 仅用于招聘面试的工作证明声明(5篇)
- 植物学分类与鉴别能力考核试题
- 行政管理经济法前景展望试题及答案
- 思想政治教育学科授课
- 酒店业服务质量提升与管理手册
- 影视制作公司与剧组合作协议
- 畜牧养殖合作与产品供应保障协议
- 水利水电工程前沿研究领域试题及答案
- 2024年中国工程院战略咨询中心劳动人员招聘真题
- 2024年烟台龙口市卫生健康局所属事业单位招聘工作人员真题
- 2025福建漳州漳浦金瑞集团招聘20人笔试参考题库附带答案详解
- 地下综合管廊建设PPP项目施工组织设计
- 二零二五版官方离婚协议书
- 2024婚姻家事法律服务业白皮书
- 山东铁投集团招聘招聘笔试真题2024
- 天猫公司转让合同协议
- 临时演员聘用合同
- 四川省绵阳市高中2022级第三次诊断性考试地理试题及答案(A卷)
- 压疮引起的疼痛护理
评论
0/150
提交评论