单片机课程设计-智能仪器

合集下载

单片机课程设计--智能电子钟的设计

单片机课程设计--智能电子钟的设计

目录1引言 (1)1.1设计内容和要 (1)1.2 工作原理 (2)2总体设计 (2)2.1 方案设计 (2)2.2 系统框图 (2)2.3 核心芯片简介 (3)2.3.1 DS1302简介 (3)2.3.2 AT89C51简介 (3)3 智能电子钟软硬件电路的设计 (4)3.1 硬件设计 (4)3.1.1 复位电路设计 (4)3.1.2 DS1302与单片机的接口设计 (5)3.1.3 LED显示设计 (5)3.1.4 电源设计 (6)3.1.5 按键开关去抖设计 (6)3.1.6 时钟电路的设计 (7)3.1.7 电路总原理图设计 (8)3.2 软件设计 (8)3.2.1 流程图 (8)4protues仿真与调试 (11)4.1 电路的仿真 (11)4.2软件调试 (11)结论……………………………………………………………………………………………错误!未定义书签。

参考文献 (14)附录 (15)源程序 (15)1 引言电子时钟主要是利用电子技术将时钟电子化、数字化,拥有时钟精确、体积小、界面友好、可扩展性能强等特点,被广泛应用于生活和工作当中。

另外,在生活和工农业生产中,也常常需要温度,这就需要电子时钟具有多功能性。

本设计主要为实现一款可正常显示时钟/日历、带有定时闹铃的多功能电子时钟。

本文对当前电子钟开发手段进行了比较和分析,最终确定了采用单片机技术实现多功能电子时钟。

本设计应用AT89C51芯片作为核心,6位LED数码管显示,使用DS1302实时时钟日历芯片完成时钟/日历的基本功能。

这种实现方法的优点是电路简单,性能可靠,实时性好,时间精确,操作简单,编程容易。

该电子时钟可以应用于一般的生活和工作中,也可通过改装,提高性能,增加新功能,从而给人们的生活和工作带来更多的方便。

1.1设计内容和要求以AT89C51单片机为核心,制作一个LCD显示的智能电子钟:(1) 计时:秒、分、时、天、周、月、年。

基于单片机的智能电子秤设计

基于单片机的智能电子秤设计
缺点:此电路要求R3、R4相等,误差将会影响输出精度,难度较大。实际测量,每一级运放都会引入较大噪声,对精度影响较大。
方案二:采用专用仪表放大器[12],如:INA128,INA129等。
此类芯片内部采用差动输入,共模抑制比高,差模输入阻抗大,增益高,精度也非常好,且外部接口简单。
以INA128为例,引脚图如2-4所示:
所采用的传感器输出电压振幅范围0~10mV。而模数转换的输入电压要求为0~2V,因此放大环节至少200倍的增益,此处我们需要放大500倍。根据本设计的实际情况增列出了两种方案。
方案一:由高精度低漂移运算放大器构成差动放大器。
差动放大器具有高输入阻抗,增益高的特点,可以利用普通运放(如OP07)做成一个差动放大器,其内部电路如图2-3所示。
(2-2)
本文的目的是设计一简易电子秤,最大称重约为2.5千克,重量误差不大于±0.01千克;考虑到与其相配置的各种电路的设计的难易程度和设计性价比,最终选择了CZAF-605[8]电阻应变式称重传感器,其称重规模为5kg。
2.4
压力传感器感受重力转换后输出的信号一般电平较低;经由电桥等电路变换后的信号亦难以直接用来显示、记录、控制或进行模数转换。为此,测量电路中需要模拟放大环节。这一环节目前主要依靠由集成运算放大器的基本元件构成具有各种特性的放大器来完成。
AT89S51的电源脚分别为20脚Vss和40脚Vcc(图中已默认连接,未显示出来)。这两个脚分别接地和+5V直流电源,31脚EA为内外存储器的控制端,接+5V允许访问外部存储器。
传感器检测电路的功能是把电阻应变片的电阻变化转变为电压输出,本设计中选用的是CZAF-605电阻应变式称重传感器,因为通过其得到的电压信号很小,为所以还需要放大器放大信号。考虑到干扰的作用,对传感器的信号进行了滤波处理,最终设计如图3-3所示。

