数字温度计课程设计.doc

上传人:文库蛋蛋多 文档编号:4193073 上传时间:2023-04-09 格式:DOC 页数:33 大小:3.57MB
返回 下载 相关 举报
数字温度计课程设计.doc_第1页
第1页 / 共33页
数字温度计课程设计.doc_第2页
第2页 / 共33页
数字温度计课程设计.doc_第3页
第3页 / 共33页
数字温度计课程设计.doc_第4页
第4页 / 共33页
数字温度计课程设计.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《数字温度计课程设计.doc》由会员分享,可在线阅读,更多相关《数字温度计课程设计.doc(33页珍藏版)》请在三一办公上搜索。

1、课程设计任务书课 程: 单片机技术 课程设计题目: 数字温度计 班 级: 姓 名: 学 号: 时 间: 指 导 教 师: 目 录第1章 设计数字温度计的任务及功能要求说明11.1、设计数字温度计的任务11.2 、数字温度计功能要求说明1第2章 数字温度计硬件系统的设计22.1、数字温度计硬件系统各模块功能简要介绍22.2、数字温度计电路原理图62.3、数字温度计PCB图62.4、数字温度计元器件布局图62.5、数字温度计元器件清单6第3章 数字温度计软件系统的设计73.1、数字温度计使用单片机资源的情况73.2、数字温度计软件系统各模块功能简要介绍及流程框图7第4章 设计结论、仿真结果154.

2、1、数字温度计的设计结论及使用说明154.2、数字温度计的仿真结果15第5章 课程设计心得体会17参考文献19附录A 数字温度计电路原理图20附录B 数字温度计PCB图(正)21附录C 数字温度计PCB图(底)22附录D 数字温度计元器件布局图23附录E 数字温度计器件清单24附录F 数字温度计源程序25第1章 设计数字温度计的任务及功能要求说明1.1、设计数字温度计的任务设计一个具有特定功能的数字温度计。该数字温度计上电或按键复位后能自动显示系统提示符“28090303”,进入准备工作状态。测量温度范围099,测量精度小数点后四位,可以通过开始和结束键控制数字温度计的工作状态。1.2 、数字

3、温度计功能要求说明数字温度计在上电或按键复位后能自动显示系统提示符“28090303”。P1口是独立式按键控制口,当按下S2键时,启动18B20并进入工作状态,并在数码管上显示即时温度,温度值可精确到小数点后四位;当按下S3键后,使18B20处于停止工作状态,并让数码管显示系统提示符。当18B20周围的温度高于温度上限值时(例如可设定温度上限值为20度),接在P3.1口的蜂鸣器报警,并且开启接P3.1口的警示灯。系统的逻辑框图如图1.1所示。图1.1 系统的逻辑框图第2章 数字温度计硬件系统的设计2.1、数字温度计硬件系统各模块功能简要介绍 数字温度计的整体硬件电路仿真图如图2.1所示。主要包

4、括单片机主板电路(复位电路和时钟电路),DS18B20电路,温度显示电路(数码管电路),按键输入电路,以及有报警作用的蜂鸣器电路和LED警示灯显示电路。图2.1 整体硬件电路(1)、单片机主板电路图2.2是单片机主板电路。包括时钟振荡电路和按键复位电路,时钟电路是由外接的晶振以及两个电容构成。晶振的两个引脚分别接在单片机的X1和X2引脚。按键复位电路是上电复位加手动复位,由单片机的RES引脚外接的电阻电容以及一个复位按键构成。另外扩展电路中,蜂鸣器电路由蜂鸣器、三极管及电阻构成。其接在单片机的P3.1口,是低电平有效。蜂鸣器可以在被测温度不在上限范围内时,发出报警鸣叫声音,接在P3.1口的LE

