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

一、实验目的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单片机定时器计数器汇编实验报告

批阅长沙理工大学实验报告年级光电班号姓名同组姓名实验日期月日指导教师签字:批阅老师签字:内容一、实验目的四、实验方法及步骤二、实验原理五、实验记录及数据处理三、实验仪器六、误差分析及问题讨论单片机定时器/计数器实验一、实验目的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次《单片机原理与应用》-定时计数器

定时器初始化编程:
使用定时器工作之前,先写入控制寄存器, 确定好定时器工作方式。 初始化编程格式:
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,观察数码管显示的计数值的变化,验证运行结果和设计要求是否相符。
单片机定时器计数器实验报告

文档来源为:从网络收集整理.word 版本可编辑.欢迎下载支持.单片机定时器计数器实验报告篇一:单片机计数器实验报告篇一:单片机计数器实验报告计数器实验报告计数器实验报告㈠ 实验目的实验目的1. 学习单片机内部定时学习单片机内部定时//计数器的使用和编程方法;计数器的使用和编程方法;2. 2.进一步掌握中断处理程序的编程方法。
进一步掌握中断处理程序的编程方法。
㈡ 实验器材实验器材1. 2. 3. 4. 5.G6W 仿真器一台仿真器一台 MCS MCS —51实验板实验板 一台一台一台 PC PC 机 一台一台一台 电源 一台一台一台 信号发生器信号发生器 一台一台㈢ 实验内容及要求实验内容及要求8051内部定时计数器,按计数器模式和方式1工作,对P3.4P3.4((T0T0)引脚进行计数,使用)引脚进行计数,使用8051的T1作定时器,作定时器,50ms 50ms中断一次,看T0内每50ms 来了多少脉冲,将计数值送显(通过LED 发光二极管8421码来表示),1秒后再次测试。
秒后再次测试。
㈣ 实验说明实验说明1. 本实验中内部计数器其计数器的作用,外部事件计数器脉冲由P3.4引入引入定时器T0T0。
单片机在每个机器周期采样一次输入波形,。
单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样,同时这就决定了输入波形的频率不能超过机器周期频率。
能超过机器周期频率。
2. 2. 计数脉冲由信号发生器输入(从计数脉冲由信号发生器输入(从T0端接入)。
3. 计数值通过发光二极管显示,要求:显示两位,十位用L4L4~~L1的8421码表示,个位用L8L8~~L5的8421码表示码表示4. 将脉搏检查模块接入电路中,对脉搏进行计数,计算出每分钟脉搏跳动算出每分钟脉搏跳动次数并显示次数并显示㈤ 实验框图实验框图((见下页见下页) )程序源代码程序源代码 ORG 00000H LJMP MAIN ORG 00000H LJMP MAINORG 001BH AJMP MAIN1 MAIN:MOV SP,#60HMOV TMOD,#15H MOV 20H,#14H MOV TL1,#0B0H MOVTH1,#3CHMOV TL0,#00H;T0的中断入口地址的中断入口地址 ; ;设置T1做定时器做定时器,T0,T0做计数器,都于方式1工作工作 ; ;装入中断次数装入中断次数装入中断次数 ; ;装入计数值低装入计数值低8位 ;装入计数值高8位MOV TH0,#00HSETB TR1 ;启动定时器T1 SETB TR0 ;启动计数器T0SETB ET1 ;允许T1中断中断 SETB EA ; SETB EA ;允许CPU 中断中断 SJMP $; SJMP $;等待中断等待中断MAIN1: PUSH PSW PUSH ACC CLR TR0CLR TR1 MOV TL1,#0B0H MOV TH1,#3CHDJNZ 20H,RETUNT MOV 20H ,#14HSHOW: MOV R0,TH0 MOV R1,TL0MOV A,R1 MOV B,#0AH DIV ABMOV C,ACC.3MOV P1.0,C MOV C,ACC.2 MOV P1.1,C MOVC,ACC.1 MOV P1.2,C MOV C,ACC.0 MOV P1.3,CMOV A,B MOV C,ACC.3MOV P1.4,C MOV C,ACC.2 MOV P1.5,C MOV C,ACC.1 MOV P1.6,C MOV C,ACC.0MOV P1.7,C ;保护现场保护现场;装入计数值低8位;装入计数值高8位,50ms;,50ms;允许允许T1中断中断;未到1s,1s,继续计时继续计时继续计时 ;1s ;1s 到重新开始到重新开始;显示计数器T0的值的值;;读计数器当前值读计数器当前值 ; ;将计数值转为将计数值转为十进制十进制;显示部分,将A 中保存的十位赋给L0~L3 将B 中保存的各位转移到A 中 ;将个位的数字显示在将个位的数字显示在L4~L7上;RETUNT:MOV TL0,#00H;将计数器将计数器T0清零清零 MOV TH0,#00H MOV TH0,#00HSETB TR0SETB TR1POP ACCPOP PSWRETI ;中断返回中断返回在频率为1000HZ 时,时,L0~L7L0~L7显示为5050;频率为;频率为300HZ时,时,L0~L7L0~L7显示为1515,结果正确,程序可以正确运行。
单片机实验五-定时计数器查询方式应用

实验五定时/计数器查询方式应用一、定时器工作方式0、1、2的应用(工程文件名:05定时器方式012.DSN)已知单片机晶体振荡器频率为12MHz,使用定时器编制延时程序,采用查询溢出方式控制红灯D1交替闪烁,将定时器工作方式分别设置为方式0、方式1和方式2,实现上述功能。
1.1定时器工作方式0(文件名:05定时器方式0.ASM,填空并回答问题)P1_0 EQU P1.0ORG 0000HMain:CLR P1_0MOV TMOD,# 00 H ; 定时器0,工作方式0(13位计数值)MOV TH0,#00H ; 计数初值MOV TL0,#01HSETB TR0; 启动T0,从1开始增1计数,计满溢出LP1: JBC TF0, LP2;查询定时器0是否计满溢出,溢出转LP2处理SJMP LP1LP2: CPL P1_0 ;溢出P1.0取反,灯明暗变化MOV TH0,#00H ; 重装定时器计数初值MOV TL0,#01HSJMP LP1END1.2定时器工作方式1(文件名:05定时器方式1.ASM,填空并回答问题)P1_0 EQU P1.0ORG 0000HMain:CLR P1_0MOV TMOD,# 01 H ; 定时器0,工作方式1(16位)MOV TH0,#00H ; 计数初值MOV TL0,#010HSETB TR0 ; 启动T0,从16开始增1计数,计满2^16=65536溢出LP1: JBC TF0, LP2 ;查询定时器0是否计满溢出,若溢出转LP2处理SJMP LP1LP2:CPL P1_0 ; P1.0取反,灯明暗变化MOV TH0,#00H; 重新赋计数初值MOV TL0,#010HSJMP LP1END1.3定时器工作方式2(文件名:05定时器方式2.ASM,填空并回答问题)P1_0 EQU P1.0ORG 0000HMain:CLR P1_0MOV R1,#250MOV TMOD,# 02 H ; 定时器0,工作方式2(8位重装初值)MOV TH0,#01H ; 计数初值MOV TL0,#01HSETB TR0; 启动T0,定时器0从1开始增1计数,满2^8=256溢出LP1: JBC TF0, LP2;查询定时器值是否计满溢出,若溢出转JP2处理SJMP LP1LP2: DJNZ R1,LP1;有无溢出250次,若没有,继续查询是否溢出;若有执行下一句,改变灯的明暗CPL P1_0; 溢出250次P1.0取反,灯明暗变化SJMP LP1END二、计数器工作方式0、1、2的应用(文件名:计数器方式012.DSN)已知单片机晶体振荡器频率为12MHz,使用计数器编制延时程序,采用查询溢出方式控制红灯D1交替闪烁,将计数器工作方式分别设置为方式0、方式1和方式2,实现上述功能。
实验3、定时器计数器实验

实验三、定时器/计数器实验一、实验目的1、了解MCS-51单片机定时/计数器的基本结构、工作原理和工作方式。
2、掌握定时/计数器工作在定时器和计数器两种方式下的编程方法。
3、掌握数码管显示电路的驱动原理及编程方法。
二、实验内容1、编写单片机程序,用T0作定时器产生周期为1秒的方波(用查询方式编程),从P3.6,P3.7口输出,将P3.7接到示波器显示该方波波形;用T1作计数器对从P3.6输出的方波进行计数,计数结果通过P1口输出到发光二极管显示。
(计算机仿真)2、编写单片机程序,用T0作定时器产生周期为1秒的方波(用查询方式编程),从P3.6,P3.7口输出,将P3.6输出的方波接到P3.5口通过T1作计数器对该方波进行计数,计数值由LED显示,用存储示波器显示P3.7输出的方波。
(实验台验证)3、设计一个60秒计时器,秒计时结果用两位LED数码管显示。
(计算机仿真)4、选做:设置按键控制计时器的启、停及清零功能。
三、实验原理电路原理图如下,所需元件为:AT89C52、LED-YELLOW、7SEG-COM-CAT-GRN 当晶振为22.1184M时,一个机器周期为0.54251微秒,要实现500毫秒的定时,需要921659个机器周期,对于51单片机内部定时器来说,最大只能定时65536个机器周期,定时35.535毫秒,不能满足要求,为此必须借助软件循环进行扩展。
实现的方法是:用定时器中断定时10毫秒,再用软件扩展50倍即可得到500毫秒的定时。
当到达500毫秒时,对P3.7输出取反,可得到周期为1秒的方波。
选择模式1,每个10ms中断一次,设初值为X,根据下面公式,可求得X 的值。
(216-计数初值)*机器周期=定时时间36161010101184.2212)2(-⨯=⨯⨯-X 有关定时计数器的特殊功能寄存器,请参考课本。
选择模式1,每个10ms 中断一次,设初值为X ,根据下面公式,可求得X 的值。
单片机实验3 中断、定时器计数器实验

西南科技大学实验报告课程名称:单片机原理及应用A实验名称:中断、定时器/计数器实验姓名:学号:班级:生医1401指导教师:雷华军西南科技大学信息工程学院制实验题目数码管动态扫描显示驱动、键盘动态扫描驱动一、实验目的1、熟练巩固单片机开发环境KEIL界面的相关操作和PROTUES仿真软件的操作,会使用HEX文件进行单片机的仿真。
2、了解定时器的原理和四种工作方式的使用方法,学习定时器的相关应用,包括产生信号和计数,利用定时器进行延时等。
3、进一步掌握熟练单个数码管以及多位数码管的显示原理,学会将0~1000的数字进行显示。
4、掌握利用单片机产生矩形方脉冲的相关原理。
二、实验原理1、定时器结构和原理图①上图①为定时器T0、T1的结构,其中振荡器经12分频后作为定时器的时钟脉冲,T为外部计数脉冲输入端,通过开关K1选择。
反相器,或门,与门共同构成启/停控制信号。
TH 和TL为加1计数器,TF为中断标志。
每接收到一个脉冲,加1计数器自动加1,当计数器中的数被加为0时产生溢出标志,TF将被置1。
计数器工作方式的选择和功能的实现需要配置相应的寄存器TMOD和TCON。
2、定时器工作方式定时器共有四种工作方式分别为方式0——方式3。
方式0:13位计数器,最大计数值为213个脉冲。
方式1:16位计数器,最大计数值为216个脉冲。
方式2:8位自动重装计数器。
该方式下,TL进行计数工作,TH用于存放计数初值,当产生溢出中断请求时会自动将TH中的初值重新装入TL,以使计数器继续工作。
方式3:仅限于T0计数器,在方式3下,T0计数器被分成两个独立的8为计数器TL0和TH0。
3、定时器间隔1ms产生一个脉冲利用单片机1 P3.0口进行脉冲的输出,通过定时器进行端口定时控制,实现每1ms高低电平变换。
就可以实现一个占空比为50%的矩形脉冲输出。
对于定时器的定时功能实现,需要进行定时器模式选择,定时器初值设定。
4、利用中断进行脉冲的计数将单片机1 P3.0口输出的脉冲连接到单片机2的中断INT0口P3.2,通过脉冲的高低电平变换触发中断0,进行脉冲个数的计数。
实验二 单片机定时器计数器编程

实验二单片机定时器/计数器编程一、实验目的1、掌握单片机定时器/计数器的工作方式;2、掌握单片机定时器/计数器的编程方法。
二、实验内容1、学习单片机定时器/计数器的工作方式、初始化以及应用等;2、利用单片机定时器/计数器编写程序驱动开发板上的LED灯按一定规律工作。
基本要求:利用定时器1控制LEDB闪烁,闪烁频率为2Hz。
提高要求:读懂教材定时器/计数器的应用实例4和5,在实验室开发板上采用分模块设计的方法编程实现以下两个任务之一:1、控制LEDB闪烁,2.5秒一个周期,亮0.5s,灭2s,周而复始。
2、将教材例5对P1.0和P1.1的控制,改为对LEDB和LEDG的控制,时序不变。
三、实验设备1、STC单片机开发板;2、PC机以及串口线。
四、实验分析及关键代码(1)利用定时器1控制LEDB闪烁,闪烁频率为2Hz。
实验分析:控制LEDB闪烁,频率为2Hz,即0.5s。
解决思路:定时器工作方式选0x01,计数器初值为(65536-50000),循环10次即为0.5s。
代码如下:#include<reg51.h>#define uchar unsigned char sbit A=P2^4;uchar i=0;void main (){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;while(1){while(TF0){TF0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;i++;if(i==10){A=!A;i=0;}}}}(2)控制LEDB闪烁,2.5秒一个周期,亮0.5s,灭2s,周而复始。
解决思路:设置两个循环,计数器初值设为(65536-50000),亮灯循环10次,灭灯循环40次。
代码如下:#include<reg51.h>#define uchar unsigned charsbit A=P2^4;uchar i=0;void main (){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;while(1){while(TF0){TF0=0;TH0=(65536-50000)/256;TL0=(65536-50000)%256;i++;if(i==10){A=1;}if(i==50){A=0;i=0;}}}}五、实验总结对软件及计数器的操作及代码不太熟悉,多次查询课本及上网查找资料后懂得计数器工作方式及计数操作,其他问题迎刃而解。
89C51实验三定时计数器实验

成绩实验报告实验名称定时计数器实验实验班级电子08-2姓名何达清学号12(后两位)指导教师实验日期2010年11月12日实验三定时/计数器实验一、实验目的1、掌握数码管的静态和动态扫描显示法。
2、掌握单片机定时计数器的初始化编程。
3、学会运用定时计数器进行单片机控制程序设计。
二、实验内容1、见图一,利用静态扫描显示法,让数码管显示数字6 。
(数码管元件7SEG-MPX1-CA,共阳极数码管)0RG 0000HMOV P0,#82HEND2、见图一,利用静态扫描显示法,让数码管显示数字0。
间隔时间1秒后,显示数字1。
间隔时间1秒后,显示数字2。
………间隔时间1秒后,显示数字F。
间隔时间1秒后,显示数字0 。
周而复始,循环不息。
图一程序如下:ORG 0000HLJMP MAINMAIN:MOV R0,#0FFHLOOP:INC R0CJNE R0,#16,SHOWMOV R0,#0SHOW:MOV A,R0MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,AACALL DELAY1SAJMP LOOPDELAY1S: ;误差0usMOV R7,#0A7HDL1:MOV R6,#0ABHDL0:MOV R5,#10HDJNZ R5,$DJNZ R6,DL0DJNZ R7,DL1NOPRETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFH END3、见图二,利用动态扫描显示法,,让数码管显示数字01234567 。
(数码管元件7SEG-MPX8-CA-BLUE,共阳极数码管)图二程序如下:ORG 0000HAJMP MAINORG 000BHAJMP TEFORG 33HMAIN:MOV SP,#60HMOV R4,#0MOV R3,#80HMOV TMOD,#02HMOV TH0,#06HMOV TL0,#06HSETB ET0SETB EASETB TR0LP:CJNE R4,#8,NEXTMOV R4,#0NEXT:MOV A,R4MOV DPTR,#TABMOVC A,@A+DPTRMOV R5,AAJMP LPTEF:PUSH ACCMOV A,R3RL AMOV P1,AMOV P2,R5INC R4MOV R3,APOP ACCRETITAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH END4、见图二,利用动态扫描显示法,,让数码管显示数字12.34.56,每隔一秒,数字变化相当于时间计时器。
实验五 定时器计数器实验

实验五定时器/计数器实验
一.实验目的
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秒)。
四.实验报告要求:每个步骤有硬件接线图、流程图,有程序,有观察到的现象。
最后有实验心得。
主程序框图
主程序框图。
微机原理 单片机 实验4 定时计数器应用

