单片机定时计数器实验

合集下载

单片机定时器实验报告

单片机定时器实验报告

一、实验目的1. 理解单片机定时器的工作原理和功能。

2. 掌握单片机定时器的编程方法,包括初始化、设置定时时间、启动定时器等。

3. 学会使用定时器实现定时功能,并通过实验验证其效果。

二、实验器材1. 单片机实验板2. 连接线3. 51单片机4. 计时器5. 示波器6. 电脑7. Keil软件三、实验原理定时器是单片机的一种重要外设,用于实现定时功能。

51单片机内部有两个定时器,分别为定时器0和定时器1。

定时器的工作原理是通过定时器计数器对机器周期进行计数,当计数器达到设定值时,定时器溢出,并产生中断请求。

定时器0和定时器1都具有四种工作模式,分别为:1. 模式0:13位定时器/计数器2. 模式1:16位定时器/计数器3. 模式2:8位自动重装模式4. 模式3:两个8位计数器本实验采用定时器0工作在模式1,实现50ms的定时功能。

四、实验步骤1. 将单片机实验板连接到电脑,并启动Keil软件。

2. 创建一个新的项目,并添加51单片机头文件(reg51.h)。

3. 编写定时器初始化函数,设置定时器0工作在模式1,并设置定时时间为50ms。

4. 编写定时器中断服务函数,用于处理定时器溢出事件。

5. 编写主函数,设置定时器中断,并启动定时器。

6. 编译并下载程序到单片机实验板。

7. 使用示波器观察定时器0的溢出信号。

五、实验代码```c#include <reg51.h>#define TIMER0_MODE1 0x01// 定时器0初始化函数void Timer0_Init() {TMOD &= 0xF0; // 清除定时器0模式位TMOD |= TIMER0_MODE1; // 设置定时器0工作在模式1TH0 = 0xFC; // 设置定时器0高8位初值TL0 = 0x18; // 设置定时器0低8位初值ET0 = 1; // 开启定时器0中断EA = 1; // 开启总中断TR0 = 1; // 启动定时器0}// 定时器0中断服务函数void Timer0_ISR() interrupt 1 {TH0 = 0xFC; // 重新加载定时器0高8位初值TL0 = 0x18; // 重新加载定时器0低8位初值// ... (其他处理)}void main() {Timer0_Init(); // 初始化定时器0while(1) {// ... (其他处理)}}```六、实验结果与分析1. 编译并下载程序到单片机实验板,使用示波器观察定时器0的溢出信号,可以看到定时器0每隔50ms产生一个溢出信号。

单片机计数器实验报告

单片机计数器实验报告

单片机计数器实验报告单片机计数器实验报告引言:单片机是一种集成电路,内部集成了处理器、存储器和各种输入输出接口等功能模块。

它广泛应用于各个领域,包括电子设备、通信、汽车电子、家电等。

在这次实验中,我们将学习并实践单片机计数器的原理和应用。

实验目的:1. 理解单片机计数器的工作原理;2. 掌握单片机计数器的编程方法;3. 实现简单的计数功能。

实验器材:1. 单片机开发板;2. 电脑;3. USB数据线;4. 连接线。

实验步骤:1. 准备工作:a. 将单片机开发板连接到电脑上,确保连接稳定;b. 打开开发板的开发环境软件。

2. 编写程序:a. 在开发环境软件中创建一个新的项目;b. 编写程序代码,实现计数功能;c. 调试程序,确保程序没有错误。

3. 烧录程序:a. 将开发板与电脑连接,确保连接稳定;b. 在开发环境软件中选择烧录选项,将程序烧录到单片机中。

4. 运行程序:a. 断开开发板与电脑的连接;b. 将开发板连接到外部电源,确保供电正常;c. 按下开发板上的复位按钮,启动程序。

实验结果:经过以上步骤,我们成功实现了单片机计数器的功能。

当按下复位按钮后,计数器从0开始计数,每经过一个固定的时间周期,计数值加1。

