还剩29页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
实验一矩阵键盘检测
1、实验目的
1、学习非编码键盘的工作原理和键盘的扫描方式
2、学习键盘的去抖方法和键盘应用程序的设计
2、实验设备51/__R实验板、U__连接线、电脑
3、实验原理键盘接口电路是单片机系统设计非常重要的一环,作为人机交互界面里最常用的输入设备我们可以通过键盘输入数据或命令来实现简单的人机通信
1、按键的分类一般来说,按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等前者造价低,后者寿命长目前,微机系统中最常见的是触点式开关按键(如本学习板上所采用按键)按键按照接口原理又可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的识别全编码键盘由专门的芯片实现识键及输出相应的编码,一般还具有去抖动和多键、窜键等保护电路,这种键盘使用方便,硬件开销大,一般的小型嵌入式应用系统较少采用非编码键盘按连接方式可分为__式和矩阵式两种,其它工作都主要由软件完成由于其经济实用,较多地应用于单片机系统中(本学习板也采用非编码键盘)
2、按键的输入原理在单片机应用系统中,通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系也就是说,它能提供标准的TTL逻辑电平,以便与通用数字系统的逻辑电平相容此外,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能因此,键信息输入是与软件结构密切相关的过程对于一组键或一个键盘,通过接口电路与单片机相连单片机可以采用查询或中断方式了解有无按键输入并检查是哪一个按键按下,若有键按下则跳至相应的键盘处理程序处去执行,若无键按下则继续执行其他程序
3、按键的特点与去抖机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时间的触点机械抖动,然后其触点才稳定下来其抖动过程如图1(a)所示,抖动时间的长短与开关的机械特性有关,一般为5-10ms从图中可以看出,在触点抖动期间检测按键的通与断状态,可能导致判断出错即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施,可从硬件、软件两方面予以考虑一般来说,在键数较少时,可采用硬件去抖,而当键数较多时,采用软件去抖(本学习板采用软件去抖方式)按键抖动状态图硬件电容去抖按键去抖流程图从按键的去抖流程图我们可以知道,检测到有键按下时,应延时等待一段时间(可调用一个5ms~10ms的延迟子程序),然后再次判断按键是否被按下,若此时判断按键仍被按下,则认为按键有效,若此时判断按键没有被按下,说明为按键抖动或干扰,应返回重新判断键盘真正被按下才可进行相应的处理程序,此时基本就算实现了按键输入,进一步的话可以判断按键是否释放
4、实验步骤上面的图的意思是P
3.1~P
3.3跟P
3.4~P
3.7不一样的,他们是相互连接(当按下键时),组成4*4=16个键的如果给P3一个扫描初值的话如0x0F,则没有键按下时为P
3.1~P
3.3为1P
3.4~P
3.7为0如果有键按下,则情况发生变化高电平接入低电平如P
3.3与P
3.7连接的键按下,则P
3.3与P
3.7为0,即接地了则P3此时为00000111,这时如果用P30x0F则高四位为0低四位保留,可以得到低四位的内容了通过去抖操作,即一个delay,可以得到低四位内容这里设为h=P30x0F;如果再得到高四位内容,则可以组成一个数,来定位哪个键了程序框图C语言源程序#includereg
51.h__itbeep=P2^3;__itdula=P2^6;__itwela=P2^7;unsignedchari=100;unsignedcharjktempkey;voiddelayunsignedchari{forj=i;j0;j--fork=125;k0;k--;}Unsignedcharcodetable[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x770x7c0x390x5e0x790x71};displayunsignedcharnum{P0=table[num];dula=1;dula=0;P0=0xc0;wela=1;wela=0;}void__in{dula=0;wela=0;while1{P3=0xfe;temp=P3;temp=temp0xf0;iftemp!=0xf0{delay10;iftemp!=0xf0{temp=P3;switchtemp{case0xee:key=0;break;case0xde:key=1;break;case0xbe:key=2;break;case0x7e:key=3;break;}whiletemp!=0xf0{temp=P3;temp=temp0xf0;beep=0;}beep=1;displaykey;P1=0xfe;}}P3=0xfd;temp=P3;temp=temp0xf0;iftemp!=0xf0{delay10;iftemp!=0xf0{temp=P3;switchtemp{case0xed:key=4;break;case0xdd:key=5;break;case0xbd:key=6;break;case0x7d:key=7;break;}whiletemp!=0xf0{temp=P3;temp=temp0xf0;beep=0;}beep=1;displaykey;}}P3=0xfb;temp=P3;temp=temp0xf0;iftemp!=0xf0{delay10;iftemp!=0xf0{temp=P3;switchtemp{case0xeb:key=8;break;case0xdb:key=9;break;case0xbb:key=10;break;case0x7b:key=11;break;}whiletemp!=0xf0{temp=P3;temp=temp0xf0;beep=0;}beep=1;displaykey;}}P3=0xf7;temp=P3;temp=temp0xf0;iftemp!=0xf0{delay10;iftemp!=0xf0{temp=P3;switchtemp{case0xe7:key=12;break;case0xd7:key=13;break;case0xb7:key=14;break;case0x77:key=15;break;}whiletemp!=0xf0{temp=P3;temp=temp0xf0;beep=0;}beep=1;displaykey;}}}}汇编程序dulabitP
2.0;welabitP
2.1;KEYBUFEQU30HORG00HSTART:MOVKEYBUF#2WAIT:MOVP3#0FFHCLRP
3.4MOVAP3ANLA#0FHXRLA#0FHJZNOKEY1LCALLDELY10MSMOVAP3ANLA#0FHXRLA#0FHJZNOKEY1MOVAP3ANLA#0FHCJNEA#0EHNK1MOVKEYBUF#0movp1#11111110bLJMPDK1NK1:CJNEA#0DHNK2MOVKEYBUF#4movp1#11111100bLJMPDK1NK2:CJNEA#0BHNK3MOVKEYBUF#8movp1#11111000bLJMPDK1NK3:CJNEA#07HNK4MOVKEYBUF#12movp1#111_____bLJMPDK1NK4:NOPDK1:calldisplayDK1A:MOVAP3;等待释放ANLA#0FHXRLA#0FHJNZDK1ANOKEY1:MOVP3#0FFHCLRP
3.5MOVAP3ANLA#0FHXRLA#0FHJZNOKEY2LCALLDELY10MSMOVAP3ANLA#0FHXRLA#0FHJZNOKEY2MOVAP3ANLA#0FHCJNEA#0EHNK5MOVKEYBUF#1movp1#11111110bLJMPDK2NK5:CJNEA#0DHNK6MOVKEYBUF#5movp1#11111100bLJMPDK2NK6:CJNEA#0BHNK7MOVKEYBUF#9movp1#11111000bLJMPDK2NK7:CJNEA#07HNK8MOVKEYBUF#13movp1#111_____bLJMPDK2NK8:NOPDK2:calldisplayDK2A:MOVAP3;释放ANLA#0FHXRLA#0FHJNZDK2ANOKEY2:MOVP3#0FFHCLRP
3.6MOVAP3ANLA#0FHXRLA#0FHJZNOKEY3LCALLDELY10MSMOVAP3ANLA#0FHXRLA#0FHJZNOKEY3MOVAP3ANLA#0FHCJNEA#0EHNK9MOVKEYBUF#2movp1#11111110bLJMPDK3NK9:CJNEA#0DHNK10MOVKEYBUF#6movp1#11111100bLJMPDK3NK10:CJNEA#0BHNK11MOVKEYBUF#10movp1#11111000bLJMPDK3NK11:CJNEA#07HNK12MOVKEYBUF#14movp1#111_____bLJMPDK3NK12:NOPDK3:calldisplayDK3A:MOVAP3ANLA#0FHXRLA#0FHJNZDK3ANOKEY3:MOVP3#0FFHCLRP
3.7MOVAP3ANLA#0FHXRLA#0FHJZNOKEY4LCALLDELY10MSMOVAP3ANLA#0FHXRLA#0FHJZNOKEY4MOVAP3ANLA#0FHCJNEA#0EHNK13MOVKEYBUF#3movp1#11111110bLJMPDK4NK13:CJNEA#0DHNK14MOVKEYBUF#7movp1#11111100bLJMPDK4NK14:CJNEA#0BHNK15MOVKEYBUF#11movp1#11111000bLJMPDK4NK15:CJNEA#07HNK16movp1#111_____bMOVKEYBUF#15LJMPDK4NK16:NOPDK4:calldisplayDK4A:MOVAP3ANLA#0FHXRLA#0FHJNZDK4ANOKEY4:LJMPWAITDELY10MS:MOVR6#10D1:MOVR7#248DJNZR7$DJNZR6D1RETdisplay:MOVAKEYBUF;查表MOVDPTR#TABLEMOVCA@A+DPTRMOVP0AsetbdulaclrdulamovP0#0c0hsetbwelaclrwelaclrp
2.3acallds1ms;延时,以便人眼可以观察到setbp
2.3;acallds1msretds10ms:movr1#1ds1lo:movr2#200ds2lo:movr3#200djnzr3$djnzr2ds2lodjnzr1ds1loret;延时返回TABLE:DB3FH06H5BH4FH66H6DH7DH07HDB7FH6FH77H7CH39H5EH79H71HEND
5、实验现象当你按下矩阵键盘中的任何一个键,蜂鸣器响一声,并在数码管上显示相应的键值图为实际演示__
6、实验小结本实验介绍了单片机键盘的工作原理并给出了实例,从中我们可以知道一个完善的键盘控制程序应具备以下功能
(1)检测有无按键按下,并采取硬件或软件措施,消除键盘按键机械触点抖动的影响
(2)有可靠的逻辑处理办法每次只处理一个按键,其间对任何按键的操作对系统不产生影响,且无论一次按键时间有多长,系统仅执行一次按键功能程序
(3)准确输出按键值,以满足按键功能要求对于矩阵键盘而言,必须将行线、列线__配合起来作适当处理,才能确定闭合键的位置实验二交通灯
1、实验目的
1、了解单片机中断与定时器工作原理,掌握中断与定时器程序结构
2、理解七段数码管的工作原理,并在此基础上能可以进行简单的数码管驱动操作
3、可以灵活的用I/O口原理控制LED小灯的亮和灭
2、实验设备51/__R实验板、U__连接线、电脑
三、实验原理本实验以P1口作为输出程序初始化是绿灯先亮,具体顺序为绿-黄-红-黄-绿-黄-红,重复循环其中,红灯与绿灯显示时间均为50s,中间的黄灯显示时间为15s绿灯用八位发光二极管流动闪烁作代表;红灯用八位发光二极管全亮作代表;黄灯用八位发光二极管全亮全灭闪烁作代表此外,还用到定时器T0作为倒计时使用,P0口作为LED灯的显示在实验中利用软件延时的方法来控制红黄绿灯的亮的时间考虑到延时时间较长,所以先用T0产生终端然后计数的方法来实现延时,利用P1口作为红黄绿灯控制端口实验模块图1实验模块图
24、实验步骤
1、熟悉单片机内部原理图,掌握各实验模块的使用方法
2、设计实验方案,画出流程图
3、根据流程图编写程序程序如下#includereg
51.h#defineucharunsignedchar#defineuintunsignedint__itdula=P2^6;__itwela=P2^7;__itbeep=P2^3;unsignedintpp;unsignedcharcodetable[]={0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f0x770x7c0x390x5e0x790x71};ucharjkl=255;uchara1a0;ucharshijiandeng=2;voiddelayunsignedinti{forj=i;j0;j--fork=125;k0;k--;}voiddisplayunsignedcharsh_cunsignedcharg_c{dula=0;P0=table[sh_c];dula=1;dula=0;wela=0;P0=0xfe;wela=1;wela=0;delay5;P0=table[g_c];dula=1;dula=0;P0=0xfd;wela=1;wela=0;delay5;}void__in{TMOD=0x01;TR0=1;TH0=65536-46080/256;//由于晶振为
11.0592故所记次数应为46080,计时器每隔50000微秒发起一次中断TL0=65536-46080%256;//46080的来历,为50000*
11.0592/12ET0=1;EA=1;while1{ifshijian==0{switchdeng{case0:shijian=50;//红灯deng=1;break;case1:shijian=15;//黄灯deng=2;break;case2:shijian=50;//绿灯deng=3;break;case3:shijian=15;//黄灯deng=0;break;}}ifpp==20{pp=0;shijian--;}a0=shijian%10;a1=shijian/10;displaya1a0;switchdeng{case1:P1=0X00;//红灯break;case2://黄灯ifshijian%2==0P1=0x00;ifshijian%2==1P1=0xff;break;case3://绿灯ifshijian%2==0P1=0x55;ifshijian%2==1P1=0xaa;break;case0:ifshijian%2==0//黄灯P1=0x00;ifshijian%2==1P1=0xff;break;}}}voidtime0interrupt1{TH0=65536-46080/256;TL0=65536-46080%256;pp++;}
4、下载程序到单片机,观察实验现象
5、实验现象上电后,绿灯(八位发光二极管流动闪烁)先亮,数码管50秒倒计时;黄灯(八位发光二极管全亮全灭闪烁)亮,数码管15秒倒计时;接着红灯亮(八位发光二极管全亮),数码管50秒倒计时;接着,再黄灯(八位发光二极管全亮全灭闪烁)亮,数码管15秒倒计时,如此循环
6、实验总结通过此次实验,使我更加扎实的掌握了中断、LED驱动、数码管显示的知识,过程中遇到了一些问题,如中断初值的设定,如何让小灯发光,通过向老师及同学请教,慢慢了解了其中的奥妙学习单片机一定要注重实践,边学边练,发现问题及时解决不可拖延怠慢,你怎样对它,它就怎样对你实验三串口调试直接返回数据
1、实验目的
1、了解单片机串行口的结构、使用方法,学习串行口应用程序的编写方法
2、熟悉单片机串行口接收和发送数据的实现方法
3、熟悉单片机串行通信的格式规定
4、掌握μVision环境中调试串行口应用程序的方法
2、实验设备51/__R实验板、U__连接线、电脑软件KeilμVision、串口调试助手v
2.
2、STC-ISP-V
4803、实验原理通信是人们传递信息的方式计算机通信是将计算机技术和通信技术相结合,完成计算机与外部设备或计算机与计算机之间的信息交换这种信息交换可以分为两大类并行通信与串行通信并行通信通常是将数据字节的各位用多条数据线同时进行传送,如图所示由图可见,并行通信除了数据线外还有通信联络控制线数据发送方在发送数据前,要询问数据接收方是否“准备就绪”数据接收方收到数据后,要向数据发送方回送数据已经接收到的“应答”__并行通信的特点是控制简单,传输速度快由于传输线较多,长距离传送时成本高且接收方的各位同时接收存在困难串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送,串行通信时,数据发送设备先将数据代码由并行形式转换成串行形式,然后一位一位地放在传输线上进行传送数据接收设备将接收到的串行形式数据转换成并行形式进行存储或处理串行通信的特点是传输线少,长距离传送时成本低,且可以利用__网等现成的设备但数据的传送控制比并行通信复杂异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程为使双方的收发协调,要求发送和接收设备的时钟尽可能一致为了实现异步传输字符的同步,采用的办法是使传送的每一个字符都以起始位“0”开始,以停止位“1”结束这样,传送的每一个字符都用起始位来进行收发双方的同步停止位和间隙作为时钟频率偏差的缓冲,即使双方时钟频率略有偏差,总的数据流也不会因偏差的积累而导致数据错位传送开始后,接收设备不断检测传输线,看是否有起始位到来当收到一系列的“1”(空闲位或停止位)之后,检测到一个“0”,说明起始位出现,就开始接收所规定的数据位和奇偶校验位以及停止位经过处理将停止位去掉,把数据位拼成一个并行字节,并且经校验无误才算正确地接收到一个字符一个字符接收完毕后,接收设备又继续测试传输线,监视“0”电平的到来(下一个字符开始),直到全部数据接收完毕异步通信的特点是不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高计算机的通信要求传送的是数字__在远程数据通信时,通常要借用现存的公用__网但是__网是为300~3400Hz的音频模拟__设计的,对二进制数据的传输是不合适的为此,在发送时需要对二进制数据进行调制,使之适合在__网上传输在接收时,需要进行解调,以将模拟__还原成数字__利用调制器(Modulator)把数字__转换成模拟__,然后送到通信线路上去,再由解调器(Demodulator)把从通信线路上收到的模拟__转换成数字51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯但电脑的串口是RS232电平的,而单片机的串口是TTL电平的,所以进行串行通讯时要满足一定的条件,就是两者之间必须有一个电平转换电路我们采用了专用芯片__X232进行转换,虽然也可以用几个三极管进行模拟转换,但是用专用芯片更简单可靠RS-232通信电平RS-232C接口规定使用25针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义一般的应用中并不一定用到RS-232C标准的全部__线,所以在实际应用中常常使用9针连接器替代25针连接器连接器引脚定义如图所示图中所示为阳头定义,通常用于计算机侧,对应的阴头用于连接线侧DB-25(阳头)和DB-9(阳头)连接器定义RS-232C标准接口主要引脚定义
4、实验步骤
1、系统由AT__S52单片机作为__控制器控制各功能模块的正常工作及数据的接收和处理程序框图
2、程序代码ORG0000HLJMP__IN;主程序的开始ORG0200H__IN:MOVTMOD#20H;MOVTL1#0F4H;初值=256-11059200/32/12/2400MOVTH1#0F4H;SETBTR1;启动波特率发生MOVSCON#50H;串口工作方式,设置为方式2M1:JNBRIM1;查询是否有数据接收MOVA__UF;数据暂存于ACLRRI;允许接收MOV__UFA;将接收到的数据发送出去M2:JNBTIM2;等待发送完成CLRTISJMPM1;循环扫描串行通讯接口数据END
3、汇编、连接该程序,生成可执行文件
4、下载到单片机
5、在UART#0窗口输入字符,观察窗口变化
5、实验现象
6、实验总结
1、对于Keil软件已经可熟练掌握,但对于定时器的初值计算仍需巩固和加强
2、对于串行口的工作原理有了一定的了解
3、能够读懂程序,并作出适当修改P3=FFHP
3.0=0有键按下吗?延时10ms真得有键按下吗?根据当前状态识别按键P3=FFHP
3.1=0有键按下吗?延时10ms真得有键按下吗?根据当前状态识别按键P3=FFHP
3.2=0有键按下吗?延时10ms真得有键按下吗?根据当前状态识别按键P3=FFHP
3.3=0有键按下吗?延时10ms真得有键按下吗?根据当前状态识别按键。