版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于at89c2051六位数字钟的设计【摘要】本设计论文介绍了用at89c2051单片机控制的数字钟的硬件结构 与软件设计。此数字钟是一个将“时”、“分”、“秒”显示于人的视觉 器官的计时装置。它的计时周期为24小时,显示满刻度为23时59分59 秒,另外应有校时功能。电路由时钟脉冲发生器、时钟计数器、译码驱动 电路和数字显示电路以及时间调整电路组成。用晶体振荡器产生时间标准 信号,这里采用石英晶体振荡器。根据60秒为1分、60分为1小时、24 小时为1天的计数周期,分别组成两个60进制秒、分、一个24进制 (时的计数器。构成秒、分、时的计数,实现计时的功能。显示器件选 用le:d七段数码管。
2、在译码显示电路输出的驱动下,显示出清晰、直观的 数字符号。针对数字钟会产生走时误差的现象,在电路中就设计有有校准 时间功能的电路。关键词:单片机,at89c2051,数字钟,计时based on scm multi-purpose digital clock design abstract: the paper mainly presents the hardware and software design of the digital clock using at89c2051. this digital clock is a time-device, which can display &
3、quot;hour", "minute", "second". its time period is 24 hoursand the full scale of the display is 23 hours, 59 minutes, 59 seconds and it has the function of time adjustment. the circuit consists of the clock pulse generator, the clock counter, decod i ng drive circuit, digita
4、l display circuit and the time adjustment circuit. it generates time standard signal using crystal oscillator, here is the quartz crystal oscillator. because 60 seconds is 1 minute, 60 minutes is 1 hour and 24 hours is 1 day, we uses two counters of 60 parts and a counter of 12 part separately to co
5、nstitute the count of percentage of second, second, minute, and hour. so it can realize time function. di splay component selects seven-segment numerical tube led. driven by decod i ng output circuit, it can di splay show i ng clear and intuitive figures. due to walking error of digital clock, we de
6、sign time cal i brat i on circuit in the system.key words: single-chip microcomputer, at89c2051, digital clock, time目录12案设 23部结弓iw第一章数字钟的系统概述1.1 总 体 方i十第二章at89c2051单片机及其引脚说明2.1 内2.2程序保密、 .42. 3软硬件的开发.42.4引脚说日月,.42.5主要性 .5第=章电路的硬件设计.73. 1复位电 .73.2时钟电,.83.3按键电.83.4迅响电路及输入、输出电.93.5i码管 显示电5s103.5. 1led数
7、码管结构及工作原s.103.5.2显示原a123.6稳压电 12第四章软件设计144. 1主程序系统结144. 2软件任务分 . 144. 3软件流程.15第五章安装与调试175.1 安装、焊接到电路板±175.2 测 试 与 调 17组仑19而20参考文献21隨 122隨 231隨 333引言钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定 时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。随着数字集成电路的出现和飞速发展,以及石英晶
8、体振荡器的广泛应用,使得数字钟的精度稳定度 远远超过了老式的机械表,用数字电路实现对“时”、“分”、“秒”数字显示的数字钟在数字显 示方面,目前己有集成的计数、译码电路,它可以直接驱动数码显示器件,也可以直接采用才coms -led光电组合器件,构成模块式石英晶体数字钟。本设计主要是用中、小规模集成电路设计的一 台能显示时、分、秒的数字电子钟。是由晶振电路产生1hz标准信号,分、秒为00-59六十进制计 数器,时为00-23二十四进制计数器,可手动校正,且具有整点报时功能。因此,研宄数字钟及扩大其应用,有着非常现实的意义。第一章数字钟的系统概述1. 1总体方案设计数字电子钟是用数字电路实现“时
9、”、“分”、“秒”数字显示的计时装置,主要由 振荡器、分频器、计数器、译码显示器、校时电路等部分组成。而数字钟想淮确的计 时则是由振荡器产生的时脉冲送到分频器,分频电路将时标信号分成每秒一次的方波 信号。秒脉冲发生器产生频率稳定很高的秒脉冲,秒脉冲被送到一个六十进制秒计数 器计数,将计数结果送至秒个位和十位译码器,译码结果分别由两只七段数码管以十 进制数形式显示来。当秒六十进制计数器累计到第59秒时,若再来一个秒脉冲,秒计 数器的进位输出就产生进位脉冲(分计数脉冲),同时,秒计数器的十位和个位都复 位到零。分计数脉冲又被送到分六十进制计数器计数,经译码电路译码后数码管显示 相应的分数。当计满5
10、9分59秒时,若再來一个秒脉冲,则分计数器便向时计数器送出 吋计数脉冲,同时,分、秒计数器均复位到零。吋计数器是一个二十四进制计数器, 当计数显示23时59分59秒时,若再来一个秒脉冲,则时、分、秒计数器都应回到零, 并显示(00:00:00)表示己到达午夜零点,第二天开始继续计数。其主耍的功能模块如图1-1所示。按键at89c2051选位图1-1系统结构框图第二章at89c2051单片机及其引脚说明at89c2051是美国atmel公司生产的低电压、高性能cmos 8位单片机,片内含2kbytes的可反复擦写的只读程序存储器(perom)和128bytes的随机数据存储器(ram),器件采用
11、atmel公司的高密度、非易失性存储技术生产,兼容标准mcs-51指令系统,片内置通用8位中央处理器和hash存储单元,at89c2051单片机在电子类产品中有广泛的应用如图2_1所示。图2-1 at89c20512.1内部结构at89c2051是一带有2k字节闪速可编程可擦除只读存储器(eeprom)的低电压,高性能8位cmos微处理器。它采用atmel的髙密非易失存储技术制造并和工业标准mcs-51指令集和引脚结构兼容。通过在单块芯片上组合通用的cpli和闪速存储器,atmel的at89c2051是一强劲的微型处理器,它对许多嵌入式控制应用提供一定髙度灵活和成本低的解决办法。at89c20
12、51提供以下标准功能:2k字节闪速存储器,128字节ram, 15根i/o口,两个16位定时器,一个五向量两级中断结构,一个全双工串行口,一个精密模拟比较器以及两种可选的软件节电工作方式。空闲方停止cpu工作但允许ram、定时器/计数器、串行工作口和中断系统继续工作。掉电方式保存ram内容但振荡器停止工作并禁止有其它部件的工作到下一个硬件复位。2.2程序保密at89c2051设计有2个程序保密位,保密位1被编程之后,程序存储器不能再被编程除非做一次擦除,保密位2被编程之后,程序不能被读出。2.3软硬件的幵发at89c2051可以米用下面两种方法开发应用系统。1. 由于89c2051内部程序存贮
13、器为flash,所以修改它内部的程序十分方便快捷,只 耍配备一个可以编程89c2051的编程器即可。调试人员可以采用程序编辑-编译-固 化-插到电路板中试验这样反复循环的方法,对于熟练的mcs-51程序员来说,这种 调试方法并不十分困难。但是做这种调试不能够了解片内ram的内容和程序的走向等有关信息。2. 将普通8031/80c31仿真器的仿真插头中p1. 0p1. 7和p3. 0p3. 6引出来仿真2051,这种方法 可以运用单步、断点的调试方法,但是仿真不够真实,比如,2051的内部模拟比较器功能,p1口、p3口的増强下拉能力等等。2.4引脚说明pdip/soicrst/vpp 匚 (rx
14、d) p3 0 匚 (txd) p31 xtal2c _xtal1 <intq)p3 2e inti)p3.3 :(to) p3.4 匚 (t1jp3 5eqndc1234567891020987654321 1. 1- 1. 1. 1 1. i 1 ifvcc p1 7 p16 pl 5 p14 pi 3 pi 2p1.1 (aini) pl 0 (ajmo) r3 7at89c2051图2-4 at89c201511. vcc:电源电压。2. gnd:地。3. n口: pl口是一个8位双向i/o口。口引脚pl. 2p1. 7提供内部上拉电阻,p1.0和pl. 1要求外部上拉电阻。p1
15、.0和n.l还分别作为片内精密模拟比较器的同相输入(ani0)和反相输入(aini)。f>1口输出缓冲器可吸收20ma电流并能直接驱动led显示。当p! 口引脚写入“1”时,其可用作输入端,当引脚n.2p1.7用作输入并被外部拉低时,它们将因内部的写入“1”时,其可用作输入端。当引脚pl. 2p1. 7用作输入并被外部拉低时,它们将因内部的上拉电阻而流出电流。4. p3: p3口的p3.0p3.5、p3. 7是带有内部上拉电阻的七个双向i/o口引脚。p3. 6用于固定输入片内比较器的输出信号并且它作为一通用1/ 0引脚而不可访问。p3品缓冲器可吸收20ma电流。当p3口写入“1”时,它们
16、被内部上 拉电阻拉高并可用作输入端。用作输入吋,被外部吋拉低的p3u脚将用上拉电阻而流出电流。p3口还接收一些用于闪速存储器编程和程序校验的控制信号。5. rst:复位输入。rst旦变成高电平所有的i/o引脚就复位到“1”。当振荡器正在 运行时,持续给出rst引脚两个机器周期的高电平便可完成复位。每一个机器周期需12个振荡器或时钟周期。6. xtal1:作为振荡器反相器的输入和内部吋钟发生器的输入。7. xtal2:作为振荡器反相放大器的输出。2. 5主要性能1.和mcs-51产品兼容;2. 2kb可重编程flash存储器(10000次);3. 2. 7-6v电压范围;4. 全静态工作:0hz
17、-24mhz;5. 2级程序存储器保密锁定;6. 128*8 位内部 ram;7. 15条可编程i/o线;8. 两个16位定时器/计数器;9. 6个屮断源;10. 可编程串行通道;11. 高精度电压比较器(pl.0, pl. 1, p3.6);12.直接驱动led的输出端口。第三章电路的硬件设计3. 1复位电路at89c2051单片机的复位是由外部的复位电路来实现的。复位引脚rst通过一个斯密特 触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的s5p2,斯密 特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号o上电复位电路是一种简单的复位电路,只要在rs
18、t复位引脚接-个电容到vcc,接一个 电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到rst复位引 脚一个短暂的高电平信号,这个复位信号随着vcc对电容的充电过程而回落,所以rst 引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,rst引脚的高电平信号必须维持足够长的时间如图3-1所示。上电自动复位是通过外部复位电路的电容充电来实现的。只要vcc的上升时间不超过lms,就可以实现自动上电复位3.2时钟电路时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊的一拍一拍地工作。因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影
19、响单片机系统的稳定性。常用的时钟电路有两种方式:一种是内部时钟方式,另一种为外部时钟方式。本文用的是内部时钟方式。cl11c2=-i ilxt al2xt al1gndgn d图3-2时钟电路at89c2051单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反向放大器的输入端为芯片引脚xtal1,输出端为引脚xtal2。这两个引脚跨接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器如图3-2所示。3. 3按键电路按键的开关状态通过一定的电路转换为高、低电平状态。按键闭合过程在相应的i/o端u形成一个负脉冲。闭合和释放过程都要经过一定的过程才能达到稳定,这一过程是 处于高、低电平之
20、间的一种不稳定状态,称为抖动。抖动持续时间的常长短与开关的 机械特性有关,一般在5-loms之间。为了避免cpu多次处理按键的一次闭合,应采用措 施消除抖动。本文采用的是独立式按键,直接用i/o口线构成单个按键电路,每个按键 占用一条i/o口线,每个按键的工作状态不会产生互相影响。按键s1s3采用复用的 方式与显示部分的p3.5、p3.4、p3.2 u复用。其工作方式为,在相应端口输出高电平吋读取按键的状态并由单片机消除抖动并赋予相应的键值如图3-3所示。1k1k1kat89cs51gnd图3-3按键电路3.4迅响电路及输入、输出电路迅响电路由有源蜂鸣器和pnp型三极管组成。其工作是当pxp型
21、三极管导通后有源蜂鸣器立即发出定频声响。驱动方式为独立端口驱动,占用p3. 7端口。输出电路是与迅响电路复合作用的,其电路结构为有源蜂鸣器,5.1k定值电阻r6,排针j3并联。当有源蜂鸣器无迅响时j3输出低电平,当有源蜂鸣器发出声响时j3输出高电平,j3可接入数字电路等各种需要。驱动方式为迅响复合输出,不占端u。输入电路是与迅响电路复合作用的,其电路结构是在迅响电路的pxp型三极管的基极电路中接入排针j2。弓i脚排针可改变单片机1/0口的电平状态,从而达到输入的目的。驱动方式为复合端口驱动,占用p3.7端口如图3-4所示。:ell图3-4迅响电路及输入、输出电路3. 5数码管显示电路3.5.1
22、 lh)数码管结构及工作原理led数码管(led segmentdisplays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。每一笔划都是对应一个字母表示dp是小数点。下图为常用led数码管内部引脚图如图3-3-1所示。a b图3-5-1 lh)数码管正面个字段引脚led数码管根据lh)的接法不同分为共阴和共阳两类共阳极led数码管的内部结构原理图如图3-3-2所示。图3-5-2共阳极lhd数码管的内部结构原理共阴极lild数码管的内部结构原理图如图3-3-3所示。图3-5-3共阴极led数码管的内部结构原理图lk)数码管要正常显示
23、,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数位,因此根据led数码管的驱动方式的不同,可以分为静态式和动态式两类。1.静态显示驱动静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的i/o 埠进行驱动,或者使用如bcd码二-十进位*器*进行驱动。静态驱动的优点是编程简单 ,显示亮度高,缺点是占用i/o埠多,如驱动5个数码管静态显示则需要5x8 = 40根i/o 埠來驱动,要知道一个89s51单片机可用的i/o埠才32个呢。故实际应用时必须增加邱区动器进行驱动,增加了硬体电路的复杂性。2.动态显示驱动:数码管动态显示介面是单片机中应用最为广泛的一种显示方式之一
24、,动态驱动是将所有数码管的8个显示笔划"a, b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极com增加位元选通控制电路,位元选通由各自独立的t/0线控制,当单片机输出字形码时,所有数码管都接收到相冋的字形码,但究竞是那个数码管会显示出字形,取决于单片机对位元选通com端电路的控制,所以我们只耍将需耍显示的数码管的选通控制打开,该位元就显示出字形,没有选通的数码管就不会亮。透过分时轮流控制各个led数码管的com端,就使各个数码管轮流受控显示,这就是动 态驱动。在轮流显示过程中,每位元数码管的点亮时间为12ms,由于人的视觉暂留 现象及发光二极体的余
25、辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的 速度足够快,给人的印象就是一组稳定的显示资料,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的i/o埠,而且功耗更低。3. 5. 2显示原理显示部分主要器件为3只两位一体共阳极数码管,驱动采用pnp型三极管驱动,各端口配 有限流电阻,驱动方式为动态扫描,占用p3.0p3.5端口,段码由p1.0p1.6输出。冒 号部分采用4个03.0的红色发光二极管,驱动方式为独立端口p1. 7驱动如图3-3-2所示78l05是一个线性的稳压器,不论其输入端接多少伏电源,其输出是固定的5伏,主要 给小容量的器件提供电源。因为是线性稳压,所以其
26、输出波形杂波比较严重,而且其 输出会复制输入的波形出来。所以前后都要滤波,在输入端加电容时相当于平滑电容 。起到一个滤波的作用,提高1c工作稳定性。输出端加电容是为木地器件提供能量的存储器件,它能使稳压器的输出均匀化,降低负载需求如图3-6所示。46vc6100ufgnd图3-6稳压电路本设计采用了单片机at89c2051为核心器件,它与c51相比除少了po、p2门外指令完全 相同。在电路中pl 口输出段码数据,接六位数码管的段码引脚,p3口作扫描控制,控制各 位数码管的显示情况!并配合所有的外围电路,具有上电复位的功能,无手动复位功能。第四章软件设计4.1主程序系统结构图4-1软件系统结构4
27、.2软件任务分析软件任务分析和硬件电路设计结合进行,哪些功能由硬件完成,哪些任务由软件完成,在硬件电路设计基本定型后,也就基本上决定下来了9。软件任务分析环节是为软件设计做一个总体规划。从软件的功能來看可分为两大类: 一类是执行软件,它能完成各种实质性的功能,如测量,计算,显示,打印,输出控 制和通信等,另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在 系统软件中充当组织调度角色的软件。这两类软件的设计方法各有特色,执行软件的设计偏重算法效率,与硬件关系密切,千变万化。软件任务分析时,应将各执行模块一一列出,并为每一个执行模块进行功能定义和接口定义(输入输出定义)。在各执行模块进
28、行定义时,将要牵扯到的数据结构和数据类型问题也一并规划好。各执行模块规划好后,就可以监控程序了。首先根据系统功能和键盘设置选择一种最适合的监控程序结构。相对來讲,执行模块任务明确单纯,比较容易编程,而监控程序较易出问题。这如同当一名操作工人比较容易,而当一个厂长就比较难了。软件任务分析的另一个内容是如何安排监控软件和各执行模块。整个系统软件可分为 后台程序(背景程序)和前台程序。后台程序指主程序及其调用的子程序,这类程序 对实时性要求不是太高,延误几十ms甚至几百ms也没关系,故通常将监控程序(键盘 解释程序),显示程序和打印程序等与操作者打交道的程序放在后台程序中执行,而 前台程序安排一些实
29、时性要求较高的内容,如定时系统和外部中断(如掉电中断)。 也可以将全部程序均安排在前台,后台程序为“使系统进入睡眠状态”,以利于系统节电和抗干扰。4.3软件流程图图4-3程序设计流程图程序里先定义两个中断定吋器to和t1, 一个作为秒记数用,另一个做为调整吋闪烁用。 编程时先将p1和p3口数据清零,然后p1和p3口作动态扫描显示,由于人的眼睛有延迟性, 当扫描频率非常高时人就感觉数码管一直亮着,而同时记数器在遵循时间的变化方式执 行着秒到了60分加一,分到了60小时加一,小时到了24就归零。p3. 7作为时间调整按 钮当长按按住2秒以上进入校准时间状态及换档和退出,快速点触用于调节时间数值,归
30、零是复位按钮。第五章安装与调试5. 1安装、焊接元件到电路板上按照先低后高,先小后大,先卧式后立式的顺序,正确插入元件,其高低、极性要符合规定。1. 先从最低元件安装。应先安装、焊接跳线机及电阻,用电阻多余的脚做跳线,电阻引脚不分正负,焊接时间最好控制在2-3秒。2. 安装、焊接瓷片电容。瓷片电容部分正负极。3. 安装、焊接轻触开关4. 安装、焊接三极管。三极管的外形基本一样,注意分青,且方向要和电路板上的方向一致。5. 安装、焊接12m11z品振。晶振没有正负极。6. 安装、焊接电解电容,装的吋候要躺着安装,立着会影响发光二极管的显示不整齐07. 安装、焊接20脚1c插座,从用一小缺口或小圆
31、点标记的地方以逆时针数依次为1-20 脚,安装时要注意缺口和电路上的缺口相一致。20只引脚都插到位后,先用手指按住 ,固定对角两只引脚,防止插入的引脚掉出來,再把板放到桌面上把剩k的引脚焊好 。焊好后不要急于插入单片机芯片,因为还有其他元件焊接,防止电烙铁带静电击坏单片机芯片。8. 安装、焊接蜂鸣器。9. 安装、焊接led。led和普通二极管一样,有正负极之分,不能装错。安装、焊接数码管。认识数码管内部结构。5.2测试与调试1. 功能按键s1为功能选择按键,s2为功能扩展按键,s3为数值加一按键。2. 功能及操作操作时,连续短时间(小于1秒)按动s1,即可在以上的6个功能中连续循环。中途如果长
32、按(大于2秒)s1,则立即回到时钟功能的状态。2.1吋钟功能:上电后即显示10: 10: 00 ,寓意十全十美。2. 2校时功能:短按一次s1,即当前时间和冒号为闪烁状态,按动s2则小时位加1,按动s3则分钟位加1,秒时不可调。2. 3闹钟功能:短按二次s1,显示状态为22: 10: 00,冒号为长亮。按动s2则小时位加 1,按动s3则分钟位加1,秒时不可调。当按动小时位超过23时则会显示这个表示关闭闹钟功能。闹铃声为蜂鸣器长鸣3秒钟。2. 4倒计时功能:短按三次s1,显示状态为0,冒号为长灭。按动s2则从低位依此显示高位,按动s3则相应位加1,当s2按到第6次时会在所设定的时间状态下开始倒计
33、时,再次按动s2将再次进入调整功能,并且停止倒计时。2. 5秒表功能:短按四次s1,显示状态为00: 00: 00,冒号为长亮。按动s2则开始秒表计时,再次按动s2则停止计时,当停止计时的时候按动s3则秒表清零。2. 6计数器功能:短按五次s1,显示状态为00: 00: 00,冒号为长火,按动s2则计数器加1,按动s3则计数器清零。结论经过人呈查找资料和老师的不断指点,我将所设计的六位数码管电子钟焊接成功,虽然不是很稳定,但在这个过程屮,我了解了各个元器件的识别与测量,也了解了 at89c2051单片机及其引脚功能。同时明白了六位数码管电子钟的工作原理并实现了其功能。本租序设计时,只川了一个定
34、时器t0,其他的中断全部关断,定时器工作在两个8位自动加载初始值状态。 简短的定吋中断程序只负责吋间的计数和进位功能,这是保证走吋精确。有三个轻触式按键:功能选择按键 s1,功能扩展按键s2,数值加一按键s3。此数字钟采用了一只npn型的三极管及蜂鸣器为闹时讯响电路。 通过这次的毕业设计,我对向己的动手能力有了信心。而临着就业,我将充分发挥我的主观能动性和在学校学到的一切知识。为母校添砖加瓦,为自己的前程奋斗!这次毕业设计的顺利进行,我深刻明白了理论知识 与社会实践相结合的道理,从总得到了以前书本知识所不曾得到的知识。更加明白了如今信息时代电子技能 知识的重要性。增强了我对实际工艺技术、电子技
35、术和设备技术等方面的认识,掌握了分析处理方法,调试、计算等基本技能的训练,并具备丫一定程度的实际工作能力。致谢在这三年的学习生活中,学校严谨的治学作风、良好的学习氛围、老师们认真的工作态度,都给我留下了非常深刻的印象。在这里我真诚地向那些曾经帮助过我、关心过我的老师、同学和朋友们说一声:谢谢!祝愿他们一生平安谢谢老师对我细心指导参考文献1石生,电路基本分析m高等教育出版社.2008,9: 6466.2何立民,高级单片机教程m北航出版社.2009, 6:218220.3李振声,实验电子技术m国防工业出版社.2007, 7:7375.4李全利,单片机原理与应用技术m高等教育出版社.2009, 6:
36、8184.5刘守义,单片机应用技术m西安电子科技大学出版社.2008, 4:719.6任为民,电子技术基础课程设计m中央广播电视大学出版社.2003, 10:8087.7 atmel, microcontroller data bookm. 2002,9: 3841.8 markl, montrose.printed circuit board design techniques for emccompliance.iee press seriesm.2000,11:4448.附录1程序主要代码:#include<reg2051.h>code senen_seg10=0x81,0x
37、e7,0x92,0xa2,0xe4,0xa8,0x88,0xe3,0x80,oxao;bitkey1_enter=0,key2_enter=0,key3_enter=0,countdown_mark=0,stopwatch_mark=0,count_mark=0,bell_mark=0;unsigned char program=0,program_variable=0,count_bit=0,count=0;unsigned char hour=10,minute=10,second=0;unsigned char delayed_hour=22,delayed_minute=10,dela
38、yed_second=0;unsigned char count_hour=0,count_minute=0,count_second=0;unsigned char count_time=0,count_count=0;void delay(unsigned int t)unsigned int ij;for(i=0;i<t;i+)for(j=0;j<10;j+);void timeo_init(void)ea=0;tr0=0;tmod=0x01;th0=0xec;tl0=0x73;et0=1;tr0=1;ea=1;static void timerojsr(void) inte
39、rrupt tfo_vector using 1tr0=0;th0=0xec;tl0=0x73;tr0=1;count_time+;if(count_time>=199)count_time=0;second+;if(second>=60)second=0;minute+;if(minute>=60)minute=o;hour+;if(hour=24)hour=0;if(delayed_hour=hour && delayed_minute=minute && second<4) p3_7=0else p3_7=1;if(countdow
40、n_mark=1)count_count+;if(count_count>=199 &&(count_second!=0|count_minute!=0|count_hour!=0)count_count=0;count_second-;if(count_second>=60)count_second=59;countminute-;if(count_minute>=60)count_minute=59;count_hour;if(count_hour>=100) count_hour=99;if(count_second=0&&coun
41、t_minute=0&&count_hour=0&&count_count<=12000) p3_7=0;else p3_7=1;if(count_count>=15000) count_count= 14000;if(stopwatch_mark=1)count_count+;if(count_count>=2)count_count=0;count_second+;if(count_second>=100)count_second=0;count_minute+;if(count_minute>=60)count_minute=
42、0;count_hour+;if(count_hour>=60) count_hour=0;unsigned char show_key (void)unsigned char x=o,y=o;switch (program)case 0: p1&=senen_segsecond%10;break;case 1: if(count_time>=90) p1&=senen_segsecond%10;break;case 2: if(delayed_hour=24) p1=0xfe;else p1 &=senen_segdelayed_second%10;bre
43、ak;case 3: if(count_bit>=0) p1 &=senen_segcount_second%10;else p1=0xff;break;case 4: p1&=senen_segcount_second%10;break;case 5: p1&=senen_segcount_second%10;break;delay(10);jf(p3_5=0)key1_enter=1;if(count<=254)count+;if(p3_4=0) key2_enter=1;if(p3_2=0) key3_enter=1;p3_3=1;p1|=0xff;s
44、witch (program)case 0: p1 &=senen_segsecond/10;break;case 1: if(count_time>=90) p1 &=senen_segsecond/10;break;case 2: if(delayed_hour=24) p1=0xfe;else p1 &=senen_segdelayed_second/10;break;case 3: if(count_bit=1) p1 &=senen_segcount_second/10;else p1=0xff;break;case 4: p1 &=se
45、nen_segcount_second/10;break;case 5: p1 &=senen_segcount_second/10;break;p3_1=0;delay(10);p3_1=1;p1|=0xff;switch (program)case 0: p1&=senen_segminute%10;break;case 1: if(count_time>=90) p1&=senen_segminute%10;break;case 2: if(delayed_hour=24) p1=0xfe;else p1&=senen_segdelayed_minu
46、te%10;break;case 3: if(count_bit>=2) p1 &=senen_segcount_minute%10;else p1=0xff;break;case 4: p1&=senen_segcount_minute%10;break;case 5: p1&=senen_segcount_minute%10;break;delay(10);p3_2=1;p1|=0xff;switch (program)case 0: p1 &=senen_segminute/10;break;case 1: if(count_time>=90)
47、 p1 &=senen_segminute/10;break;case 2: if(delayed_hour=24) p1=0xfe;else p1 &=senen_segdelayed_minute/10】;break;case 3: if(count_bit>=3) p1 &=senen_segcount_minute/10;else p1=0xff;break;case 4: p1 &=senen_segcount_minute/10;break;case 5: p1 &=senen_segcount_minute/10;break;p3_5
48、=0;delay(10);p3_5=1;p1|=0xff;switch (program)!case 0: p1&=senen_seghour%10;break;case 1: if(count_time>=90) p1 &=senen_seghour%10;break;case 2: if(delayed_hour=24) p1=0xfe;else p1 &=senen_segdelayed_hour%10;break;case 3: if(count_bit>=4) p1&=senen_segcount_hour%10;else p1=0xff;
49、break;case 4: p1 &=senen_segcount_hour%10;break;case 5: p1&=senen_segcount_hour%10;break;p3_0=0;delay(10);jf(p3_4=1 && key2_enter=1)x=3;3p3_0=1;p1|=0xff;switch (program)case 0: p1 &=senen_seghour/10;break;case 1: if(count_time=90) p1 &=senen_seghour/10;break;case 2: if(delaye
50、d_hour=24) p1=0xfe;else p1&=senen_segdelayed_hour/10;break;case 3: if(count_bit>=5)p1 &=senen_segcount_hour/10;else p1=0xff;break;case 4: p1 &=senen_segcount_hour/10;break;case 5: p1 &=senen_segcount_hour/10;break;p3_4=0;delay(10);if(p3_5=1 && key1_enter=1)if(count>=127
51、) x=1;else x=2;key1_enter=0;count=0;if(p3_2=1 && key3_enter=1)x=4;key3_enter=0;p3_4=1;p1|=0xff;if(program<=1 && count_time>=100) p1&=0xff;if(program<=1 && count_time<=100) p1&=0x7f;if(program=2) p1&=0x7f;if(program=3) p1&=0xff;if(program=4) p1&
52、=0x7f;if(program=5) p1&=0xff;y=x;x=0;return y;void main()p1=0xff;p3=0xff;timeo_init();while(1)switch(program)case 0: while(program=0)switch(show_key()case 0: break;case 1: program=0;break;case 2: program=1;break;break;case 1: while(program=1)switch(show_key()case 0: break;case 1: program=0;break
53、;case 2: program=2;break;case 3: hour+;if(hour=24)hour=0;case 4: minute+;if(minute=60)minute=0;break;break;case 2: while(program=2)switch(show_key()case 0: break;case 1: program=0;break;case 2: program=3;break;case 3: delayed_hour+;if(delayed_hour>=25)delayed_hour=0;break;case 4: delayed_minute+;if(delayed_minute>=60)delayed_minute=0;break;case 3: while(program=3)switch(show_key()case 0:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 淮阴师范学院《软件工程》2022-2023学年期末试卷
- 淮阴师范学院《朗诵艺术》2023-2024学年第一学期期末试卷
- 妈妈宝贝课件教学课件
- 叶子课件简单教学课件
- 淮阴师范学院《草书技法(2)》2022-2023学年第一学期期末试卷
- DB2305-T 022-2024玉米茬保护性耕作整地技术规范
- 焙烤食品制造中的品牌建设与形象推广考核试卷
- 安全生产标准化启动课件考核试卷
- 汽车电子控制单元设计与实现考核试卷
- 托儿所服务的类型和特点考核试卷
- 皮肤科护士的皮肤病的皮肤疗法(药物)的剂量计算和监测技巧
- 铁路路基施工与维护习题集
- 翻车机系统工作原理及运行常见故障及处理
- 班主任培训专题讲座
- 往复式压缩机常见故障与排除
- 圆球幕墙施工方案
- 歌剧《洪湖水浪打浪-》课件
- 国家安全教育课-教案3篇
- 幼儿园优质公开课:小班语言《小鸡球球藏猫猫》课件(共同欣赏)
- 人教版八年级数学上册全等三角形典型6类难题题型归类
- 语音发声(第四版)语音篇
评论
0/150
提交评论