我们可以通过开发板上的数码管显示当前的计数值。

实验分析:单片机计数器是通过定时器模块实现的。

定时器是单片机中的一个重要模块,它可以根据设定的时间间隔来触发中断或执行特定的操作。

在本实验中,我们使用了定时器模块来实现计数功能。

通过编写程序,我们可以设定定时器的工作模式和时间间隔。

在每个时间间隔结束时,定时器会触发中断,程序会执行中断服务程序,从而实现计数器的自动递增。

同时,我们还可以通过程序控制数码管的显示,将计数值实时显示出来。

实验总结:通过本次实验,我们学习了单片机计数器的原理和应用,并成功实现了一个简单的计数功能。

单片机计数器在各个领域都有广泛的应用,例如工业自动化、仪器仪表、电子游戏等。

单片机定时器实验原理

单片机定时器实验原理

单片机定时器实验原理一、概述单片机定时器是单片机的重要组成部分,它能够实现定时控制、时间间隔生成等功能。

通过单片机定时器实验,可以更好地了解单片机的内部结构和工作原理,为进一步开发单片机应用系统打下坚实的基础。

二、实验目的1. 掌握单片机定时器的结构和原理。

2. 学会使用单片机定时器进行时间间隔控制。

3. 了解单片机定时器的应用范围和限制。

三、实验原理1. 单片机定时器的结构单片机定时器通常由一个计数器和一个控制逻辑组成。

计数器负责记录脉冲数,控制逻辑负责控制计数器的计数和复位。

单片机定时器通常采用可编程计数脉冲,可以实现任意时间间隔的生成。

2. 单片机定时器的原理单片机定时器的工作原理是基于计数器的计数。

当单片机接收到一个启动信号时,计数器开始计数,当计数达到预设的时间间隔时,单片机输出相应的信号或执行相应的操作。

通过改变计数器的预设值,可以改变时间间隔的长短。

3. 单片机定时器的应用单片机定时器在许多领域都有应用,如智能家居、工业控制、通信设备等。

在智能家居中,可以通过单片机定时器控制家电设备的开启和关闭;在工业控制中,可以通过单片机定时器实现生产线的自动化控制;在通信设备中,可以通过单片机定时器实现时间戳的生成和数据传输的时间控制。

四、实验步骤1. 准备实验器材和软件环境,包括单片机、定时器芯片、编程器、开发板等。

2. 连接实验设备,并调试确保连接正常。

3. 编写实验程序,并上传到单片机中。

4. 观察并记录实验结果,分析误差原因。

5. 根据实验结果,调整程序参数,进行多次实验,直到达到满意的效果。

五、实验注意事项1. 实验过程中要保持设备连接的稳定性,避免意外断开。

2. 编程和调试过程中要确保程序正确,避免误操作导致设备损坏。

3. 注意观察实验现象,及时记录实验数据,分析实验结果。

4. 实验结束后,要清理实验现场,确保设备复位。

六、实验结果分析通过实验,我们能够得到较为准确的时间间隔控制结果。

单片机实验之定时器计数器应用实验二

单片机实验之定时器计数器应用实验二

一、实验目的1、掌握定时器/计数器计数功能的使用方法。

2、掌握定时器/计数器的中断、查询使用方法。

3、掌握Proteus软件与Keil软件的使用方法。

4、掌握单片机系统的硬件和软件设计方法。

二、设计要求1、用Proteus软件画出电路原理图,单片机的定时器/计数器以查询方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。

2、用Proteus软件画出电路原理图,单片机的定时器/计数器以中断方式工作,设定计数功能,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态,在P 1.0口线上接示波器观察波形。

三、电路原理图6、实验总结通过本实验弄清楚了定时/计数器计数功能的初始化设定(TMOD,初值的计算,被计数信号的输入点等等),掌握了查询和中断工作方式的应用。

