实验2 定时器/计数器接口扩展设计

合集下载

单片机实验报告

单片机实验报告

单片机实验报告学院:姓名:学号:指导老师:目录第一章实验内容、目的及要求 (2)一、内容 (2)二、目的及要求 (3)第二章实验 (3)实验一数字量输入输出实验 (3)实验二定时器/计数器实验 (4)实验三A/D、D/A转换实验 (11)实验四串行通信设计 (20)第三章实验体会 (28)第一章实验内容、目的及要求一、内容实验一数字量输入输出实验阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“3.1 数字量输入输出实验”基本实验项目。

实验二定时器/计数器实验阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“3.3 定时/计数器实验”基本实验项目。

提高部分:定时器控制LED灯由单片机内部定时器1,按方式1工作,即作为16位定时器使用每0.05秒钟T1溢出中断一次。

P1口的P1.0-P1.7分别接八个发光二极管。

编写程序模拟时序控制装置。

开机后第一秒钟L1,L3亮,第二秒钟L2,L4亮,第三秒钟L5,L7亮,第四秒钟L6,L8亮,第五秒钟L1,L3,L5,L7亮,第六秒钟L2,L4,L6,L8亮,第七秒钟八个LED灯全亮,第八秒钟全灭,以后又从头开始,L1,L3亮,然后L2,L4亮……一直循环下去。

实验三A/D、D/A转换实验阅读、验证C语言程序功能。

使用汇编语言编程,完成实验指导书之“4.3 A/D转换实验”项目(P64)和“4.4 D/A转换实验”项目。

提高部分:(要求:Proteus环境下完成)小键盘给定(并显示工作状态),选择信号源输出波形类型(D/A 转换方式),经过A/D采样后,将采样数据用LED灯,显示当前模拟信号值大小及变化状态。

实验四串行通讯实验阅读、调试C语言程序功能。

使用汇编语言编程,完成实验指导书之“3.7 串口通讯实验”项目。

(要求:实验仪器上完成)提高部分:(要求:Proteus环境下完成)利用单片机实验系统,实现与PC机通讯。

功能要求:将从实验系统键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到单片机实验系统的数码管上。

单片机定时器与计数器的应用与接口设计

单片机定时器与计数器的应用与接口设计

单片机定时器与计数器的应用与接口设计摘要:单片机中的定时器和计数器是非常重要且常用的功能模块,用于实现精确的时间控制和事件计数。

本文将介绍单片机定时器和计数器的基本原理和应用,并深入探讨它们的接口设计。

1. 引言单片机是一种集成了处理器、存储器和各种外设接口的微型计算机。

在嵌入式系统中,单片机常常需要处理各种时间相关的任务,如定时触发特定操作、测量时间间隔和计算事件次数等。

定时器和计数器作为单片机的重要外设,能够提供精确的时间控制和事件计数功能。

2. 定时器的基本原理和应用定时器是一种能够生成精确时间延迟的设备,常用于控制各种时间相关的任务。

在单片机中,定时器通常由一个计数器和一个时钟源组成。

当计数器的值达到设定的阈值时,会产生一个中断信号或触发一个特定的操作。

定时器常用于以下应用场景:2.1 延时操作:通过设置定时器的阈值和时钟源,可以实现精确的延时操作,如LED灯的闪烁控制、蜂鸣器的鸣叫持续时间控制等。

2.2 定时中断:定时器可以周期性地产生中断信号,用于实现时间感知的任务,如定时采集传感器数据、定时更新显示等。

2.3 PWM生成:定时器可以用于生成脉冲宽度调制(PWM)信号,用于控制驱动器或产生模拟信号,如电机控制、音频发生器等。

3. 单片机常用的定时器模块不同型号的单片机提供了各种类型和不同功能的定时器模块。

以常见的AVR单片机为例,其常用的定时器模块包括定时/计数器0、定时/计数器1和定时/计数器2等。

这些定时器模块具有不同的位数、工作模式和功能特性,开发人员可以根据具体需求选择合适的定时器模块。

4. 定时器的接口设计单片机定时器的接口设计包括时钟源设置、计数器模式设置、阈值设置和中断配置等。

不同的定时器模块具有不同的寄存器和位域,开发人员需要通过设置这些寄存器和位域来实现定时器的功能。

4.1 时钟源设置:定时器的时钟源可以选择外部晶体振荡器、外部时钟源或与系统时钟源相关的分频器。