MOV TH0,# H MOV TL0,# H SETB ET0 SETB EA SETB ET1 MOV TH1,# H MOV TL1,# H SETB TR0 SETB TR1 SJMP $ DVT0 :MOV TH0,# H MOV TL0,# H CPL P1.7 RETI DVT1: MOV TH1,# H MOV TL1,# H CPL P1.6 RETI END
mov mov mov setb ajmp int_timer0: mov mov djnz mov djnz mov cpl l1: reti end
ie,#82h 30h,#10 31h,#6 tr0 $
;设置中断允许寄存器
;30H和31H是两个软件计数器。 ;启动定时 ;原地踏步 ;定时器0中断服务程序。 th0,#high (65536-50000) tl0,#low(65536-50000) ;重设50MS定时。 30h,l1 30h,#10 31h,l1 31h,#6 ;软件计数 p1.1 ;10*6*50MS=3000MS时间到,P1.1取反 ;中断返回
实验四 定时计数器应用
一、实验目的:
1、单片机系统中,可以用软件或硬件定时,当定时时 间较长,定时准确率要求较高时,应采用硬件定时。 MCS—51系列单片机中有2个16位的可编程定时/计 数器T0和T1,通过本实验要求掌握T0、T1的初始化 编程和应用。 2、熟悉XLISP系列 单片机综合仿真试验仪的组成和 使用方法。学会应用XLISP仿真试验和keil-uvision2集 成调试软件进行仿真实验。掌握仿真实验的步骤并能 得到正确的实验结果。
Байду номын сангаас
4、思考题: P1口接8个LED灯循环点亮(间隔1s),P3.2接键盘, 按下后实现中断,使全部LED灯闪烁(间隔0.5s)5次 后继续循环点亮。 间隔时间(1s和0.5s)用定时计数器定时实现。
单片机定时计数实训报告