智能大脑-走进单片机的世界教学设计

智能大脑-走进单片机的世界教学设计

智能大脑-走进单片机的世界教学设计教学目标:1、知识技能目标:知道什么是单片机,了解单片机的特点、用途;初步了解单片机是如何工作的。

2、情感态度目标:培训学生学习单片机的兴趣,进行爱国主义思想教育和科技强国的思想熏陶。

二、教学方法:配合多媒体讲授与观摩体验相结合,适当动手操作。

三、教学器材:自备单片机实验开发板和若干应用了单片机的智能工具仪表若干。

四、教学教程:1、引入新课:多媒体演示:观看扫地机器人扫地视频,引入话题:机器人已经进入寻常百姓家,智能时代已经来到!让我一起学习一下机器人的智能大脑的初步知识。

看多媒体图片,让学生判断哪个是智能电饭煲?说出智能电饭煲有哪些智能化的功能。

教师讲解:智能电器中都用到了“微电脑”——单片机。

2、传授新课:什么是单片机?单片机的应用领域有哪些?单片机是只有单个芯片的微型计算机,它把计算机的运算控制器CPU、只读存储器ROM、随机存储器RAM、输入输出I/O接口都集成到一个芯片里面的微型计算机。

3、单片机的特点(教师讲解):(1)体积小、重量轻、功耗低(可以用电池借电,便于携带)、功能强、性价比高,可嵌入各种设备中组成以之为核心的嵌入式系统。

(2)数据大都在单片机内部传送,运行速度较快,抗干扰能力强,可靠性高。

(3)结构灵活,易于组成各种微机应用系统。

(4)应用广泛,既可用于工业自动控制等场合,又可用于测量仪器、医疗仪器及家用电器等各个领域。

4、单片机的应用领域举例(多媒体演示)㈠、消费电子产品领域:数码相机、数码摄像机、智能冰箱、空调、智能洗衣机、智能养生壶、智能洗脚盆、电磁炉、微波炉、扫地机器人,还有手机中也用到了高端的单片机。

㈡、测控仪器、仪表领域:最常见的有数字电表、数字血氧仪、数字血压计、心电仪等等㈢、工业控制领域:数控机床、PLC机械手等等,大大提高了生产效率和产品质量。

㈣、汽车、交通领域:普通汽车通常也用到ABS、EBD、BAS、CBC等智能控制技术,使汽车变得更加安全、舒适,无人驾驶汽车也投放到市场了,中国也开始使用了无人驾驶公交汽车。

智能仪器实验报告-实验七

智能仪器实验报告-实验七

《智能仪器》课程设计报告姓名学号:梁倩 ********匙沛华 41253026胡智凯 41253023张爽 41253012刘文平 41253035专业:测控技术与仪器班级:测控1201、1202北京科技大学自动化学院二〇一六年一月目录一,课程设计内容简述 (3)二,电路原理图及说明 (3)1.总电路图 (4)2.电位器 (4)3.AD转换 (4)4.8051单片机 (5)5.继电器 (5)6.步进电机 (5)7.键盘以及显示 (6)8.地址译码插孔 (6)三,程序 (7)1.程序框图及说明 (7)2.程序源程序及注释 (11)3.运行结果(拍图) (17)四,调试过程遇到的问题及解决方法 (19)五,参考文献 (20)六,教师评语及成绩 (21)《智能仪器》课程设计报告一,课程设计内容简述设计要求:基于单片机的压力控制系统设计A:由电位器信号模拟压力信号,在LED上进行显示;由按键设定压力上、下限,当压力高于上限时,打开继电器(放气);当压力低于下限时,启动步进电机(充气)。

设计分工:软件接口要求:二,电路原理图及说明1.总电路图本压力显示和充放气系统用电位器输出值(0-5V)来模拟(-20-99KPa)压力值,将电位器的输出值送到模数转换模块进行AD转换,并将转换后的值送到8051单片机进行计算,转化为相应的压力值,送到LED数码管上(前三位)显示。

按键设定压力的上下限,可以在LED数码管后三位显示。

AD转换后的压力值与设定的压力上下限值相比较,当压力低于设定的下限值时,启动步进电机模拟充气过程。

