实验五 定时器实验

合集下载

实验五_定时器实验

实验五_定时器实验

实验五_定时/计数器实验1.实验目的:学习定时/记数器编程和调试方法。

2.实验内容:P1中接有八个发光二极管,编程使八个管同时点亮,又同时熄灭,时间1S, 设晶振为12MHz。

机器周期为1us.分析:利用T1完成50ms的定时,采用定时方式1,先计算T1初值50ms(3CB0H),50*20=1000MS=1S。

用KEILC51编写源程序,并编译产生HEX代码。

用Proteus绘制原理图,电脑设联调仿真。

3.实验器材:电脑,单片机开发板DOFLY(LY-51S),Proteus仿真软件,keil C51软件,连线等。

4.实验原理及电路图:MCS-51单片机有两个16位的定时计数器T0和T1,它们都有定时和对外部事件进行计数的功能,可用于定时控制、对外部事件检测和计数等场合。

计数和定时实质上都是对脉冲信号进行计数,只不过脉冲源不同而已。

当工作在定时方式时,计数脉冲来自单片机的内部,即振荡器信号12分频后作计数脉冲,每个机器周期的时间使计数器加1,由于计数脉冲的频率是固定的(即每个脉冲为1个机器周期的时间),故可通过设定计数值来实现定时功能;当工作在计数方式时,计数脉冲来自单片机的引脚,每当引脚上出现一个脉冲时,计数器加1,从而实现计数功能。

可以通过编程来指定定时/计数器的功能,以及它的工作方式。

本实验中用定时/记数器T1用作定时,工作方式1,其定时时间50毫秒,中断控制P1连接的8个发光二极管同时点亮,同时熄灭。

5.实验程序:/* P1中接有八个发光二极管,编程使八个管同时点亮,又同时熄灭,时间1S,设晶振为12MHz。

(计数时钟周期1us)分析:利用T1完成50ms的定时,采用定时方式1,先计算计数初值:*/#include <reg51.h>int delay=0;Timer1( )interrupt 3 using 1 /*T1中断服务程序*/{ if(delay>=20){ P1=~P1 ; /*定时时间到,下一只LED亮*/delay=0;}else delay++;TH1=0x3c;TL1=0xb0; /*计数初值重载*/}void main(void){ TMOD=0x10; /*T1工作在定时方式1*/TH1=0x3c;TL1=0xb0; /*预置计数初值*/EA=1;ET1=1; /*CPU开中断,允许T1中*/TR1=1; /*启动T1开始定时*/P1=0x00; /* LED亮*/do{ }while(1); /*等待中断*/}6.实验步骤:按照自己实验的步骤详细写。

实验五 定时器应用实验

实验五 定时器应用实验

实验五定时器应用实验一、实验目的1、学习MCS-51单片机中定时器工作方式和定时/计数功能;2、掌握定时器用中断方式产生延时的编程方法,利用定时器控制产生占空比可变的PWM波。

二、实验内容1、编写程序,利用定时器定时,控制P1.0口输出PWM波,用D1区的按键KEY1和KEY2实现占空比的增加和降低。

用示波器查看P1.0口输出波形。

2、利用定时器定时产生控制P1.0口输出1Hz或250Hz的PWM波。

3、无示波器,可用产生的可变的PWM波,控制1位LED灯渐亮和渐暗控制效果。

三、编程提示1、51单片机有两个16位内部定时器/计数器。

若是计数内部晶振驱动时钟,则是定时器;若是计数8051的输入引脚的脉冲信号,则它是计数器。

定时器实际上也是工作在计数方式下,只不过对固定频率的脉冲计数。

由于脉冲周期固定由计数值可以计算出时间,有定时功能。

定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。

TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。

TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

2、TMOD1)M1M0工作方式控制位2)定时器方式或计数器方式选择位若C/T=1时,为计数器方式;C/T=0时,为定时器方式。

3)GATE定时器/计数器运行门控标志位当GATE=1时,T/C的启动受双重控制,即要求INT0(或INT1)引脚为高电平且TR0(或TR1)置1时,相应的T/C才被选通工作。

若GATE=0,T/C的启动仅受TR0(或TR1)控制,即置1,T/C就被选通,而不管INT0(或INT1)的电平是高还是低。

3、TCONTF0、TF1分别是定时器/计数器T0、T1的溢出中断标志位,加法计数器计满溢出时置1,申请中断,在中断响应后自动复0。

TF产生的中断申请是否被接受,还需要由中断是否开放来决定。

TR1、TR0分别是定时器/计数器T1、T0的运行控制位,通过软件置1后,定时器/计数器才开始工作,在系统复位时被清0。

实验五定时器实验

实验五定时器实验

实验五定时器实验一.实验要求由8051内部定时器1,按方式1工作,在P0口的P0.0引脚产生一个方波信号,使用示波器观察波形,并将获得的波形与定时器设定的时间相比较。

二.实验目的1.学习8051内部计数器的使用和编程方法。

2.进一步掌握中断处理程序的编程方法。

三.实验电路及连线P0.0接LED,分出一条线接虚拟示波器。

四.实验说明1.关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。

内部计数器在单片机中主要有定时器和计数器两个功能。

本实验用的是定时器,有关计数器的说明请查阅实验七。

2.内部计数器用作定时器时,是对机器周期计数。

每个机器周期的长度是12个振荡器周期。

因为实验系统的晶振是11.0592MHz,所以定时常数的设置可按以下方法计算:机器周期=12÷11.0592MHz=1.0857μS(65536-定时常数)*1.0857μS=50mS定时常数=4C00H3.定时器的有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。

TMOD用于设置定时器/计数器的工作方式0~3,并确定用于定时还是用于计数。

TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。

4.在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。

五.实验框图程序框图:N查Y显T1LED.ASM主程序框图五、实验步骤1.观察电路原理图,确定51定时器的工作方式为方式1,计算计时器的初值,编程实现工作方式的设置,中断初始化设置。

2.按照流程图,编写主程序和中断服务程序。

编程过程中学会使用KEIL 软件修改错误。