一、实验目的1. 理解单片机定时计数器的工作原理和编程方法。
2. 掌握定时计数器在中断程序中的应用。
3. 培养动手实践能力和编程能力。
二、实验器材1. 单片机实验板2. 信号发生器3. 电脑4. 示波器5. 蜂鸣器6. LED灯三、实验原理单片机的定时计数器是单片机的重要组成部分,主要用于定时、计数和产生脉冲信号等功能。
本实验主要利用定时计数器T0进行定时,并通过中断程序实现计数功能。
四、实验内容1. 定时器T0初始化:设置定时器T0为模式1,并设置初值,使定时器每隔50ms 产生一次中断。
2. 定时器中断程序:在中断服务程序中,读取外部输入信号的脉冲数,并更新显示。
3. 计数器功能实现:通过外部中断,实现对外部信号的计数功能。
4. 蜂鸣器控制:当计数达到一定值时,通过单片机控制蜂鸣器发出声音。
5. LED灯控制:根据计数器的值,通过单片机控制LED灯的亮灭。
五、实验步骤1. 连接实验板,设置好单片机、信号发生器、蜂鸣器、LED灯等硬件设备。
2. 编写程序,实现定时器T0的初始化、定时器中断程序、计数器功能实现、蜂鸣器控制和LED灯控制等功能。
3. 烧录程序到单片机,观察实验结果。
4. 调整程序,使实验结果符合预期。
六、实验结果与分析1. 定时器T0初始化成功,每隔50ms产生一次中断。
2. 定时器中断程序正确读取外部输入信号的脉冲数,并更新显示。
3. 计数器功能实现,成功对外部信号进行计数。
4. 蜂鸣器控制,当计数达到一定值时,蜂鸣器发出声音。
5. LED灯控制,根据计数器的值,LED灯亮灭变化。
七、实验总结1. 通过本次实验,掌握了单片机定时计数器的工作原理和编程方法。
2. 熟悉了定时计数器在中断程序中的应用。
3. 培养了动手实践能力和编程能力。
4. 发现了实验过程中存在的问题,并进行了调整。
5. 对单片机定时计数器有了更深入的了解,为以后的学习和应用打下了基础。
八、实验拓展1. 改进实验程序,实现定时计数器的定时精度调整。
单片机实验三 定时器实验

