实验5 定时计数器实验
- 格式:doc
- 大小:36.50 KB
- 文档页数:2
实验三8253定时器/计数器实验一、实验目的1.学会8253芯片与微机接口的原理和方法。
2.掌握8253定时器/计数器的工作原理和编程方法。
二、实验内容编写程序,将8253的计数器0设置为方式2(频率发生器),计数器1设置为方式3(方波频率发生器),计数器0的输出作为计数器1的输入,计数器1的输出接在一个LED上,运行后可观察到该LED在不停地闪烁。
1.编程时用程序框图中的二个计数初值,计算OUT1的输出频率,用表观察LED,进行核对。
2.修改程序中的二个计数初值,使OUT1的输出频率为1Hz,用手表观察LED,进行核对。
3.上面计数方式选用的是 16 进制,现若改用 BCD 码,试修改程序中的二个计数初值,使LED的闪亮频率仍为1Hz。
三、实验区域电路连接图CS3→0040H;JX8→JX0;IOWR→IOWR;IORD→IORD;A0→A0;A1→A1;GATE0→+5V;GATE1→+5V;OUT0→CLK1;OUT1→L1;CLK0→0.5MHz;(单脉冲与时钟单元)四、程序框图8253方式控制字五、编程程序code segmentassumecs:codeorg 1000hstart:mov dx,43h /控制字地址/ mov al,00110100boutdx,almov dx,40h /计时器0地址/mov al,0F4houtdx,almov al,01h /计数器0写入初值01F4H/outdx,almov dx,43hmov al,01110110boutdx,almov dx,41h /计时器1地址/mov al,0E8houtdx,almov al,3h /计数器1写入初值03E8H/out dx,al /分两次赋值,先低八位0E8H,后高八位03H/jmp $ /8253自行控制led灯/code endsend start六、实验步骤1. 按连线图连接好,检查无误后打开实验箱电源。
单片机定时器计数器实验报告单片机定时器计数器实验报告篇一:单片机计数器实验报告计数器实验报告㈠实验目的1. 学习单片机内部定时/计数器的使用和编程方法;2. 进一步掌握中断处理程序的编程方法。
㈡实验器材1. 2. 3. 4. 5.G6W仿真器一台MCS—51实验板一台PC机一台电源一台信号发生器一台㈢实验内容及要求8051内部定时计数器,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数,使用8051的T1作定时器,50ms 中断一次,看T0内每50ms来了多少脉冲,将计数值送显(通过LED发光二极管8421码来表示),1秒后再次测试。
㈣实验说明1. 本实验中内部计数器其计数器的作用,外部事件计数器脉冲由P3.4引入定时器T0。
单片机在每个机器周期采样一次输入波形,因此单片机至少需要两个机器周期才能检测到一次跳变,这就要求被采样电平至少维持一个完整的机器周期,以保证电平在变化之前即被采样,同时这就决定了输入波形的频率不能超过机器周期频率。
2. 计数脉冲由信号发生器输入(从T0端接入)。
3. 计数值通过发光二极管显示,要求:显示两位,十位用L4~L1的8421码表示,个位用L8~L5的8421码表示4. 将脉搏检查模块接入电路中,对脉搏进行计数,计算出每分钟脉搏跳动次数并显示㈤实验框图(见下页)程序源代码 ORG 00000H LJMP MAINORG 001BH AJMP MAIN1 MAIN:MOV SP,#60HMOV TMOD,#15H MOV 20H,#14H MOV TL1,#0B0H MOV TH1,#3CHMOV TL0,#00H;T0的中断入口地址 ;设置T1做定时器,T0做计数器,都于方式1工作 ;装入中断次数 ;装入计数值低8位 ;装入计数值高8位MOV TH0,#00HSETB TR1 ;启动定时器T1 SETB TR0 ;启动计数器T0 SETB ET1 ;允许T1中断 SETB EA ;允许CPU中断 SJMP $;。
定时器的设计实验报告1. 引言定时器是一种常见的计时装置,广泛应用于各个领域,如电子设备、工业自动化、交通运输等。
本实验通过设计一个基于脉冲计数的定时器电路,旨在研究其工作原理,探索其在实际应用中的可行性和性能表现。
2. 原理及设计2.1 工作原理脉冲计数定时器是一种通过计数器累加输入脉冲信号的数量来实现计时的装置。
其基本原理是利用脉冲信号的频率和计数器的计数速度之间的关系,通过计数器的累加值计算时间间隔。
2.2 设计步骤1. 确定定时器的时间基准。
时间基准可以选择外部脉冲输入或者由稳定的晶振产生。
2. 设计计数器的位数。
根据计时的范围确定计数器的位数,以保证计数范围的覆盖。
3. 计算计数器的计数速度。
根据计时的最大时间间隔和计数器的位数,计算所需的输入脉冲频率。
4. 根据计数器的位数和计数速度,选择合适的计数器芯片。
5. 配置计数器芯片的工作模式和输入脉冲的触发方式。
6. 连接电路并验证设计是否符合要求。
2.3 接线图_______________input > Counter > output________ Display_________3. 实验结果及分析3.1 实验设置- 输入脉冲频率:1kHz- 计数器位数:4位- 计数器芯片:74HC163- 时间基准:晶振(频率为10MHz)3.2 实验结果在实验过程中,我们通过将输入脉冲接到74HC163计数器芯片的CP 输入端,将74HC163的输出接到数码显示器,观察并记录实时的计数结果。
在实验进行中,我们发现计数器芯片的最大计数范围是15(4位二进制),对应的时间间隔为15ms(1kHz输入脉冲时)。
3.3 实验分析通过实验结果可以看出,该定时器电路能够准确计时,实际测量的时间结果与理论计算非常接近。
由于74HC163计数器芯片的高稳定性和高精度,使得定时器的性能表现较好。
然而,该设计存在一个缺点,即计数器位数的限制。
由于计数器位数的限制,导致定时的最大时间间隔受到了限制。
定时器计数器实验报告简介:定时器是一种用来产生、计数和处理时间信号的计时装置。
在数字电路中,定时器主要分为内部定时器和外部定时器两类,内部定时器是在单片机内部实现的,外部定时器则是通过外部电路实现的。
计数器则是一种用来计数的电子元件,根据不同的使用场合和要求,计数器可以分为多种类型。
在嵌入式系统中,定时器计数器应用广泛,例如在时钟、延时、计数等方面都有很大的作用。
实验目的:1. 学习定时器和计数器的基本原理及应用。
2. 熟悉定时器和计数器在单片机中的编程方法。
3. 掌握通过定时器和计数器实现延时和计数功能的方法。
实验器材:1. STM32F103C8T6开发板2. ST-LINK V2下载器3. 电脑实验内容:一、实验1:使用定时器和计数器实现延时功能1. 在Keil C中新建一个工程,并编写以下程序代码:```#include "stm32f10x.h"void TIM2_Int_Init(u16 arr,u16 psc){TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure ;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);TIM_TimeBaseStructure.TIM_Period = arr;TIM_TimeBaseStructure.TIM_Prescaler=psc;TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode _Up;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM2, ENABLE);}void TIM2_IRQHandler(void){if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {TIM_ClearFlag(TIM2, TIM_FLAG_Update);GPIO_WriteBit(GPIOB,GPIO_Pin_12,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_12)));}}int main(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure);TIM2_Int_Init(9999,7199);while (1);}```2. 将STM32开发板连接到电脑,并下载程序到开发板中。
实验四、定时/计数器实验一、实验目的1、学习51单片机内部定时计数器的使用和编程方法。
2、进一步掌握中断处理程序的编程方法。
二、实验内容1、定时器实验(1)基本部分:用CPU内部定时器中断方式计时,实现每一秒钟输出状态发生反转。
(2)扩展部分:利用P1口控制发光二极管LED按照下面方式工作:a)从左到右奇数LED灯依次点亮;b)从右到左偶数LED灯依次点亮;c)按照以上步骤重复运行,要求灯亮的时间为1s,由定时器T1实现。
2、计数器实验8501内部定时计数T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。
将其数值按二进制数在P1口驱动LED灯上显示出来。
三、实验连线1、基础部分:JP8(P1)和JP1(LED)用8PIN排线连接起来。
计数器实验还需用杜邦线连接P3.5(JP9)与独立键(JP5).2、扩展部分:实验1的扩展部分选用P2口,即JP11(P2)和JP1(LED)用8PIN排线连接起来。
四、实验步骤与说明1、定时器实验(1)基本部分a)编写程序:由于系统的晶振是12MHZ,即机器周期为1微秒,选择定时器工作在方式1,设定定时时间为50ms,则要循环20次,计算其初值为(65536—50000/1)。
接着编写程序如下:#include<reg51.h>unsigned char i;void main(){P1=0;TMOD=0x01;EA=1; ET0=1; TR0=1;i=20;TH0=(65536-50000)/256; TL0=(65536-50000)%256;while(1);}void timer() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;i--;if(i==0){ P1=~P1;i=20;}}b)将程序烧入单片机内,观察现象。
(2)扩展部分按要求写出如下程序并烧入单片机,程序如下:#include<reg51.h>#include<intrins.h>unsigned char i=0;unsigned char sum;void main(){P2=0xfe;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;while(1);}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;sum++;if(sum==20){sum=0;i++;if(i<4){P2=_crol_(P2,2);}if(i==4){P2=0x7f;}if((i>4) && (i<8)){P2=_cror_(P2,2);}if(i==8){P2=0xfe;i=0;}}}编译生成hex文件烧入单片机观察现象。
定时器计数器应用实验报告实验结果分析及讨论论1.实验中出现过的问题或错误、原因分析程序输入错误导致无法完全编译2.保证实验成功的关键问题保证代码输入正确以及操作正确。
弄清楚keil软件与proteus软件互相调试的原理,确保proteus软件的正常运行。
对实验自我评价价更加熟悉了keil软件和proteus软件操作,了解了定时器/计数器计数功能的使用方法。
教教师师评评阅阅1.学生实验动手能力(20分):□优秀(20~18)□较好(17~15)□合格(14~12)□不合格(11~0)2.实验报告内容(共60分)(1)实验目的、材料、原理、内容及步骤记录(20分):□正确、清晰、重点突出(20~18)□较正确、较清晰(17~15)□有少数错误(14~12)□有较多错误(11~0)(2)实验数据(现象)及结果记录、处理(20分):□清晰、正确(20~18)□较清晰、较正确(17~15)□合格(14~12)□不合格(11~0)(3)实验结果分析及讨论(20分):□结果详实、结论清晰、讨论合理(20~18)□结果正确、讨论适当(17~15)□合格(14~12)□不合格(11~0)3.学生遵循实验室规定及实验要求程度(20分):□好(20~18)□较好(17~15)□合格(14~12)□不合格(11~0)4.其它意见:教师签名:年月日课程名称单片机原理及应用实验成成绩实验名称定时器/计数器应用实验专专业电子信息科学与技术年级/班级学学号实验地点实验日期姓姓名实验类型□演示性□验证性☑综合性□设计性指导教师实实验验目目的的1.掌握定时器/计数器计数功能的使用方法。
2.掌握定时器/计数器的中断、查询使用方法。
3.掌握keil软件和proteus软件的使用方法。
4.掌握单片机系统的硬件和软件设计方法。
实验仪器及耗材材1.THDPJ-3型单片机开发综合实验装置;2.PC;3.KeiluVision4仿真软件。
4.proteus8.0软件实实验验原原理理1.实验原理:要产生周期为2ms的方波,可以利用定时器在1ms时产生溢出,再通过软件方法使P2.0引脚的输出状态取反。
实验题目:定时计数器实验一、实验目的:1、学习定时器编程方法。
2、学习计数器编程方法。
二、实验仪器设备计算机一台、单片机在线系统一套(AY—MPU89S51E)三、实验电路:画出与实验内容有关的实验电路。
四、实验内容:1、T0做定时器,在P1.0输出一个周期为2秒的方波信号;2、T1做计数器,记录P1.0引脚上的脉冲个数;3、在数码管上显示脉冲个数;五、实验步骤:1、画出程序流程图。
3、程序输入到编程软件Keilc51中。
3、编译下载程序到系统实验板上的单片机中。
4、分析调试记录的内容和结果,找出程序中可能出错的地方,然后修改程序,继续调试、记录、分析,直到调试成功。
实验电路:程序流程图:XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C52……还有5个接于P2.2~P2.6程序代码:GEWEI EQU 21HSHIWEI EQU 22HBAIWEI EQU 23HSCANLED BIT 01HSCANLED1 BIT 02HORG 0000HAJMP MAINORG 000BHAJMP TIMERORG 0100HMAIN:MOV P1,#0FFHMOV SP,#5FHMOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)MOV TH1,#00HMOV TL1,#00HMOV 30H,#00HMOV TMOD,#01100001BYN开始初始化T0做定时器,在P1.0输出一个周期为2秒的方波信号T1做计数器,记录P1.0引脚上的脉冲个数脉冲个数转换为BCD 码在数码管上显示显示完毕?结束SETB EASETB ET0MOV TCON,#01010000B LOOP: MOV A,TL1MOV B,#100DIV ABMOV BAIWEI,AMOV A,BCPL SCANLED1JB SCANLED1,S0MOV B,#10DIV ABMOV SHIWEI,AMOV GEWEI,BCPL SCANLEDJB SCANLED,S1AJMP S2S0:MOV P2,#01111111BMOV A,BAIWEIAJMP FINDS1:MOV P2,#10111111BMOV A,SHIWEIAJMP FINDS2:MOV P2,#11011111BMOV A,GEWEIAJMP FINDFIND: MOV DPTR,#TABMOVC A,@A+DPTRMOV P0,ALJMP LOOPTIMER:PUSH AccPUSH PSWINC 30HMOV A,30HCJNE A,#20,L1CPL P1.0MOV 30H,#00HL1:MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000)POP PSWPOP AccRETITAB:DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90HEND。
一、AT89C51实验目的:
1.有两个定时/计数器,本试验中,将T1作为定时器用,定时50ms,T0作为计数器用,被计数的外部输入脉冲信号从单片机的P3.4接入,最大计数值为0ffffh。
单片机将在每50ms内对脉冲计数并送数码管实时显示,并利用T1定时从P3.7口输出周期为200ms占空比50%的方波。
2.用PROTEUS设计、仿真基于AT89C51单片机的脉冲计数与定时。
3.学会使用VSM虚拟示波器和计数/定时器
二、PROTEUS电路设计
本设计的电路原理图如图所示,这个设计都在ISIS平台中进行。
1.从PROTEUS库中选取元器件
①at89c51.bus:单片机
②7SEG-BCD-GRN:七段带译码BCD绿色数码管,
③button:按键
2.虚拟测试仪器
①vsm虚拟计数/定时器
单击工具栏,再在对象选择器中选中COUNTER TIMER(计数/计时器),打开其属性编辑况,单击运行模式下的下拉菜单如图,可以选择计数、频率、计时模式。
当前设置为计数模式。
②vsm虚拟示波器
单击工具栏,再在对象选择器中选中OSCILLOSCOPE,将P3.7与C信道连接。
三、原程序设计、生成目标代码文件
1.流程图
主程序流程
2.程序代码设计
四、proteus仿真
五、思考题
修改程序实现1S内对脉冲计数并送四位数码管实时显示,最大计数值为0ffffh,将COUNTER TIMER 属性设为频率,利用工具栏中的激励源DCLOCK作为脉冲输入源与p3.4口相连。
实验5 定时/计数器实验
(1)实验1现象:第一秒钟L1、L3亮,第二秒钟L2、L4亮,第三秒钟L5、L7亮,第四秒钟L6、L8亮,第五秒钟L1、L3、L5、L7亮,第六秒钟L2、L4、L6、L8亮,第七秒钟八个二极管全亮,第八秒钟全灭,以后又从头开始,……一直循环下去。
(2)实验程序注释
ORG 4000H 设置程序起始地址
LJMP START
ORG 401BH 设置中断端口
LJMP IT11 跳转到中断程序
ORG 4100H 设置主程序起始地址
START:MOV A,#05H 将5传送到累加器A
MOV R1,#03H 将3传送到R1
MOV R0,#0AH 将10传送到R0
ANL TMOD,#0FH
ORL TMOD,#10H 设置TMOD的初值
MOV TL1,#0AFH
MOV TH1,#3CH 设置计数初值
MOV IE,#88H 设置IE的值
SETB TR1 设置TR1的初值为1,启动定时器1的运行LOOP1:CJNE R0,#00H,DISP R0不等于0时转移到DISP
MOV R0,#0AH 将10传送到R0,实现定时
INC R1 R1加1,以在后面输出不同的显示码转换LED的闪亮模式
CJNE R1,#0BH,LOOP2 R1不等于11时转移到LOOP2(设置了10种显示模式)
MOV R1,#03H 将3传送到R1,重新设定R1的初值
LOOP2:MOV A,R1 将R1的值传送到累加器A
MOVC A,@A+PC 将(A+PC)单元的值传送到A,即将显示码传送到A
LJMP DISP 转移到DISP
DB 0FAH,0F5H,0AFH,5FH,0AAH,55H,00H,0FFH 显示码
DISP:MOV P1,A将A的值传送到P1口,即将显示码传送到P1口JMP LOOP1 转移到LOOP1,继续循环
IT11:CLR TR1 以下是中断程序,本行命令是将TR1设置为0,即关闭定时器R1 DEC R0 R0减1,实现定时
MOV TL1,#0AFH
MOV TH1,#3CH 设置计数器的初始值,以实现定时时间
SETB TR1 将TR1设置为1,即启动定时器R1
RETI 跳转回主程序
END
1、实验2
ORG 4000H
LJMP START
ORG 401BH
LJMP IT11
PORT EQU 0CFA8H
ORG 4100H
START:MOV TMOD,#60H
MOV TL1,#0FAH
MOV TH1,#0FAH
ORL IE,#88H
SETB TR1
MOV P1,#0FFH
LP:MOV P1,#10H
ACALL DEL1
CPL A
MOV DPTR,#PORT
MOVX @DPTR,A
AJMP LP
IT11:MOV A,#0FFH
MOV DPTR,#PORT
MOVX @DPTR,A
MOV R1,#50H
ACALL DEL1
MOV A,#00H
MOV DPTR,#PORT
MOVX @DPTR,A
RETI
DEL1:MOV R2,#200
DEL2:MOV R3,#126
DEL3:DJNZ R3,DEL3
DJNZ R2,DEL2
DJNZ R1,DEL1
MOV R1,#10
RET
现象:L5、L6不亮,持续5秒钟。
5秒后L5、L6又继续闪亮。
2、实验3程序
ORG 4000H
LJMP START
ORG 401BH
LJMP IT11
ORG 4100H
START:ANL TMOD,#0FH
ORL TMOD,#10H
MOV TL1,0AFH
MOV TH1,#3CH
MOV IE,#88H
SETB TR1
MOV A,#00H
MOV P1,A
MOV R1,#14H LOOP:CJNE R1,#00H,LOOP CPL A
MOV P1,A
MOV R1,#14H
LJMP LOOP
IT11:CLR TR1
DEC R1
MOV TL1,#0AFH
MOV TH1,#03CH
SETB TR1
RETI
END。