3.将程序装载到单片机中执行,观看现象(实验报告中说明现象)。

4.如果显示不符合程序要求,回到步骤1修改程序,然后重复步骤2.六、思考如何实现扬声器不同声音的发出?如何实现秒表?中断服务程序。

实验五 中断与定时(计数)器实验(Keil)

实验五  中断与定时(计数)器实验(Keil)

实验五中断与定时/计数器实验一、实验目的1.了解单片机中断与定时器工作原理,掌握中断与定时器程序结构;2.掌握在µVision环境中调试中断与定时器程序的方法。

二、实验仪器和设备Keil软件;THKSCM-2综合实验装置;三、实验原理及实验内容1.示例及相关设置(1)建立一个文件夹:lx51。

(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx51.asm文件名存盘到lx51文件夹中。

ORG 0000HLJMP MAINORG 0003HMOV P2,ARL ARETIORG 0040HMAIN:MOV SP,#5FHMOV A,#0FEHSETB EASETB EX0SETB IT0SJMP $END(3)在lx51文件夹下建立新工程,以文件名lx51存盘(工程的扩展名系统会自动添加)。

(4)在Project菜单的下拉选项中,单击Opt ions for Target ‘Target1’,在弹出的窗口中要完成一下设置:○1单片机芯片选择A T89C51选择完器件,按“确定”后会弹出一个提示信息框,提示“Copy Startup Code to Project Folder and Add File to Project?”,选择“是”。

○2晶振频率设为11.0592MHz。

○3Output标签下的Create HEX File前小框中要打钩。

○4在Debug标签选择Use Simulator(软件模拟)。

(5)在Project菜单的下拉选项中,单击build Target 选项完成汇编,生成目标文件(.HEX)。

按F5运行程序。

(6)在P3窗口的P3.2位单击鼠标(模拟INT0引脚信号),观察P2窗口变化。

(7)修改程序,使之适合字节数大于8的中断服务情况。

(8)利用单片机最小系统板演示该程序的运行情况。

2.示例及相关设置(1)建立一个文件夹:lx52。

(2)利用菜单File的New选项进入编辑界面,输入下面的源文件,以lx52.asm文件名存盘到lx52文件夹中。

定时器的实验报告

定时器的实验报告

一、实验目的1. 理解定时器的基本原理和工作方式。

2. 掌握定时器的配置和使用方法。

3. 通过编程实现定时器的定时功能。

4. 学习定时器中断的应用。

二、实验环境1. 实验设备:单片机实验板、电源、连接线等。

2. 实验软件:Keil uVision 4、IAR EWARM等C语言开发环境。

三、实验原理定时器是一种用于实现时间延迟的硬件模块,它能够在预定的时间内产生中断或完成特定的操作。

定时器通常由计数器、控制寄存器、时钟源等组成。

定时器的工作原理是利用时钟源产生的时钟信号对计数器进行计数,当计数器达到预设值时,触发中断或完成特定操作。

四、实验内容1. 定时器基本配置(1)设置定时器模式:根据实验需求,选择定时器的工作模式(如模式0、模式1等)。

(2)设置定时器时钟源:选择定时器时钟源(如系统时钟、外部时钟等)。

(3)设置定时器计数初值:根据实验需求,设置定时器计数初值。

2. 定时器定时功能实现(1)编写程序初始化定时器:配置定时器模式、时钟源、计数初值等。

(2)编写定时器中断服务程序:在中断服务程序中实现定时功能,如控制LED闪烁、读取传感器数据等。

3. 定时器中断应用(1)配置定时器中断:设置定时器中断优先级、中断使能等。

(2)编写定时器中断服务程序:在中断服务程序中实现所需功能,如采集数据、发送数据等。

五、实验步骤1. 编写程序初始化定时器:设置定时器模式、时钟源、计数初值等。

2. 编写定时器中断服务程序:实现定时功能,如控制LED闪烁。

3. 编写定时器中断配置程序:设置定时器中断优先级、中断使能等。

4. 编译、下载程序:将编写好的程序编译生成HEX文件,通过编程器下载到实验板上。

5. 运行实验:观察实验现象,如LED闪烁频率、数据采集等。

六、实验结果与分析1. 定时器定时功能实现实验结果显示,定时器能够按照设定的定时时间产生中断,中断服务程序能够正确执行。

例如,LED闪烁频率与定时时间一致。

基础实验五定时器T1的应用

基础实验五定时器T1的应用

实验五定时器T1的应用
【实验目的】
1、掌握CC2530的定时器查询方式使用方法;
2、掌握CC2530GPIO 的配制方法;
3、掌握IAR 编译环境的使用;
【实验设备】
【实验步骤】
第一步:打开...\IAR 基础实验\Timer1\Timer1.eww 工程
第二步:选择Debug 或Release 工程配置,配置正确的配置选项和文件,请参照基础实验一,通过点击Project 下拉菜单的Rebuild All项来编译应用工程,如下图
第三步:按CTRL+D 键或从Project 下拉菜单中单击“Download and Debug”菜单项,下载
应用程序
第四步:按F5 键或者从Debug 下拉菜单中单击“go”菜单项,运行应用程序。

第五步:查看实验结果,CC2530EN网关板上四个LED 指示灯的变化情况
【实验总结】
通过本次实验,不仅掌握了CC2530的定时器查询方式使用方法,还掌握了CC2530GPIO 的配制方法以及编译环境的使用;总的来说,这次实验让我收获很大,学到了很多实际应用的东西,希望下一次实验能有更大的进步。

数电实验报告:实验5-555定时器

数电实验报告:实验5-555定时器

广东海洋大学学生实验报告书(学生用表)
实验名称 课程名称 课程号 学院(系) 专业 班级 学生姓名 学号 实验地点 实验日期
实验5 555定时器
一、实验目的
掌握555集成定时器的基本应用。

二、实验仪器及芯片
1.实验仪器:直流稳压电源、万用表、双踪示波器、数字实验箱。

2.芯片:555定时器两片、电阻与电容若干。

555定时器的管脚排列如下:
D
三、预习要求
1.复习555集成定时器的电路结构、工作原理及其特点。

2.查阅555的有关应用实例。

四、实验内容及步骤:
1.555多谐振荡器
按图(1)连接检查无误后,方可接上电源。

然后观察输出端(3脚)观察高低电平,记录周期(频率)。

注意图中的电容正负极,6引脚接电容正极 +5V 10K
V 0 0
V 10K 0.01µF
100µF
图(1)555多谐振荡器 图(2)555单稳态触发器
2.555单稳态触发器 按图(2)连接,图中6接电容+,1接电容另外一端,电容值先用100uF (,再改用用470 uF )。

GDOU-B-11-112
图(2)中的V i来源于实验台靠近下方的数字逻辑输出的某一个,正常情况下接高电平,实验中将它拨到低电平,马上再拨回到高电平。

V o接实验台偏上方的逻辑电平输入。

检查无误后,方可接上电源。

五、实验报告
1.整理各实验电路、实验数据记录或者自行画出波形图;
2.将理论值与实际测试值进行比较分析和讨论;
3.思考题:
在555单稳态触发器中,对输入信号的脉冲宽度有无要求?。

(完整word版)实验5定时器计数器实验报告

(完整word版)实验5定时器计数器实验报告

单片机实验五定时器/计数器设计实验报告一、实验内容1、采用12MHZ时钟频率的单片机,通过一个开关输入,触发定时计数.按下开关10次,计算按键的平均时间,并通过数码管显示出来。

二、实验目的1、了解定时器的各种工作方式。

2、掌握定时器/计数器的使用和编程方法。

三、实验设备win7系统下的proteus7.8和ceil4联调四、实验电路图五、程序代码#include<reg51。

h〉sbit P1_0=P1^0;unsigned char numcode[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88};unsigned char seqcode[4]={0x01,0x02,0x04,0x08};unsigned int num=0;void int1()interrupt 1{num++;TL0=0xb0;TH0=0x3c;}void DelayMS(unsigned int ms){unsigned char i;while(ms——)for(i=0;i<120;i++);}void main(){unsigned char i=0;unsigned char dspcode[4];unsigned long t;P3=numcode[i];ET0=1;EA=1;TH0=0x3c;TL0=0xb0;TMOD=0x01;while(1){if(P1_0==0){TR0=1;i++;P3=numcode[i];while(P1_0==0);TR0=0;if(i==10){t=((TH0〈〈8)+TL0)/1000;t=(t+50*num)/10;dspcode[0]=numcode[(t/1000)%10]^0x80;dspcode[1]=numcode[(t/100)%10];dspcode[2]=numcode[(t/10)%10];dspcode[3]=numcode[t%10];break;}}}while(1){for(i=0;i<4;i++){P2=seqcode[i];P0=dspcode[i];DelayMS(5);}}}六、实验结果七、实验小结通过实验,我了解了定时器的各种工作方式和定时器/计数器的使用和编程方法,为进一步学习打下基础.。

定时器实验计数器实验

定时器实验计数器实验

实验五:定时器实验实验是利用片内定时器和计数器进行定时,定时时间为1s。

单片机的P1.0脚接一个发光二极管,控制发光二极管闪烁,时间间隔为1s实验程序:ORG 0000HORG 0000HAJMP MAINORG 000BHAJMP TOINTORG 0030HMAIN:MOV TMOD,#01H;T0定时方式1MOV TH0,#3CHMOV TL0,#0B0H;装50ms初始值MOV IE,#82H;总中断开关,T0开关SETB TR0;启动T0MOV R7,#14H;循环次数,1sSJMP $TOINT:MOV TH0,#3CHMOV TL0,#0B0H;重装50ms初始值DJNZ R7,NEXT;判断R7是否等于0,等于零灯亮CPL P1.0 ;P1.0取反MOV R7,#14H ;重装循环次数NEXT:RETI ;中断返回END把汇编程序编译生成hex机器码文件,加载进AT89C51中,进行仿真。

proteus电路图如下:仿真图如下每隔一秒钟绿灯闪一次实验六:计数器实验一.实验要求利用单片机内定时器、计数器T0的计数模式,对T0引脚上的按键开关按下次数进行显示计数。

实验程序如下:ORG 0000H;程序起始地址AJMP MAIN;主程序地址入口ORG 000BHAJMP INT;中断入口地址ORG 0100HMAIN:MOV A,#00H ;赋A初始值0MOV TMOD,#06H ;设置计时方式2,T0计时器MOV IE,#82H ;设置中断开关MOV TH0,#0FFH ;保存初始值FFHMOV TL0,#0FFH ;放置初始值SETB TR0 ;启动计时器T0LP:SJMP LPINT:INC A ;中断MOV P1,ARETIEND把汇编程序编译生成hex机器码文件,加载进AT89C51中,进行仿真。

proteus电路图如下:开始仿真,截图如下:5.60秒倒计时钟程序如下:ORG 0000HAJMP MAINORG 000BHAJMP TOINTORG 0030HMAIN:MOV R6,#59;秒单位初始值59 MOV TMOD,#01H;定时器T0方式1MOV TH0,#3CHMOV TL0,#0B0H;装入初始值50msMOV IE,#82H;设置中断SETB TR0 ;启动T0MOV R7,#14H ;循环次数20次,时间一秒SJMP $TOINT:MOV TH0,#3CHMOV TL0,#0B0H;重装初始值50msDJNZ R7,NEXT ;R7是否等于0CJNE R6,#00H,EX ;R6不等于00H,跳到EX,等于00H,就从59开始显示MOV R6,#59 ;设置初始显示值59MOV R7,#14H ;循环次数20次,时间一秒MOV A,R6MOV B,#10DIV ABMOV P2,AMOV P3,BNEXT:RETIEX:DEC R6MOV R7,#14HMOV A,R6MOV B,#10DIV ABMOV P2,A;取秒单位十位数输出P2MOV P3,B;取秒单位个位数输出P3RETIEND把汇编程序编译生成hex机器码文件,加载进AT89C51中,进行仿真。

实验五、定时器实验

实验五、定时器实验

实验五:定时器实验(2学时)一、实验目的1、熟悉89C51单片机的定时中断原理;2、进一步熟悉89C51与数码管的接口技术;3、掌握89C51定时/计数器应用的编程方法。

二、实验内容利用51单片机T1中断方式1,编写60秒倒计时输出到数码管显示,0秒停止的程序。

晶振频率为6MHZ。

仿真原理图如下:三、实验设备微机1台,实验板1块四、实验报告要求1、写出实验目的、实验内容、实验设备、和源程序清单(加注释),画出原理图和流程图;2、写出运行结果,并分析其是否正确;3、说明实验中遇到的问题及解决的方法;4、用实验报告纸手写实验报告。

COUNT EQU 40H ;计数标号ORG 0000HLJMP MAINORG 000BHLJMP ITT0ORG 0030HMAIN:MOV SP,#30HMOV COUNT,#60MOV TMOD,#01HMOV TH0,9EHMOV TL0,#58HLCALL DELAYSETB EASETB ET0SETB TR0LP1:MOV DPTR,#TABMOV A,COUNTMOV B,#10DIV ABMOVC A,@A+DPTRMOV P0,AMOV P2,#01HLCALL D2MSMOV P2,#00HMOV A,BMOVC A,@A+DPTRMOV P0,AMOV P2,#02HLCALL D2MSMOV P2,#00HLJMP LP1ITT0:MOV TH0,9EHMOV TL0,#58HDJNZ R3,EXITDEC COUNTMOV A,COUNTJNZ EXIT ;判断是否A为0,不为0转CLR TR0EXIT:RETID2MS:MOV R3,#10D1:MOV R4,#100DJNZ R4,$DJNZ R3,D1DELAY:MOV R0,#05HD5:MOV R1,#250D2:MOV R2,#200D3:DJNZ R2,D3D4:DJNZ R1,D2DJNZ R0,D5RETTAB:DB 28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H END。

实验五定时计数器

实验五定时计数器

实验五定时/计数器应用实验一、实验目的1、通过实验掌握定时/计数器工作原理;2、通过实验掌握定时/计数器中断的特殊功能寄存器设置;二、实验内容1、根据计数器应用电路图图1-7编写程序,将P3.0口置为低电平,矩阵按键中的K0和K4变为定时计数器T0和T1的输入端。

由P1口控制的八个LED,初始状态八个LED的状态为LED0→LED7逐个移位循环点亮(每一时刻只有一个点亮,循环方向不变);应用T0的计数功能,实现按下3次K0实现循环方向改变一次, 无论哪个LEDx正在被点亮,都从该位LEDx开始反向循环点亮。

2、在第1题的基础上增加K4和T1的功能,应用T1的计数功能实现按下4次K4实现循环方向改变一次,无论哪个LEDx正在被点亮,都从该位LEDx开始反向循环点亮。

3、根据定时计数器控制流水灯电路图图1-8编写程序,将动态显示模块的KH左列由上到下的第5、6两个插针用短路套短接(将P3.4和P3.5短接),设置T0为定时器在P3.4引脚产生一个周期为100毫秒的方波,设置T1为计数器,每十个下降沿产生一次中断。

由P1口控制的八个LED,初始状态八个LED的状态全灭,每产生一次T1计数中断,点亮一个ledx,方向为LED0→LED7(每一时刻只有一个点亮,循环方向不变),即一秒钟移动一次。

4、根据定时计数器控制动态显示电路图图1-9编写一个P0口控制段选信号和P2口的高四位控制位选信号的四位数码管动态显示程序,不使用延时程序,必须使用定时计数器的中断,显示内容“1234”。

5、自己编写程序,设计数码管动态显示和定时计数器的创意实验,可以增加连接线。

注意:调整适当的延时时间,不使用定时计数器中断不算完成。

图1-7 计数器应用电路图图1-8 定时计数器控制流水灯电路图图1-9 定时计数器控制动态显示电路图评分表第一个#include <REGX51.H> #define uint unsigned int#define uchar unsigned char sbit gnd=P3^0;uchar temp;uchar i,j;bit k=0;//////////////////////////////void delay_ms(uint t){uchar i;while(t--){for(i=0;i<110;i++){;;}}}///////////////////////////////void init(){TMOD=0x05;TH0=(65536-1)/256;TL0=(65536-1)%256;ET0=1;TR0=1;EA=1;gnd=0;}///////////////////////////////void INT0_1(void) interrupt 1 {if(T0==0){delay_ms(10);if(T0==0){j++;if(j==3){k=~k;j=0;}TH0=(65536-1)/256;TL0=(65536-1)%256;}}else{TH0=(65536-1)/256;TL0=(65536-1)%256;}}///////////////////////////////void main(){init();while(1){P1=0xff;if(k==0){temp=0x80;}if(k==1){temp=0x01;}for(i=0;i<8;i++){P1=~temp;if(k==0){temp=temp>>1;}if(k==1){temp=temp<<1;}delay_ms(500);}}}第二个#include <REGX51.H> #define uint unsigned int#define uchar unsigned char sbit gnd=P3^0;uchar temp;uchar i,j,l;bit k=0;//////////////////////////////void delay_ms(uint t){uchar i;while(t--){for(i=0;i<110;i++){;;}}}///////////////////////////////void init(){TMOD=0x55;TH0=(65536-1)/256;TL0=(65536-1)%256;TH1=(65536-1)/256;TL1=(65536-1)%256;ET1=1;TR1=1;ET0=1;TR0=1;EA=1;gnd=0;}///////////////////////////////void timer_0(void) interrupt 1 {if(T0==0){delay_ms(10);if(T0==0){j++;if(j==3){k=~k;j=0;}TH0=(65536-1)/256;TL0=(65536-1)%256;}}else{TH0=(65536-1)/256;TL0=(65536-1)%256;}}///////////////////////////////void timer_1(void) interrupt 3 {if(T1==0){delay_ms(10);if(T1==0){l++;if(l==4){k=~k;l=0;}TH1=(65536-1)/256;TL1=(65536-1)%256;}}else{TH1=(65536-1)/256;TL1=(65536-1)%256;}///////////////////////////////void main(){init();while(1){P1=0xff;if(k==0){temp=0x80;}if(k==1){temp=0x01;}for(i=0;i<8;i++){P1=~temp;if(k==0){temp=temp>>1;}if(k==1){temp=temp<<1;}delay_ms(500);}}}第三个#include <REGX51.H> #define uint unsigned int#define uchar unsigned char uchar temp,count;uchar i;///////////////////////////////void init(){TMOD=0x51;TH0=(65536-10000)/256;TL0=(65536-10000)%256; TH1=(65536-10)/256;TL1=(65536-10)%256;ET0=1;TR0=1;ET1=1;TR1=1;EA=1;///////////////////////////////void timer_0(void) interrupt 1{count++;TH0=(65536-10000)/256;TL0=(65536-10000)%256;if(count==5){T0=~T0;count=0;}}///////////////////////////////void timer_1(void) interrupt 3{uchar i;i++;TH1=(65536-10)/256;TL1=(65536-10)%256;P1=~temp;temp=temp<<1;if(i==8){temp=0x01;i=0;}}///////////////////////////////void main(){init();P1=0xff;temp=0x01;while(1);}第四个#include <REGX51.H>#define uint unsigned int#define uchar unsigned charuchar code duan[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; uchar code wei[]={0xef,0xdf,0xbf,0x7f};///////////////////////////////void init(){TMOD=0x01;TH0=(65536-5000)/256;TL0=(65536-5000)%256;ET0=1;TR0=1;EA=1;}///////////////////////////////void timer_0(void) interrupt 1{uchar count;TH0=(65536-5000)/256;TL0=(65536-5000)%256;P0=duan[count+1];P2=wei[count];count++;if(count==4){count=0;}}///////////////////////////////void main(){init();while(1);}第五个#include <REGX51.H>#define uint unsigned int#define uchar unsigned charuchar code duan[]={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; uchar code wei[]={0xef,0xdf,0xbf,0x7f};uchar num[4];uchar sum;char sum1=60;uchar sec,min;uchar count,i;bit key0=0;bit key4=0;sbit gnd=P3^0;void Bcd(uint number);void key();///////////////////////////////void init(){TMOD=0x11;TH0=(65536-5000)/256;TL0=(65536-5000)%256; ET0=1;TR0=1;EA=1;gnd=0;}///////////////////////////////void key(){if(T0==0){while(T0==0);key0=~key0;}if(T1==0){while(T1==0);key4=~key4;}}///////////////////////////////void timer_0(void) interrupt 1 {TH0=(65536-5000)/256; TL0=(65536-5000)%256; key();if(key0==0){if(key4==0){count++;if(count==200){sec++;count=0;}if(sec==60)min++;sec=0;}if(min==60){min=0;}sum=min*100+sec;}else{;;}Bcd(sum);if(i==1){P0=(duan[num[i]]&0x7f);} else{P0=duan[num[i]];}P2=wei[i];i++;if(i==4){i=0;}}else{if(key4==0){count++;if(count==200){sum1--;count=0;if(sum1<0){sum1=60;}}}Bcd(sum1);if(i==1){P0=(duan[num[i]]&0x7f);} else{P0=duan[num[i]];}P2=wei[i];i++;if(i==4){i=0;}}///////////////////////////////void Bcd(uint number){num[0]=number/1000;num[1]=(number%1000)/100;num[2]=((number%1000)%100)/10; num[3]=((number%1000)%100)%10; }///////////////////////////////void main(){init();while(1);}。

定时器的应用实验报告

定时器的应用实验报告

定时器的应用实验报告定时器的应用实验报告一、引言定时器是一种常见的电子元件,广泛应用于各种电子设备中。

本实验旨在通过实际操作,探究定时器在不同领域的应用,并了解其工作原理和特性。

二、材料与方法1. 实验材料:- Arduino开发板- 数字多用途电路板- 电阻、电容等元器件- 连接线2. 实验方法:- 搭建电路连接定时器和其他元器件- 编写Arduino代码,控制定时器的功能- 运行实验,观察实验结果并记录数据- 分析实验数据,总结定时器的应用特点三、实验过程与结果1. 实验一:闪烁LED灯搭建电路,将一个LED灯连接到定时器的输出引脚上。

编写代码,使定时器以一定频率输出高低电平,从而实现LED灯的闪烁效果。

运行实验,LED灯按照设定的频率闪烁,实验成功。

2. 实验二:蜂鸣器发声将蜂鸣器连接到定时器的输出引脚上。

编写代码,使定时器以一定频率输出高低电平,从而控制蜂鸣器的发声频率。

运行实验,蜂鸣器按照设定的频率发声,实验成功。

3. 实验三:控制电机转动将电机连接到定时器的输出引脚上。

编写代码,使定时器以一定频率输出高低电平,从而控制电机的转动速度。

运行实验,电机按照设定的频率转动,实验成功。

四、实验结果分析通过以上实验,我们可以得出以下结论:1. 定时器可以通过编程控制,实现不同频率的信号输出。

2. 定时器广泛应用于LED灯、蜂鸣器和电机等设备中,用于产生特定的时间间隔或频率。

3. 定时器的频率控制精度较高,可以满足多种应用需求。

4. 定时器的应用范围广泛,不仅仅局限于电子设备,还可以应用于工业自动化、通信等领域。

五、实验总结通过本次实验,我们深入了解了定时器的应用特点和工作原理。

定时器作为一种常见的电子元件,具有广泛的应用前景。

在今后的学习和工作中,我们可以利用定时器实现更多的创意和应用。

六、参考文献[1] Arduino官方网站[2] 电子技术实验教程以上是本次定时器的应用实验报告,通过实际操作和分析,我们对定时器的应用特点有了更深入的了解。

实验五 定时器计数器实验

实验五 定时器计数器实验

实验五定时器/计数器实验
一.实验目的
1.学习内部计数器、定时器的使用方法和编程方法
2.学习用查询方式应用定时器
3.掌握用中断方式应用定时器
二.实验设备
电脑、THDPJ-2型单片机开发综合实验箱及连接线
三.实验内容
1.将E:\原始程序\T10-计数器.asm,另存为E:\ 班级文件夹\个人文件夹\*.asm,接线并运行程序,记录结果。

接线方法:T0端接单次脉冲发生器,P1口接LED灯。

2.用查询定时器溢出方式实现1秒延时,并取代实验1(流水灯实验)中的延时1秒的子程序(当然,仍可以将延时写成子程序)。

3.用中断方式实现步骤2。

(自编流程图及程序)
4.(选作)在步骤3的基础上增加一个外部中断(INT0)。

一旦中断,要求显示高4位亮2秒(用循环子程序实现延时2秒)。

四.实验报告要求:每个步骤有硬件接线图、流程图,有程序,有观察到的现象。

最后有实验心得。

主程序框图
主程序框图。

8253定时器计数器实验

8253定时器计数器实验

理工学院实验报告(1)、连接实验电路连线:8253 CS ------ 端口地址 300CS PACK IMS ----- 393 1A393 1QD ------ 8253 CLK18253 OUT1 ---- 8253 CLK28253 OUT2 ---- 发光二极管 L15 8253 GATE1 -- (A10)+5V8253 GATE2 -- (A10)+5V结果如下图所示:(2)、实验程序如下所示:CS8253 EQU 0303HCOUNT0 EQU 0300HCOUNT1 EQU 0301HCOUNT2 EQU 0302HCODE SEGMENTASSUME CS:CODESTART PROC NEARMOV DX,CS8253MOV AL,01110110BOUT DX,ALMOV DX,COUNT1MOV AX,307OUT DX,ALMOV AL,AHOUT DX,ALMOV DX,CS8253MOV AL,10110110BOUT DX,ALMOV DX,COUNT2MOV AX,1000OUT DX,ALMOV AL,AHOUT DX,ALJMP $START ENDPCODE ENDS(3)、经编译、无语法错误后装载到实验系统,全速运行程序,观察发光二极管L15,应有周期为1s的点亮、熄灭。

结果如下图所示:一秒后又熄灭,如此往复。

(4)、做完实验后,应按暂停命令中止程序的运行。

二、8253计数器实验验证8253的工作方式3,CLK1每输入5个单脉冲信号,改变一次OUT1状态。

实验电路:DATA BUS D7~D0D08OUT010D17GATE011D26CLK09D35D44D53D62OUT113D71GATE114CLK115CS21RD22WR23OUT217A019GATE216A120CLK2188253/CS300CSIORIOWA0A1VCC1.8432MHzOUT0GATE1CLK1OUT1OUT2CLK2GATE2+5VSP单次正脉冲L15发光二极管显示图4-6-2 8253计数器实验电路图实验步骤:1)按图4-6-2连接实验电路,参考程序:8253-2.ASM;2)编写实验程序,经编译、无语法错误后装载到实验系统;3)全速运行程序,每按5次单脉冲按钮,改变1次发光二极管L15的状态;4)实验完毕后,应使用暂停命令中止程序的运行。

