收藏 分销(赏)

简易万年历的设计-学位论文.doc

上传人:胜**** 文档编号:2200566 上传时间:2024-05-22 格式:DOC 页数:44 大小:4.42MB
下载 相关 举报
简易万年历的设计-学位论文.doc_第1页
第1页 / 共44页
简易万年历的设计-学位论文.doc_第2页
第2页 / 共44页
简易万年历的设计-学位论文.doc_第3页
第3页 / 共44页
简易万年历的设计-学位论文.doc_第4页
第4页 / 共44页
简易万年历的设计-学位论文.doc_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、漳州师范学院 简易万年历的设计 系 别: 物理与电子信息工程系 专 业: 电子信息科学与技术 2013年 6月 目录1. 设计任务51.1 设计任务51.2 设计要求62.设计方案62.1设计思路62.2方案比较与论证62.2.1 数码管显示模块62.2.2 温度传感器的选择62.2.3 时钟计时的选择72.3系统结构框图73.各功能模块设计83.1显示模块原理83.2 参数计算93.3 独立式按键模块93.4 时钟模块103.4.1 DS1302特性介绍103.4.2 DS1302引脚介绍103.4.3 DS1302有关日历、时间的寄存器103.4.4 DS1302控制字介绍113.4.5

2、DS1302单字节读写时序介绍113.4.6 DS1302操作指令介绍123.4.7 DS1302与单片机接口电路133.5 温测模块133.5.1 单总线介绍133.5.2 DS18B20特性介绍133.5.3 DS18B20管脚介绍143.5.4 DS18B20内部结构143.5.5 DS18B20温度转化示例143.5.6 DS18B20时序介绍153.5.7 DS18B20操作步骤163.5.8 DS18B20与单片机的接口电路173.6 总系统原理图174.软件设计184.1 I/O口分配184.2 按键扫描185.流程图195.1主程序流程图195.2 work0模块流程图195.

3、3 work1模块流程图205.4 work2模块流程图205.5 获取温度子程序流程图215.6 按键扫描225.7 中断服务子程序225.8 显示方式1225.9 初始化DS1302子程序流图235.10 温显模块子程序流图245.11 读取时间模块子程序流图246.程序代码256.1 主程序部分256.2 包含文件部分336.3 包含文件部分357.调试要点437.1 硬件调试437.2 软件调试437.3 结果分析及设计工作总结438.参考文献及附件438.1 参考文献438.2 元器件清单448.3 PCB版图448.4 实物图 正面458.5 实物图 背面45摘要:单片机就是微控制

4、器,是面向应用对象设计、突出控制功能的芯片。单片机接上晶振、复位电路和相应的接口电路,装载软件后就可以构成单片机应用系统。将它嵌入到形形色色的应用系统中,就构成了众多产品、设备的智能化核心。本设计就是应用单片机强大的控制功能制作而成的电子万年历,该电子万年历包括两大功能:可显示年、月、日、时、分;实时监测环境温度(具有超低温的报警功能,且报警的上下限值可由用户自定义设置),。关键字:单片机,DS18B20,DS1302,共阳数码管. 1. 设计任务1.1 设计任务 利用单片机、时钟芯片DS1302、温度传感器DS18B20、数码管等 实现日期、时间、温度的显示,即一个简单的万年历。1.2 设计

5、要求1. 通过DS1302计时,时间可调并在数码管上显示出来。2. 通过DS18B20检测当前环境温度,精读为0.5。3. 具有超温报警功能2.设计方案2.1设计思路本设计由DS18B20作为温度检测的核心,检测一次当前温度所耗费的时间大约在100ms750ms之间,随着检测精度的增加,耗费时间在方位内逐渐增加,所以利用软件延时的方法来实现温检,并且具有超温和低温的报警功能,其温度报警的上下限值可根据用户喜好进行更改;时钟部分使用专用计时芯片DS1302,可精确显示年、月、日、时、分、秒;2.2方案比较与论证2.2.1 数码管显示模块方案一:单片机输出数据经译码芯片CD4511进行译码后直接驱

