单片机原理 独立按键识别-单片机原理-实验报告.docx

上传人:太** 文档编号:96855603 上传时间:2024-03-27 格式:DOCX 页数:14 大小:60.04KB
返回 下载 相关 举报
单片机原理 独立按键识别-单片机原理-实验报告.docx_第1页
第1页 / 共14页
单片机原理 独立按键识别-单片机原理-实验报告.docx_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《单片机原理 独立按键识别-单片机原理-实验报告.docx》由会员分享,可在线阅读,更多相关《单片机原理 独立按键识别-单片机原理-实验报告.docx(14页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、宁德师范学院计算机系实验报告(20222022学年 第2学期)课程名称 单片机原理实验名称独立按键识别专业计算机科学与技术(非师)年级 12级学号B2022102147姓名 王秋指导教师 杨烈君实验日期delay(3000); if(Key=O)Mode=(Mode+l )%3; while(Key=O);)if(Mode=0)sec=O;if(Mode=l) time_Eclipse();if(Mode=2);)void main()(while ( 1 )(displayO;Button_Control(); PutTime();)图4 0-99码表,按一次开始计时,第二次住手图5 0-9

2、9码,按表第三次清零5.扩展要求:通过3个按键实现时钟的调整#define uchar unsigned char#define disp_null 10uchar code tab 11 =OxcO,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,Oxbf;共阳数码管显示()9的段码表uchar dispBuf8J;uchar hour=13,min=23,sec=25;分别给时、分、秒赋初值sbit keyl=P3A2;sbit key2=P3A3;sbit key3=P3A4;void delay(int 定义时间间隔(while(x);)voi

3、d PutTime()(dispBuf7=sec%10;dispBuf6=sec/10;dispB uf5 =disp_null;dispBuf4=min%10;dispBuf3=min/10;dispBuf2=disp_null;dispB uflj=hour% 10;dispBuf0=hour/l 0;)识别是否按键/如果按键1被按,则返回1uchar ScanKeyO(if(keyl=O) return T;if(key2=0) returnif(key3=0) return return 0;)uchar ReadKeyOuchar tmp;tmp= ScanKey(); 读取按键值i

4、f( tmp= 0 ) return 0; / 没有按键,退出delay( 1000 );延时一小段时间,消抖(10mS摆布)if( tmp!= ScanKey() 如果现在读回来的和原来的值不一样,抛却 return 0;while( ScanKey();/如果一旦读回来的值为0,也就是松开按键,那末就可以返回。 return tmp;按键返回) void displayO ( uchar i;for(i=0;i=50) (sec+;ms=0;)if(sec=60) 表示进位,当秒满六十则向分钟进1,同时秒数清零 (min+;sec=0;)if(min=60)(hour+;min=0;)if

5、(hour=24) /当小时数满24小时时; 则小时数清零,完成计时(hour=0;)图6 3按键实现时钟的调整,KEY1选择模式,KEY2+, KEY3-图7 3按键实现时钟的调整,KEY1选择模式,KEY2+, KEY3-图8 3按键实现时钟的调整,KEY1选择模式,KEY2+, KEY3-实验总结(包括过程总结、心得体味及实验改进意见等): 过程总结:1 .在电路中增加按键、Led灯、八位7段数码管(共阳/共阴自选),将P2 口作数据输出口与7 段数码管数据引脚相连,P3引脚输出位选控制信号。掌握查询式按键的原理和编程方法2 .在Proteus软件中画好51单片机最小核心电路,包括复位电

6、路和晶振电路,理解按键防抖技 术,当第一次检测到有建按下时,先延时(1020ms),而后再确认键电平是否依旧维持闭合状 态的电平。若保持闭合状态电平,则确认此间已按下,从而消除颤动影响。心得体味:本次的实验是通过对按键的不同控制实现各个功能,在理想的环境下按键的反馈 是即时且无误差的,但是在实际的环境中要考虑到按键颤动的现象,所以要写一个判 断按键颤动的函数,还有单按键控制多个灯的亮灭,可以设置一个变量来记录按键的 情况来实现对不同部件的控制,而多按键的时候只需要判断是哪一个按键被按下,然 后执行对应的程序。指导教师评语:成绩评定教师签字 月 日备注:注:1、报告内的项目或者设置,可根据实际情

7、况加以补充和调整 2、教师批改学生实验报告应在学生提交实验报告10日内实验目的:1 .掌握查询式按键的原理和编程方法2 .理解按键防抖技术实验要求:1 .在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路2 .在电路中增加按键、Led灯、八位7段数码管(共阳/共阴自选),将P2 口作数据输出口与7 段数码管数据引唧相连,P3引唧输出位选控制信号。3 .实现单按键控制Led灯闪烁4 .实现单按键多功能识别控制4路Led灯闪烁5 .实现0-99的计数器效果,按一下数值加一6 .实现0-99码表(按一次开始计时,第二次住手,第三次清零)7 .扩展要求:通过3个按键实现时钟的调整

8、(KEY1模式,KEY2 + , KEY3 -)实验设备(环境):计算机、PmteusISIS7Pmfess应沁乐谓1序、Keil应用程序实验内容:1 .实现单按键控制Led灯闪烁2 .实现单按键多功能识别控制4路Led灯闪烁3 .实现0-99的计数器效果,按一下数值加一4 .实现0-99码表(按一次开始计时,第二次住手,第三次清零)5 .扩展要求:通过3个按键实现时钟的调整(KEY1模式,KEY2 + , KEY3 -)MHAM) I ADI4 AIM I5AD5 MG Al*.3AHFZLA9 1*2 2 AtO1,2 VAI I P2 4 Al2P2 5 Al 5 P26AUPi7 AI

9、S参考原理 图实验步骤、实验结果及分析:1、使用 ProteusISIS7ProicaU,建立一个.DSN 文件2、在“库”下拉菜单中,选中“拾取元件”(快捷键P),分别选择以下元件:AT89c51、CAP、CAPELEC CRYSTAL RESPACK-803、构建仿真电路4、创建一个Keil应用程序:新建工程项目文件;为工程选择目标器件(AT89c52);为工程 项目创建源程叙文件并输入程序代码;保存创建的源程序项目文件;把源程叙文件添加到项目中。5、把程序经过编译后生成的HEX文件添加到仿真电路中的处理器中(编辑元件一文件路径) 程序代码:1 .实现单按键控制Led灯闪烁#define

10、uchar unsigned charsbit Ledl=PlAO;sbit Key=P3A2;uchar Mode=0;void delay(int 定义时间间隔while(x-);void button_Cotrol() 根据按键模式执行相应的代码 (if(Key=0)(delay(lOOO);if(Key=0)(Mode=(Mode+1)%2;while(Key=O);)if(Mode=0)Led 1=();if(Mode=l) (Led 1 =Led 1;delay(lOOO);)void main()(while( 1)button_Cotrol();)图1单按钮,控制led灯闪烁2

11、 .实现单按键多功能识别一控制4路Led灯闪烁#define uchar unsigned charsbit Ledl=PlAO;sbit Led2=P 1A1;sbit Led3=Pl A2;sbit Led4=PlA3;sbit Key=P3A2;uchar Mode=0;void delay(int灯定义时间间隔(while(x-);)void button_Cotrol() 根据按键模式执行相应的代码 (if(Key=0)(delay(lOOO);if(Key=0)(Mode=(Mode+1)%4; while(Key=O);)if(Mode=0)(Led4=0;Led 1 =Led

12、1;delay(3000);)if(Mode=l)(Led 1=0;Led2=Led2;delay(3000);)if(Mode=2)(Led2=0;Led3=Led3;delay(3000);)if(Mode=3)Led3=0;Led4=Led4; delay(3000);)void main() (Led 1=0;Led2=0;Led3=0;Led4=0; while(l) button_Cotrol();图2单按键多功能识别,控制4路Led灯闪烁3 .实现0-99的计数器效果,按一下数值加1#define uchar unsigned char#define disp_null 10sb

13、it Key=P3A2;uchar code tabl l=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,Oxff; 共阳数码 管显示09的段码表uchar DispBuf8;uchar sec=O;void delay(int/定义时间间隔(while(x-);)void PutTime()(DispBuf7=sec% 10;DispBuf6=sec/10;DispBuf5=disp_null;DispBuf4J=disp_null;DispBuf 3 =disp_null;DispBuf 2=disp_null;DispBuf 1 =d

14、isp_null;DispBuf 0=disp_null;)void displayO(uchar i;for(i=0;i8;i+)(P2=0;P2=li;PO=tabDispBufi; delay(lOO);)void Button_Control()(if(Key=0)(delay(3000);if(Key=0)sec+;while(Key=0);void main()(while ( 1 )(displayO;PutTime();Button_Control();)图3 0-99的计数器效果,按一下数值加14,实现0-99码表(按一次开始计时,第二次住手,第三次清零)#define uc

15、har unsigned char#define disp_null 1()sbit Key=P3八2;uchar code tab l=()xc0,0xf9,0xa4,()xb(),0x99,0x92,0x82,0xf8,0x8(),0x90,Oxff; 共阳数码 管显示09的段码表uchar DispBuf8;uchar sec=0;uchar temp=30;uchar Mode=2;void delay(int什定义时间间隔(while(x);void PutTime()DispBuf7=sec%10;DispBuf6=sec/10;DispB uf 5 =disp_null;DispBuf 4=disp_null;DispB uf 3 =disp_null;DispBuf2=disp_null;DispB uf 1 =disp_null;DispBuff()=disp_null;)void displayO(uchar i;for(i=0;i99) sec=0;)void Button_Control()if(Key=0)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com