当模拟压力高于上限时,打开继电器模拟放气过程。

2.电位器电位器用来产生可变的模拟量(0-5V),进而转化为-20到99KPa的模拟压力值。

3.AD转换80C196片内集成了一个八通道的A/D转换系统。

包括模拟多路开关、采样和保持电路以10位逐次逼近的A/D转换器。

A/D转换的结果送到数码管显示。

4.8051单片机8051单片机作为控制中心,是程序的载体,并根据程序控制各部分各功能的正常运行。

智能仪器仪表实验教学大纲

智能仪器仪表实验教学大纲

《智能仪器仪表》课程实验教学大纲课程名称:智能仪器仪表课程编码:060241003课程类别:专业课课程性质:必修适用专业:测控技术与仪器专业适用教学计划版本:2017课程总学时:48实验(上机)计划学时: 10开课单位:自动化与电气工程学院一、大纲编写依据1.测控技术与仪器专业2006版教学计划;2.测控技术与仪器专业《智能仪器仪表》理论教学大纲对实验环节的要求;3.近年来《智能仪器仪表》实验教学经验。

二、实验课程地位及相关课程的联系1.《智能仪器仪表》是测控技术与仪器专业重要的专业方向课程;2.本实验项目是《智能仪器仪表》课程综合知识的运用;3.本实验项目是理解智能仪表数据处理方法的基础;4.本实验以《微机原理及应用2》、《单片机原理与接口技术》为先修课。

5.本实验为毕业设计等有指导意义。

三、实验目的、任务和要求1.熟悉单片机开发系统的使用,了解仿真器的基本原理及功能;2.培养学生观察问题、分析问题和独立解决问题的能力;3.掌握采用查表法,线性插值法进行传感器非线性特性校正的软件设计,调试方法;4.熟悉S型热电偶查表法,插值法校正法表格的设计方法;5.熟悉S型热电偶查表法,插值法校正法程序的设计方法;6.培养正确记录实验数据和现象,正确处理实验数据和分析实验结果的能力以及正确书写实验报告的能力。

四、教学方法、教学形式、教学手段的特色重视学生的实际动手能力五、实验内容和学时分配实验一认识实验1、实验目的:(1)熟悉智能仪表的开发过程。

(2)掌握智能仪表试验台的硬件电路,工作原理和特性。

2、实验要求:(1)掌握编程器使用方法。

(2)读取MCU数据的方法。

(3)对实验操作过程中出现的进行分析和总结。

3、实验内容:(1)掌握键入、修改程序的操作(2)熟悉检查有关存储单元内容的方法;掌握程序运行及调试过程。

4、主要仪器设备及试剂:(据实选填)(1)名称·规格型号·数量·设备编号教学用传感器实验仪 10(2)名称·规格·数量·耗材性质实验开发板,电阻箱,并口电缆,14芯扁平电缆连接线万用表实验二A/D转换实验1、实验目的:(1)了解A/D转换的工作原理。

智能仪器设计课程教学大纲

智能仪器设计课程教学大纲

《智能仪器设计》课程教学大纲Design of intelligent Instrument一、课程教学目标1、任务和地位:没有测量就没有鉴别,科学技术就不能前进。

要测量就必须有正确的测量方法和先进的仪器仪表。

随着微电子技术和计算机技术的迅速发展,特别是单片微机的出现和发展,使传统的电子测量仪器在原理、功能、精度及自动化水平等方面都不得发生了巨大变化,形成一种完全突破传统概念的新一代测试仪器——智能仪器。

现在很多厂商、研究所以及高等院校都在研制开发各种智能化测量控制仪表,广大的仪表设计、生产和使用人员都不得迫切希望了解和掌握单片机在测量控制仪表中的应用技术。

为了跟上时代的步伐,本课程是测控专业学生必不可少的一门技术基础课。

2、知识要求:要求必须具备电路、电子仪器与测量技术、汇编原理及单片机原理的学习知识,通过本课程的学习为以后学生出去工作打下基础。

3、能力要求:系统地阐述基于单片机的智能化测量控制仪表的基本原理与设计方法,智能化测量控制仪表的人机接口、过程通道接口、串行和并行通讯接口、硬件和软件抗干扰技术、数据处理技术、仪表硬件及软件的设计方法。