5、D警示灯被点亮,同时数码管显示被测量的温度值。按键输入电路是由单片机的P1口控制的,是低电平为有效信号。其图如图2.3所示。图2.2 单片机主板电路图2.3 按键输入电路(2)、显示电路数码管显示电路如图2.3所示。数码管显示电路使用的是串口显示,这种显示方式最大的优点就是使用口资源比较少,只用P0和P2口。两个四位一体共阳数码管采用动态接法,即位控并联、段控分别控制。P0口为段控口,P2口为位控口,都是低电平为有效信号。在位控口接上电阻和的三极管,期望增加驱动电流,以使数码管高亮度显示。图2.3 显示电路(3)、18B20电路 图2.4所示的18B20由P3.0口引出。DS18B20具有独特

6、的单线接口仅需要一个端口引脚进行通信,而且用户可定义报警设置。本实验中就用到了该功能,当环境的温度值超过系统设定的温度上限值时,设定了蜂鸣器和LED灯的有效程序。蜂鸣器会报警,LED灯会点亮。图2.4 DS18B20电路18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图2.5所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各

7、位的定义如图2.6所示。低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。温度 LSB温度 MSBTH用户字节1TL用户字节2配置寄存器保留保留保留CRC2.5 8字节存储器结构图TMR1R0111112.6 DS18B20字节定义当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB式表示

8、。当符号位S0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若TTH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令做出响应。因此,可用多只DS18B20同时测量温度并进行报警搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。另外,由于DS18B20单线通信功能是分时完成的,它