6、动数码管,数码管公共端接9012三极管扩流,并通过单片机I/O口控制三极管的选通,实现动态显示。方案二:有单片机的I/O口直接驱动数码管的段码,数码管的公共端接9012三极管,通过灌电流的方式点亮数码管,也需通过单片机I/O口控制三极管的选通,实现动态显示。由于所需I/O口由AT98S52可直接提供,无须因为I/O口不够而用CD4511来节省I/O口,方案二又较方案一更容易实惠,所以,我选择方案二。2.2.2 温度传感器的选择 方案一:采用热敏电阻作为检测温度的核心元件,由于热敏电阻会随温度变化而变化,进而其阻值发生变化,再经555振荡器变化的脉冲数传递给单片机进行处理。 方案二:采用数字式的

7、集成温度传感器DS18B20作为温度检测的核心元件,由其检测并直接输出数字温度信号给单片机进行处理。 对于方案一,采用热敏电阻作为温度检测元件,有价格便宜,元件易购的优点,但热敏电阻对温度的细微变化不太敏感,并且由于热敏电阻的R-T关系的非线性,其自身电阻对温度的变化存在较大误差,而且在人体所处环境温度变化过程中难以检测到小的温度变化。但作为本次设计虽已能满足基本要求,但为了更深入的学习,所以放弃该方案。 对于方案二,由于数字式集成温度传感器DS18B20的高度集成化,大大降低了外接放大转化等电路的误差因数,温度误差变得很小,并且由于其检测温度的原理与热敏电阻检测的原理有着本质的不同,使得其温

8、度分辨力极高。温度值在器件内部转化成数字量直接输出,简化了系统程序设计,又由于该温度传感器采用先进的单总线技术,与单片机的接口变得非常简洁,抗干扰能力强,虽然芯片原理复杂,但是可以对时序的理解更深入一步,所以选择此方案。2.2.3 时钟计时的选择 方案一:AT89S52单片机内部带有定时/计数功能,此定时功能是通过对外部晶振的脉冲进行计数,从而达到计时功能,只要使用11.0592的晶振就能实现零误差的计时,因此可以利用此功能实现计时,但因为只有单一的计时功能要实现“万年历”的功能需要较复杂的程序,而且如果单片机掉电无法继续进行计时,所以使用不便。方案二:DS1302是美国DALLAS公司推出的

9、一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。利用单片机强大的控制功能就可实现实时计时的功能,而且消耗的系统资源少,程序简单。综合上述两种方案,宜采用方案二实现实时计时功能。2.3系统结构框图 AT89S52单片机在模式键、设置键的控制下,由P0口输出数据,通 过P2.0

10、 、P2.1、P2.2、P2.3进行选通,用数码管显示信息。 系统框图:AT89S52键盘18B20DS1302晶振数码管蜂鸣器LED电源 图2-3系统总框图3.各功能模块设计 3.1显示模块原理 由单片机(AT89S52)的引脚P0口输出温度、时间等数据信息,通过片选信号P2.0 、P2.1、P2.2、P2.3就可在相应的数码管进行显示。当位选信号P2.0为低电平时,P1口送出数据也为低电平就点亮数码管,电流灌进单片机。多位LED显示,为了简化电路,降低成本,将所有位的段选线并联在一起,由一个8位I/O口控制。而共阳极公共端分别接一个9012,由相应的I/O口线控制9012,实现各位数码管的

11、分时选通。段选码,位选码每送入一次后延时5MS,因人的视觉暂留时间为0.1S(100MS),所以每位显示的时间不能超过20MS,并保持延时一段时间,以造成视觉暂留效果,给人看上去每个数码管总在亮。电路如(图3-1)所示。 由于采用的是共阳极数码管,所以要让段码点亮需把I/O口置0,例如:段码a到h对应的I/O口是P0.0到P0.7,则要让数码管显示0到9对应的16进值如图3-2所示图3-1显示电路hgfedcba16进制0110000000XC0H1111110010XF9H2101001000XA4H3101100000XB0H4100110010X99H5100100100X92H6100

12、000100X82H7111110000XF8H8100000000X80H9100100000X90Hc110001100XC6H-101111110XBFHL110001110XC7HH100010010X89H图3-2码表3.2 参数计算 由于I/O口高电平约等于5V,使用灌电流的方式驱动数码管,故选用PNP型三极管9012;数码管能正常工作的段电流为3mA-10 mA,压降为1.7V,三极管发射极和集电极的压降为0.3V,因此限流电阻的压 降为3.0V, 所以选用限流电阻的阻值R=470欧.3.3 独立式按键模块 独立式按键是直接用I/O口线构成的单个按键电路,其特点是每个按键单独占用