定时器的实验报告

定时器的实验报告

定时器的实验报告定时器的实验报告引言:定时器是现代电子设备中常见的一个功能模块,它能够精确计时并产生特定的时间间隔信号。

在本次实验中,我们将探索定时器的工作原理和应用。

一、实验目的:1. 了解定时器的基本原理和工作方式;2. 学习如何设置定时器的计时周期;3. 掌握定时器在电子电路中的应用。

二、实验器材:1. Arduino开发板;2. 杜邦线;3. LED灯。

三、实验过程:1. 连接电路:将Arduino开发板的数字引脚13与LED的正极相连,将LED的负极与GND相连;2. 编写代码:使用Arduino IDE编写以下代码:```void setup() {pinMode(13, OUTPUT); // 设置引脚13为输出模式}void loop() {digitalWrite(13, HIGH); // 将引脚13的电平设置为高delay(1000); // 延时1秒digitalWrite(13, LOW); // 将引脚13的电平设置为低delay(1000); // 延时1秒}```3. 上传代码:将编写好的代码上传到Arduino开发板;4. 实验观察:观察LED灯的亮灭情况。

四、实验原理:定时器是一种能够按照设定的时间间隔产生脉冲信号的电子元件。

在本实验中,我们使用了Arduino开发板的定时器功能来控制LED灯的亮灭。