9、有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。分别说明如下:初始化:单总线的所有处理均从初始化开始。初始化过程是主机通过向作为从机的DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。初始化后,才可进行读写操作。ROM操作命令:总线主机检测到DS18B20的存在便可以发出ROM操作命令之一。这些命令如表2.1所示。表2.1 ROM操作命令指 令代 码Read ROM(读ROM)33HMatch ROM(匹配ROM)55HSkip ROM(跳过ROMCCHSearch

10、ROM(搜索ROM)F0HAlarm search(告警搜索)ECH存储器操作命令如表2.2所示。 表2.2 存储器操作命令指令代码Write Scratchpad(写暂存存储器)4EHRead Scratchpad(读暂存存储器)BEHCopy Scratchpad(复制暂存存储器)48HConvert Temperature(温度变换)44HRecall EPROM(重新调出)B8HRead Power supply(读电源)B4H2.2、数字温度计电路原理图见附录A。2.3、数字温度计PCB图见附录B和附录C。2.4、数字温度计元器件布局图见附录D。2.5、数字温度计元器件清单见附录E。

11、第3章 数字温度计软件系统的设计3.1、数字温度计使用单片机资源的情况 数字温度计设计使用单片机资源情况如下所述。P0口的八根口线都用于控制数码管的段空线,采用并联方式连接。P2口的八根口线都用于控制数码管的位控线,采用单独连接方式。P1口则用于控制按键电路,只用到了P1.0和P1.1口,P1.0接S2按键,做为开启键,P1.1口接S3按键,做为停止键,即按键复位状态。P3口只用到了P3.0和P3.1口,P3.0口为18B20的DQ口控制状态,低电平有效,因此要是18B20处于工作状态,P3.0口的LED灯会被点亮。P3.1口是控制蜂鸣器和警示灯的口线,是低电平有效,当蜂鸣器报警且警示灯点亮时

12、,表示温度超过系统设定的温度上限值。3.2、数字温度计软件系统各模块功能简要介绍及流程框图本次数字温度计的设计目的,主要是通过单片机控制18B20温度传感器来测量周边的环境温度。在上电复位或按键复位后显示系统提示符,通过开启和停止键来控制温度传感器的工作状态。但温度高于系统设定的温度上限值时,系统通过蜂鸣器报警,同时点亮警示灯。主要的软件模块包括主程序、18B20初始化程序、做好读温度准备子程序、读温度子程序、写温度子程序、显示子程序以及键扫描程序。他们的功能及流程框图如下所示。由于18B20是串行口,故尤其要注意时序问题,要延时以给机器足够的反应时间。(1)、主程序 主程序的功能是要操作整个

13、系统,首先要将温度传感器的DQ拉高,通过单片机P1口的按键控制18B20的工作状态。若开启键按下,则做好读温度的准备,接着是先读低位的温度值,再读高位的温度值,然后将所读的二进制温度值转换成十进制的温度值,并将温度值送往数码管显示。显示温度的过程中,若碰到温度值超过系统设定的温度上限值,则开启报警电路。若按下停止键,则显示系统提示符。流程框图如图3.1所示。3.1 主程序流程框图(2)、18B20初始化程序 由于18B20初始化过程中有复位和存在脉冲的问题,因此需多次改变DQ的状态并延时等待。首先要将DQ拉为高电平,延时几微妙。其次将DQ拉为低电平,控制器Tx“复位脉冲”延时480-960us

14、。接着又将DQ拉为高电平等待60us,最后延时让18B20输出存在脉冲。并且延时足够长,等待脉冲输出完毕。程序流程框图如图3.2所示。3.2 18B20初始化流程框图(3)、做好读温度准备子程序18B20的操作协议为规定为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。单总线的所有处理均从初始化开始。初始化过程是主机通过向作为从机的DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。初始化后,才可进行读写操作。当总线主机检测到DS18B20的存在,便可以发出ROM操作命令之一即可。Skip ROM就是ROM操作指令中的一个,其代码为CCH。存储器命令中的Co

15、nvert T命令的作用是开启温度转换,其代码是44H,单线总线发出协议后,表示18B20处在读温度忙状态。最后是数据处理情况。其流程框图如图3.3所示。图3.3 做好读温度准备子程序流程框图(4)、读温度子程序 读温度的子程序中要注意控制器读数的时间间隙。根据18B20的读时序可以得知,首先应将DQ拉为高电平,一个机器周期后将其拉为低电平,然后将数据线人为拉高,为单片机检测DS18B20的输出电平作准备,接着开始读温度。利用与运算,将值从低位到高位读出,读一位则二进制数右移一位,即可读完所测温度八位数的值。读的过程中要给控制器足够的采样时间。最后延时,给机器较长的反应时间。其流程框图如图3.

16、4所示。 图3.4 读温度子程序流程框图(5)、写温度子程序 写温度的子程序与读温度的子程序类似,只需将读温度子程序中所读得的值一位一位写入。同样是先将DQ拉为高电平,再拉低,然户开始从低位到高位依次写入。由于两个写时序间至少需要1us的恢复期,所以位与位之间至少延时2us时间。最后稍作延时,给机器反应时间。其流程框图如图3.5所示。 图3.5 写温度子程序流程框图(6)、显示函数本设计中有两个显示函数,一个是按键或上电复位后的显示函数,即显示系统提示符;另一个是所测得的温度显示。温度的显示可以精确到小数点后四位,多位数据的显示可以采用数组的方式一位一位将值送往数码管显示。整个程序的开始定义了

17、一个存放显示数值代码的数组。还有一个位控的数组,用来控制数码管的每一位。将数值代码送往控制段控口的P0口,将位控值送往位控口P2口,每送一位要延时一段时间。以防有阴影,最后可将P0、P2口送“灭”的代码。程序流程框图如图3.6所示。系统提示符显示函数,是由本人设定的固定显示。将所要显示的值送往数组,然后从低位到高位依次送往P2口显示。其流程框图如图3.7所示。图3.6 数码管显示程序流程图图3.7 数码管显示系统提示符程序流程图(7)、键扫描子程序按键扫描子程序包括键值处理程序和键扫描程序。键处理程序中,首先得将P1口的电平拉高,则送往P1口的值为低电平有效,将所得的P1口的值取反后做为P1口

18、的键值。按键接在单片机的P1口,键处理将其值送往键扫描程序,判断是否有键按下,延时消抖后再判断是否有键按下,再次调P1口键处理函数,若真正有键按下,取键值并暂存。然后判断键是否松开,延时一直到键松开,再将所得的键值保存,并作为函数的返回值。其程序流程图如图3.8所示。图3.8 键扫描程序流程图第4章 设计结论、仿真结果4.1、数字温度计的设计结论及使用说明 经过制板与编程,本次设计的数字温度计能够准确达到预期的结果。能够准确的按照软件系统的设定实现其功能。该数字温度计的使用说明如下:接通电源,电源指示灯亮,表明电源正常。当系统板进入上电复位或者按键复位后,能够显示系统提示符,即为“ZB0903

19、03”。单片机的P1口为按键控制口,当按下P1.0控制的S2键时,系统将进入18B20的工作状态,即显示即时温度。当温度超过系统设定的温度上限值时,P3.1控制的蜂鸣器会报警,同时P3.1控制的LED灯会被点亮。当按下P1.1控制的S3按键时,18B20退出工作状态,即显示系统提示符。4.2、数字温度计的仿真结果数字温度计的仿真结果如下:(1)、上电或按键复位时的仿真结果如图4.1所示。图4.1 上电或按键复位时的仿真结果(2)、按下S2键的仿真结果如图4.2所示。图4.2 按下S2键时的仿真结果(3)、温度超过20摄氏度时的仿真结果如图4.3所示。图4.3 温度超过20摄氏度时的仿真结果第5

20、章 课程设计心得体会这次的单片机课程设计取得了圆满成功。我早已经为这一期的单片机课程设计做好了充分的准备。在大二的暑假期间,参加过的电子线路培训,为本次的课程设计奠定了坚实的基础。当老师把课程设计的题目与要求公布出来时,我无比的激动,一开始就对这次的课程设计充满了信心。其实一开始是想着做抢答器的,可是由于该项目的成员已满,经过推敲,最终决定做一个数字温度计的设计。由于在暑假培训的时候就有做过相关的项目,所以这无疑给这次的课程设计带来了很大的方便。数码管系统板在这次课程设计之前已经做好了,它能够实现数字温度计的设计要求。因此不必忙于去制板。暑假培训中,做过的一些项目中,基本上包括了这次设计的子程

21、序,所以只需稍加设计即可。本次的课程设计要求要高于暑假培训的,因此还需要添加一些基本功能,例如按键控制功能。当把之前写好的程序导入到单片机中去时,数码管的显示总是不对。所以只好从头至尾将程序检查了一遍,但结果还是一样,也没发现有什么错误。后来仔细看了看原理图,才发现自己少插了短路帽,导致系统板不能正常工作。既然要做好本次的课程设计,就应该要着手于每个细节。虽然大体上可以说出整个程序的功能,但细化到每条语句,我并不能说清楚它的来由,尤其是18B20的相关程序。因为对18B20的功能用法不是很了解,所以需查阅大量的资料去了解18B20的工作特点与用法。了解到一些有关18B20的知识。由于18B20

22、单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序尤其重要。系统对18B20的各种操作按协议进行。18B20初始化过程中有复位和存在脉冲的问题,因此需多次改变DQ的状态并延时等待。首先要将DQ拉为高电平,延时几微妙。其次将DQ拉为低电平,控制器TX“复位脉冲”延时480-960us。接着又将DQ拉为高电平等待60us,最后延时让18B20输出存在脉冲。并且延时足够长,等待脉冲输出完毕。这便是18B20的初始化程序过程。18B20的操作协议为规定为:初使化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。单总线的所有处理均从初始化开始。初始化过程是主机通过向作为从机的

23、DS18B20芯片发一个有时间宽度要求的初始化脉冲实现的。初始化后,才可进行读写操作。当总线主机检测到DS18B20的存在,便可以发出ROM操作命令之一即可。Skip ROM就是ROM操作指令中的一个,其代码为CCH。存储器命令中的Convert T命令的作用是开启温度转换,其代码是44H,单线总线发出协议后,表示18B20处在读温度忙状态。最后是数据处理情况。这便是18B20做好读温度准备的子程序过程。写温度的子程序与读温度的子程序类似,只需将读温度子程序中所读得的值一位一位写入。同样是先将DQ拉为高电平,再拉低,然户开始从低位到高位依次写入。由于两个写时序间至少需要1us的恢复期,所以位与

24、位之间至少延时2us时间。最后稍作延时,给机器反应时间。在做文档的时候,同时也学会了绘制简单的流程图。做一次课程设计不仅要有实物而且还需要有论文。论文的撰写需要大量的资料,在查找资料的过程中,又培养了我从文献、生产实践、和调查研究中获取知识的能力,提高了我从别人的经验、从其它学科找到解决问题新途径的悟性。在整个过程中,我从中学到了不少东西,更深一步掌握了单片机电路,更深的了解设计中所用到的单片机最小系统的工作原理,同时也掌握了单片机各引脚的功能及用途。通过本次的课程设计,让我了解到所学过的知识要及时复习,运用到实践中,才能更好地掌握所学知识。参考文献 1 李朝青. 单片机原理及接口技术M. 北

25、京:北京航空航天大学出版社,1998.2 李勋等. 单片机实用教程M. 北京:北京航空航天大学出版社,2000.3 王幸之等. 单片机应用系统抗干扰技术M. 北京:北京航空航天大学出版社,1999.4 李华. MCS-51系列单片机实用接口技术M. 北京:北京航空航天大学出版社,1993.5 何为民. 低功耗单片微机系统设计M. 北京:北京航空航天大学出版社,1994.6 何立民. 单片机应用技术选编5M. 北京:北京航空航天大学出版社,1997.7 李广弟,朱月秀,冷祖祁. 单片机基础(第三版)M.北京:北京航空航天大学出版社,2007.附录A 数字温度计电路原理图附录B 数字温度计PCB图

26、(正)附录C 数字温度计PCB图(底)附录D 数字温度计元器件布局图附录E 数字温度计器件清单Part TypeDesignatorFootprintPart TypeDesignatorFootprint1KR2DZ470RP5DZ1KR13DZ470RP6DZ1KR12DZAT89S52U1DIP404.7KRKDZBELLLS1FMQ10KJ2SIP9CON1J0YI10KJ5SIP9CON2J1CC12MHZY1JZCON2JX2CC22uFC322UFCON2JX1CC33PFC2DRCON2JP5CC33PFC1DRCON8JP1SIP8200R1DZCON8JP3SIP8470R

27、01DZCON8JP4SIP8470R00DZCON8JP2SIP8470R04DZLEDD7LED470R03DZLEDD9LED470R02DZLEDD8LED470RP3DZLEDD3LED470RP4DZLEDD2LED470RP2DZLEDD1LED470RP0DZLEDD6LED470RP1DZLEDD5LED470R23DZLEDD4LED470R24DZPNPQ8PNP470R22DZPNPQ2PNP470R20DZPNPQ3PNP470R21DZPNPQ0PNP470R06DZPNPQ1PNP470R05DZPNPQ6PNP470R07DZPNPQ7PNP470R25DZPN

28、PQ4PNP470R26DZPNPQ5PNP470RP7DZSWS1XAJ470R27DZUSBJ3USB附录F 数字温度计源程序/数字温度计的设置:上电或按键复位后,显示系统提示符ZB090303;当K2(P1.0口)键按下后,显示即时温度;P0口为段控口,P2口为位控口,P1 口 为按键控制口,P3口控制流水灯#include /包含单片机寄存器的头文件#include /包含_nop_()函数定义的头文件#define uchar unsigned char#define uint unsigned intUchar duan16=0xC0,0xF9,0xA4,0xB0,0x99,0x9

29、2,0x82,0xF8,0x80,0x90, 0x8c,0xce,0x86,0xAB,0xA1,0xff; / 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 / p T E n D 灭uchar wei=0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe;char find_code8=3,0,3,0,9,0,8,2;/*以下是DS18B20的操作程序*/ sbit DQ=P30; sbit bz=P31;uchar time; /设置全局变量,专门用于严格延时/*函数功能:将DS18B20传感器初始化,读取应答信号出口参数:flag

30、*/bit Init_DS18B20(void)bit flag; /储存DS18B20是否存在的标志,flag=0,表示存在;flag=1,表示不存在 DQ = 1; /先将数据线拉高 for(time=0;time2;time+) /略微延时约6微秒 ; DQ = 0; /再将数据线从高拉低,要求保持480960us for(time=0;time200;time+) /略微延时约600微秒 ; /以向DS18B20发出一持续480960us的低电平复位脉冲 DQ = 1; /释放数据线(将数据线拉高) for(time=0;time16;time+) ; /延时约30us(释放总线后需等

31、待1560us让DS18B20输出存在脉冲) flag=DQ; /让单片机检测是否输出了存在脉冲(DQ=0表示存在) for(time=0;time200;time+) /延时足够长时间,等待存在脉冲输出完毕 ; return (flag); /返回检测成功标志/*函数功能:从DS18B20读取一个字节数据出口参数:dat*/ uchar ReadOneChar(void) uchar i=0;uchar dat; /储存读出的一个字节数据for (i=0;i=1;_nop_(); /等待一个机器周期 DQ = 1; /将数据线人为拉高,为单片机检测DS18B20的输出电平作准备for(tim

32、e=0;time2;time+) ; /延时约6us,使主机在15us内采样if(DQ=1) dat|=0x80; /如果读到的数据是1,则将1存入datelsedat|=0x00;/如果读到的数据是0,则将0存入dat /将单片机检测到的电平信号DQ存入rifor(time=0;time8;time+) ; /延时3us,两个读时序之间必须有大于1us的恢复期 return(dat); /返回读出的十进制数据/*函数功能:向DS18B20写入一个字节数据入口参数:dat*/ void WriteOneChar(unsigned char dat) uchar i=0;for (i=0;i8;

33、i+)DQ =1; / 先将数据线拉高 _nop_(); /等待一个机器周期 DQ=0; /将数据线从高拉低时即启动写时序 DQ=dat&0x01; /利用与运算取出要写的某位二进制数据, /并将其送到数据线上等待DS18B20采样 for(time=0;time10;time+) ; /延时约30us,DS18B20在拉低后的约1560us期间从数据线上采样 DQ=1; /释放数据线 for(time=0;time=1; /将dat中的各二进制位数据右移1位 for(time=0;time4;time+) ; /稍作延时,给硬件一点反应时间/*函数功能:做好读温度的准备*/ void Rea

34、dyReadTemp(void) Init_DS18B20(); /将DS18B20初始化WriteOneChar(0xCC); / 跳过读序号列号的操作WriteOneChar(0x44); / 启动温度转换 for(time=0;time100;time+) ; /温度转换需要一点时间Init_DS18B20(); /将DS18B20初始化WriteOneChar(0xCC); /跳过读序号列号的操作WriteOneChar(0xBE); /读取温度寄存器,前两个分别是温度的低位和高位/*延时函数*/void display_delay(void) unsigned int time1=1

35、00; while(time1) time1- ; /*延时1ms函数*/ void DelayX1ms(uint count) uint j; while(count-!=0) for(j=0;j80;j+); /*显示班级学号*/ void disp() char i,j=0xfe; char k; for(i=0;i8;i+) P2=j; k=find_codei; P0=duank; DelayX1ms(1); j=_crol_(j,1); P0=0xff; /* 函数原型:keychuli();* 功 能:处理与键盘相连的P1口的内容,作为键值。*/uchar keychuli()

36、uchar k; k=P1; /P1口内容送K k=k; /取反 return(k); /返回键值/* 函数原型:key();* 功 能:键盘扫描函数,函数返回值即键值。*/uchar key() uchar keyzhi,keyzhii; /电子钟键盘按键键值临时存放 keyzhi=keychuli(); /调P1口处理函数 if(keyzhi!=0) /有键动作延时去抖动,否则函数返回 disp(); keyzhi=keychuli(); /再次调P1口处理函数 if(keyzhi!=0) /真正有键按下,取键值并暂存 keyzhii=keyzhi;while(keyzhi!=0) /判按键是否释放,没有释放延时去抖动等待释放 disp(); keyzhi=keychuli(); keyzhi=keyzhii;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号