13、一根I/O口线,每个按键的工作不会影响其它I/O口线的状态。独立式按键的典型应用如(图3-3)所示。 独立式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,因此,在按键较多时,I/O口线浪费较大,但本设计只用到四个按键,顾采用独立式按键电路。图3-3独立式按键电路3.4 时钟模块DS1302通过三根口线实现与单片机的通信,因DS1302功耗很小,即使电源掉电后通过3V的纽扣电池仍能维持DS1302精确走时。3.4.1 DS1302特性介绍 DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可

14、采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。3.4.2 DS1302引脚介绍 各引脚的功能为: 1、Vcc2:5V电源。当Vcc2Vcc1+0.2V时,由Vcc2向DS1302供电, 当Vcc2 Vcc1时,由Vcc1向DS1302供电。 2和3、X1、X2 是外接晶振脚 (32.768KHZ的晶振) 4、地(GND) 5、CE/RST:复位脚 6、I/O:数据输入

15、输出口; 7、SCLK:串行时钟,输入; 8、Vcc1:备用电池端;3.4.3 DS1302有关日历、时间的寄存器 寄存器的说明如下:1、秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。当初始上电时该位置为1,时钟振荡器停止,DS1302处于低功耗状态;只有将秒寄存器的该位置改写为0时,时钟才能开始运行。2、小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为高时,选择12小时模式。在12小时模式时,位5是 ,当为1时,表示PM。在24小时模式时,位5是第二个10小时位3、控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置

16、为0。在对任何的时钟和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。也就是说在电路上电的初始态WP是1,这时是不能改写上面任何一个时间寄存器的,只有首先将WP改写为0,才能进行其它寄存器的写操作。 3.4.4 DS1302控制字介绍位7:必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6:如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1(A4A0):指示操作单元的地址;位0(最低有效位):为0,表示要进行写操作,为1表示进行读操作。读数据: 读数据时在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的

17、数据,读出的数据是从最低位到最高位。写数据: 控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入也是从最低位(0位)开始。位0(最低有效位):为1表示进行读操作。 如为0,表示要进行写操作,控制字后SCLK 下降沿 读数据SCLK上升沿写数据。3.4.5 DS1302单字节读写时序介绍 DS1302的数据读写是通过I/O串行进行的。当进行一次读写操作时最少得读写两个字节,第一个字节是控制字节,就是一个命令,告诉DS1302是读还是写操作,是对RAM还是对CLOK寄存器操作,以及操作的址。第二个字节就是要读或写的数据了。 单字节写:在进

18、行操作之前先得将CE(也可说是RST)置高电平,然后单片机将控制字的位0放到I/O上,当I/O的数据稳定后,将SCLK置高电平,DS1302检测到SCLK的上升沿后就将I/O上的数据读取,然后单片机将SCLK置为低电平,再将控制字的位1放到I/O上,如此反复,将一个字节控制字的8个位传给DS1302。接下来就是传一个字节的数据给DS1302,当传完数据后,单片机将CE置为低电平,操作结束。 单字节读操作的一开始写控制字的过程和上面的单字节写操作是一样,但是单字节读操作在写控制字的最后一个位,SCLK还在高电平时,DS1302就将数据放到I/O上,单片机将SCLK置为低电平后数据锁存, 单机机就

19、可以读取I/O上的数据。如此反复,将一个字节的数据读入单片机。 读与写操作的不同就在于,写操作是在SCLK低电平时单片机将数据放到IO上,当SCLK上升沿时,DS1302读取。而读操作是在SCLK高电平时DS1302放数据到IO上,将SCLK置为低电平后,单片机就可从IO上读取数据。3.4.6 DS1302操作指令介绍操作说明:1 首先要通过8EH将写保护去掉,将日期,时间的初值写时各个寄器。 2 然后就可以对80H、82H、84H、86H、88H、8AH、8CH进行初值的写入。同时也通过秒寄存器将位7的CH值改成0,这样DS1302就开始走时了。3 将写保护寄存器再写为80H,防止误改写寄存