七、思考题1、利用定时器0,在P1.0口线上产生周期为200微秒的连续方波,利用定时器1,对 P1.0口线上波形进行计数,满50个,则取反P1.1口线状态,在P 1.1口线上接示波器观察波形。

答:程序见程序清单。

4、实验程序流程框图和程序清单。

1、定时器/计数器以查询方式工作,对外部连续周期性脉冲信号进行计数,每计满100个脉冲,则取反P1.0口线状态。

汇编程序:ORG 0000HSTART: LJMP MAINORG 0100HMAIN: MOV IE, #00HMOV TMOD, #60HMOV TH1, #9CHMOV TL1, #9CHSETB TR1LOOP: JNB TF1, LOOP CLR TF1CPL P1.0AJMP LOOPENDC语言程序:#include <reg52.h>sbit Y=P1^0;void main(){EA=0;ET1=0;TMOD=0x60;TH1=0x9C;TL1=0x9C;while(1){TR1=1;while(!TF1);TF1=0;Y=!Y;}}2、定时器/计数器以中断方式工作,对外部连续周期性脉冲信号进行计数,每计满200个脉冲,则取反P1.0口线状态。

单片机实验五_定时计数器应用

单片机实验五_定时计数器应用

单片机实验五_定时计数器应用实验五定时计数器应用一、实验目的:1、单片机系统中,可以用软件或硬件定时,当定时时间较长,定时准确率要求较高时,应采用硬件定时。

MCS—51系列单片机中有2个16位的可编程定时/计数器T0和T1,通过本实验要求掌握T0、T1的初始化编程和应用。

2、学会应用烧录软件XLISP和keil-uvision2集成调试软件进行实验。

掌握实验的步骤并能得到正确的实验结果。

二、实验内容1、定时计数器应用:8只LED呈流水灯显示,用定时计数器定时,使流水灯的间隔时间为1S。

用定时计数器0实现定时1S,采用软硬件结合方式:T0方式0,定时50ms,循环程序20次。

2、数码管显示:要求数码管显示0-9,间隔时间0.5S,采用定时计数器T1实现。

3、思考题:用定时计数器T0和T1级联定时3S。

三、实验步骤1、硬件连接(1)使用USB线(电源)和串口线(通信),将XL2000综合仿真仪与微型计算机连接起来; CPU选用AT89S51,采用程序直接写入方式;将JP17的开关(编程仿真模式)置为弹起状态,选择编程模式;(2)定时计数器应用:使用8P的连接线将CPU的P0口与JP32(8个发光二极管)相连。

(3)数码管显示:P1口接数码管(JP19)。

2、软件设计(1) Kiel软件操作同实验一:建立工程并存储、选择芯片89C51、新建文件输入程序并保存,将文件加入到工程中。

(2)修改属性:如右图,点击工程下拉菜单中的”目标’目标1’属性”; 单击”目标”,输入仿真器的频率12(MHz);选择“输出”菜单中的”生成HEX文件”,以便汇编后产生HEX代码,供编程器使用;3、将程序写入AT89C51:双击桌面XLISP启动程序,出现下面界面。

(1)选择操作/检测编程器点击。

在上图7窗口中出现编程器检测OK!说明系统已经连接完好,可以下一步实验,否则需要检查出错的原因并改正;(2)点击擦除图标,将CPU中的原有程序擦除;(3)点击打开图标,找到Kiel编译后需要执行的程序(HEX文件),点击;在XLISP的文件程序区可见到要执行的程序;(4)点击写入框,在程序写入结束后即可观察运行的结果。

51单片机定时器计数器汇编实验报告

51单片机定时器计数器汇编实验报告

批阅长沙理工大学实验报告年级光电班号姓名同组姓名实验日期月日指导教师签字:批阅老师签字:内容一、实验目的四、实验方法及步骤二、实验原理五、实验记录及数据处理三、实验仪器六、误差分析及问题讨论单片机定时器/计数器实验一、实验目的1、掌握51单片机定时器/计数器的基本结构。