Arduino开发板内置了一个定时器,我们可以通过编写代码来设置定时器的计时周期。

在本次实验中,我们将引脚13设置为输出模式,并通过代码控制该引脚的电平高低。

通过使用delay()函数,我们可以设置引脚13的电平保持高电平1秒,然后保持低电平1秒,以此循环实现LED灯的闪烁效果。

五、实验结果:在实验过程中,我们观察到LED灯每隔1秒钟亮灭一次,呈现出明显的闪烁效果。

这证明我们成功地利用定时器实现了LED灯的定时控制。

六、实验应用:定时器在电子电路中有着广泛的应用。

实验五TIM定时器实验

实验五TIM定时器实验

实验五 TIM定时器实验一、实验目的了解TIM定时器的原理与应用二、实验内容1.对TIM3定时器进行控制,使得PB5-TIM3通道2产生频率为12.5Hz的方波,该方波控制LED1的闪烁。

(特定频率产生)2.对周期进行设置,控制通用定时器3的2通道,实现1KHz的不同占空比波形,用于控制LED1亮度的明暗渐变。

(PWM脉冲宽度调制)三、实验仪器、设备计算机、开发板、keil软件四、软件程序设计1、频率产生控制LED闪烁实验根据任务要求,程序内容主要包括:①配置TIM3的通道2为输出比较模式(预分频系数设置为63),TIM3_CCR2=45000。