20、器的值。 4 不断读取80H8CH的值,将它们格式化后显示到数码管上3.4.7 DS1302与单片机接口电路 3.5 温测模块 DS18B20通过单总线实现与单片机的通信,每个DS18B20都有一个唯一的序列号,可以方便的实现组网检测。3.5.1 单总线介绍 1.单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成。 2.单总线通常要求外接一个约为 4.7K10K 的上拉电阻,这样,当总线 闲置时其状态为高电平。3.5.2 DS18B20特性介绍 DS18B20 单线数字温度传感器,即“一线器件”,其具有独特的优点: 1. 采用单总线的接口方式 与微处理器连接时 仅需要一条口线即可实现

21、 微处理器与 DS18B20 的双向通讯。 单总线具有经济性好,抗干扰能 力强,适合于恶劣环境的现场温度测量,使用方便等优点,使用户可轻 松地组建传感器网络,为测量系统的构建引入全新概念。 2. 测量温度范围宽,测量精度高 DS18B20 的测量范围为 -55 + 125 ; 在 -10+ 85C 范围内,精度为 0.5C 。 3. 在使用中不需要任何外围元件。 4. 支持多点组网功能 多个 DS18B20 可以并联在惟一的单线上,实现多 点测温。 5. 供电方式灵活 DS18B20 可以通过内部寄生电路从数据线上获取电 源。因此,当数据线上的时序满足一定的要求时,可以不接外部电源, 从而使系

22、统结构更趋简单,可靠性更高。 6. 测量参数可配置 DS18B20 的测量分辨率可通过程序设定 912 位。 7. 负压特性电源极性接反时,温度计不会因发热而烧毁,但不能正常作。 8. 掉电保护功能 DS18B20 内部含有 EEPROM ,在系统掉电以后,它 仍可保存分辨率及报警温度的设定值。 9. DS18B20 具有体积更小、适用电压更宽、更经济、可选更小的封装方 式,更宽的电压适用范围,适合于构建自己的经济的测温系统,因此也 就被设计者们所青睐。3.5.3 DS18B20管脚介绍 DS18B20的管脚排列1 . GND为电源 地;2. DQ为数字信号输入输出端;3. VDD为外接供电电

23、源输入端,在寄生 电源接线方式时接地; 3.5.4 DS18B20内部结构 DS18B20 内部结构主要由四部分组成: 64 位光刻 ROM 、温度传感器、非挥发的温度报警触发器 TH 和 TL 、配置寄存器。光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该 DS18B20 的地址序列码。 64 位光刻 ROM 的排列是:开始 8 位(地址: 28H )是产品类型标号,接着的 48 位是该 DS18B20 自身的序列号,并且每个 DS18B20 的序列号都不相同,因此它可以看作是该 DS18B20 的地址序列码;最后 8 位则是前面 56 位的循环冗余校验码( CRC=X8

24、+X5+X4+1 )。由于每一个 DS18B20 的 ROM 数据都各不相同,因此微控制器就可以通过单总线对多个 DS18B20 进行寻址,从而实现一根总线上挂接多个 DS18B20 的目的。DS18B20中的温度传感器完成对温度的测量,用16位二进制形式提供,形式表达,其中S为符号位。3.5.5 DS18B20温度转化示例3.5.6 DS18B20时序介绍DS18B20的一线工作协议流程是:初始化ROM操作指令存储器操作指令数据传输。其工作时序包括:1. 初始化时序2. 写时序3. 读时序 初始化时序: 主机首先发出一个480960微秒的低电平脉冲,然后释放总线变为高电平,并在随后的480微

25、秒时间内对总线进行检测,如果有低电平出现说明总线上有器件已做出应答。若无低电平出现一直都是高电平说明总线上无器件应答。做为从器件的DS18B20在一上电后就一直在检测总线上是否有480960微秒的低电平出现,如果有,在总线转为高电平后等待1560微秒后将总线电平拉低60240微秒做出响应存在脉冲,告诉主机本器件已做好准备。若没有检测到就一直在检测等待。 写操作: 写操作就是主机发出各种操作命令,但各种操作命令都是向DS18B20写0和写1组成的命令字节,接收数据时也是从DS18B20读取0或1的过程。写周期最少为60微秒,最长不超过120微秒。写周期一开始做为主机先把总线拉低1微秒表示写周期开