通过课程设计加强学生综合知识的应用能力和设计动手能力。

二、教学内容的基本要求和学时分配2、具体要求:第一章绪论[目的要求]让学生了解智能化测量控制仪表的功能特点、智能化测量控制仪表的设计方法[教学内容]学习智能化测量控制仪表的基本与发展、智能化测量控制仪表的功能特点、智能化测量控制仪表的设计方法[重点难点]智能化测量控制仪表的功能特点[教学方法]板书,以教、学相结合来进行讲解。

[作业]课后复习思考题[课时]0.5学时第二章智能化测量控制仪表中专用微处理机[目的要求]让学生掌握MCS-51系列单片机的结构、MCS-51单片机的指令系统[教学内容]介绍了MCS-51系列单片机的特点、 MCS-51系列单片机的结构、CHMOS型单片机的节电工作方式、MCS-51单片机的指令系统[重点难点]MCS-51系列单片机的结构、CHMOS型单片机的节电工作方式、MCS -51单片机的指令系统[教学方法]板书,以教、学相结合来进行讲解。

智能仪器课程设计报告

智能仪器课程设计报告

天津电子信息职业技术学院传感器技能实训课题名称智能温度测温系统姓名王先民学号20班级电信S10-1专业电子信息工程技术所在系电子技术系指导教师岑永祚完成日期2011年12月11日一、 主要内容温度传感器DS18B20采集环境模拟信号,其输出送入AT89C51,单片机在程序的控制下,将处理过的数据送到移位寄存器74LS164,经74LS164输出后驱动三位数码管显示。

当被测温度高于18℃时,单片机发出控制信号使降温电扇以自然风的形式旋转,温度越高转速越快,温度36℃以上时风扇全速工作,点亮此功能指示灯。

二、 基本要求(1)设计测量温度范围-55℃~+125℃的智能测温系统,要求数码管实时显示测量温度,单片机根据温度高低确定风扇转速 (2)画出程序框图(3)有完整的整机电路图(protel 绘制)(4)完成格式正确、内容完整的实验报告三、 参考文献王祁, 智能仪器设计基础.北京:机械工业出版社,2009目录一、前言 (4)二、系统组成 (4)1、设计思路 (5)2、系统的性能指标: (5)3、系统的主要功能: (5)三、电路组成及工作原理 (5)1、温度传感器功能模块 (6)2、AT89C51单片机 ........................................................................................................ 8 3、74LS164移位寄存器 .. (12)4、晶振电路 (12)5、复位电路 ................................................................................................................... 13 6、键盘电路 . (13)7、显示电路 (14)8、稳压电路 ................................................................................................................... 14 9、显示电路 . (15)10、风扇控制电路 (15)四、课程设计心得与体会 (16)五、参考文献 (16)六、整机电路图 (17)七.心得体会 (18)智能温度测量系统的设计一、前言温度是一种基本的环境参数,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量。

基于51单片机的光照强度检测报告要点

基于51单片机的光照强度检测报告要点

课程设计报告课程名称:智能仪器课程设计题目:基于51单片机的光照强度摘要光敏电阻测光强度系统,该系统可以自动检测光照强度的强弱并显示让人们知道此时光照强度的强弱。

人们可以通过看此装置的显示了解现在的光照状态,做合理的光照调节。

该设计可分为三部分:即光照检测部分、信号处理部分、光强显示部分。

还可加上照明部分。

对于光照检测部分可利用光敏电阻传感器作为检测元件,它可以完成从光强到电阻值的信号转换,再把电阻值转换为电信号就可以作为系统的输入信号。

对输入信号处理后,就可以用来显示了。

对于显示部分可利用数码管来显示,不同的光强对应于不同的数值,就能简单的显示出不同的光强了。

本设计就是由单片机STC89C52RC芯片,AD采集模块,运算放大,和1602液晶为核心,辅以必要的电路,构成了一个单片机光照强度检测系统。

该光照强度检测系统可以通过检测光照强度,使得光照在低于一定强度的时候让照明灯亮,是一种常用的测试仪器,它可以用在需要照明的各个地方,根据灯光的强弱,自动控制照明灯的开关,有力地节约了电力资源。