开发人员需要根据具体需求选择合适的时钟源,并将相应的位域设置为合适的值。

定时器与计数器的扩展

定时器与计数器的扩展

定时器与计数器的扩展1 定时器的扩展定时器是工程中经常使用的功能块。

普通定时器的时间最小分辨率为1毫秒,一般采用32位的字长来存储时间数据,则一个普通定时器能够表示的最长时间约为49天。

如果希望表示更长的时间,可以采用对普通定时器进行扩展的方法来实现。

(1)变量定义PROGRAM PLC_PRGV ARTON1: TON; (* 定时器*)ET1: TIME; (* 定时器时间显示*)CTU1: CTU; (* 递增计数器*)CV1: INT; (* 计数值显示*)CTU2: CTU; (* 递增计数器*)CV2: INT; (* 计数值显示*)Reset1: BOOL; (* 递增计数器清零*)DO1: BOOL; (* 布尔变量*)DO2: BOOL; (* 布尔变量*)DO3: BOOL; (* 布尔变量*)END_V AR(2)梯形图(3)程序分析定时器TON1用来实现1分钟的定时。

定时器TON1的使能端EN接在以其输出端TON1.Q为变量的常闭触点之后,实现定时器TON1的脉冲复位。

当定时器TON1的输出端TON1.Q置位时,计数器CTU1的计数值CV1增1,实现分钟计时。

当计数器CTU1的计数值CV1等于设定值60时,计数器CTU1的输出端CTU1.Q 置位,进而使计数器CTU1复位,从而实现小时定时。

当计数器CTU1的输出端CTU1.Q置位时,计数器CTU2的计数值CV2增1,实现小时计时。

当计数器CTU2的计数值CV2等于设定值24时,计数器CTU2的输出端CTU2.Q 置位,进而使计数器CTU2复位,从而实现每天定时。

如此,即可实现定时器的扩展功能。

当Reset1置位时,所有递增计数器清零,实现系统复位。

2 计数器的扩展计数器是工程中经常使用的功能块。

因为计数器一般采用16位的字长来存储计数值,所以一个计数器能够表示的最大计数值为65535。

如果计数值的范围超过65535,并且还希望能够进行正常的计数,则可以采用对计数器进行扩展的方法来实现。

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

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

一、实验目的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. 学习定时器和计数器的基本原理及应用。

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开发板连接到电脑,并下载程序到开发板中。

简单i o口扩展实验报告

简单i o口扩展实验报告

简单i o口扩展实验报告简单I/O口扩展实验报告引言在现代科技发展的浪潮下,电子设备的功能和复杂性不断提升。

然而,对于初学者来说,了解和掌握电子设备的基本原理和操作方法是非常重要的。

本实验旨在通过简单的I/O口扩展实验,帮助初学者更好地理解和应用I/O口扩展技术。

一、实验目的本实验的主要目的是通过使用I/O口扩展技术,实现电子设备与外部设备的交互功能。

具体目标包括:1. 了解I/O口扩展的基本原理和应用场景;2. 学习使用I/O口扩展芯片进行输入输出控制;3. 实现简单的电子设备与外部设备的交互功能。

二、实验器材1. Arduino开发板;2. I/O口扩展芯片;3. 电阻、电容等基本电子元件;4. 连接线、面包板等实验工具。

三、实验步骤1. 连接电路将Arduino开发板与I/O口扩展芯片通过连接线连接起来,按照电路图进行正确的连接。

确保电路连接无误后,将其连接到电源。

2. 编写程序在Arduino开发环境中,编写程序以实现所需的输入输出控制功能。

通过调用相应的库函数,配置I/O口扩展芯片的输入输出模式,并编写相应的逻辑控制代码。

3. 烧录程序将编写好的程序烧录到Arduino开发板中,确保程序能够正确运行。

4. 实验验证运行程序后,通过操作外部设备,如按钮、LED灯等,验证I/O口扩展功能的正确性。

观察外部设备的状态变化,以及Arduino开发板的响应情况。

四、实验结果与分析通过实验,我们成功实现了I/O口扩展技术的应用。

通过编写程序,我们可以根据需要配置I/O口扩展芯片的输入输出模式,并通过控制逻辑实现与外部设备的交互功能。

在实验过程中,我们发现通过I/O口扩展技术,可以实现大量的输入输出控制。

例如,我们可以通过按钮控制LED灯的开关,通过传感器获取环境温度并进行相应的控制,通过继电器控制电机等。