26、始。随后若主机想写0,则继续拉低电平最少60微秒直至写周期结束,然后释放总线为高电平。若主机想写1,在一开始拉低总线电平1微秒后就释放总线为高电平,一直到写周期结束。而做为从机的DS18B20则在检测到总线被拉底后等待15微秒然后从15us到45us开始对总线采样,在采样期内总线为高电平则为1,若采样期内总线为低电平则为0。 读操作: 对于读数据操作时序也分为读0时序和读1时序两个过程。读时序是从主机把单总线拉低之后,在1微秒之后就得释放单总线为高电平,以让DS18B20把数据传输到单总线上。DS18B20在检测到总线被拉低1微秒后,便开始送出数据,若是要送出0就把总线拉为低电平直到读周期结束

27、。若要送出1则释放总线为高电平。主机在一开始拉低总线1微秒后释放总线,然后在包括前面的拉低总线电平1微秒在内的15微秒时间内完成对总线进行采样检测,采样期内总线为低电平则确认为0。采样期内总线为高电平则确认为1。完成一个读时序过程,至少需要60us才能完成。3.5.7 DS18B20操作步骤1. 每次读写前对 DS18B20 进行复位初始化。复位要求主 CPU 将数据线下拉 500us ,然后释放, DS18B20 收到信号后等待 16us60us 左右,然后发出60us240us 的存在低脉冲,主 CPU 收到此信号后表示复位成功。2. 发送一条 ROM 指令3. 发送存储器指令3.5.8

28、DS18B20与单片机的接口电路3.6 总系统原理图 单片机(AT89S52)9脚为复位输入端。上电复位,只要RST引脚上有大于二个机器周期以上的高电平,单片机(AT89C2051)即复位。按键从单片机(AT89S52)的P2.4、P2.5、P2.6、P2.7口接入,当按键被按下时,相应的输入口就会输入低电平0。单片机(AT89S52)的XTAL1脚、XTAL2脚接一个由12M晶振和10pf组成的振荡电路。为单片机提供相应的时序。4.软件设计主程序主要起到一个导向和决策功能,控制程序的走向。本系统在主程序中运用模块化结构,所有控制量集中处理,提高了处理效率,并在RAM建立各控制量的映射,方便各

29、功能模块的编程及修改。运用散转结构,可实现无扰动重入。本设计主要有以下几个模块:温显模块、时钟显示模块、时钟修改模块。操作说明:上电复位后进入温显模块,按K1键可进入温度报警值上下限的设置;按K0可进行模块间的转换,按一次K0进入时钟模块,按K0两次进入时钟修改模块。4.1 I/O口分配1、P2.0、P2.1、P2.2、P2.3作为个位、十位、百位、千位数码管片选。2、P2.4、P2.5、P2.6、P2.7作为按键接口。3、P0.0到P0.7作为段码a到g的输出口。4.2 按键扫描本设计采用定时器中断延时去抖的方法来进行按键的有效扫描判断5.流程图mode=0mode=1获取温度根据键状态进行

30、功能散转Work0,温显和温报模块,同时置位延时方式标志位Work1,时间显示,同时清零延时方式标志位Work2,调时模块,在调整完毕后进入Work1按键扫描显示方式1清定时标志位 重装定时初值按键扫描显示方式2初始化DS1302读取时间开始初始化延时方式标志位=1?NYN5ms到?Ymode=25.1主程序流程图入口根据键状态值进行功能散转温显模式修改高温报警值修改低温报警值返回cnt1=0cnt1=1cnt1=25.2 work0模块流程图msta=0msta=1月份显示模块msta=2时间显示模块星期显示模块入口年份显示模块返回根据键状态值进行功能散转msta=35.3 work1模块流

31、程图设置时间预处理,即将当前时间值送给修改缓冲单元入口根据键状态值进行功能散转msta1=2msta1=3msta1=0msta1=1返回修改小时,高两位数码管位闪,按K2与K3键修改修改分钟,低两位数码管位闪,按K2与K3键修改修改月份,高两位数码管位闪,按K2与K3键修改修改日,低两位数码管位闪,按K2与K3键修改修改年份,高两位显示20低两位数码管位闪,按K2与K3键修改修改星期,低两位数码管位闪,按K2与K3键修改修改完毕,将修改信息写入到DS1302芯片中msta1=4msta1=5msta1=6msta1=75.4 work2模块流程图5.5 获取温度子程序流程图入口初始化DS18