实验三:定时器实验一、实验要求实验目的:了解MCS-51单片机中定时器/计数器的基本结构、工作原理和工作方式,掌握工作在定时器模式下的编程方法。
实验内容:设单片机的晶振频率f=12Mhz,使用T0定时100ms,在p1.2引脚产生周期为200ms的方波信号,并通过示波器观察P1.2的输出波形。
二、实验原理定时器和外部计数方式选择位C/TC/T=0为定时器方式,采用晶振频率的1/12作为计数器的计数脉冲,几对及其周期进行计数。
若选择12MHz晶振,则定时器的计数频率为1MHz。
C/T=1为计数方式,采用外部引脚的输入脉冲作为计数脉冲。
当T0或T1输入发生由高到低的负跳变时,计数器加1,其最高计数频率为晶振频率的1/24。
工作方式2当TMOD的M1、M0未为10是,计时器/计数器工作在工作方式2.当方式0、方式1用于循环重复定时计数时,计数器全部为0,下一次计数还得重新装入计数初值,这样编程麻烦,而且影响定时时间的精度。
方式2是能自动重新装入计数初值的8位计数器,可以解决这个问题。
方式2把16位计数器分成两个8为的计数器,低8为作为计数器使用,高8位用以保存计数初值,当低8位计数产生溢出是,将TF0或TF1置1,同时又将保存在高8位的计数初值重新自动装入低8位计数器汇总,又继续计数,循环重复。
计数初值X=2^8-t*f osc/12;其中t为定时时间。
初试化编程是,TH0和TL0(或TH1和TL1)都装入次X值。
方式2适用于作较为精确的脉冲信号发生器,尤其适用于串口波特率发生器。
三、程序设计1、程序流程图图 1 定时器实验流程图2、程序代码ORG 0100HMAIN: MOV A, 0HMOV TMOD, #61H ;外部引脚脉冲计数,工作方式2MOV TL1, #0FFHMOV TH1, #0FFH ;计数1次,以CP1.0为脉冲连接计数器CPL P1.0SETB TR1;LP1: CPL P1.2LP2: MOV TL0, #0B0HMOV TH0, #3CH ;一次计数50ms,P1.0的脉冲周期为100msSETB TR0LP3: JBC TF0, LP4SJMP LP3LP4: CPL P1.0JBC TF1, LP1SJMP LP2END四、程序验证1、在Proteus中连接电路图如下:图 2 定时器实验电路图2、将程序导入A T89C523、按键观察电路中示波器波形:图 3 示波器上显示的周期为200ms的方波示波器1格为50ms,故产生的波形周期为200ms。
定时计数器实验-单片机