这些功能的实现,不仅提高了电子设备的灵活性和可扩展性,也为我们提供了更多的创造空间。

然而,我们也发现在实际应用中,I/O口扩展技术还存在一些挑战和限制。

定时计数器实验报告

定时计数器实验报告

定时计数器实验报告定时计数器实验报告一、引言定时计数器是一种常见的电子设备,它可以根据预设的时间间隔进行计数,并在达到设定值时触发相应的操作。

在本次实验中,我们将通过搭建一个简单的定时计数器电路来了解其工作原理和应用。

二、实验目的1. 掌握定时计数器的基本原理;2. 学习使用集成电路和其他元件搭建定时计数器电路;3. 了解定时计数器在实际生活中的应用。

三、实验器材1. 集成电路:555定时器芯片;2. 电阻:100Ω、10kΩ;3. 电容:10μF;4. 开关:按键开关;5. LED灯:红色。

四、实验步骤1. 将555定时器芯片插入面包板中,并连接电源和地线;2. 将100Ω电阻连接到芯片的引脚6和7之间;3. 将10kΩ电阻连接到芯片的引脚7和8之间;4. 将10μF电容连接到芯片的引脚1和2之间;5. 连接按键开关到芯片的引脚2和8之间;6. 连接LED灯到芯片的引脚3。

五、实验原理555定时器芯片是一种多功能集成电路,它可以通过外部元件的连接和设置,实现不同的计时和触发功能。

在本次实验中,我们使用555定时器芯片作为定时计数器的核心。

555定时器芯片的工作原理是基于两个比较器和一个RS触发器的组合。

当芯片上电后,引脚2和6的电平会进行比较,如果引脚6的电平高于引脚2,则芯片的输出为低电平;反之,输出为高电平。

当芯片输出为高电平时,电容开始充电,直到电压达到2/3的供电电压,此时芯片的输出变为低电平,电容开始放电,直到电压降至1/3的供电电压,芯片的输出再次变为高电平。

这样,芯片的输出就形成了一个周期性的方波信号。

六、实验结果与分析经过搭建和调试,我们成功实现了定时计数器电路。

当按下按键开关时,LED 灯开始闪烁,每隔一段时间亮起一次,然后熄灭,如此循环往复。

定时计数器在实际生活中有着广泛的应用。

例如,我们可以将其用于定时控制家电设备的开关,实现定时开关灯、定时煮饭等功能。

此外,定时计数器还可以应用于工业自动化领域,用于计时、触发和控制各种生产过程。

计数器定时器8253和并行接口8255综合实验

计数器定时器8253和并行接口8255综合实验

计数器定时器8253和并行接口8255综合实验一、实验目的1.掌握8253定时原理和初始化方法。

2.掌握8255并行输入输出原理和初始化方法。

3.掌握定时器8253和并行接口8255的综合应用设计技术。

二、实验内容用8253定时1秒钟,“时间到”信号可由8255端口的一个位检测得到。

在8255的另一个端口连接8个发光二极管,则可实现每隔1秒钟循环点亮1个灯。

还可以在8255端口的另一个位连接一只开关,当开关拨到1时进入运行状态,当拨到0时返回DOS。

三、实验程序流程图四、实验硬件接线图程序清单:CODE SEGMENTASSUME CS:CODESTART:MOV AL,10010000B ;8255初始化MOV DX,28BH ;间接I/O寻址方式,8255的控制口地址OUT DX,AL ;将8255控制字送控制端口地址PR0: MOV AL,00110110B ;8253计数器0工作方式字MOV DX,283H ; 间接I/O寻址方式,8253的控制口地址OUT DX,AL ;将8253计数器0控制字送到控制端口地址MOV AX,1000 ;计数初值MOV DX,280H ;选中计数器0OUT DX,AL ; 将计数初值低字节送8253计数器0端口地址MOV AL,AH ; 先读写低字节,再读写高字节OUT DX,AL ; 将计数初值高字节送8253控制端口地址PR1: MOV AL,01111100B ;8253计数器1工作方式字MOV DX,283H ; 间接I/O寻址方式OUT DX,AL ;将8253计数器1控制字送到控制端口地址MOV AX,1000 ;计数初值MOV DX,281H ;选中计数器1OUT DX,AL ; 将计数初值低字节送8253计数器1端口地址MOV AL,AH ;先读写低字节,再读写高字节OUT DX,AL ;将计数初值高字节送8253控制口地址MOV BL,01HMOV DX,28AH ; 间接I/O寻址方式,8255的C口地址MOV AL,BLOUT DX,AL ;点亮一盏灯L1:MOV DX,288H ; 间接I/O寻址方式,8255的A口地址IN AL,DXTEST AL,10000000B ;测试PA7开关JE NEXT ;若为0则返回DOSL2: MOV DX,288H ;8255A口地址IN AL,DXTEST AL,00000001B ;测PA0,若是1则继续测PA0JNE L2ROL BL,1 ;若是0则准备点亮下一盏灯MOV DX,28AH ;8255C口地址MOV AL,BL ;点亮下一盏灯OUT DX,ALL3: MOV DX,288H ;8255A口地址IN AL,DXTEST AL,01H ;测PA0,若是0则继续测PA0JE L3 ;定时到OUT输出低电平并维持一个CLK周期JMP L1 ;若PA0为1,则跳转至L1NEXT: MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START。

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

