单片机原理与应用实验报告_第1页
单片机原理与应用实验报告_第2页
单片机原理与应用实验报告_第3页
单片机原理与应用实验报告_第4页
单片机原理与应用实验报告_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理与应用实验指导书卢 钢 张翼华中科技大学文华学院信息学部2013.6前 沿本实验指导书是华中科技大学文华学院“单片机原理与应用教学改革”教研项目(项目编号:J09007403F7)的组成部分。其基本指导思想是:实验全过程,即为单片机应用系统开发的全过程;就是依据任务要求(实验设计题目或用户需求),首先设计出合理的硬件系统,然后以此为基础进行相应软件程序设计,测试、分析结果,再修改、再测试,直至正确实现设计任务的要求。硬件电路设计是单片机(嵌入式)应用系统设计的基础,以往传统的实验往往忽略了这个环节,结果造成同学们实验完了,还不清楚是怎么回事。加强硬件电路设计这个环节,是本实验指导书特点之一。 基于上述思想,第一,本单片机实验开发仪由单片机最小系统和十多个独立功能模块(或器件)构成,它们的信号线通过接线排座引出,为灵活设计不同的单片机应用系统提供了平台。同样的设计题目,可以设计出不同的硬件电路和不同的软件程序。第二,要求同学完成实验的同时完成实验报告。实验报告包含:设计题目,硬件电路设计(含电路图和简要原理说明),软件程程设计(含序流程图、原代码和注释),实验结果分析(实验过程中出现问题、原因及解决方案)。以此,进一步增强同学对单片机应用系统设计全过程的理解和掌握,同时训练同学撰写报告的能力。第三,在每个实验中,给出了不同的设计题目,每个题目给出了不同的硬件电路和软件编程参考设计,其目的,使同学了解同样的设计题目,有不同的解决方案。第四,每个实验中都给出了思考题,以此使同学们进一步理解单片机系统硬件与软件之间的关系和进一步掌握单片机工作原理。建议同学们千万不要抱着毕业之后到公司去学习的态度,因为企业主要目的是盈利,而培训要花费相当长的时间和精力,因此对于企业来说,更青睐那些知识结构健全、应用经验丰富、创新能力强的人。这正好印证了我们常说的一句话:机会总是留给那些有准备的人!抓紧准备,从知识结构、专业技能等方面塑造自己、发展自己,提高实际应用能力,以增加自己在就业时的筹码。我们希望本实验指导书能为同学们学好单片机原理与应用课程和掌握单片机应用系统设计提供有益帮助。由于编写时间较仓促,加上作者的水平有限,讲义中难免有遗漏和不足之处,恳请广大教师、同学提出宝贵意见,批评和指正,以便作者做进一步改进,更好满足同学们学习单片机的需要。 编者 2013.6实验要求1、实验前必须阅读教科书的有关部分和本实验指导书,了解实验目的、内容、步骤,做好实验前的准备工作,否则不得上机操作。2、按照实验指导书说明正确连线,严禁带电接线和接插元器件。通电前须经过指导教师检查认可后方能通电。3、在弄清楚实验原理与过程前,不准随意拨弄各种与实验无关的旋钮和开关,凡与本次实验无关的任何设备都禁止动用和摸弄,注意安全。4、在弄清楚实验原理与过程前,严禁用手触摸实验系统印制电路板和元器件的引脚,防止静电击穿芯片。5、实验中若损坏仪器或元器件,应及时向指导教师报告。6、在实验室内保持安静和卫生,不得随意走动和喧哗,认真完成实验。7、实验完成后,关掉电源,及时整理实验台桌面,保持环境整洁。8、按规定认真完成实验报告,在规定的时间内缴上实验报告。9、凡实验或实验报告未能按规定完成的学生,不能参加本课程的考试或考察。目 录实验一 单片机实验开发仪硬件学习.1实验二 单片机开发环境搭建.5实验三 单片机控制LED灯实验.15实验四 数码管实验.20实验五 按键实验.27实验六 中断实验.35实验七 定时器实验.41实验八 串口通信实验.48附录一 实验报告模板.56附录二 单片机实验开发仪电路图.58实验一 单片机实验开发仪硬件学习1、 实验目的 熟悉单片机开发仪硬件电路原理图、PCB板元器件布局以及跳线帽和接线插座的作用。二、51单片机实验开发仪硬件电路简介51单片机实验开发仪硬件电路原理图详见附件。原理图按功能模块给出,每个模块分别给出了相应器件和外接连线定义符号,它可作为设计应用系统中的一个独立器件或功能模块使用。该实验开发仪由51单片机最小系统、电源模块、矩阵键盘模块、独立键盘模块、8位LED数码管显示模块(动态数码管)、1位LED数码显示管(静态数码管)、10位LED灯模块(交通灯)等多个模块构成。我们在设计单片机应用系统硬件电路时,需依照设计要求,由单片机最小系统和某些功能模块(或器件)组成。这里只介绍单片机最小系统模块。其他模块在具体实验或应用设计时,再进行学习。51单片机最小系统原理图如图1-1所示。单片机的4个I/O口,P0口、P1口、P2口、P3口分别接至JP10、JP8、JP11和JP9接线排座,通过接线排座与有关器件连接,实现I/O对不同模块的操作控制以及系统扩展,从而实现不同的应用系统。(注意:其中某些I/O引脚已固定作为某种信号,直接或通过短路帽连接到固定器件。例如,P2.0、P2.1作为EEPROM器件的SDA和SCL信号直接接到该器件的第5、第6脚;P3.4作为实时时钟芯片DS1302的DSIO信号,通过短路帽JP1302连接到DS1302的第6脚(SDIO)。单片机的复位电路模块如图1-2所示,利用短路帽经J9,可方便实现高电平脉冲复位或低电平脉冲复位,这点以选用单片机型号确定。51单片机为高电平脉冲复位,其复位引脚RST(引脚9)应通过短路帽使J9的2、1短接。图1-1 51单片机最小系统(MCU)原理图图1-2 单片机复位电路二、51单片机实验开发仪元器件布局 单片机实验开发仪元器件布局如图1-3和1-4所示。单片机实验开发仪元器件布局如图1-3和1-4所示。图1-3 单片机实验开发仪元器件布局图(1)图1-4 单片机实验开发仪元器件布局图(2)3、 实验开发仪使用IC芯片1、 U0:DS1302,实时时钟(RTC)芯片;2、 U1:24C16,串行I2C EEPROM芯片;3、 U2:MAX232,串口通信TTL-RS232电平转换芯片;4、 U3:CH340T,USB转串口TTL芯片;5、 U4、U5:74HC595,串入并出移位寄存器芯片(输出锁存器);6、 U7:PCF8591,I2C 总线A/D、D/A芯片;7、 U8:74LS165,并入串口移位寄存器芯片(输入锁存器);8、 U9:MAX485,串行通信口TTL-RS485电平转换芯片;9、 U10:NE555,时基电路(定时器)芯片,用它可设计成几十种应用电路;10、 U12:74LS138,3-8译码器芯片;11、 U13:74537,8位锁存器芯片;12、 U15: NLN2003,达林顿驱动芯片(输出电流可达1A,可驱动步进电机);13、 U18:UDN2916,双全桥PWM马达驱动器芯片;14、 STC90C516: STC90系列C51单片机;15、 DS18b20: 单线数字温度传感器;16、 IR: 红外线接收头实验二 单片机开发环境搭建软件的开发离不开开发环境,开发环境是指在基本硬件和数字软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,通常包括文本编辑环境、语言编辑器、对应的函数库和帮助文件等。目前MSC-51单片机开发中使用最为广泛的是美国Keil uvision公司的Keil uVsion集成开发环境。该环境能运行在Windows操作系统上,集成了KeilC51编译器、 uvision IDE集项目管理、编译工具、代码编写工具、代码调试以及完全仿真于一体,提供了一个简单易用的开发平台。1、 实验目的1、 进一步熟悉51单片机实验开发仪。2、 Keil C51软件使用。二、设计题目1、点亮8只LED灯的第7个LED灯(用P2口)2、点亮8只LED灯的第1个LED灯(用P0口)三、实验步骤(keil 51使用)Keil uVsion自带项目管理器,所以用户不需要在项目管理上花费过多的精力,只需要按照以下步骤操作即可建立一个属于自己的项目。(1)、启动uVsion,建立工程文件并且选择器件。(2)、建立源文件、头文件等相应的文件。(3)、将工程需要的源文件、头文件、库文件等添加到工程中。(4)、修改启动代码并且设置工程相关选项。(5)、编译并且生成Hex或者Lib文件。1、建立工程项目(1)、开机,运行Keil uVision4,其运行界面如图2-1所示。图2-1 Keil运行界面(2)、点击“ProjectNewProject”菜单,弹出“Creat New Project”对话框,如图2-2所示。图2-2 创建新工程(3)、选择工程文件要存放的路径,输入工程文件名 ,最后单击保存,如图2-3所示。在“保存在”下拉框中选择工程文件要存放的路径,在“文件名”文本框处用键盘敲入你要给这个工程起的工程名(如“test1”),用鼠标左键单击“保存”按键。图2-3 输入工程名(4)、选择MCS-51单片机的型号,如图2-4、图2-5所示。 在弹出的“Select a CUP Data Base File”对话框中选择“STC MCU Database”,单击“OK”按键。图2-4 选择CPU数据库文件然后在弹出的“Select Device for Target Target”对话框中选择单片机的型号。我们单片机实验开发板上CPU的型号是“STC90C516RD+”,因此我们在对话框中选择“STC90C52RC”。图2-4 选择单片机型号选择单片机型号之后,出现对话框询问是否自动加入MCS-51单片机的启动文件,点“是”,该文件用于初始化单片机内部存储器等,添加完成之后在项目管理窗口中可以看到startup.A51文件已经被加入。到此为止,我们还没有建好一个完整的工程,虽然工程名有了,但工程当中还没有任何文件及代码,接下来我们添加文件及代码。2、 建立和包含文件在工程文件中创建新的源文件并且包含相应的文件,其步骤如下:(1)、鼠标左键单击“File”“New”菜单项,或单击界面上的快捷图标,如图图2-6所示。图2-6 新建源文件(2)、保存新建的文件,单击SAVE或者用鼠标左键单击菜单“File” “Save As.”,如图2-7所示。图2-7 保存新建源文件(3)、在弹出的“Save As”对话框中输入你给这个文件起的文件名。 注意:后缀名必须为.C 单击“保存”,如图2-8所示。图2-8 保存新建源文件(4)、将源文件添加到工程中。回到编辑界面,在左边资源管理器中用鼠标左键单击“Target 1”前面的“+”号,然后在“Source Group 1”选项上单击右键,然后选择“And Files to Source Group 1”菜单项,如图2-9所示。图2-9 将源文件添加到工程中(5)、选择要加入的文件,单击Add,然后单击Close,如图2-10所示。文件类型选择“C Source file(*.c)”。图2-10 选择要加入的文件3、 代码编写完成前面的添加步骤之后用户就可以开始代码的编写,如图2-11所示。图2-11代码编写4、 项目配置项目配置是指对项目的实际情况设置参数,使得编译能按当前项目的实际情况对代码进行编译操作。单击菜单“Project”中的“Option for Target“Target 1”选项或菜单栏上的快捷图标,如图2-12所示。图2-12 选择目标其中有很多选项,我们只需将:(1)、Xtal(MHz)- 改为单片机实验开发板上的晶振的频率-12MHz,如图2-13所示。图2-13 配置晶振(2)、选中“Output”选项单中的“Create Hex File”选项,这是为了能生成供MSC-51单片机执行的Hex文件,如图2-14所示。然后单击“确定”。图2-14 创建Hex文件5、 编译项目并且处理错误单击主菜单中“Project” “Built target”, 对项目进行编译并且生成对应的Hex文件。编译通过,程序没有错误。此时下边窗口显示“test1” - 0 Error(s), 0 Warning(s). 如图2-15所示。图2-15 程序编译 如果在编译中出现错误则会在“output”窗口中看到对应的错误信息。双击“output”窗口中对应的错误信息,则在编辑窗口光标会跳到出错的对应语句,并且在左边出现一个蓝色箭头,方便使用户修改。如果修改之后的编译,选择“Rebuilt all Target Files”即可。四、硬件电路设计参考1、使用总线法,用单片机的P2口来驱动8个LED,接线排座JP11(单片机P2口)和接线排座JP1(LED灯)用8PIN排线连接起来。2、 使用位操作法,用单片机的P0.0驱动8个LED灯的第1个,用杜邦线将JP10接线排座的第1引脚(单片机的P0.0)与接线排座JP1的第1引脚(LED灯D1)连接。五、软件程序设计参考编程时注意:因为发光二极管的阳极接高电平,只有当控制它的I/O口输出为低电平时,才可以驱动其点亮(注意8个LED发光二极管在实验板上的位置)。1、点亮第7个发光二级管#includevoid main()P2=0xbf; 2、点亮第1个发光二级管#include sbit led0=P00; void main() led0=0; 六、思考1、点亮第4个发光二极管(位操作法,用P2口)2、点亮第3个发光二级管(总线法,用P0口)实验三 单片机控制LED灯实验一、实验目的1、 进一步掌握Keil的使用,熟悉单片机C语言编程。2、 学习I/O口的使用方法。二、设计题目1、 单只LED灯(D3) 闪烁2、 双4只 LED 灯(D1、D3、D5、D7 与D2、D4、D6、D8)交替闪烁3、 8 只LED灯(D1、D2、D3、D4、D5、D6、6D7、D8)流水灯显示三、实验原理发光二级管是半导体二极管的一种,可以把电能转化为光能,常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。只要加在发光二极管两端的电压超过它的导通电压(一般为1.7V-1.9V)它就会导通,而当流过它的电流超过一定电流时(一般2-3mA)它就会发光。LED常用在MCS-51单片机中指示单片机的某个开关量的状态。对单片机的控制,其实就是对I/O口(单片机引脚)的控制。单片机共四个端口,P0、P1、P2、P3;每个端口分别有8个引脚 P0.0-P0.7、P1.0-P1.7、P2.0-P2.7、P3.0-P3.7;这32个引脚既可以作输出脚,又可以作输入脚。作输出脚时,单片机可以控制指示灯、数码管、电机等外部器件;作输入脚时,可以“感受”按键、开关、传感器等外部器件(例如接收数据-此就是作为输入脚的),单片机的每个引脚都是可以分开控制的,即独立的给高或者低电平。想要点亮一个小灯,首先要将小灯与单片机的一个 I/O 口连接好,然后将此引脚给高或者低电平,接着这个小灯就可以按照你给的电平实现点亮或熄灭了。4、 硬件电路设计参考 LED模块排线接口如图3-1所示。依据实验原理,只要将所需控制的LED 对应排线引脚连接到单片机一个I/O口即可。1、 连接方法JP11(P2)和JP1和LED灯的JP1用8PIN排线连接起来。2、 硬件说明使用单片机的P2口来驱动8个LED,发光二极管的阳极接高电平,故P2口为低电平时,就可以驱动其点亮。五、软件程序设计参考1、单只LED灯(D3)闪烁程序一:#include void delay(void) unsigned int i; for(i=0;i20000;i+) ; void main(void) while(1) P2=0xfb; delay(); P2=0xff; delay(); 程序二:#includevoid main()while(1)unsigned int a;P0=0xfb; /1111 1011a=5000;while(a-);P0=0xff; /1111 1111a=5000;while(a-);2、双4只 LED 灯(D1、D3、D5、D7 与D2、D4、D6、D8)交替闪烁#include#define uint unsigned int #define uchar unsigned char void delay();void main() while(1) P2=0xaa;delay();P2=0x55;delay(); void delay()uint x,y;for(x=100;x0;x-)for(y=600;y0;y-);3、8只LED灯(D1、D2、D3、D4、D5、D6、D7、D8)流水灯显示#include void delay(void) unsigned char i,j; for(i=0;i250;i+) for(j=0;j250;j+); void main() while(1) P2=0xfe; delay(); P2=0xfd; delay(); P2=0xfb; delay(); P2=0xf7; delay(); P2=0xef; delay(); P2=0xdf; delay(); P2=0xbf; delay(); P2=0x7f; delay(); 学到了这里,相信大家对单片机有了一个初步的认识,知道怎样去创建一个工程,以及怎样去操作一个I/O 口了,其实单片机的学习就是通过对I/O 口的操作来实现不同的功能。请同学们记住学习中不怕难,就怕不努力,肯花时间,就一定学的好。六、思考题1、 点亮2、3、5、6这四个LED灯。2、 点亮单片机开发实验仪上的D1、D3、D5、D7灯与D2、D4、D6、D8灯交替闪烁3、 跑马灯。实验四 数码管实验一、实验目的1、 掌握数码管显示原理(静态显示和动态显示)。2、 掌握数码管显示编程。二、设计题目1、让单位数码管显示一个5(用P0口)2、让四位数码管第四位显示一个3(位选用P2口控制,段选用P0口控制)3、 在八个数码管上显示0、1,27三、实验原理数码管是一种半导体发光器件,是MCS-51单片机系统中用得非常多的一种输出通设备,其基本单元是发光二级管。MCS-51单片机系统中最常使用的是8段数码管。1、数码管显示原理图4-1 数码管内部原理图8段数码管的内部结构是由8个发光二极管组成的,如图4-1所示,从图4-1(a)可看出,一位数码管的引脚是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管,最后还有一个公共端,生产商为了封装的统一,单位数码管都封装10个引脚,其中第3和第8引脚是连接在一起的。而它们的公共端又可以分为共阳极和共阴极,如图4-1(b)所示。共阳极数码管的8个发光二极管的阳极(正极)连接在一起接高电平(一般接电源),其它管脚接各段驱动电路输出端。当某段的输出端为低电平时,则该段所连接的发光二极管导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。共阴极数码管的8个发光二极管的阴极(负极)连接在一起接低电平(一般接地),其它管脚接各段驱动电路输出端。当某段的输出端为高电平时,则该段所连接的发光二极管导通并点亮,根据发光字段的不同组合可显示出各种数字或字符。因此我们在显示数字的时候首先做的就是给“0-9”十个数字编码,在要它亮什么数字的时候直接把这个编码送到它的阳极就行了。当数码管为多位一体时,它们内部的公共端是独立的,而负责显示什么数字的段线全部是连接在一起的,独立的公共端可以控制多位一体中的哪一位数码管点亮,而连接在一起的段线可以控制这个能点亮数码管亮什么数字,通常我们把公共端叫做“位选线”,连接在一起的段线叫做“段选线”,有了这两个线后,通过单片机及外部驱动电路就可以控制任意的数码管显示任意的数字了。2、数码管静态显示静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是,当显示多位数字时,将占用较多的I/O端口,硬件电路比较复杂,成本较高。3、数码管动态显示动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。点亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。 四、硬件电路设计参考1、单位数码管静态显示单位静态数码管模块电路及排线接口如图4-2所示。该数码管为共阳极数码管。(1)、连接方法用8PIN排线将JP3 与JP10 (单片机I/O P0口)连接,如图4-3所示。(2)、硬件说明使用单片机的P0口来驱动单位数码管8个LED,单位数码管是共阳极的,发光二极管的阳极接高电平,故赋P0口相应位为低电平时,就可以驱动数码管某段点亮。图4-2 共阳极数码管接线图图4-3 单位数码管显示排线连接图 2、八位数码管接线图8位共阴极数码模块电路及接线图,如图4-4所示。J16为位选码接口排线,J12为字形码接口排线,字形码经74HC573(U13)锁存器接到数码管,锁存器LE端经J21短路帽接VCC时,输入数据直通至输出端,当LE端经J21短路帽接JP10时,其输入数据经JP10控制将其锁存至输出端。图4-4 8位共阴极数码管接线图(1)、连接方法:1)、JP18(单片机I/O P1口)和J16(数码管位选码接口)用8PIN排线连接起来。2)、JP10(单片机I/O P0口)和J12(数码管字形码接口)用8PIN排线连接起来。(2)、J21 短路帽使LE接VCC,短路帽JP165 断开。排接线连接如图4-5所示。图4-5 8位数码管显示排线连接图(3)、硬件说明四位数码管是共阴极的。根据硬件电路原理,对单片机P0口写字形码,对单片机P1口某位写0,则与之对应的那位数码管显示P0口输出字形码所对应的数字。五、软件程序设计参考1、让单位数码管显示一个5方式一:#includevoid main()while(1)P0=0x92; 方式二:#includeunsigned char table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;void main()P1=table5;while(1);2、让八位数码管第四位显示一个3#includevoid main()while(1)P1=0xef;P0=0x4f; 3、在八个数码管上显示0、1,27#include#define uint unsigned int #define uchar unsigned char uchar num1;uchar code du=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;uchar code wei=0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe;void delay();void main()while(1)for(num1=0;num10;x-)for(y=110;y0;y-);六、思考题1、 让单位数码管显示一个3(用P2口)2、让八位数码管第三位显示一个2(用P2口控制位选,用P0口控制段选)3、在单位数码管上循环显示数字0-9实验五 按键实验一、实验目的1、掌握单片机键盘与单片机接口2、掌握单片机键盘(独立键盘和矩阵键盘)程序设计方法3、掌握软件消除按键抖动的方法二、设计题目1、用独立按键控制LED亮灭。2、设计一44矩阵键盘,定义键盘数字为0F;编制一位数码管显示按下键盘值程序。3、 实验原理 键盘是计算机系统中不可缺少的输入设备,当按键少时可接成线性键盘(或称独立键盘),即一个键盘占用一个I/O口中一位,当按键较多时,这样的接法占用口线较多。在按键较多时,常将按键接成矩阵的形式,可以节省口线,例如一个I/O口可按44的形式接16个按键。1、独立按键检测原理独立式按键采用每个按键单独占用一个I/O口中的一位结构,即按键的一端与电源地相连,另一端与单片机的任一I/O口中的一位相连。开始时先给该I/O口赋一高电平,然后让单片机不断检测该I/O口是否变为低电平,当按键闭合时,即相当于该I/O口通过按键与地相连,变成低电平;程序一旦检测到I/O口某位变为低电平,则说明连接该位的按键被按下,然后执行相应的指令。 图5-1示出了单片机实验仪的独立键盘模块。它有K1K8 8个独立键盘组成,每个按键有一端公共接地,另一端分别连接至JP5接线排座的8个引脚,可通过这些引脚连接到某个I/O口。图5-1 8个独立按键接线图2、 矩阵键盘检测原理 矩阵键盘通常由列线和行线构成,按键设在行线,列线交点处,行、列线分别连接到按键开关的两端。列线(按键一端)通过电阻接VCC,行线(按键另一端)的接地是通过程序对某I/O口输出数字“0”实现。矩阵键盘的每一个键都有自己的行值和列值,行值和列值的组合是识别这个按键的编码,称为键码。 图5-2示出了单片机实验仪44矩阵键盘模块,它有P-14、P-15、P-16、P-17四行和P-10、P-11、P-12、P-13四列构成(当列线连接到某I/O时,可通过相应口经一电阻与VCC连接,见图1-1),共构成S1S16个按键。四行行线和四列列线分别连接到JP4 接线排座的引脚,可通过它们连接到某个I/O口,实现键盘键盘闭合判断,获得键盘的键值。图5-2 44 矩阵键盘接线图检测是否有键按下和检测哪个键按下的基本原理和过程如下:列线通过上拉电阻接+5V,被钳在高电平状态。若将行线全部输出低电平,则读入列端口开关状态,若为全1111则无键按下,否则有键按下。当有键入时,再逐行逐列检查: 即将行线依次送低电平0,检查列输入状态,如果为全1111,则按键不在此行;否则在此行,且在0电平行与0电平列线相交的那个键按下。由上所述,矩阵键盘的检测,第一步是判断是否有键按下?如有键盘按下,第二步是检测哪个键盘按下?从而得到键码值,最后根据需求,执行相应的程序。 3、按键消抖通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴有一连串的抖动。抖动时间的长短由按键的机械持续特性决定,一般为5ms-10ms。这是一个很重要的时间参数,在很多场合都要用到。按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。按键的动作时序如图5-3所示。一个完整按键过程可以分为以下几个阶段:图5-3 按键的动作过程(1)、未按下的等待状态。在按键未按下的T1时间,I/O口为高电平。此时按键处于空闲状态。(2)、按下的抖动阶段。在按键刚刚按下的时候,因为按键的机械构造、按下力度及时间等因素,造成I/O口电平不稳定,此时I/O口的信号处于抖动状态。抖动的时间为T2。T2一般为5ms-20ms。(3)、有效的按下状态。T3为有效按下按键时间。在有效按下状态时,一个有效的按键动作就产生。(4)、释放抖动状态。与按下的抖动阶段相对应,在释放的时候按键也会有抖动。释放抖动状态的时间为T4.(5)、有效的释放状态。在释放抖动状态结束后就是有效的释放状态了。按键抖动会引起一次按键被误读多次。为确保CPU对按键的一次闭合仅作一次处理,必须去除抖动。在按键闭合稳定时读取按键的状态,并且必须判别到按键释放稳定后再做处理。按键的抖动,可用硬件或软件两种方法来处理。我们在这里仅介绍软件延时消抖,即检测出按键闭合后执行一个延时程序,产生5ms-20ms的延时,让前沿抖动消失后再一次检测按键的状态,如果仍保存闭合状态电平,则确认为真正有按键按下。当检测到按键释放后,也要给5ms-20ms的延时,待后沿抖动消失后才能转让该键的处理程序。4、 硬件电路设计参考1、利用P3.2作为独立键盘输入口,独立键盘选K1;P0.0控制LED灯,LED等选D1。JP9接线排的第6引脚(单片机P3.2)与JP15接线排座的一引脚(独立按键K1)用杜邦线连接,使用独立按键K1。JP10接线排座的第6引脚(单片机P0.0)与JP1接线排座的第一引脚(LED灯D1)用杜邦线连接。2、利用单片机P2口低4位作为矩阵键盘的行线,高4为作为矩阵键盘的列线;利用8PIN 排线将最小系统模块的接线排座J8和矩阵按键模块的接线排座JP4连接(注意引脚号的对应关系)。利用P0口作为数码管的字形码输出口,利用8PIN排线将最小系统模块的接线排座J10和单位数码管模块的接线排座JP3连接(注意引脚号的对应关系)。五、软件程序设计参考1、用按键控制LED亮灭#include#define uchar unsinged char#define uint unsigned intsbit key1=P32;sbit led0=P00;void delay()uint i,j;for(i=500;i0;i-)for(j=110;j0;j-);void main()P3=0xff; while(1) if(key1=0) led0=0; else led0=1; 2、 矩阵键盘程序设计 根据硬件电路设计,其键盘键码示于表5-1。设键盘对应数字如表5-2所示。表5-1 矩阵键盘键码表(S1)EE(S2)DE(S3)BE(S4)7E(S5)ED(S6)DD(S7)BD(S8)7D(S9)EB(S10)DB(S11)BB(S12)7B(S13)E7(S14)D7(S15)B7(S16)77表5-2 矩阵键盘对应数字(S1)7(S2)8(S3)9(S4)A(S5)4(S6)5(S7)6(S8)B(S9)1(S10)2(S11)3(S12)C(S13)0(S14)F(S15)E(S16)D#include#define uchar unsigned char#define uint unsigned intcode char tab16=0xc0,0xf9, 0xa4,0xb0,0x99, 0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1, 0x86,0x8e; void delayms ();uchar kbscan();void display(uchar keydisp); void main ()uchar key; P0=0xc0; while (1) key=kbscan(); display(key); void delayms() uchar i; for (i=200;i0;i-) uchar kbscan () uchar sccode, recode; P2=0xf0; if(P2 & 0xf0)!=0xf0) dlms ( ); if (P2 & 0xf0)!=0xf0) sccode=0xfe; while(sccode&0x10)!=0) P2=sccode; if (P2 & 0xf0)!=0xf0) recode = P2 & 0xf0; sccode= sccode & 0x0f; return (sccode+recode); else sccode=(sccode 1)| 0x01; return(0); void display (uchar keydisp ) uchar keytab16= 0xe7,0xeb,0xdb,0xbb,0xed,0xdd,0xbd,0xee, 0xde,0xbe,0x7e,0x7d,0x7b,0x77,0xb7,0xd7 ; uchar m ;for (m=0;m16;m+) if (keytabm=keydisp) P0=tabm ; 6、 思考题 1、设计题2中,若用P2口作为矩阵键盘接口,硬件和程序应如何修改? 2、设计题2中,若将矩阵键盘对应数字改为如下表所示,程序如何修改? 矩阵键盘对应数字1234567890ABCDEF实验六 中断实验一、实验目的1、 掌握MCS-51单片机中断的工作原理,体会外部中断的使用特点。2、 掌握中断处理程序的编程方法和中断程序编程特点。二、设计题目1、用一按键作为外部中断INT0控制LED灯交替亮熄。2、用一按键作为外部中断INT0,并用单位数码管显示外部中断源INT0的中断次数(0-9)。三、实验原理当CPU 正在执行程序时,单片机外部或内部发生了某一件事情,请求CPU迅速去处理,于是CPU暂时中止当前的工作,转到中断服务处理程序处理所发生的事件,处理完该事件后再回到原被中断的地方,继续做原来的工作,CPU处理事件的过程,称为CPU的中断服务。在MCS-51单片机中,用户(设计者)用3个特殊功能寄存器对中断进行管理。1、中断允许控制寄存器IE(地址A8H) 中断允许控制寄存器IE的功能是控制中断能否进行,即是否允许中断源发出中断和是否允许CPU相应中断。中断允许控制寄存器的格式如表6-1所示。表6-1 中断允许控制寄存器(IE)格式位序号D7D6D5D4D3D2D1D0位符号EA_ET2ESET1EX1ET0EX0功能中断总控允/禁不用T2允/禁串行口允/禁T1允/禁INT1允/禁T0允/禁INT0允/禁寄存器IE各位意义为:EA:中断总开关。EA=1,CPU开中断;EA=0,CPU关中断。ET2、ES、ET1、EX1、ET0、EX0分别是定时器2、串行口、定时器1、外部中断1、定时器0和外部中断0中断允许位。2、 定时器/计数器控制寄存器TCON(地址88HIT1) 寄存器TCON的格式如表6-2所示。其功能用来表示哪个中断源发生中断请求和外部中断源的中断方式。表6-2 寄存器TCON格式位序号D7D6D5D4D3D2D1D0位符号TF1TR1TF0TR0IE1IT1IE0IT0功能T1请求有/无T0请求有/无INT1请求有/无INT1方式下降沿/低电平INT0请求有/无INT0方式下降沿/低电平(1)、TF1,TF0,IE1,IE0分别为中断源T1,T0,INT1,INT0的中断标志,若中断源有中断请求,该中断标志位置1;无中断请求,该中断标志位置0。(2)、IT1,IT0为外部中断IT1和IT0中断触发方式选择,若下降沿触发则IT相应位置1;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论