2、掌握定时器/计数器的原理及编程方法。

二、实验仪器1、装有keil软件的电脑2、单片机开发板三、实验原理51单片机有2个16位的定时器/计数器,分别是T0和T1,他们有四种工作方式,现以方式1举例。

若定时器/计数器0工作在方式1,计数器由TH0全部8位和TL0全部8位构成。

方式1作计数器用时,计数范围是:1-65536(2^16);作定时器用时,时间计算公式是:T=(2^16-计数初值)×晶振周期×12。

四、实验内容1、计算计数初值单片机晶振频率为6MHz,使用定时器0产生周期为120000μs等宽方波连续脉冲,并由P1.0输出。

设待求计数初值为x,则:(2^16-x)×2×10^-6 = 120000×10^-6解得x=5536。

二进制表示为:00010101 10100000B。

十六进制为:高八位(15H),低八位(A0H)。

2、设置相关控制寄存器TMOD设置为xxxx0001B3、程序设计ORG 0000HAJMP MAINORG 30HMAIN: MOV P1,#0FFH ;关闭所有灯ANL TMOD,#0F0H ;置定时器0工作方式1ORL TMOD,#01H ;不影响T1的工作MOV TH0,#15H ;设置计数初始值MOV TL0,#0A0HSETB EA ;CPU开中断SETB ET0 ;定时器0开中断SETB TR0 ;定时器开始运行LOOP: JBC TF0,INTP ;如果TF0=1,则清TF0并转到INTPAJMP LOOP ;然跳转到LOOP处运行INTP: MOV TH0,#15H ;重新设置计数初值MOV TL0,#0A0HCPL P1.0 ;输出取反AJMP LOOPEND AJMP LOOPEND4、实验仿真新建工程项目文件中,并为工程选择目标器件为AT公司的AT89S51。

第3次《单片机原理与应用》-定时计数器

第3次《单片机原理与应用》-定时计数器

定时器初始化编程:
使用定时器工作之前,先写入控制寄存器, 确定好定时器工作方式。 初始化编程格式:
MOV TMOD,# 方式字 MOV THx,#XH MOV TLx,#XL (SETB EA ) (SETB ETx) SETB TRx ;选择方式 ;装入Tx时间常数 ;开Tx中断 ;启动Tx定时器
TMOD,#01H ;设置T0为方式1定时
ACALL PT0M0
HERE: AJMP HERE
;调用初始化子程序PT0M0
;原地循环,等待中断
22
PT0M0: MOV
TL0,#0CH
;T0初始化,装初值的低8位
MOV
TH0,#0FEH
;装初值的高8位
;允许T0中断 ;总中断允许 ;启动T0 ;中断子程序,T0重装初值 ;P1.0的状态取反
本例,主程序用一条转至自身的短跳转指令来代替。
21
参考程序如下:
ORG 0000H ;程序入口 ;转主程序 ;T0中断入口 ;转T0中断处理程序IT0P ;主程序入口 ;设堆栈指针
RESET: AJMP MAIN ORG 000BH
AJMP IT0P ORG MAIN: MOV MOV 0100H SP,#60H
2)中断方式:初始化后执行其它任务,中断服务程序处理溢出。 ORG 0000H LJMP MAIN ORG 000BH(001BH) ;Tx中断入口 LJMP PTS MAIN: … ;初始化后执行其他程序 PTS: … ;溢出中断服务程序 MOV THx,#XH ;重装时间常数 MOV TLx,#XL RETI
即T0每隔1ms产生一次中断,CPU响应中断后,在中断服务 子程序中对P1.0取反。为此要做如下几步工作。

单片机-实验二-定时器计数器实验

单片机-实验二-定时器计数器实验

实验二定时器/计数器实验一、实验目的1、掌握数码管动态驱动方式的工作原理;2、掌握单片机定时器中断服务程序的编写方法;3、掌握基于单片机定时器中断调度方式的数码管动态显示驱动程序的编写方法。