②在相应的TIM3定时器中断服务处理程序中根据定时器的值翻转输出电平。

以输出方波。

整个工程包含4类源文件:FWLIB--stm32f10x_gpio.c ST公司的标准库,包含了关于对通用IO口设置的函数。

stm32f10x_rcc.c ST公司的标准库,包含了关于对系统时钟设置的函数。

stm32f10x_USART.c ST公司的标准库,包含了关于对USART设置的函数。

stm32f10x_flash.c ST公司的标准库,包含了关于对flash设置的函数。

Misc.c ST公司的标准库,包含了关于中断设置的函数。

CM3—是关于CORETEX-M3平台的系统函数及定义App—main.c 例程的主函数。

App—tim.c 定时器3的设置。

App--stm32f10x_it.c 中断服务程序主函数如下://__________________________________________________________int main(void){/* System Clocks Configuration --72M*/RCC_Configuration();/* NVIC configuration *//*嵌套向量中断控制器说明了定时器3抢占优先级级别0(最多1位),和子优先级级别0(最多7位) */NVIC_Configuration();/*定时器3的初始化*/time_ini();while(1);}void time_ini(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB , ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);/* GPIOA Configuration: Channel 1 Output */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //PB5复用为TIM3的通道2GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3 , ENABLE);//TIM3局部复用功能开启在TIM3的局部复用开启时,PB5会被复用为TIM3_CH2/* Time Base configuration *//*-------------------------------------------------------------------TIM3CLK=72MHz 预分频系数Prescaler=63 经过分频定时器时钟为1.125MHz捕获/比较寄存器2 TIM3_CCR2= CCR2_Val2通道产生的更新频率是=1.125MHz/CCR2_Val=25Hz-------------------------------------------------------------------*/TIM3_TimeBaseStructure.TIM_Prescaler = 63; //预分频器TIM3_PSC=63TIM3_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数器向上计数模式 TIM3_CR1[4]=0TIM3_TimeBaseStructure.TIM_Period =0xffff; //自动重装载寄存器TIM3_APRTIM3_TimeBaseStructure.TIM_ClockDivision = 0x0; //时钟分频因子 TIM3_CR1[9:8]=00TIM_TimeBaseInit(TIM3,&TIM3_TimeBaseStructure); //写TIM3各寄存器参数TIM3_OCInitStructure.TIM_OCMode = TIM_OCMode_Toggle ; //TIM3_CCMR1[14:12]=011 翻转当TIM3_CCR2=TIM3_CNT时,翻转OC2REF的电平 TIM3_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //输入/捕获2输出允许 OC2信号输出到对应的输出引脚PB5TIM3_OCInitStructure.TIM_Pulse =CCR2_Val; //若CC1通道配置为输出:CCR2是装入当前捕获/比较2 TIM3_CCR2寄存器的值(预装载值)。

