盐城工学院单片机试验指导书_第1页
盐城工学院单片机试验指导书_第2页
盐城工学院单片机试验指导书_第3页
盐城工学院单片机试验指导书_第4页
盐城工学院单片机试验指导书_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机原理及接口技术实验指导书周云龙编写盐城工学院电气工程学院二。一五年四月实验一 KEIL集成开发环境应用实验一、实验目的1.掌握C51开发环境keil软件项目创建方法2、汇编程序编写2. C51程序编写3、主函数、自定义函数和中断函数编写二、实验备件PC和单片机IDE集成开发软件三、实验要求1、建立一个汇编程序工程2、汇编工程调试3、建立一个C语言程序工程4、C语言工程调试实验二Proteus单片机系统仿真实验一、实验目的1 .掌握Proteus界面功能2、原理图绘制方法2 .住址仿真调试3 、Proteus与 Keil 联调二、实验备件PC、单片机IDE集成开发软件和Proteus仿真软

2、件 三、实验步骤4 、学习Proteus软件2、绘制教材中第150页上图5-75 、Keil 与 Proteus联调实验三单片机最小系统的熟悉一、实验目的在进行其他硬件实验之前,先熟悉实验装置的核心模块一一单片机最小系统模块。掌握该实验模块的电路原理和接口的使用方法。1 .掌握单片机振荡器时钟电路及 CPU工作时序;掌握复位状态及复位电路 设计;掌握单片机各引脚功能及通用I/O 的使用;掌握单片机基本指令的使用。2 .掌握uVision3 IDE集成开发环境,Proteus仿真软件和STC单片机下载软 件ISP的使用。3 .将仿真现象和实验结果进行对比,体会仿真软件的用处。 二、实验设备1.5

3、1仿真器或者用线2.单片机系统板三、实验要求1.连接实验电路,编写简易单片机汇编程序达到下述工作要求:P3.3 口做输入口,外接一脉冲,每输入一个脉冲,P1 口按十六进制加一输出,编写程序使P1 口接的8个发光二极管L0-L7按16进制加一的方式点亮发光二极管。2,将编写的程序经过编译后在 uVision3 IDE软件中生成*.hex机器语言,通 过ISP将*.hex下载到单片机芯片中,观察实验现象。3.用Proteus仿真软件画出实验电路图,将在 uVision3 IDE软件中生成*.hex 下载到Proteus仿真电路图中的单片机芯片中,观察实验现象,比较该现象和在 实验台上的现象是否相同

4、。四、实验原理图和程序框图实验原理图和程序框图如图2-1-1和图2-1-2所示。 说明1、P1 口是准双向口,它作为输出口时与一般的双向口使用方法相同,由准 双向口结构可知:当 P1 作为输入口时,必须先对它置高电平,使内部 MOS 管截止,因内部上拉电阻是 20KQ40KQ,故不会对外部输入产生影响。若不 先对它置高,且原来是低电平,则 MOS管导通,读入的数据不正确。2、延时子程序的延时计算。void time(void) unsigned int i;for (i=0;i<0xFFF;i+);五、实验步骤图2-1-1单片机I/O 口应用一图2-1-2实验程序框图主程用1、系统板上P

5、3.3用插针连至 而脉冲,P1.0P1.7 (JU2)用8芯线连至 JL (L0L7)。要求丽脉冲每按一次,L0L7发光二极管按16进制方式加一 点凫0说明: 丽脉冲每按一次按钮,输出一个负脉冲,而L0L7为带驱动的8路LED发光管,高电平亮,低电平灭。L0L7为引出插孔,JL为引出插座。2、实验示例程序:程序实例如下:#include <reg51.h>#define uchar unsigned char#define uint unsigned intsbit k1 = P3A3;void delay(uint x) (uint i,j;for(i=x;i>0;i-)f