实验2 定时器/计数器接口扩展设计
一、实验目的
1、学习8088/86与8253的连接方法。

2、学习8088/86对8253的控制方法。

3、学习8253多级串联实现大时间常数的定时方法。

二、实验原理
利用8088/86外接8253可编程定时器/计数器,可以实现对外部事件进行计数。

设置断点读回计数器的值。

用8253对标准脉冲信号进行计数,就可以实现定时功能。

三、实验仪器
LAB 6000实验系统,PC 机
四、实验内容
计数器:
本实验中计数器按方式0工作。

即十六位二进制计数器。

当计数设置好后,计数器就开始计数。

如果要读入计数器的值,要先锁存计数值,才能读到计数值。

本实验所设计数值为5,也就是外部5个脉冲,计数器值加1。

同时OUT 脚输出一个高电平。

实验时,可以将OUT0接到LED 上,观察计数器是否工作。

根据以下程序流程图编写完整的实验程序并调试。

参考程序: CONTROL equ 08003h
COUNT0 equ 08000h
COUNT1 equ 08001h
COUNT2 equ 08002h
code segment
assume cs:code
start proc near
mov al, 30h ; 通道0,方式0
mov dx, CONTROL
out dx, al
mov al, 5 ; 计数器初始值。

mov dx, COUNT0
out dx, al ; 低八位
mov al, 0
out dx, al ; 高八位
Again:
mov al, 00000000B ; 锁存计数器值
mov dx, CONTROL
out dx, al
mov dx, COUNT0
in al, dx ; 读入计数值低八位
mov bl, al
in al, dx ; 读入计数值高八位
mov ah, al
mov al, bl
jmp Again
start endp
code ends
end start
1、定时器:
工作方式0,计数值减完后输出一个脉冲宽度的高电平。

而本实验在计数值减完后,管脚状态产生变化(从高到低或从低到高)。

直到下一次计数值减完。

这样输出的波形为方波。

由于定时常数过大,就要用多级串联方式。

本实验采用两级计数器。

定时常数分别为100和10000。

将计数器的输出接到计数器0输入。

计数器0的输出接到LED0。

用板上的1MHz做为标准信号,将8253可编程计数器/定时器的时间常数设在1000000次,就可以在定时器的管脚上输出1秒钟高/1秒钟低的脉冲信号。

因为8253每个计数器只有十六位,要用两个计数器才能实现一百万次的计数,实现每一秒钟输出状态发生一次反转。

根据以下程序流程图编写完整的实验程序并调试。

参考程序:
CONTROL equ 0c003h
COUNT0 equ 0c000h
COUNT1 equ 0c001h
COUNT2 equ 0c002h
code segment
assume cs:code
start proc near
mov al, 36h; 00110110B ; 计数器0,16位,方式3,二进制
mov dx, CONTROL
out dx, al
mov ax, 1000
mov dx, COUNT0
out dx, al ; 计数器低字节
mov al, ah
out dx, al ; 计数器高字节
mov al, 76h; 01110110B ; 计数器1,16位,方式3,二进制 mov dx, CONTROL
out dx, al
mov ax, 1000
mov dx, COUNT1
out dx, al ; 计数器低字节
mov al, ah
out dx, al ; 计数器高字节
jmp $
start endp
code ends
end start
五、实验总结
整理实验程序,并进行实验结果定性分析。

相关文档
最新文档