关键词:51单片机,,LM358,ADC0809,1602液晶,光敏电阻目录一、设计任务、要求 (3)1.1 设计任务: (3)1.2 设计要求: (3)二、方案总体设计 (4)2.1 方案一: (4)2.2 方案二: (4)2.3系统采用方案 (4)三、硬件设计 (6)3.1 单片机最小系统 (6)3.2 液晶显示模块 (6)3.3 系统电源 (7)3.4 整体电路 (8)四、软件设计 (10)4.1 keil软件介绍 (10)4.2程序流程图 (10)五、仿真与实现 (12)5.1 proteus软件介绍 (12)5.2 仿真过程 (12)5.3 实物制作与调试 (14)5.4 使用说明 (16)六、总结 (17)6.1设计总结: (17)6.2经验总结: (18)七、参考文献 (19)一、设计任务、要求1.1 设计任务:1).对更多小器件的了解2).巩固51单片机和C语言的知识,熟悉单片机和C语言的实际操作运用3).掌握仿真软件的运用和原理图的绘制4).掌握小信号的放大,滤波与采集5).熟悉调试方法和技巧,提高解决实际问题的能力6).熟悉设计报告的编写过程1.2 设计要求:1).三个按键控制照明灯的控制2).对小信号进行放大,滤波和采集3).1602液晶显示所测光照强度二、方案总体设计设计一个基于51单片机的光照强度检测系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2012-2013学年第一学期论文题目:单片机系统设计开发应用一智能仪器学院:计算机科学与信息工程专业:软件工程学号:姓名:高红斌日期:2013年12月 1日单片机系统设计开发应用—智能仪器一、设计要求及目的本实验通过一个单通道通用型智能仪器的软硬件系统设计,将这学期学过的单片机原理加以综合运用,以此掌握单片机应用系统的设计要领,本次试验设计的总体目标是一路电压信号输入和两路报警开关量输出控制功能,其中信号电压范围0—5VDC AD采样分辨率8bit ,数码管显示信息为:以为参数字符和三位十进制采样值,控制参数有两个,即下限报警值 L 和上线报警值H当采样值大于H时,高位报警继电器接通(用LED 状态灯D1亮表示);当采样值小于L时,下位报警继电器接通(用D2表示);当采样值介于L和H之间时,两路报警器功能均被解除(D1和D2均熄灭表示)实验环境元器件列表,*+JeP■ep里片机系统设计开发应用—智能仪器屮元器件満单*[74LSO41PRES PPOT-H屏MAXL241PLED-YELLO^*J CRYSTALPCAF-ELEEBUTTON-'AT89C51^ADC0809^AEC080&-'74LS245P74LS161IEC^74LS04^74HC59&^7SEG-WG-CC-BUJE^图表1四、实验原理本实验选用了一只六联共阴极数码管显示器,按照动态显示原理接线,其中段码通过锁存器74LS245驱动后接于P0 口,位码则有反相器74LS04驱动后接于。

A/D转换器采用逐次逼近方式的芯片ADC0809其并行数据输出端直接连接于 P2 口,4个控制端CLOCK,START,EO和,OE分别接于,采用查询法等待转换结束,转换时钟利用定时器中断产生。

四个面板按键通过8位微型计算机一台, proteus 软件,keilC编译器串行输入并行输出移位寄存器 74LS164与单片机接口,其移位时终端与单片机的TXD引脚相连,串行数据端(1和2脚)与单片机的RXD引脚相连,串口输出功能采用汇编语言与 C51语言混合编程实现。

软件系统采用一个有多个功能模块构成的程序,模块之间相互依赖,他们之间的关系如图,程序有主要的两个功能模块组成――控制模块和菜单模块。

这两个模块能够同时运行。

这里,“同时”的意思是指用户进行菜单操作的时候,程序还能采集数据并进行控制。

图表2软件系统结构组成“控制”和“菜单”这两个主要的模块都是建立在其他小模块的基础上的,比如控制模块建立在 A/D转换和LED显示的基础上,采单建立在按键检测和 LED显示的基础上,而按键检测又建立在串口输出的基础上。

下表列出了各个模块的主要函数。

图表3各个模块的主要函数和功能五、程序源代码// void ad」n it();void con trol_thread();void menu _thread();void mai n()ad_init();while (1){menu_thread();control_thread();}}//#define MENU_ON 0#define MENU_OFF 1#define MENU_NUM 2#define MENU_MAX 999#define MENU_MIN 0unsigned char param_value[] = {100, 150};char _menu_name[] = {'L','H'}; // 参数名的符号unsigned char menu_status = MENU_OFF;unsigned char _menu_value[] = {0,0}; // 供显示用的参数数组unsigned char _menu_idx = 0; // 参数序号char get_key();void print(char name, unsigned int value);void menu_thread(void){char i = 0;char key = get_key();if (menu_status == MENU_OFF){// 当前菜单为关闭状态时 if (key == 0)// 若按键 0 已被按下menu_status = MENU_ON; // 置当前菜单为打开状态_menu_idx = 0; // 设置参数序号 0// 将所有参数当前值取出,送入供显示的参数数组中for (i = 0 ; i < MENU_NUM ; i++){_menu_value[i] = param_value[i];}}} else{// 如果当前菜单为打开状态,则进行以下操作:if (key == 0){// 若按键 0 按下,则不保存键值,仅切换到下一个参数if (++_menu_idx == MENU_NUM){ // 判断是否所有参数都循环到了menu_status = MENU_OFF; // 若已循环完成,设置菜单关闭状态}} else if (key == 1){// 若按键 1 按下,则保存键值,并切换到下一个参数param_value[_menu_idx] = _menu_value[_menu_idx];if (++_menu_idx == MENU_NUM) {menu_status = MENU_OFF;}} else if (key == 2) {// 若按键 2 按下,则参数值加 10_menu_value[_menu_idx] += 10;if (_menu_value[_menu_idx] > MENU_MAX) {menu_value[_menu_idx] = MENU_MAX;} else if (key == 3) {// 若按键 3 按下,则参数值减 10 _menu_value[_menu_idx] -=10;if (_menu_value[_menu_idx] < MENU_MIN){ _menu_value[_menu_idx] = MENU_MIN;}}}if (menu_status == MENU_ON) {// 菜单状态为开时 , 显示参数值 print(_menu_name[_menu_idx],_menu_value[_menu_idx]);}}// #include <> sbit P32 = P3八2;sbit P33 = P3A3;sbit P34 = P3A4;sbit P35 = P3A5;sbit P37 = P3A7; unsigned char ad() { P33 = 0;P33 = 1;P33 = 0;while(!P34);P35 = 1;return P2;}void ad_init() {TMOD = 0x02;TH0 = 0;TL0 = 0;ET0 = 1;TR0 = 1;EA = 1;}void _ad_clock(void) interrupt 1 {P32 = ~P32;}//#include<>sbit P16=P1A6;sbit P17二PM7;unsigned char ad();void print(char name, unsigned int value); extern unsigned char param_value[2]; extern char menu_status;void control_thread() {//第1步:A/D转换unsigned char value = ad();//第2步:根据采样值控制LED灯if (value > param_value[1]) {P16 = 0;P17 = 1;} else if (value <= param_value[1] && value param_value[0]) {>= P16 = 0;P17 = 0;} else {P16 = 1;P17 = 0;// 第 3步: 如果菜单是关闭的,显示采集到的数值if (menu_status == 1) {print(' ', value);}}//#include <>#define CHECK_KEY_DOWN 0 段标志#define CHECK_KEY_UP 1段标志#define KEY_UP 0#define KEY_DOWN 1sbit _p33 = P3八3;sbit _p34 = P3A4;sbit _p35 = P3A5;sbit _p36 = P3八6;// 处在检测按键压下阶// 处在检测按键抬起阶// 按键抬起标志// 按键压下标志char _key_status = CHECK_KEY_DOWN; // 按键检测状态(初值为检测压下阶段)char _key_idx = 0; // 按键序号void serial(char byte);char _check_key(unsigned char _key_idx) { // 检查按键状态serial(~(0x01<<_key_idx)); // 将待查按键键码转换成扫描码后输出if (_p36 == 0) { //根据P36状态决定返回值return KEY_DOWN;} else {return KEY_UP;}} char get_key(void) {char result = -1; // 无键按下时键值为 -1if (_key_status == CHECK_KEY_DOWN) { // 如果当前处于检查压下阶段,进行以下操作if (_check_key(_key_idx) == KEY_DOWN) { // 判断当前扫描键的状态,若为压下标志则_key_status = CHECK_KEY_UP; // 将检查阶段标志设置为抬起} else { // 否则,将检查阶段标志设置为压下if (++_key_idx == 4) { // 判断是否 4 个按键已经轮流扫描一遍_key_idx = 0; // 是,则将待扫描按键号设为 0 }}} else if (_key_status == CHECK_KEY_UP) { // 如果当前处于检查抬起阶段,进行以下操作if (_check_key(_key_idx) == KEY_UP) { // 判断当前扫描键的状态,若为抬起标志则result = _key_idx; // 键值输出_key_status = CHECK_KEY_DOWN; //按键检查阶段标志改为压下if (++_key_idx == 4) { // 判断是否 4 个按键已经轮流扫描一遍_key_idx = 0; // 是,则将待扫描按键号设为 0 }}}return result;}// #include<>char codemap1[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};char code map2[]={0x00,0x76,0x38};char _convert(char c){ if(c==' ')return map2[0];else if(c=='H')return map2[1];else if(c=='L')return map2[2];else if(c>='0'&&c<='9')return map1[c-'0'];return 0;}void _delay(){int i=0,j=0;for(i=0;i<10;i++){ for(j=0;j<10;j++){}}void print(char name, unsigned int value) { char buf[6];char i = 5;for (i = 5 ; i > 1 ; i--) {buf[i] = '0' + value % 10;value /= 10;if (value == 0) {break;}}i--;for ( ; i >= 1 ; i--) {buf[i] =}buf[0] = name;for (i = 0 ;i < 6 ;i++) {P1 &= 0xC0;P1 |= (1 << i);P0 = _convert(buf[i]);delay();}}//PUBLIC _SERIALDE SEGMENT CODERSEG DESERIAL:1MOVscoz #0MOVSBURR7JNBT「SCLRT-RETENDF「 = 丿 逵乍・S H 6W ・aALlADd hJ cb密I I T L fl H s t d筑和耳审丘耳2世$kM 3F Jnig&VHairvc--ATEi- a Fr 'E i rl^?Brevet呢^也F l lb i I O E1-*'s n 审l£n丹% ydp■ -LJ1IX A c Q [ff s d 及一啊情*辭苗挪K字空誉 '宦血曲a ¥瞥莎已3 i e E ^3l 堆k T ・llef「»a^4&weiMUIT U?T ・^・ J|[Im 诃宦©d E-p1-凶专芸T u p bs莎33 E個-阿L h-DITW-J1-E C口斗u h--E 諾g 5r h■a -l^k^bcdnd.c,1r書F hT ・ErnainxQJPUI WirdlJrt ttll l l i l业-ta&el:・-|431说专1・ D m ee 口b 1 l口也 ⑷IARTUP-A51 ・: 乳c M P M J a l i E n Q n pi l i H g n o s n p -l」i s qn l3:Tlp.l1l b g lQ 营p H l K-ug nolmpiliTig m ILJJ 卓■ I b二s1 1口一 ■p h ag b'B J l m -l K q Brdnto-=2.E ・!3Md 口一.CLhun口d nz i a:业 UnlreAtiRIg he-N File 「com=9H a 0d ・・- r Q M H sg Mg 】用 蛊 m lg ba @・一莎史 n 05J .-s - * 」『F T-” 】fL L E -n ■:-n - i B contlTD l-h --- k ^y tr d q r d- c-・-IMlmn ・:「山 ETiw1・ 05g h l<a IL刃鱼耳5一IE 1\E;2m =l e E}r y丁耳:町T dLT$呂艮i I L i -rt-10voidaQritrl I l l i一tua u t o ・ 「voidB d L i a.T crlll 014图表 4程序通过编译,并且没有错误系统运行效果如图所示,参数设置状态效果如图所示。

相关文档
最新文档