32、B20跳过ROM温度转换初始化DS18B20跳过ROM读取温度读低8位读高8位将取出的数据转换成温度值,分为整数部分和小数部分将整数部分送显缓存将小数部分按0.5精度处理将温度值转换为BCDma3,yongyu温度报警时温度比较实用返回5.6 按键扫描入口读键,保存键值有键?开定时中断延时去抖提取键前沿关定时中断返回NY5.7 中断服务子程序入口重装中断定时初值保存变化的键状态返回5.8 显示方式1显示个位,dsw=1关数码管i3?根据状态字进行散转入口i=0返回显示十位,dsw=2显示百位,dsw=3显示千位,dsw=0dsw=0dsw=1dsw=2dsw=3NY5.9 初始化DS1302子

33、程序流图入口允许初始化标志位=1?写保护关写入年份写入月份写入日写入小时写入分钟写保护开允许初始化标志位清零返回NY5.10 温显模块子程序流图入口将温度值送显缓温度值比较,超过上下限值,则报警返回5.11 读取时间模块子程序流图读取分钟,将数据转换为十进制数据入口变量定义返回读取小时,将数据转换为十进制数据读取日,将数据转换为十进制数据读取月份,将数据转换为十进制数据读取星期,将数据转换为十进制数据读取年份,将数据转换为十进制数据6.程序代码6.1 主程序部分#include /52单片机头文件#include /52单片机头文件#include#include /52单片机头文件#defi

34、ne SM_PORT P0 /输出口定义#define uint unsigned int#define uchar unsigned charuchar code table=0xc0,0xf9,0xa4,0xb0,0x99, /0,1,2,3.数码管 /断码表,16关,17H,18,19L0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1, 0x86,0x8e,0xff,0x89,0xbf,0xc7; uchar LBJ_buf0,LBJ_buf1,HBJ_buf0,HBJ_buf1;uchar H2_weishan,L2_weishan;uchar

35、r0,DELAY_mode;uchar msta,BJ_L,BJ_H,cnt1,cnt;void RDKEY() P2=0xff; /扫描第0行(ROW0),即k0-k3键 r0=P2; r0=r0; r0&=0xf0; /将读取到的k0-k3键值保存于KEY0的低四位 if(r0!=KEY0) /判断是否有键按下 TR0=1; EKEY0=KEY0; /时间未到,沿用原来保留的键值 else /未有键按下 TR0=0; EKEY0=0x00; EKEY0=r0&(KEY0r0); /提取键前沿 KEY0=r0; void disp () uchar i; for(i=0;i3;i+) P2=

36、0xff; switch(dsw) case 0:CS0=0; SM_PORT=tablebuf0; /显示个位 dsw=1; break; case 1:CS1=0; SM_PORT=tablebuf1; /显示十位 dsw=2; break; case 2:if(!fh_300) CS2=0; else CS2=1; SM_PORT=tablebuf2; /显示百位 if(point_flag) point=0; else point=1; dsw=3; break; case 3: if(!fh_300) CS3=0; else CS3=1; SM_PORT=tablebuf3; /显示

37、千位 dsw=0; break; default:break; void disp1 () SM_PORT=0xff; P2=0xff; switch(dsw) case 0: if(!fl_300) CS0=0; else CS0=1; SM_PORT=tablebuf0; /显示个位 dsw=1; break; case 1: if(!fl_300) CS1=0; else CS1=1; SM_PORT=tablebuf1; /显示十位 dsw=2; break; case 2: if(!fh_300) CS2=0; else CS2=1; SM_PORT=tablebuf2; /显示百位

38、 if(point_flag) point=0; else point=1; dsw=3; break; case 3: if(!fh_300) CS3=0; else CS3=1; SM_PORT=tablebuf3; /显示千位 dsw=0; break; default:break; void Init() TMOD=0x11;/设置定时器的工作方式 TH0=(65536-20000)/256;/为定时器0装载初值,用中断方式进行 /按键的去抖 TL0=(65536-20000)%256; TH1=(65536-5000)/256;/为定时器1装载初值 TL1=(65536-5000)%256; EA=1; /开总中断 ET0=1; /开定时器0中断 TR1=1; /开定时器0 LBJ_buf1=2; /为

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服