实验五 定时器的功能测试和应用

实验五  定时器的功能测试和应用

实验五 定时器的功能测试和应用一、实验目的⒈ 掌握定时器(74LS162)的逻辑功能和测试方法; ⒉ 掌握用任意进制(M<N )计数器的设计原理; ⒊ 学习示波器的更多使用方法。

二、实验仪器与器件 序号 名称及型号 数量 ⒈ 数字电路实验箱 一台 ⒉ 示波器 一台 ⒊ TTL 数字集成块 74LS162 74LS04 74LS20 各一块 三、实验原理⒈ 74LS162的功能介绍图5-1是74LS162的引脚图的两种表现形式。

74LS162为可预置的十进制同步计数器。

162 的清除端是同步的。

当清除端/SR 为低电平时,在时钟端CP 上升沿作用下,才可完成清除功能。

162 的预置是同步的。

当置入控制器/PE 为低电平时,在CP 上升沿作用下,输出端Q0-Q3 与数据输入端P0-P3 一致。

⒉ 实现任意进制计数和分频利用清除和预置数功能均能获得任意进制计数器。

前者称为置零法或复位法,而后者称为置数法或置位法。

这里仅介绍置零法。

假定已有N 进制计数器,而需要得到一个M 进制计数器(状态为0~M -1)时,只要M <N ,用置零法使计数器计数到M 时置“0”,即可获得M 进制计数器。