二、实验内容及要求单片机通过P1 端口连接独立数码管,INT0 引脚(P3.2)和T0 引脚(P3.4)各连接一个独立按键。

通过按键向T0 引脚输入负脉冲,单片机对其进行计数,并将计数值显示在独立数码管上。

观察门控位(GATE)对计数过程的影响。

三、实验设备硬件:PC 机,nKDE-51 单片机实验教学系统;软件:Keil C51 集成开发环境,FlashMagic 单片机程序烧写软件。

四、实验原理及步骤MCS-51 定时器/计数器的结构、功能及设置方法,请参考教材相关内容。

步骤如下:1、创建新项目:Project—New Project—命名、存储—CPU类型(philips P89C52X2)2、创建新程序:编译程序—完成后保存为“.c”格式3、添加程序:Target1—Source Group—add……(程序)4、检测程序:Project—Build Target5、选择烧录程序的方式(右键点target1--opption):output—Creat Execulate:Dubug Information Browse、Creat HexDebug 右侧选择use “Keil Monitor-51 Driver”6、选择程序执行点:在Debug程序烧路后,在开始执行的程序断点上鼠标右键—Set Program Counter7、Go执行五、实验过程1. 电路连接CPU 板上的P3.2 和P3.4(J4 或J8)和基本IO 板上的独立按键SW1 和SW3(J6)相连;CPU板上的P1(J2 或J6)和基本IO 板上的独立数码管LED1(J5)相连,连接方向为P1.0 和数码管的SEG_A 对齐。

2. 程序设计按照实验要求,实验参考程序如下:#include <reg51.h>unsigned char code CharCode[] ={0xc0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};void main(void){unsigned char cc,count;TMOD = 0x05; // GATE=0,C/#T=1,Mode=2,工作于计数器模式TH0 = 0;TL0 = 0;TR0 = 1; // T0 开始运行,开启计数器P1 = CharCode[0]; // 显示 0count = 0;cc = TL0; // 设置变量初始值while(1) // 按一次 SW3,TL0 加 1{if(cc != TL0) // 计数值有变化{ cc = TL0; // 更新本次计数器值count ++; // 计数值+1if(count >= 10) count = 0; // 计数值>=10 则从 0 开始P1 = CharCode[count]; // 送数码管显示}}}3. 验证结果在Keil 中建立新工程,将上述程序代码加入工程,编译链接后,将生成的.HEX 文件烧写到单片机中,烧写完毕后复位单片机系统,按下SW3,观察数码管显示的计数值的变化,验证运行结果和设计要求是否相符。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
六、源程序修改原理及其仿真结果
实验结果图
原程序
打开开关,小灯依次亮
修改一
修改二
利用开关。
修改三
小灯每隔200us亮依次
修改四
七、心得体会
通过这次实验,我学会了计数器的使用方法。学会了计数器程序的编写,定时器的使用方法和定时器程序的编写。做完这次实验后,我熟练了对修改程序的修改,掌握了各种语句的作用,通过修改程序得到了实验结果。
2、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转
三、实验仪器和条件
计算机
伟福实验箱(lab2000P)
四、实验内容与软件流程图
实验3-1 、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。
、外部事件计数脉冲由P3.4引入定时器T0。单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变。这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样。同时这就决定了输入波形的频率不能超过机器周期频率。
实验三单片机定时/计数器实验
一、实验目的
1、学习计数器的使用方法。
2、学习计数器程序的器程序的编写。
5、熟悉汇编语言
二、实验说明
1、8051内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。
、流程图
、实验电路及连线
实验3-2 、用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生一次反转
、定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
、在例程的中断服务程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
、软件流程图
、实现电路连线
五、思考题
1、使用其他方式实现本实验功能;
2、改为门控方式外部启动计数;
3、如果改为定时间隔为200us,如何改动程序;
4、使用其他方式实现本实验功能,例如使用方式1,定时间隔为10ms,如何改动程序。
相关文档
最新文档