




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教学方案项目三独立式键盘操作(IO输入)学时:12教学目标应知1.P0、P1、P2和P3功能及应用技能;2.内部数据存储器的地址分配及特殊功能寄存器;3.C语言数据类型、常量和变量;4.键盘的接口方法和编程方法;5.中断的基本概念和功能;6.单片机中断系统的结构和控制方式;7.中断系统的中断处理过程。应会1.能完成单片机最小系统和输出电路设计;2.能应用C语言程序完成单片机输入输出控制,实现对LED控制的设计、运行及调试。工作任务任务一键盘设计与实现学时:6任务二转向灯控制的实现学时:6教学重点键盘的防抖动措施;键盘的接口方法和编程方法;单片机中断系统的结构和控制方式;中断有关的4个特殊功能寄存器;C语言中断服务函数;矩阵式键盘设计与实现教学难点键盘的接口方法和编程方法;单片机中断系统的结构和控制方式;矩阵式键盘设计与实现。教学方法本项目通过任务教学法实施教学,教学过程中体现以学生为主体,教师进行讲解、演示、引导与评估。任务一是课程导入性学习,引导学生掌握键盘的接口方法和编程方法。使用AT89S52单片机,设计一个具有8个按键的独立式键盘,每个按键对应一个发光二极管。功能要求:无键按下时,键盘输出全为“1”,发光二极管全部熄灭;有键按下时,其所对应发光二极管点亮。任务二使用AT89S52单片机,模拟控制汽车转向灯。任务的完成使用Proteus软件建立仿真电路,Keil软件建立项C51目软件工程产生单片机执行代码,Proteus软件和Keil软件联动调试实现项目要求,帮助理解技术要点。利用课程网站及其他学习资源,引导学生自主学习。教师应提前准备好各种媒体学习资料、Proteus软件和Keil软件安装、仿真电路、程序代码,实现联动调试完整,做好单元教学活动设计。任务一键盘设计与实现学时:6内容要点教学方式工具与媒体评价考核时间学情分析能完成单片机最小系统和输出电路设计;说课课程介绍教师讲授PPT15min任务布置设计一个具有8个按键的独立式键盘教师讲授e-learning软件10min任务分析实施方案讲解综合分析项目功能要求,确定实施方案:单片机仿真电路+程序设计讲授PPT20min电路设计仿真电路建立教师讲授学生操作Proteus软件计算机40min键盘结构键盘的接口方法和编程方法教师讲授PPT40min软件设计使用keil软件建立项目工程。软件项目工程设计、关联电路仿真教师讲授学生操作Keil软件计算机Proteus软件80minC51语言数据类型、常量和变量;C51语言数据类型、常量和变量;教师讲授PPT40min提出问题解决问题功能要求:无键按下时,键盘输出全为“1”,发光二极管全部熄灭;有键按下时,其所对应发光二极管点亮。教师演示程序修改学生操作Proteus软件Keil软件40min操作与评价学生扮演不同角色进行分组操作,记录仿真结果,填写原始记录单。教师讲授学生操作Proteus软件Keil软件原始记录单操作评价原始记录单评价30min课后安排完成习题集任务一内容。任务二转向灯控制的实现学时:6内容要点教学方式工具与媒体评价考核时间学情分析能完成单片机最小系统和输出电路设计;任务布置通过课程网站布置任务,要求学生按学习指南做好自学。网络交流课程网站课余自学1.内部数据存储器的地址分配及特殊功能寄存器;2.C语言数据类型、常量和变量;自学互联网课程网站课余调查分析汽车转向灯的功能、电路组成和控制方法网络查询互联网课程网站15min任务分析实施方案讲解综合分析项目功能要求,确定实施方案:单片机仿真电路+程序设计讲授PPT10min电路设计仿真电路建立教师讲授学生操作Proteus软件计算机35min软件设计使用keil软件建立项目工程。软件项目工程设计、关联电路仿真教师讲授学生操作Keil软件计算机Proteus软件30min提出问题解决问题问题1:如何判断是否有键按下?问题2:按键是如何识别的?教师演示程序修改学生操作Proteus软件Keil软件20min操作与评价学生扮演不同角色进行分组操作,记录仿真结果,填写原始记录单。教师讲授学生操作Proteus软件Keil软件原始记录单操作评价原始记录单评价15min课后安排完成习题集任务二内容。教学后记项目三独立式键盘操作(I/O输入)【学习目标】一.知识目标 1.P0、P1、P2和P3功能及应用技能;2.内部数据存储器的地址分配及特殊功能寄存器;3.C语言数据类型、常量和变量;4.键盘的接口方法和编程方法;5.中断的基本概念和功能;6.单片机中断系统的结构和控制方式;7.中断系统的中断处理过程。二.技能目标 1.能完成单片机最小系统和输出电路设计;2.能应用C语言程序完成单片机输入输出控制,实现对LED控制的设计、运行及调试。三.态度目标1.培养良好的交流沟通能力2.培养严谨的工作态度和坚韧不拔的性格3.培养自主、开放的学习能力4.培养团队协作意识工作任务一键盘设计与实现【工作任务描述】使用AT89S52单片机,设计一个具有8个按键的独立式键盘,每个按键对应一个发光二极管。功能要求:无键按下时,键盘输出全为“1”,发光二极管全部熄灭;有键按下时,其所对应发光二极管点亮。【工作过程】一.组织教学情境导入、咨讯引导学生掌握键盘的接口方法和编程方法。1.认识键盘键盘是单片机应用系统中人机交流不可缺少的输入设备。键盘由一组规则排列的按键组成,一个按键实际上是一个开关元件。键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换为电气上的逻辑关系(1和0)。常见的种类有:查询(独立)式键盘、矩阵式键盘。2.键盘分类按键按照结构原理可分为两类触点式开关按键,如机械式开关、导电橡胶式开关等;无触点开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。按键按照接口原理可分为两类按键按照接口原理可分为两类编码键盘,主要是用硬件来实现对按键的识别,硬件结构复杂;非编码键盘,主要是由软件来实现按键的定义与识别,硬件结构简单,软件编程量大。这里我们主要介绍单片机中常用的触点式开关按键、非编码键盘。3.独立式键盘电路独立式键盘电路设计时,每个按键的一端与P0口的一个引脚相连,另一端接地。无键按下时,P0的8个I/O口均通过电阻接高电平,信息为“1”,键盘输出全为“1”发光二极管全部熄灭。有键按下,将使对应的I/O口通过该键接地,信息为“0”,对应发光二极管点亮。CPU可以通过检测P0的8个I/O口线哪个是“0”就可以识别是否有键按下,并能识别出是哪一个键按下。二.决策和计划公布项目信息使用AT89S52单片机,设计一个具有8个按键的独立式键盘,每个按键对应一个发光二极管。功能要求:无键按下时,键盘输出全为“1”,发光二极管全部熄灭;有键按下时,其所对应发光二极管点亮。要求学生理解项目信息并制订项目计划。三.实施实时干预,适时指导。硬件制作,软件调试,分步检测,完成作品。(一)用PROTEUS设计键盘控制电路新建设计文件、保存设计文件、选取元器件、放置元器件、编辑元器件、放置终端、连线、属性设置、电气规则检测(二)编写程序用KEILC51编写键盘控制程序1.建立C程序项目2.建立工程文件3.建立源文件4.加载源文件5.设置工程的配置参数6.进行编译和连接7.进入调试模式8.全速运行程序9.用PROTEUS仿真运行调试10.加载“键盘控制.hex”目标代码文件11.打开Proteus“键盘控制”电路。12.双击单片机“AT89S52”,在弹出的“编辑元件”对话框中单击“ProgramFile”栏的打开按钮,在弹出的“选择文件名”对话框找到前面编译生成的“点亮一个键盘控制.hex”HEX文件,单击“打开“按钮,完成“键盘控制.hex”HEX文件加载。13.将“ClockFrequency”栏中的频率设为12MHz,单击“确定”,即可完成加载目标代码文件。14.仿真运行调试15.单击仿真工具栏“运行”按钮,单片机全速运行程序。键盘控制程序#include<AT89X52.H>//包含AT89X52.H头文件voiddelay10ms(void)//10ms延时子程序{unsignedchari,j;for(i=20;i>0;i--)for(j=248;j>0;j--);}voidmain()//主函数{unsignedcharx;P0=0xff;//P0口作为输出口,置全1x=0;while(1){while(x==0)//循环判断是否有键按下{x=P0;//读键盘状态x=~x;//键盘状态取反}delay10ms();//延时10ms去抖动x=P0;//再次读键盘状态x=~x;//键盘状态取反if(x==0)continue;//如果无键按下则认为是按键抖动,重新扫描键盘switch(x)//根据键值点亮对应的发光二极管{case0x01:P1=0xfe;break;//点亮第一个发光二极管case0x02:P1=0xfd;break;//点亮第二个发光二极管case0x04:P1=0xfb;break;//点亮第三个发光二极管case0x08:P1=0xf7;break;//点亮第四个发光二极管case0x10:P1=0xef;break;//点亮第五个发光二极管case0x20:P1=0xdf;break;//点亮第六个发光二极管case0x40:P1=0xbf;break;//点亮第七个发光二极管case0x80:P1=0x7f;break;//点亮第八个发光二极管default:break;}}}四.检查提出问题,反馈信息,调整落实。视情况修正计划,交流汇报,分享经验问题:如何采取软件防抖?软件上采取的措施是在检测到有按键按下时,执行一个10ms左右(具体时间应视所使用的按键进行调整)的延时程序,再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键处于闭合状态,从而消除抖动的影响。在检测到有按键按下时执行一个10ms左右(具体时间应视所使用的按键进行调整)的延时程序后;再确认该键电平是否仍保持闭合状态电平,若仍保持闭合状态电平,则确认该键是处于闭合状态。五.评估项目总结,教师评价和小组互评。填写工作过程评价表(教师评价和学生互评)键盘设计应注意的问题1.机械式按键在按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来。2.防抖动措施为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑。键数较少时,采用硬件去抖;键数较多时,采用软件去抖。工作任务二转向灯控制的实现【工作任务描述】使用AT89S52单片机,模拟控制汽车转向灯。【工作过程】一.组织教学情境导入、咨讯引导学生了解汽车转向灯的功能、电路组成和控制方法;1.汽车转向灯定义汽车转向灯,顾名思义就是在车辆转弯时,起到警示车前或车后的行人或车辆的作用。2.汽车转向灯原理(1)灯管采用氙气灯管,单片机控制电路,左右轮换频闪不间断工作。(2)采用闪光器:按其结构不同,可分为阻丝式、电容式和电子式三种。其中阻丝式又可分为热丝式(电热式)和翼片式(弹跳式),而电子式又可分混合式(带触点式的继电器与电子元件)和全电子式(无继电器)。比如弹跳式闪光器,利用电流热效应原理,以热胀冷缩为动力,使弹簧片产生突变动作,来接通和断开触点,实现灯光闪烁。3.汽车转向灯分类按使用材料分,分为:1、气体汽车转向灯;2、LED汽车转向灯。按底座来分,分为:1、P21W;2、PY21W;3、W21W;4、P27W;5、W5W;6、H5W。按位置分,分为:1、前转向灯;2、后转向灯;3、侧转向灯。气体汽车转向灯气体汽车转向灯,即使用的是气体,如卤素。气体汽车转向灯,技术成熟,价格低,但会产生辐射,里面含有汞,外壳是玻璃做成的,容易破碎,导致污染环境。LED汽车转向灯\o"查看图片"
大功率LED汽车转向灯LED汽车转向灯,即使用的材料是LED。由LED做成的汽车转向灯,无辐射,无污染,使用寿命长,理论达到5万小时,也就是说,在汽车报废期间不用换灯泡了。但是,LED汽车转向灯的价格较贵,所以,对它的普及使用形成了一定影响。在发达国家,已经在大量使用LED汽车转向灯了,在国内,还比较少。4.按底座分类说明P21WP21W,功率是21W,灯泡直径是26.5mm,总长是52.5mm,也可称为BA15S或1156。做成的灯泡可称为球形灯泡。常见使用车型如雨燕、标致206等。可用作前转向灯或后转向灯,但多用于后转向灯。PY21WPY21W,功率是21W,灯泡直径是26.5mm,总长是52.5mm,也可称为BAU15S,形状与P21W相像,只是两个触角成150度,而P21W是180度。常见使用车型如比亚迪F3、奔驰S系。可用作前转向灯或后转向灯,但多用于前转向灯。W21WW21W,功率是21W,灯泡直径是T20-T25,也可称为7440。常见使用车型如吉普-欧兰德。可用作前转向灯或后转向灯,多用于日系车型。P27WP27W,功率是27W,灯泡直径是T20-T25,也可称为3156。可用作前转向灯或后转向灯。W5WW5W,功率是5W,灯泡直径是10.29mm,总长是26.8mm,灯头表示为W2.1×9.5d。W5W可称为直插或扁插,做成的灯泡可称为楔形灯泡。用作侧转向灯,常见车型如比亚迪F3、雨燕等。H5WH5W,功率是5W,灯泡直径是9.0mm,总长是33.0mm,灯头表示为BA9s。做成的灯泡可称为球形灯泡。用作侧转向灯。4.按位置分类说明前转向灯前转向灯,安装在汽车大灯旁边,用于在转弯时,警示前方车辆。后转向灯后转向灯,安装在汽车尾部,用于在转弯时,警示后方车辆。侧转向灯侧转向灯,安装在第1驾驶室的车门旁或安装在后视镜上,用于在转弯时,警示旁边车辆。二.决策和计划公布项目信息使用AT89S52单片机,模拟控制汽车转向灯。要求学生理解项目信息并制订项目计划。三.实施实时干预,适时指导。硬件制作,软件调试,分步检测,完成作品。(一)用PROTEUS设计汽车转向灯控制电路。工作流程:新建设计文件、保存设计文件、选取元器件、放置元器件、编辑元器件、放置终端、连线、属性设置、电气规则检测(二)编写程序用KEILC51编写汽车转向灯控制程序1.建立C程序项目2.建立工程文件3.建立源文件4.加载源文件5.设置工程的配置参数6.进行编译和连接7.进入调试模式8.全速运行程序9.用PROTEUS仿真运行调试10.加载“汽车转向灯控制.hex”目标代码文件11.打开Proteus“L汽车转向灯控制”电路。12.双击单片机“AT89S52”,在弹出的“编辑元件”对话框中单击“ProgramFile”栏的打开按钮,在弹出的“选择文件名”对话框找到前面编译生成的“汽车转向灯控制.hex”HEX文件,单击“打开“按钮,完成“汽车转向灯控制.hex”HEX文件加载。13.将“ClockFrequency”栏中的频率设为12MHz,单击“确定”,即可完成加载目标代码文件。14.仿真运行调试15.单击仿真工具栏“运行”按钮,单片机全速运行程序。汽车转向灯控制程序#include<AT89X52.H>//包含AT89X52.H头文件/*定义0~9,A~F十六个字符的字型码表*/unsignedchartable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};/*10ms延时程序*/voiddelay10ms(void){unsignedchari,j;for(i=20;i>0;i--)for(j=248;j>0;j--);}unsignedcharscan_key(void)//键盘扫描子程序{unsignedcharn,scan,col,rol,tmp;bitflag=0;//设有键按下标志位scan=0xef;P0=0x0f;//P0口低四位做输入口,先输出全1for(n=0;n<4;n++)//循环扫描4列,从0列开始{P0=scan;//逐列送出低电平tmp=~P0;//读行值,并取反tmp=tmp&0x0f;col=n;//保存列号到colflag=1;/*判断哪一行有键按下,并保存行号到rol*/ if(tmp==0x01){rol=0;break;}//第0行有键按下elseif(tmp==0x02){rol=1;break;}//第1行有键按下elseif(tmp==0x04){rol=2;break;}//第2行有键按下elseif(tmp==0x08){rol=3;break;}//第3行有键按下elseflag=0;scan=(scan<<1)+1;}if(flag==0)return-1;elsereturn(rol*4+col);}voidmain(){chark=0;unsignedchartmp,key;P1=0x00;P0=0x0f;//P0口低四位做输入口,先输出全1tmp=P0;while(1){while(tmp==0x0f)//循环判断是否有键按下{P0=0x0f;//所有列输出低电平tmp=P0;//读行信号}delay10ms();//延时10ms去抖P0=0x0f;//所有列输出低电平tmp=P0;//再次读键盘状态if(tmp==0x0f)continue;//如果无键按下则认为是按键抖动,重新扫描键盘key=scan_key();//有键按下,调用键盘扫描程序,并把键值送keywhile(k!=-1)//判断闭合键是否释放,直到其释放{delay10ms();k=scan_key();}P1=table[key];//查表或字型编码送P1口,数码管显示闭合按键的编码}}四.检查提出问题,反馈信息,调整落实。视情况修正计划,交流汇报,分享经验。问题1:如何判断是否有键按下?向所有的列输出口线输出低电平(不能为高电平,因为若为高电平,按键按下与否都不会引起行线电平的变化),然后将行线的电平状态读入。若无键按下,所有的行线仍保持高电平状态;若有键按下,行线中至少应有一条线为低电平。问题2:按键是如何识别的?往列线上按顺序一列一列的送出低电平。先送第0列为低电平,其他列为高电平,读入的行的电平状态就表明了第0列的4个键的情况,若读入的行值全为高电平,则表示无键按下;再送第1列为低电平,其他列为高电平,读入的行的电平状态则显示了该行上的4个按键的情况;依次轮流给各列送出低电平,直至4列全部送完,再从第0列开始,依此循环。采用键盘扫描,我们再来观察第2行与第2列交叉点的键按下时的判断过程,当第2列送出低电平时,读第2行为低电平,而其他列送出低电平时,读第2行却为高电平,由此即可断定按下的键应是第2行与第2列交叉点的键。五.评估项目总结,教师评价和小组互评。填写工作过程评价表(教师评价和学生互评)单片机系统中,若使用按键较多时,通常采用矩阵式键盘,其结构如下图所示。由图可知,一个4×4的行、列结构,可以构成一个含有16个按键的键盘,节省了很多I/O口。控制方式:先判断是否有键按下。如有,再判断哪一键按下,并得到键码值,然后根据键码值转向不同的功能程序。最常用的识别方法是键盘扫描法。教学方案项目四超声波倒车雷达测距学时:12教学目标应知超声波传感器工作步骤应会能利用AT89S52单片机及超声波传感器等器件,通过C51语言程序实现超声波倒车雷达的制作。工作任务任务一0-9秒数码管显示4学时任务二0-59秒数码管显示4学时任务三超声波倒车雷达测距4学时教学重点引导学生认识超声波倒车雷达,对单片机结构及所有引脚功能的理解,C51语言的理解与应用,使用Proteus软件建立仿真电路,Keil软件建立项C51目软件工程产生单片机执行代码,Proteus软件和Keil软件联动调试实现项目要求,帮助理解技术要点。教学难点单片机仿真电路建立和C51目软件工程建立。Proteus软件和Keil软件联动调试。教学方法本项目通过任务教学法实施教学,教学过程中体现以学生为主体,教师进行讲解、演示、引导与评估。任务一是能利用AT89S52单片机及超声波传感器等器件,通过C51语言程序实现超声波倒车雷达的制作。任务的完成使用Proteus软件建立仿真电路,Keil软件建立项C51目软件工程产生单片机执行代码,Proteus软件和Keil软件联动调试实现项目要求,帮助理解技术要点。利用课程网站及其他学习资源,引导学生自主学习。教师应提前准备好各种媒体学习资料、Proteus软件和Keil软件安装、仿真电路、程序代码,实现联动调试完整,做好单元教学活动设计。项目四超声波倒车雷达测距学时:12内容要点教学方式工具与媒体评价考核时间学情分析已经掌握单片机最小系统、C51程序设计入门说课课程介绍教师讲授PPT15min任务布置实现超声波倒车雷达的制作。教师讲授e-learning软件5min任务分析实施方案讲解综合分析项目功能要求,确定实施方案:单片机仿真电路+程序设计讲授PPT10min电路设计仿真电路建立教师讲授学生操作Proteus软件计算机35min单片机结构单片机硬件结构教师讲授PPT40min引脚功能单片机引脚功能教师讲授PPT30min软件设计使用keil软件建立项目工程。软件项目工程设计、关联电路仿真教师讲授学生操作Keil软件计算机Proteus软件30minC51程序构成由一个或多个函数构成的,最简单的程序只有一个main函数教师讲授PPT30minC51基本语句表达式语句、函数调用语句、控制语句、复合语句、空语句教师讲授PPT40min提出问题解决问题要求了解超声波测距的原理教师演示程序修改学生操作Proteus软件Keil软件30min操作与评价学生扮演不同角色进行分组操作,记录仿真结果,填写原始记录单。教师讲授学生操作Proteus软件Keil软件原始记录单操作评价原始记录单评价15min课后安排完成习题集任务内容。教学后记项目四超声波倒车雷达测距【学习目标】一.知识目标超声波传感器工作步骤二.技能目标 能利用AT89S52单片机及超声波传感器等器件,通过C51语言程序实现超声波倒车雷达的制作。三.态度目标1.培养良好的交流沟通能力2.培养严谨的工作态度和坚韧不拔的性格3.培养自主、开放的学习能力4.培养团队协作意识工作任务一超声波倒车雷达的制作【工作任务描述】能利用AT89S52单片机及超声波传感器等器件,通过C51语言程序实现超声波倒车雷达的制作。【工作过程】一.组织教学情境导入、咨讯引导学生认识超声波倒车雷达。随着我国汽车产业的高速发展,尤其是近两三年我国开始进入私家车时代,汽车电子产业成了新的增长点,汽车电子产品的高利润和市场广阔性倍受商家关注,音响和防盗器就是明证,近两年来,倒车雷达成了商家的电子新爱,众多生产防盗器的厂家纷纷涉足倒车雷达。倒车雷达全称叫“倒车防撞雷达”,也叫“泊车辅助装置”,是汽车泊车安全辅助装置,能以声音或者更为直观的显示告知驾驶员周围障碍物的情况,解除了驾驶员泊车和启动车俩时前后左右探视所引起的困扰,并帮助驾驶员扫除视野的死角和视线模糊的缺陷。基于单片机的超声波倒车测距系统,是利用单片机编程产生频率为40kHz的方波,经过发射驱动电路放大,使超声波传感器发射端震荡,发射超声波。超声波波经反射物反射回来后,由传感器接收端接收,再经接收电路放大、整形,控制单片机中断口。其系统框图如图所示。基于单片机的超声波测距系统框图这种以单片机为核心的超声波测距系统通过单片机记录超声波发射的时间和收到反射波的时间。当收到超声波的反射波时,接收电路输出端产生一个负跳变,在单片机的外部中断源输入口产生一个中断请求信号,单片机响应外部中断请求,执行外部中断服务子程序,读取时间差,计算距离,结果输出给LED显示。利用单片机准确计时,测距精度高,而且单片机控制方便,计算简单。许多超声波倒车测距系统都采用这种设计方法。二.决策和计划公布项目信息。要求学生制定实施计划。能利用AT89S52单片机及超声波传感器等器件,通过C51语言程序实现超声波倒车雷达的制作。要求利用单片机控制超声波的发射和对超声波自发射至接收往返时间的计时。系统定时发射超声波,在启动发射电路的同时启动单片机内部的定时器,利用定时器的计数功能记录超声波发射的时间和收到反射波的时间。当收到超声波的反射波时,接收电路输出端产生一个负跳变,单片机检测到这个负跳变信号后,停止内部计时器记时,读取时间,计算距离,测量结果输出给LED显示。利用本测距系统测量范围应在40cm~699cm,其误差1cm。三.实施实时干预,适时指导。硬件制作,软件调试,分步检测,完成作品。(一)用软件设计超声波倒车测距电路。工作流程:新建设计文件、保存设计文件、选取元器件、放置元器件、编辑元器件、放置终端、连线、属性设置、电气规则检测(二)编写程序用KEILC51编写超声波倒车测距程序1.建立C程序项目2.建立工程文件3.建立源文件4.加载源文件5.设置工程的配置参数6.进行编译和连接7.进入调试模式8.全速运行程序超声波倒车测距程序程序#include<REGX51.H>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint#definek1P3_7 //k1功能键#definek2P3_6 //k2数值调整键#definebjhP3_1 //定值输出#definesxP0_2//报警值输出(声音)#definecsboutP2_7 //超声波发送#definecsbintP3_5 //超声波接收ucharec,cls;cs;xl,mq,xm0,xm1,xm2,sec20,sec,sec1,buffer[3],BitCounter,temp,Number[8]={1,2,3,4,5,6,7,8};uchartemp1,convert[10]={0x81,0xED,0xA2,0xA8,0xCC,0x98,0x90,0xAD,0x80,0x88};//0~9段码uintzzz,dz,zzbl,i,jsz,yzsj,kk,s,ss;staticucharbdatake,kw; //可位寻址的状态寄存器floatcsbc,wdz;sbitLED1=P3^4; //数码管位驱动sbitLED2=P3^2; //数码管位驱动sbitLED3=P3^3; //数码管位驱动sbitk11=ke^0;sbitk12=ke^1;sbitk22=ke^2;sbitk21=ke^3;sbitb=ke^4;sbitc=ke^5;sbitd=ke^6;sbite=ke^7;sbitw=kw^0;sbitzj1=kw^1;sbitzj2=kw^2;voiddelay(i); //延时函数voidscanLED(); //显示函数voidtimeToBuffer(); //显示转换函数voidtime();voidjpcl();voidjy();voidwdzh();voidbgcl();voidjpzcx();voidmqjs();voidcsbfs();voidcsbsc();voidclcs();voidoffmsd();voidmain(){ EA=1; //开中断 TMOD=0x11; //设定时器0为计数,设定时器1定时 ET0=1; //定时器0中断允许 TH0=0xD8; TL0=0xF0; //设定时值为20000us(20ms) TR0=1; csbout=1; d=0; TR1=0;temp1=15; zzz=699; mq=40;dz=100; cls=5; xl=temp1;csbsc(); mqjs();//盲区设定 k12=1; k1=1; k2=1; k22=1; bjh=1; d=1; sx=0; clcs();//测量次数 while(1) { if(ec==1) { ec=0; wdzh();//调用超声波测量 } bgcl();//调用报警处理程序 timeToBuffer(); //调用转换段码功能模块 offmsd();//调用显示转换程序 scanLED(); //调用显示函数 if(jsz<dz) //判断是否达到报警值 { if(e==1){ sx=1;//发出声响 } elsesx=0; } else{sx=0;} jpcl();//调用按键处理程序 }}voiddelay(i) //延时子程序 {while(--i);}voidscanLED() //显示功能模块{ P2=buffer[2]; LED1=0; delay(1); LED1=1; delay(50); P2=buffer[1]; LED2=0; delay(1); LED2=1; delay(50); P2=buffer[0]; LED3=0; delay(1); LED3=1; delay(50);}voidtimeToBuffer() //转换段码功能模块{ if(jsz>zzz) { buffer[0]=0x93; buffer[1]=0x93; buffer[2]=0x93; } elseif(jsz<mq) { buffer[0]=0xFE; buffer[1]=0xFE; buffer[2]=0xFE; } else { xm0=jsz/100; xm1=(jsz-xm0*100)/10; xm2=jsz-xm0*100-xm1*10; buffer[0]=convert[xm2]; buffer[1]=convert[xm1]; buffer[2]=convert[xm0]; if(buffer[2]==0x81) { buffer[2]=0xFF; } }}voidKeyAndDis_Time0(void)interrupt1using1 //定时器0中断外理,键扫描和显示{ TR0=0; TH0=0xD8; TL0=0xF0; TR0=1; time();}voidtime() //计时处理模块{ sec20++; if(sec20>=cs) //50*10ms=0.5s { sec20=0; ec++; e=~e;if(ec>3){ec=0;} } sec1++; if(sec1>100) { sec1=0;sec++; //秒计时if(sec>=3) { sec=0; } }}voidjpcl()//按键处理程序{ k11=k1; if(!k12&&k11){ b=1; } k12=k11; k11=k1; k21=k2; if(b==1) { sx=0; while(b) { buffer[0]=0x84; buffer[1]=0x84; buffer[2]=0x84; sec=0; c=0; while(!c) { if(sec>=2) c=1; scanLED(); } c=0; zzbl=jsz; jsz=dz; timeToBuffer(); jpzcx(); dz=kk;if(dz>699)dz=200; if(dz<35) dz=35; mq=ss; jsz=zzbl; buffer[1]=convert[xm2]; } }}voidjpzcx()//按键子程序{ while(!c) { k11=k1; scanLED(); if(!k12&&k11) c=1; k12=k11; } c=0; while(!c) { k11=k1; k21=k2; if(!k22&k21) {xm0++; if(xm0>6) xm0=0; } if(e==1) buffer[2]=0xFF; elsebuffer[2]=convert[xm0]; scanLED(); if(!k12&&k11) c=1; k22=k21; k12=k11; } buffer[2]=convert[xm0]; c=0; while(!c) { k11=k1; k21=k2; if(!k22&k21) { xm1++; if(xm1>9) xm1=0; } if(e==1) buffer[1]=0xFF; elsebuffer[1]=convert[xm1]; scanLED(); if(!k12&&k11) c=1; k22=k21; k12=k11; } buffer[1]=convert[xm1]; c=0; while(!c) { k11=k1; k21=k2; if(!k22&k21)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海品质营销咨询合同标准文本
- 关联方合同样本
- 保障性公寓出租合同标准文本
- 仓储补充协议合同标准文本
- 供餐餐具合同样本
- 交货违约合同样本
- 中国英文合同标准文本
- 专线运输合同标准文本标准文本
- 买钢筋合同标准文本
- 公司解聘员工补偿合同样本
- 华北电力大学丁肇豪:多主体数据中心算力-电力跨域协同优化
- 科技公司费用报销制度及流程比较
- 颅内出血护理操作
- 2024年绍兴诸暨市水务集团有限公司招聘考试真题
- 2025年新版供电营业规则考试题库
- 2025年长白山职业技术学院单招职业技能测试题库带答案
- 2025年公务员遴选考试公共基础知识必考题库170题及答案(四)
- 2024年内蒙古呼和浩特市中考物理试题【含答案、解析】
- 办公用品及设备采购产品手册
- 河道清淤工程施工组织设计方案
- 农业行业安全生产培训
评论
0/150
提交评论