如图5-2所示为一个由74LS162十进制计数器接成的6进制计数器。

由图可见,置零信号是由状态为0100译出的,当Q 3Q 2Q 1Q 0 =0100时,5CT=0,此时并不能立即置零(这是同步清除的特点),要等下一个有效CP 边沿到来时置零。

图 5-2电路所能产生的状态为:0000、0001、0010、0011、0100、0000……。

思考题:分析Q 2引脚上的输出波形与CP 之间的关系。

四、实验内容与方法⒈ 参考图5-2连接电路,验证74LS162的清零、置数和使能。

自己设计表格,并记录实验结果。

⒉ 读图练习1,图5-3为置零法构成的计数器,读出图中计数的状态转换图,并用波形图描述示波器上的波形,解读完成的是几分频?可用仿真完成。

实验五555定时器的应用仿真实验_学生_

实验五555定时器的应用仿真实验_学生_

实验五 555定时器的应用仿真实验一、实验目的:1、熟悉555定时器的工作原理。

2、掌握555定时器的典型应用。

3、掌握基于multisim 的555定时器应用仿真。

二、实验原理:555定时器是一种常见的集数字与模拟功能于一体的集成电路。

通常只要外接少量的外围元件就可以很方便地构成施密特触发器、单稳态触发器和多谐振荡器等多种电路。

其中:(1) 构成施密特触发器,用于TTL 系统的接口,整形电路或脉冲鉴幅等; (2)构成多谐振荡器,组成信号产生电路;(3)构成单稳态触发器,用于定时延时整形及一些定时开关中。

555应用电路采用这3种方式中的1种或多种组合起来可以组成各种实用的电子电路。

