欢迎来到天天文库
浏览记录
ID:18516923
大小:68.00 KB
页数:7页
时间:2018-09-18
《实验三实验报告(单片机人机接口设计)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、宁波大学信息学院2013(2)“单片机原理及应用1”实验报告实验项目名称:单片机人机接口设计一、实验目的1.掌握单片机简单人机交互接口电路的设计方法。2.进一步熟悉C8051F020单片机I/O口交叉开关设置和I/O端口的使用。3.掌握独立式按键和LED显示接口电路和程序设计方法。二、实验内容1.C8051F020单片机按键(3个)和LED(4个)显示接口电路设计、制作与调试。2.用按键输入脉冲,在P1口按16进制计数方式点亮发光二极管。其中一个按键为加法计数键,一个按键为减法计数键,最后一个为清零键。三、实验说明通过本实验,掌握单片机简单人机交互接口
2、电路的设计、制作和调试方法和程序设计方法。进一步熟悉C8051F020单片机的I/O口交叉开关和振荡器及配置使用;熟悉C语言的模块化程序设计方法。用模块化方法进行C语言程序设计。四、实验仪器和设备PC机、KeiluVision2软件,C8051F020单片机,EC3在线仿真器。五、实验原理1、LED显示接口电路LED为共阳型接法,所以当输出为0时,可以控制数码管亮。2、独立式按键接口电路当按下时,相当于输入了0,实际的实验中,没有右图的上拉电阻,所以需要将输入设置为弱上拉。六、程序流程图7宁波大学信息学院2013(2)“单片机原理及应用1”实验报告关闭
3、看门狗初始化端口使用默认时钟按键输入复位输入类型?输出示数加一输出示数减一按键释放输入为减输入复位输入为加七、实验结果与分析当按照流程图,利用模块式的方法编写C程序,在开发板的P3.0、P3.1、P3.2的引脚接三个按键,当P3.0处按键按下,开发板上的八个指示灯只有5~8四个灯可以亮,并且灯亮所表示处的二进制数随按键按下而加一,当加至15后,将跳变到0,再按下,继续向上计数。当按下P3.1处按键则相反,二进制数减一,减值0时,将跳变到15,再按下,继续向下计数。当按下P3.2处按键,指示灯将全灭,处于复位状态。八、源代码7宁波大学信息学院2013(2
4、)“单片机原理及应用1”实验报告源代码必须有必要的注释,且要与流程图的逻辑关系对应。1、主程序work.c#include#include#include#definenokey0xff#definejia0x0A#definejie0x0B#definere0x0C/*为使主程序更简洁,另外写按键处理的按键的函数keyf.c,以及诸如可控制看门狗的头文件,并定义常量以供程序作为按键类型的标记*/unsignedcharcodede[]={0xff,0xfe,0xfd,0xfc,0xfb,0x
5、fa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0};/*定义一个16位的数组,其值从0xf0到0xff,对应于单片机的与数码管相连的P5端口的八二进制数。可以让加减命令转化为这个数组下标的移动,在数码管上就显示为灯的明灭,由于前四个管总是灭的状态,灯可表示一个四位二进制数的变化。*/voidmain(){unsignedintnum;bdwtd();//禁止看门狗P3MDOUT=0X00;//初始化端口P3=0X07;//初始化端口num=0;//将数组下标初值设为0(复位状态)while(1){
6、unsignedcharkey1;P5=de[num];//将数组赋值于与数码管相连的P5端keyscan();key1=keyinput();//判断按键输入的类型if(key1==jia){num++;if(num>=16)num=0;keyoff();}/*如果输入为jia,则数组下标加一,7宁波大学信息学院2013(2)“单片机原理及应用1”实验报告外部LED灯表现为二进制值加一*/if(key1==jie){num--;if(num==-1)num=15;keyoff();}/*如果输入为jia,则数组下标减一,外部LED灯表现为二进制值减一
7、*/if(key1==re){num=0;keyoff();}/*如果输入为re,即复位功能,那么执行复位的功能,将数组下标赋值为0,在外部表现为灯全灭的状态*/}}1、辅助程序keyf.c#include#include#definenokey0xff#definejia0x0A#definejie0x0B#definere0x0Csbitadd=P3^0;sbitdiv=P3^1;sbitrest=P3^2;/*这是一个按键处理的程序,以配合work4.c使用主要有按键扫描函数判断按键状态,按键输入函数判
8、断按键输入的类型,按键释放函数判断按键是否释放。*/unsignedcharkeyscan(v
此文档下载收益归作者所有