6、or(j=110;j>0;j-);)void main()while(1)(if(k1 = = 0)(delay(10);/去抖延时if(k1 = = 0) P2=P2+1;while(k1=0);)3、在uVision3 IDE集成开发环境中编写单片机程序,进行程序编译,排除所有的错误,直到编译完全成功。4、经过编译后通过ISP将* hex下载到STC单片机芯片中,观察实验现象。5、将在uVision3 IDE软件中生成*.hex下载到Proteus仿真电路图中的单片机芯片中,观察实验现象,实验仿真电路如图 2-1-3所示。选取的元器件:(1)单片机:AT89C51(2)电阻:RES(

7、3)开关:BUTTON(4)瓷片电容:CAP(5)电解电容:CAP-ELEC(6)黄色发光二极管:LED-YELLOW(7)晶振:CRYSTAL六、实验报告1 .说明单片机的各个引脚的功能及作用,比较P0, P3脚的异同?2 .时钟周期、机器周期的关系是什么?在单片机外部晶振为 12M时,机器周 期为多少?当晶振为6M时呢?3 .画出实验原理图。4 .给出单片机程序流程图和程序清单。5 .进行完该项实验后,你对单片机的开发工具和开发过程了解了吗?请画出 单片机开发过程流程图。R1C130pfC230pfR9C310kX1CRYSTALU11918912345678XTAL1P0.0/AD0P0

8、.1/AD1P0.2/AD2XTAL2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A15P1.0P3.0/RXDP1.1P3.1/TXDP1.2P3.2/INT0P1.3P3.3/INT1P1.4P3.4/T0P1.5P3.5/T1P1.6P3.6/WRP1.7P3.7/RD293031图2-1-3硬件仿真图和仿真结果实验四数码管动态扫描显示实验一、实验目的1 .学习和理解数码管动态扫描的工作原理。2 .学习和掌握数码

9、管动态扫描的电路接口设计及程序编写。 二、实验设备1 . USB线2 .单片机最小系统教学实验模块3 .动态数码管显示模块 三、实验要求1,使8位数码管动态显示“0 1 2 3 4 5 6存样”2,使8位数码管动态显示时间2014年10月20日,即2 0 1 4 10 2 0'字样3,用Proteus仿真软件画出实验电路图,将在uVision3 IDE软件中生成*.hex 下载到Proteus仿真电路图中的单片机芯片中,观察实验现象。4,选择相应的实验模块,搭建电路,完成用数码管显示2 0 1 4 10 2 0'。四、实验原理1. 8段数码管显示原理数码管中的每一段相当于一个发

10、光二极管,8段数码管则具有8个发光二极 管。对于 共阳极”的数码管,内部每个发光二极管的阳极被接在一起,成为该各 段的公共选通线;发光二极管的阴极则成为段选线。对于共阴极”数码管,则正好相反,内部发光二极管的阴极接在一起, 阳极成为段选a线。这两种数码管的驱动方式是不同的。当需要点亮共阳极”数码管的一段时,公共段需接高电平(即写逻辑1)、"吕I)该段的段选线接低电平(即写逻辑 0),从而该段被点亮。已当需要点亮 共阴极”数码管的一段时,公共段需接低电平(即写逻辑0)、该段的段选线接高电平(即写逻辑 1),d该段被点亮。数码管的段位顺序如右图所示:一般来说在一个字节中按照dpgfedc

11、ba的顺序放置字型码,比如在一个共阴 极”数码管上要显示“1;则b、c段需被点亮,因此在段选线中写入 06H。例如 使用P0 口接段选线,则使用下面的语句即可点亮数码管:P0=0x06;对应规则:dp->D7 g>D6 f->D5e>D4 d->D3 c->D2 b->D1 a->D0 2.多位数码管的显示在多位8段数码管显示时,为了简化硬件电路,通常将所有位的段选线相应 地并联在一起,由一个单片机的8位I/O 口控制,形成段选线的多路复用。而各 位数码管的共阳极或共阴极分别由单片机独立的I/O 口线控制,顺序循环地点亮每位数码管,这样的数码管驱

12、动方式就称为动态扫描”。在这种方式中,虽然每一时刻只选通一位数码管,但由于人眼具有一定的 视觉残留”,只要延时时间设 置恰当,便会感觉到多位数码管同时被点亮了。8位8段LED动态显示器电原理图如图2-2-1所示。独立的M选调线图2-2-1 8位8段LED动态显示器电原理图表2-1所示为一个8位8段LED动态显示器电路原理图。其中段选线占用一 个8位I/O 口,位选线占用一个8位I/O 口,由于各位的段选线并联,段线码的 输出对各位来说都是相同的。因此,同一时刻,如果各位位选线都处于选通状态 的话,8位LED将显示相同的字符。若要各位 LED能够显示出与本位相应的显 示字符,就必须采用扫描显示方

13、式,即在某一位的位选线处于选通状态时, 其它 各位的位选线处于关闭状态,这样,8位LED中只有选通的那一位显示出字符, 而其它位则是熄灭的。同样,在下一时刻,只让下一位的位选线处于选通状态, 而其他的位选线处于关闭状态。如此循环下去,就可以使各位 同时”显示出将要 显示的字符。由于人眼有视觉暂留现象,只要每位显示间隔足够短,则可造成多 位同时亮的假象,达到显示的目的。五、实验步骤8位共阴极数码管动态扫描显示的单片机电路连线如图2-2-2所示,图中的三角形符号是加在位选线上的驱动,即74LS244,这一举措使得数码管能够得到合 适的亮度。数码管的位选是由P2 口控制,第一个数码管的位选由P2.0

14、控制,数 码管的段选由P0 口控制,P0.7P0.0分别连接数码管的dpa。1、按照图2-2-2的电路原理,用导线正确连接动态扫描方式实验模块和单片机 最小系统模块。图2-2-2 扫描8位LED动态显示器2、实验要求1的示例程序如下:#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intuchar code table" 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/0 9 的字符

15、编码void delay(uchar z)uchar i,j;for(i=z;i>0;i-) for(j=110;j>0;j-);)void main()uchar i,m=0xfe;P0=0x00;/关闭数码管的段选P2=0xff;/关闭数码管的位选while(1)(for(i=0;i<8;i+)(P2=m;/选通某个数码管的位选P0=tablei; /将段码送给上面数码管的段 m=_crol_(m,1);delay(2);将程序进行调试,直至达到实验要求。3.仿真电路图将在uVision3 IDE软件中生成*hex下载到Proteus仿真电路图中的单片机芯 片中,观察实验

16、现象,实验仿真电路如图 2-2-3所示。选取的元器件:(1)单片机:AT89C51(2)电阻:RES(3)排阻:RX8(4)瓷片电容:CAP(5)电解电容:CAP-ELEC(6) 8 位共阴极数码管:7SEG-MPX8-CC-BLUE(7)晶振:CRYSTAL六、实验报告1 .画出实验电路原理图,并简要分析电路的执行过程。2 .画出单片机程序的流程图,给出程序清单,并给予适当注释。3 .如果将数码管换成共阳极,电路中要做那些修改?程序中要做哪些修改, 给出共阳极数码管动态扫描显示的电路和程序清单。4 .实验过程中遇到哪些问题,是如何解决的?图2-2-3硬件仿真图和仿真结果实验五中断优先级控制及

17、中断保护实验一、实验目的1、掌握单片机中断机制2、熟悉中断的应用和编程 二、实验设备USB线单片机最小系统发光二极管阵列显示模块2路手动土单脉冲三、实验要求1 .连接单片机最小系统和发光二极管阵列的电路并编写程序,学习单片机 中断机制及中断优先级和中断保护的方法。2 .选择相应的实验模块,画出电路图,实现下列功能:使用手动单脉冲SP1 连接INT0 (P3.2),手动单脉冲SP2连接INT1 (P3.3),单片机P2 口连接8个 发光二极管,将单片机的电源+5V与地线连接上。要求:在平时状态下,发光二极管行以 200ms的时间问隔,依次点亮。 在 INT1中断时亮一半,暗一半;在INT0中断时

18、全灭,INT0中断为高优先级,INT1 中断为低优先级。3 .选择相应的实验模块,画出电路图,实现下列功能:使用手动单脉冲SP1 连接INT0 (P3.2),手动单脉冲葩连接INT1 (P3.3),单片机P2 口连接8个 发光二极管,将单片机的电源+5V与地线连接上。要求:在平时状态下,发光二极管行以200ms的时间问隔,依次点亮。单脉冲SP1按下时INT0中断处理程序点亮P2.0对应的发光管2秒钟,其他发光管 熄灭;单脉冲SP2按下时P2.1对应发光管点亮2秒,其他发光管熄灭,INT0中 断为低优先级,INT1中断为高优先级。4 .用Proteus仿真软件画出实验电路图,将在uVision3

19、 IDE软件中生成*.hex 下载到Proteus仿真电路图中的单片机芯片中,观察实验现象。四、实验原理通常一个微处理器读取外围设备(如键盘等)的输入信息的方法有轮询(Polling)及中断(Interrupt)两种。轮询的方法是 CPU依照某种既定法则,依序询 问每一外围设备I/O是否需要服务,此种方法CPU需花费一些时间来做询问服 务,当I/O设备增加时,询问服务时间也相对增加,因此势必浪费许多CPU时 间,降低整体运行的效率。使用中断是一个较好的解决方法。 使用中断使系统对 外部设备的请求响应更加灵敏,并且不需要占用CPU的时间进行轮询。但是,当使用中断,特别是有多个中断嵌套时要特别注意

20、内存单元内容的保护。1. 80C51中断结构当中断发生后,程序将跳至对应中断入口地址去执行中断子程序,或称中断 服务例程(Interrupt Service Routine),这些特殊的地址称为中断向量,例如当 80C51外部中断INTl发生时,会暂停主程序的执行,跳至地址 0013H去执行中 断服务例程,直到RETI指令后,才返回主程序继续执行。MCS-51系列的程序内存中有7个矢量地址,叙述如下:(1) 00H复位当第9脚RESET为高电平,CPU会跳至地址00H处开始执行程序,亦即程 序一定要从地址00H开始写起。(2) 03H(外部中断0)当INT0引脚由高电位变至低电位时,CPU会接

21、受外部中断0,并跳至地址 03H处去执行中断子程序。(3) 0BH(计时/计数器0中断)当CPU接受计时/计数器0中断置位而产生中断要求时,会跳至地址0BH处去执行中断子程序。(4) 13H(外部中断1)当INTl引脚由高电位变至低电位时,CPU会接受外部中断1,并跳至地址 13H处去执行中断子程序。(5) 1BH(计时/计数器1中断)当CPU接受计时/计数器1中断置位而产生中断要求时,会跳至地址1BH刻去执行中断子程序。(6) 23H修行中断1)当用行端口传送数据或接收数据完毕时,CPU会接受串行中断,并跳至地址 23H处去执行中断子程序。(7) 2BH(计时/计数器2中断)当CPU接受计时

22、/计数器2产生中断要求时,会跳至地址 2BH处去执行中 断子程序。此中断仅8052系列才有。2.中断使能位8051针对中断提供两层使能,第一层为 EA全局使能控制,第二层为分别控 制EX0, ET0、EXl、ETl、ES、ET2。当8051在初始状态时,寄存器的各个中 断使能位都预设为“0;即所有中断都禁止,故欲允许中断时,应先使能相对应 的中断。当中断产生后,此中断状态会记录于定时器/计数器控制寄存器(Timer/CounterControlRigister, TCON)的中断请求标志(InterruptRequest flag)中,当标 志被设立,表示中断已发生。由图 2-3-1可知,当外

23、部中断或定时器 0、定时器 1中断发生时,CPU都可以判别是哪种中断。因此当这四个中断发生时,中断服 务例程被执行后,CPU会主动清除中断请求标志,对于其他的中断,由于 CPU无法判别,因此中断请求标志需由程序指令来清除。另外,在 TCON中尚有两 个位称为中断型式控制位(Wype control bit),经由这两个位的设定,可以边择外 部中断为负边缘触发或低电平触发。欲设定中断使能与否,必须规划位于特殊功能寄存器中的中断使能寄存器 IE(Interrupt Enable Register),其位于地址 A8H ,是一个可位寻址的寄存器。 3.中断保护由于各个中断执行的起始地址间仅有 8个B

24、ytes,因此欲在此空间内完成中断 服务例程是有困难的。通常中断服务例程是置于主程序后面,而在中断向量地址只书写跳跃指令,跳至相对应中断服务例程去执行。当执行新的中断服务例程时, 注意不可以破坏旧有的数据和状态,因此在编写时还要保存各个寄存器的数据。 通常会被更改的数据(如ACC、PSW等),可以利用堆栈在执行中断服务例程之 前就将其PUSH起来,待执行结束后再将相关寄存器 POP即可。另外,因为8051 可任意选择四个寄存器库中的一组寄存器,所以利用选择不同寄存器库的方式亦可达到数据保存的目的。4,中断优先级8051对于各种中断优先权采用双层结构,首先对于优先权可由中断优先权寄存器(Inte

25、rrupt Priority IP)设定该中断为高优先权或低优先权,高优先权可以中断 低优先权,但是当优先权相同时(都为高优先权或低优先权),则由内部的轮询顺序决定哪一个中断被接受,轮询次序如图2-3-1所示IP寄存器:PSPT1PX1PT0PX0图2-3-1 MCU内部中断机制PX0,PX1:外部中断0, 1的中断优先级控制;1-高优先级,0-低优先级PT0,PT1定时器/计数器0, 1的中断优先级控制;PS坤行口中断优先级控制。IP中对应位全为零时,CPU按照片内硬件优先级来顺序响应中断: 中断源外部中断0高定时器/计数器0外部中断1定时器/计数器1;用行口中断低五、实验步骤本实验将练习使

26、用INT0, INT1的中断,利用按键来触发外部中断的发生。并 通过两个中断先后到达的方法,来学习中断优先级的意义与控制。1、电路说明在图2-3-2中,主程序执行时,单片机端口 P2所接的LED由P2.7至P2.0 次一颗循环点亮。当外部中断 0产生后,执行该中断子程序,此时 P2.0对应的 二极管亮,其他二极管熄灭。2秒钟后,返回主程序继续中断前的工作。INT1 中断子程序则为点亮P2.1对应的二极管,其他二极管熄灭。注意,由于每次在 按键按下或放开可能会有抖动现象,因而必须进行必要的保护,以免产生二次以 上的相同中断信号。在程序主循环进行时,当 而 按下,相应发光管点亮后,立即再按下 SP

27、2 , 看反应如何;在程序主循环进行时,按下葩,相应发光管点亮后,立即按下雨, 观察反应。电路连线如图2-3-2:图2-3-2实验电路参考2 .程序设计先按SP1执行INT0中断子程序,在此中断子程序未结束前再按 SP2 ,或是先按SP2执行INT1中断子程序,在此中断子程序未结束前再按 SP1 ,或两者同 时按,观察1ED亮暗的情形即可观察中断优先权执行的情形。编写并运行程序,观察是否符合理论分析的结果。3 .仿真电路图将在uVision3 IDE软件中生成*.hex下载到Proteus仿真电路图中的单片机芯 片中,观察实验现象,实验仿真电路如图 2-3-3所示。选取的元器件:(1)单片机:

28、AT89C51(2)电阻:RES(3)开关:BUTTON(4)瓷片电容:CAP(5)电解电容:CAP-ELEC(6)黄色发光二极管:LED-YELLOW(7)晶振:CRYSTAL图2-3-3硬件仿真图和仿真结果六、实验报告画出电路原理图,并简要分析工作原理;提供程序清单,适当给出注释;分析51单片机的中断运行的机制,它具有那些中断,对应的中断矢量地址是 什么?中断使能位是什么?各中断源的硬件优先级的顺序是怎样的?哪个寄存器能够控制单片机中断源 的优先级?怎样控制?七、参考程序清单实验要求2:使用单脉冲 轴连接INTO (P3.2),单脉冲葩连接INT1 (P3.3),单片机P2 口连接8个发光

29、二极管,将单片机的电源+5V与地线连接上要求:在平时状态下,发光二极管行以200ms的时间问隔,依次点亮。在INT1中断时亮一半,暗一半;在INT0中断时全灭。#include <reg51.h>#include <intrins.h> #define uchar unsigned char#define uint unsigned int uchar i,j,aa;void delay(uint z)(uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);)void init()(IT0=1;IT1=1;EA=1;EX0=1E

30、X1=1PX0=1/INT0边沿触发 /INTl边沿触发 /开总中断/使能INT0/使能INTl/中断0优先)void main()(init();aa=0x01;while(1)(P2=aa;delay(200);aa=_crol_(aa,1);aO!环左移一位)void int0() interrupt 0(for(i=8;i>0;i-)(P2=0x00;/P2 口送出00H使灯熄灭,循环8次delay(500);)void int1() interrupt 2(for(j=8;j>0;j-)(P2=0x0f; /低4位亮,高四位暗 delay(500);P2=0xf0; /低

31、4位暗,高四位亮 delay(500);)实验要求3:使用单脉冲 轴连接INT0 (P3.2),单脉冲 葩连接INT1 (P3, 单片机P2 口连接八个发光二极管,将单片机的电源+5V与地线连接上。要求:在平时状态下,发光二极管行以200ms的时间问隔,依次点亮。单脉冲雨按下时INT0中断处理程序点亮P2.0对应的发光管2秒钟,其他发光管 熄灭;单脉冲 而2按下时P2.1对应发光管点亮2秒,其他发光管熄灭。#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsig

32、ned int uchar aa,i,i;void delay(uint z)(uint x,y;for(x=z;x>0;x-) for(y=110;y>0;y-);)IT0=1; /INT0边沿触发IT1=1; /INTl边沿触发EA=1; 开总中断EX0=1; /使能 INT0EX1=1; /使能 INTlPX1=1; /中断1优先)void main()(init();aa=0x01;while(1)(P2=aa;delay(200);aa=_crol_(aa,1);/a0!环左移一位) void int0() interrupt 0(for(i=0;i<4;i+)(P

33、2=0x01;/点亮 P2.0delay(500);)void int1() interrupt 2(for(j=0;j<4;j+)(delay(500);)实验六低频脉冲计数器实验一、实验目的1、掌握定时器的工作原理2、学习单片机定时器的应用设计和调试二、实验设备1、USB 线2、单片机最小系统3、波形信号发生器或时钟源模块4、数码管动态显示三、实验要求1 .连接电路并编写程序,使单片机定时器/计数器T0工作于定时器模式,T1 工作于计数模式,即作为一个低频脉冲计数器,将实验箱信号源的值分别设为 10Hz, 100Hz, 1000Hz, 10000Hz,通过单片机在1s内对脉冲计数,要

34、求在数码 管上分别显示对应的频率值。2 .用Proteus仿真软件画出实验电路图,将在 uVision3 IDE软件中生成*.hex 下载到Proteus仿真电路图中的单片机芯片中,观察实验现象。四、实验原理805l单片机内部有两个16位可编程定时/计数器,记为 T0和TL 8052单 片机内除了 T0和T1之外,还有第三个16位的定时器/计数器,记为T2。它们 的工作方式可以由指令编程来设定,或作定时器用,或作外部事件计数器用。定时器T0由特殊功能寄存器TL0和TH0组成,定时器Tl由特殊功能寄存 器TLl和TH1组成。定时器的工作方式由特殊功能寄存器 TMOD编程决定,定 时器的运行由特殊

35、功能寄存器 TCON编程控制。T0、T1在作为定时器时,规定的定时时间到达,即产生一个定时器中断,CPU转向中断处理程序,从而完成某种定时控制功能。 T0、T1用作计数器使用 时也可以申请中断。作定时器使用时,时钟由单片机内部系统时钟提供; 作计数 器使用时,外部计数脉冲由P3 口的P3. 4(或P3. 5)即T0(或T1)引脚输入。方式控制寄存器TMOD的控制字格式如下:76543210GATEC/TM1M0GATEC/TM1M0T1/ T0/低4位为T0的控制字,高4位为T1的控制字。GATE为门控位,对定时器 /计数器的启动起辅助控制作用。GATE=l时,定时器/计数器的计数受外部引 脚

36、输入电平的控制。此时只有 P3 口的P3. 2(或P3. 3)引脚INT0(或INT1)为1才能启动计数;GATE = 0时。定时器/计数器的运行不受外部输入引脚的控制。C/T为方式选择位。C斤=0为定时器方式,采用单片机内部振荡脉冲的12分频信号作为时钟计时脉冲,若采用12MHz的振荡器,则定时器的计数频率为1MHZ,从定时器的计数值便可求得定时的时间。CE计数器方式。采用外部引脚(T0为P3.4, Tl为P3.5)的输入脉冲作为 计数脉冲,当T0(或T1)输入信号发生从高到低的负跳变时,计数器加 1。最高 计数频率为单片机时钟频率的1/24。M1、M0二位的状态确定了定时器的工作方式,详见

37、表 4-1。表4-1定时器工作模式表:MlM0功能说明00方式0,为13位定时器/计数器01方式1,为16位的定时器/计数器l0方式2,为常数自动重新装入的8位定时器/计数器11方式3,仅适用于T0,分为二个8位计数器方式0与方式1的差别是计数器的位数,前者13位,后者16位。定时器内部结构逻辑图如图2-4-1所示INT1中断图2-4-1定时器内部逻辑图五、实验步骤1 .电路连接参考以下电路示意图连接电路:时钟源图2-4-2计数器参考电路示意图2 .软件编写 示例程序如下: #include <reg51.h> #define uchar unsigned char #define

38、 uint unsigned int uchar table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /0 9 的字符 编码uchar timecount;unsigned long count;uchar b1,b2,b3,b4,b5,b6,b7,b8;void display(unsigned long count); /昵示子程序void delay(uint z); 延时子程序void main(void) count=0;/计数脉冲赋初值0/TMOD=0x15;/给TOMD送方式控制字,使 T0为计数方式,T1为定时方式T

39、H1=(65536-50000)/256;TL1=(65536-50000)%256;TH0=0;TL0=0;ET0=1;ET1=1;EA=1;TR0=1;TR1=1;while(1) if(timecount=20) TR0=0;TR1=0;/1秒时间到,关掉定时/计数器display(count);)void delay(uint z)(uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);) void display(unsigned long a)(b1=a%10;/计算 b1 位a=a/10;b2=a%10; 计算 b2 位a=a/10;b3

40、=a%10;/计算 b3 位b4=a/10;/计算 b4 位P2=0x7f;/送入右边第1位数码管位选信号,显示数字P0=tableb1;/送入右边第1位数码管的段选信号delay(1);P2=0xbf;/送入右边第2位数码管位选信号,显示数字P0=tableb2;/送入右边第2位数码管的段选信号delay(1);P2=0xdf;/送入右边第3位数码管位选信号,显示数字P0=tableb3;/送入右边第3位数码管的段选信号delay(1);P2=0xef;/送入右边第4位数码管位选信号,显示数字P0=tableb4;/送入右边第4位数码管的段选信号delay(1);)void t1 (void

41、) interrupt 3 using 1中断服务函数TH1=(65536-50000)/256;TL1=(65536-50000)%256; timecount+;)3 .仿真电路图将在uVision3 IDE软件中生成*hex下载到Proteus仿真电路图中的单片机芯 片中,观察实验现象,实验仿真电路如图 2-4-3所示。选取的元器件:(1)单片机:AT89C51(2)电阻:RES(3)排阻:RX8(4)瓷片电容:CAP(5)电解电容:CAP-ELEC(6) 8 位共阴极数码管:7SEG-MPX8-CC-BLUE(7)晶振:CRYSTAL虚拟检测仪器:(1)单击工具栏按钮夏,然后在对象选择

42、器中选择 COUNTER TIMER (计图2-4-4计数/定时器数/定时器),如图2-4-3所示,打开其属性编辑框,单击运行模式下的下拉菜单, 如图2-4-4所示,可选择计时、频率、计数模式,当前设置为频率计工作方式。图2-4-3计数/定时器(2)数字时钟单击按钮,在对象选择器中选择 DCLOCK (数字时钟)。在需要添加信号 的或终端单击即可完成添加 DCLOCK输入信号。当前设置频率值为1000Hz,如 图2-4-5所示。Digital Clock G,.Clock TypeGeneiatoi Narne:|dkTWhGENERATORSDCSINEAnafcauH rppes<S

43、ine 小卬物 CPVrSn 。日eE?fx)ncntC-SFFMFira! Edge AtFrequency |HziPeraad (Sec4l:1000=l>PULSEEXPSFFMPWLIN FILE AUDIODigital Types O Ste« Slate O Single EdasSingle PdseDSTATE DEDGE PULSEGUICElsdai.fi Bftfoie? hJanualEcfts?DCLOCKd HEe Prcperlie:CancelDPATTERN图2-4-5数字时钟的选择和设置8位共阴极数码管C122pFX1U119* -RN1

44、220C212M1822pFR110kC3H产10uF XTAL1XTAL2RSTP0.7/AD7P2.0/A829 -30 31:PSENALEEAP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WR_ P3.7/RD-.39a»38b/ 37c/*36d 35e34f_y»33g 32hP0.0/AD0P0.1/AD1P0.4/AD4P0.2

45、/AD2P0.3/AD3P0.5/AD5P0.6/AD6 21 22 23J24 252627 28 10 11五 1314 1516五clkI C CLKCERSTmnnnnnn ljulajljcloAT89C51图2-4-3硬件仿真图和仿真结果输入计数频率为1000Hz,在数码管上显示的是1004 (百分误差小于0.005) 六、实验报告1 .画出电路原理图。2 .对51单片机的可编程计数器/定时器的工作原理进行说明。3 .给出根据实验要求编写程序清单、并给予适当注释。4.请说明在本实验中T0计数器是怎样工作的实验七矩阵式键盘输入实验一、实验目的1 .学习矩阵式键盘工作原理2 .学习矩阵

46、式接口的电路设计和程序设计 二、实验设备1 . USB线2 .单片机最小系统实验教学模块3 .矩阵式键盘实验模块4 .动态扫描数码管显示模块三、实验要求1 .在矩阵式键盘中的某个键被按下时,8位LED动态显示器上最低位显示 该键对应的字符,以前的字符向高位推进 1位(即类似于计算器)。2 .在矩阵式键盘中的某个键被按下时,8位LED动态显示器上最高位显示 该键对应的字符,以前的字符向低位推进 1位。3 .用Proteus仿真软件画出实验电路图,将在uVision3 IDE软件中生成*.hex 下载到Proteus仿真电路图中的单片机芯片中,观察实验现象。四、实验原理矩阵式由行线和列线组成,按键

47、位于行、列的交叉点上。如图 2-5-1所示, 一个4*4的行、列结构可以构成一个由16个按键的键盘。很明显,在按键数量 较多的场合,矩阵式键盘与独立式键盘相比,要节省很多的I/0 口。图2-5-1矩阵式键盘结构1 .矩阵式键盘工作原理按键设置在行、列交节点上,行、列分别连接到按键开关的两端。行线通过 上拉电阻接到VCC上。平时无按键动作时,行线处于高电平状态,而当有按键 按下时,列线电平为低,行线电平为低。这一点是识别矩阵式键盘是否被按下的 关键所在。因此,各按键彼此将相互发生影响,所以必须将行、列线信号配合起 来并作适当的处理,才能确定闭合键的位置。2 .按键识别方法下面以图2-5-2中5号

48、键被按下为例,来说明此键是如何被识别出来的。前已述及,键被按下时,与此键相连的行线电平将由与此键相连的列线电平 决定,而行线电平在无键按下时处于高电平状态。 如果让所有列线处于高电平那 么键按下与否不会引起行线电平的状态变化,始终是高电平,所以,让所有列线处于高电平是没法识别出按键的。现在反过来,让所有列线处于低电平,很明显, 按下的键所在行电平将也被置为低电平, 根据此变化,便能判定该行一定有键被 按下。但我们还不能确定是这一行的哪个键被按下。所以,为了进一步判定到底 是哪一列的键被按下,可在某一时刻只让一条列线处于低电平, 而其余所有列线 处于高电平。当第1列为低电平,其余各列为高电平时,

49、因为是键 5被按下,所 以第1行仍处于高电平状态;当第2列为低电平,其余各列为高电平时,同样我 们会发现第1行仍处于高电平状态,直到让第3列为低电平,其余各列为高电平 时,因为是5号键被按下,所以第3行出现低电平,据此,我们确信第 3行第3 列交叉点处的按键即5号键被按下。根据上面的分析,很容易得出矩阵键盘按键的识别方法, 此方法分两步进行。 第一步,识别键盘有无健被按下;第二步,如果有键被按下,识别出具体的按键。 分述如下:识别键盘有无键被按下的方法是:让所有列线均为低电平,检查各行线电平 是否有低电平,如果有,则说明有键被按下,如果没有,则说明无键被按下(实际编程时应考虑按键抖动的影响,通

50、常总是采用软件延时的方法进行消抖处理)。 识别具体按键的方法是(亦称之为扫描法):逐列置低电平,并检查各行线电平 的变化,如果某行电平由高电平变为低电平, 则可确定此行此列交叉点处按键被 按下。五、实验步骤P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P3.0 P3.1 P3.2 P3.3P1.7 P1.6 P1.5 P1.4图2-5-2实验硬件连线图1、按照图2-5-2的电路图,用导线将矩阵式键盘、数码管动态扫描显示模 块和单片机的最小系统实验模块连接正确。2、示例程序如下:#include <reg51.h>#include <intrins.h>

51、#define uchar unsigned char#define uint unsigned intuchar code table=0x3f,0x06,0x5b,0x4f,0x66, 0x6d, 0x7d,0x07,0x7f, 0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00;uchar Display_Buffer= 16,16,16,16,16,16,16,16; void delay(uint z) uint x,y;for(x=z;x>0;x-) for(y=110;y>0;y-);kscan(void)uchar i, temp,num=16; for(i=0;i<4;i+) P1=_crol_(0xef,i); 逐列扫描 temp=P3;temp=temp & 0x0f; if(temp!=0x0f) delay(20); temp=P3; temp=temp & 0x0f; if(temp!=0x0f) temp=(P1&0xf0)|( P3&0x0f); switch(temp)

温馨提示

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

评论

0/150

提交评论