U1LM555CM GND 1DIS 7OUT3RST 4VCC8THR 6CON5TRI 2GND——1脚,接地;TRI——2脚,触发输入;OUT——3脚,输出;RES——4脚,复位(低电平有效);CON——5脚,控制电压(不用时一般通过一个0.01F μ的电容接地);THR ——6脚,阈值输入;DIS——7脚,放电端;VCC——8脚,+电源555定时器功能表输 入输 出阈值输入(THR)触发输入(TRI)复位(RES)输出(OUT)放电端(DIS )× × 0 0 导通1 1 截止1 0 导通1 不变 不变1、 555组成时基振荡电路:图5.1.1是555振荡电路,从理论上我们可以得出: 振荡周期: C R R T ⋅+=)2(7.021 高电平宽度: C R R t W ⋅+=)(7.021 占空比: q =21212R R R R ++图5.1.1 时基振荡 图5.1.2单稳态触发2、 555组成单稳触发电路:图5.1.2为555单稳触发电路,我们可以得出(3)脚输出高电平宽度为:RC t W 1.1=3、 555定时器构成多谐振荡器:矩形波信号的周期取决于电容器充、放电回路的时间常数,输出矩形脉冲信号的周期C R R T )2(7.021+≈三、实验内容:1. 时基振荡发生器:(1). 单击电子仿真软件Multisim 基本界面左侧左列真实元件工具条“Mixed ”按钮,如图3.12.4所示,从弹出的对话框“Family ”栏中选“TIMER ”,再在“Component ”栏中选“LM555CM ”,如图5.3.2所示,点击对话框右上角“OK ” 按钮将555电路调出放置在电子平台上。

定时器的定时实验报告

定时器的定时实验报告

一、实验目的1. 理解定时器的基本原理和工作方式。

2. 掌握定时器定时功能的实现方法。

3. 学习使用定时器中断进行时间控制。

4. 培养动手实践能力和问题解决能力。

二、实验环境1. 硬件:PC机一台,单片机实验系统一套,定时器模块。

2. 软件:Keil Vision 4软件,实验指导书。

三、实验原理定时器是单片机中用于实现时间控制的重要外设。

本实验采用定时器模块,通过编程实现对时间的精确控制。

1. 定时器的基本原理定时器由计数器、预置寄存器和控制逻辑组成。

计数器用于记录定时器的计数次数,预置寄存器用于设置定时器的计数初值,控制逻辑用于控制定时器的启动、停止和中断。

2. 定时器的工作方式定时器主要有以下两种工作方式:定时方式:定时器计数到预置值时,产生定时中断,完成定时任务。

计数方式:定时器对外部事件进行计数,计数到预置值时,产生计数中断。

3. 定时器中断定时器中断是定时器完成定时任务的一种方式。

当定时器计数到预置值时,产生中断请求,CPU响应中断后执行中断服务程序。

四、实验内容1. 定时器初始化:设置定时器的计数初值、工作方式、中断使能等。

2. 定时器启动:启动定时器开始计数。

3. 定时器中断处理:编写中断服务程序,实现定时任务。

五、实验步骤1. 搭建实验电路:根据实验指导书连接电路,包括单片机、定时器模块和外部设备。

2. 编写程序:初始化定时器:设置定时器的计数初值、工作方式、中断使能等。

启动定时器:启动定时器开始计数。

编写中断服务程序:在中断服务程序中实现定时任务。

3. 编译程序:使用Keil Vision 4软件编译程序。

4. 下载程序:将编译后的程序下载到单片机中。

5. 观察实验现象:观察外部设备的变化,验证定时器定时功能的实现。

六、实验结果与分析1. 实验现象:定时器模块按照预设的时间间隔产生中断,执行中断服务程序。

2. 实验分析:定时器定时功能的实现:通过设置定时器的计数初值,可以精确控制定时器的时间间隔。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五定时器实验
[实验目的]
1.熟悉ARM芯片内部定时器的配置方法
2.掌握ARM芯片定时器匹配输出应用
3. 掌握定时器的捕获用法
[实验仪器]
1.Proteus仿真的LPC2000系列的ARM处理器
2.软件:PC机操作系统Win98、Win2000或WinXP,Keil for ARM(MDK)集成开发环境
[实验原理]
Lpc2000系列的ARM芯片内部定时器可以实现匹配和捕获功能。

通过相关寄存器设置可以实现对应的功能。

[实验内容]
设计一个使用ARM内部定时器0的匹配输出功能,实现P0.5引脚输出方波。

另一引脚P0.0用软件输出方波(非中断方式)。

[预备知识]
参照上课用的ppt的定时器一节或者参考教材定时器一章。

[实验步骤]
按照下图设计硬件,来满足本次实验的需要.(电源设置参考实验一)
器件的名称参照下表
使用Keil MDK建立一个软件工程。

命名为timer0。

步骤参照前面的实验。

在主函数中写入一些代码:
#include <LPC213X.H>
void timer0_init()
{
PINSEL0 &= ~(0x3<<6); //设定P0.3引脚作为匹配输出引脚
PINSEL0 |= (0x2<<6);
T0PR = 100000; //预分频系数为100000
T0TC = 0;
T0MR0 = 10; //匹配寄存器为10,即:TC计数值到10的时候会和MR0匹配
T0MCR &= ~(0x7);
T0MCR = 0x2; //010 //匹配时,复位定时器,即:重新再计数。

T0EMR |= 0x3<<4; //外部匹配,将匹配信号由mat0.0引脚输出
T0TCR =1; //启动定时器0
}
void delay(int x)
{
while(--x);
}
int main()
{
PINSEL0 = 0x00000000;
IODIR0 = 0x1;
timer0_init();
while(1){
IOSET0 = 0x00000001;
delay(100000);
IOCLR0 = 0x00000001;
delay(100000);
}
return 0;
}
编译生成hex文件,将生成的hex文件加载到lpc2138上运行,记录一下两个LED的闪烁时间(大概计时一下)。

并通过计算定时器实际定时的时间和闪烁时间比较,验证本实验的正确性。

【思考题】
1.修改程序,将定时器的匹配输出引脚设置成GPIO,当定时器匹配时利用匹配中断
完成led的闪烁操作。

2.设定一个按钮,连接到定时器0的捕获引脚上,并设定一个数码管连接到gpio上,
当发生捕获事件时,利用捕获中断服务程序将将捕获到的数值显示出来(提示:将
预分频器的值设的大一些,这样计数器计数值就会慢些,确保计数器的值不要大于
15,否则就得用多个数码管来显示了)。

相关文档
最新文档