单片机实验报告G A T EC /TM 1M 0G A T EC /TM 1M 0TH1TL1TH0TL0T1方式T1引脚T0引脚机器周期脉冲内部总线TMODTCON 外部中断相关位T F 1T R 1T F 0T R 0实验五 定时/计数器实验一、实验目的1.学习8051内部定时/计数器的工作原理及编程方法; 2.掌握定时/计数器外扩中断的方法。
二、实验原理8051单片机有2个16位的定时/计数器:定时器0(T0)和定时器1(T1)。
它们都有定时器或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合。
T0由2个特殊功能寄存器TH0和TL0构成,T1则由TH1和TL1构成。
作计数器时,通过引脚T0(P3.4)和T1(P3.5)对外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。
计数的最高频率一般为振荡频率的1/24。
定时/计数器的结构:定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。
TMOD 是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON 是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。
计数器初值的计算:设计数器的最大计数值为M(根据不同工作方式,M 可以是213、216或28),则计算初值X的公式如下:X=M-要求的计数值(十六进制数)定时器初值的计算:在定时器模式下,计数器由单片机主脉冲fosc经12分频后计数。
因此,定时器定时初值计算公式:X=M-(要求的定时值)/(12/fosc)80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。
TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。
❖工作方式寄存器TMOD:工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。
其格式如下:GATE:门控位。
GATE=0时,只要用软件使TCON中的TR0或TR1为1,就可以启动定时/计数器工作;GATA=1时,要用软件使TR0或TR1为1,同时外部中断引脚或也为高电平时,才能启动定时/计数器工作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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,如何改动程序。