实验2 定时器/计数器接口扩展设计
单片机实验报告
![单片机实验报告](https://img.taocdn.com/s3/m/06832bb165ce050877321305.png)
单片机实验报告学院:姓名:学号:指导老师:目录第一章实验内容、目的及要求 (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)显示到单片机实验系统的数码管上。
单片机定时器与计数器的应用与接口设计
![单片机定时器与计数器的应用与接口设计](https://img.taocdn.com/s3/m/b9ebe03b30b765ce0508763231126edb6e1a766d.png)
单片机定时器与计数器的应用与接口设计摘要:单片机中的定时器和计数器是非常重要且常用的功能模块,用于实现精确的时间控制和事件计数。
本文将介绍单片机定时器和计数器的基本原理和应用,并深入探讨它们的接口设计。
1. 引言单片机是一种集成了处理器、存储器和各种外设接口的微型计算机。
在嵌入式系统中,单片机常常需要处理各种时间相关的任务,如定时触发特定操作、测量时间间隔和计算事件次数等。
定时器和计数器作为单片机的重要外设,能够提供精确的时间控制和事件计数功能。
2. 定时器的基本原理和应用定时器是一种能够生成精确时间延迟的设备,常用于控制各种时间相关的任务。
在单片机中,定时器通常由一个计数器和一个时钟源组成。
当计数器的值达到设定的阈值时,会产生一个中断信号或触发一个特定的操作。
定时器常用于以下应用场景:2.1 延时操作:通过设置定时器的阈值和时钟源,可以实现精确的延时操作,如LED灯的闪烁控制、蜂鸣器的鸣叫持续时间控制等。
2.2 定时中断:定时器可以周期性地产生中断信号,用于实现时间感知的任务,如定时采集传感器数据、定时更新显示等。
2.3 PWM生成:定时器可以用于生成脉冲宽度调制(PWM)信号,用于控制驱动器或产生模拟信号,如电机控制、音频发生器等。
3. 单片机常用的定时器模块不同型号的单片机提供了各种类型和不同功能的定时器模块。
以常见的AVR单片机为例,其常用的定时器模块包括定时/计数器0、定时/计数器1和定时/计数器2等。
这些定时器模块具有不同的位数、工作模式和功能特性,开发人员可以根据具体需求选择合适的定时器模块。
4. 定时器的接口设计单片机定时器的接口设计包括时钟源设置、计数器模式设置、阈值设置和中断配置等。
不同的定时器模块具有不同的寄存器和位域,开发人员需要通过设置这些寄存器和位域来实现定时器的功能。
4.1 时钟源设置:定时器的时钟源可以选择外部晶体振荡器、外部时钟源或与系统时钟源相关的分频器。
开发人员需要根据具体需求选择合适的时钟源,并将相应的位域设置为合适的值。
定时器与计数器的扩展
![定时器与计数器的扩展](https://img.taocdn.com/s3/m/0080ae1610661ed9ad51f3ca.png)
定时器与计数器的扩展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,并且还希望能够进行正常的计数,则可以采用对计数器进行扩展的方法来实现。
单片机实验之定时器计数器应用实验二
![单片机实验之定时器计数器应用实验二](https://img.taocdn.com/s3/m/a67fa6ae01f69e3142329452.png)
一、实验目的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口线状态。
定时器计数器实验报告
![定时器计数器实验报告](https://img.taocdn.com/s3/m/36a7afde6394dd88d0d233d4b14e852458fb39f8.png)
定时器计数器实验报告简介:定时器是一种用来产生、计数和处理时间信号的计时装置。
在数字电路中,定时器主要分为内部定时器和外部定时器两类,内部定时器是在单片机内部实现的,外部定时器则是通过外部电路实现的。
计数器则是一种用来计数的电子元件,根据不同的使用场合和要求,计数器可以分为多种类型。
在嵌入式系统中,定时器计数器应用广泛,例如在时钟、延时、计数等方面都有很大的作用。
实验目的: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口扩展实验报告](https://img.taocdn.com/s3/m/e0615dbe710abb68a98271fe910ef12d2af9a9f7.png)
简单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口扩展技术还存在一些挑战和限制。
定时计数器实验报告
![定时计数器实验报告](https://img.taocdn.com/s3/m/a12cba0dff4733687e21af45b307e87101f6f824.png)
定时计数器实验报告定时计数器实验报告一、引言定时计数器是一种常见的电子设备,它可以根据预设的时间间隔进行计数,并在达到设定值时触发相应的操作。
在本次实验中,我们将通过搭建一个简单的定时计数器电路来了解其工作原理和应用。
二、实验目的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综合实验](https://img.taocdn.com/s3/m/e26e1cbc43323968001c9223.png)
计数器定时器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。
实验二定时器计数器实验
![实验二定时器计数器实验](https://img.taocdn.com/s3/m/adff1e922cc58bd63186bde8.png)
实验二定时器计数器实验1.实验目的①掌握8051的定时器、中断系统编程方法;②了解定时器的应用、实时程序的设计和调试技巧。
2.预习要求①理解定时器的四种工作方式的异同点;②理解TMOD寄存器中GATE、C/T控制位的作用;③理解定时器中断服务程序的响应过程;④理解定时器实现精确定时的方法;⑤认真预习本节实验内容,设计出器件之间的实验连接线,自行编写程序,填写实验报告。
3.实验设备计算机1台;ZDGDTH-1型80C51实验开发系统1套;2号导线、8P数据线若干条;4.基础型实验内容①如图2-1所示,假设采用P1.0口控制外部LED,用拨动开关控制外部中断,用二号导线将D2区80C51/C8051F020MCU模块的 P1.0、P3.2口分别与A 5区八位逻辑电平显示模块的L0、C6区八位逻辑电平输出K0相连。
在Keil环境运行以下程序,分别拨动K0于高低电平位置,观察实验现象,并说明所发生实验现象的原因。
图2-1 外部中断及LED显示电路ORG 0000HLJMP MAINORG 000BHLJMP TIMER0ORG 0030HMAIN: CLR P1.0MOV TMOD,#0AHMOV TL0,#50HMOV TH0,#50HSETB TR0SJMP $TIMER0: CPL P1.0RETIEND②用二号导线将80C51/C8051F020 MCU模块的P1.0与八位逻辑电平显示模块的任意一只发光二极管相连,全速运行下列程序,发光二极管隔一秒点亮一次,点亮时间为一秒。
流程图为:主程序框图定时中断子程序图源程序:Tick equ 10000 ; 10000 x 100us = 1sT100us equ 20 ; 100us时间常数(6M)C100us equ 5h ; 100us记数单元LEDBuf BIT 00HLED BIT P1.0org 0000Hljmp Startorg 000BHLJMP T0IntORG 0100HT0Int: push PSWmov a, C100us+1jnz Goondec C100usGoon: dec C100us+1mov a, C100usorl a, C100us+1jnz Exit ; 100us 记数器不为0, 返回mov C100us, #HIGH(TICK);#high(Tick)mov C100us+1, #LOW(TICK);#low(Tick)cpl LEDBuf ;100us 记数器为0, 重置记数器,取反LEDExit: pop PSWretiStart: mov TMOD, #02h ; 方式2, 定时器mov TH0, #t100usmov TL0, #t100usmov IE, #10000010b ; EA=1, IT0 = 1setb TR0 ; 开始定时clr LEDBufclr P1.0mov C100us, #high(Tick)mov C100us+1, #low(Tick)Loop: mov c, LEDBufmov P1.0, csjmp Loopend5.设计型实验内容①编程使第1~4和5~8发光二极管循环点亮的时间分别为0.25s、0.5s、0.75s、1s。
实验二定时器计数器扩展及应用
![实验二定时器计数器扩展及应用](https://img.taocdn.com/s3/m/ad2d16fe4693daef5ef73d91.png)
实验二计数器和定时器的扩展应用
一、实验目的
1.学习PLC内部器件的使用;
2.计数器和定时器的扩展。
二、实验内容及步骤
学习使用PLC的梯形图编成软件,了解PLC的工作原理,通过更改程序了解和掌握PLC内部器件的使用。
图1--2 接线图
实验步骤 :
1.按图1-2接线;
2.检查合格后,开PC机,接通PLC的电源开关;
3.在PC机上运行PLC编程软件,学习梯形图编成软件地使用。
4.直接将梯形图程序通过串行通信下载到PLC ;
运行程序观察PLC输入/输出端口的状态,更改程序并运行观察端口变化。
1)定时器扩展程序
2)计数器定时器扩展程序
用外部指令分别执行以上程序观察现象。
三.实验报告要求
画出梯形图,写出指令代码,分析实验结果。
附:1、定时器扩展程序
2、定时计数器扩展程序。
8253计数器定时器接口实验
![8253计数器定时器接口实验](https://img.taocdn.com/s3/m/5d475e3d0b4c2e3f57276361.png)
微机原理实验报告实验五 8253计数器/定时器接口实验1.实验目的1)学会通过PC总线、驱动器、译码器等在PC机外部扩充为新的芯片;2)了解8253计数器/定时器的工作原理;3)掌握8253初始化的程序设计;4)掌握8253方式0的计数方式的使用方法和方式3方波产生的方法。
2.实验内容将实验装置上的1片8253定时器/计数器接入系统,具体做两个内容的实验。
1)实验一:将8253的计数器0设置为工作于方式0,设定一个计数初值,用手动逐个输入单脉冲,观察OUT0的电平变化。
硬件连接:断开电源,按图2-1将8253接入系统。
具体包括:(1)将8253的CS接I/O地址输出端280H-287H;(2)将8253的计数器0的CLK0与单脉冲信号相连,以用来对单脉冲进行计数;(3)将8253的GATE0用专用导线接向+5V,以允许计数器0工作;(4)将8253的OUT0接到LED发光二极管,以显示8253计数器0的输出OUT0的状态。
图2-1 8253实验一的连线图2)实验二:将8253的计数器0、1均设置为工作于方式3(方波),按图2-2重新接线。
要求是当CLK0接1MHz时,OUT1输出1Hz的方波,OUT的输出由LED 显示出来。
将计数器0与计数器1串联使用,计数器0的输出脉冲OUT0作为计数器1的时钟输入CLK1。
图2-2 8253实验二的连线图3.程序及框图1)程序框图图4-1给出了8253实验一的流程图。
图4-1 程序流程图图4-2给出了8253实验二的流程图。
2)程序代码实验一程序代码:CTRL EQU 283HTIME0 EQU 280HTIME1 EQU 281HDATA SEGMENTMESS DB 'ENTER ANY KEY RETURN TO DOS!',0DH,0AH,'$' DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DX,AXMOV DX,OFFSET MESSMOV AH,09HINT 21HMOV DX,CTRLMOV AL,30HOUT DX,ALMOV DX,TIME0MOV AX,03HOUT DX,ALXCHG AH,ALOUT DX,ALCOUNT:MOV AH,06HMOV DL,0FFHINT 21HJZ COUNTMOV AX,4C00HINT 21HCODE ENDSEND START实验二程序代码:CTRL EQU 283HTIME0 EQU 280HTIME1 EQU 281HDATA SEGMENTMESS DB 'ENTER ANY KEY RETURN TO DOS!',0DH,0AH,'$' DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DX,AXMOV DX,OFFSET MESSMOV AH,09HINT 21HMOV DX,CTRLMOV AL,36HOUT DX,ALMOV AL,76H OUT DX,ALMOV DX,TIME0 MOV AX,1000OUT DX,ALXCHG AH,ALOUT DX,ALMOV DX,TIME1 MOV AX,1000OUT DX,ALXCHG AH,ALOUT DX,ALCOUNT:MOV AH,06H MOV DL,0FFHINT 21HJZ COUNTMOV AX,4C00HINT 21HCODE ENDSEND START4.实验数据、现象及结果分析5. 实验思考题1)实验一中的定时器0的输出OUT0的电平是如何变化的,为什么?解:假设对定时器0赋初值为3,则控制字发送后,OUT0变为低电平,当手动输入3个单脉冲后,OUT0变为高电平。
基于定时计数器的C语言开发拓展
![基于定时计数器的C语言开发拓展](https://img.taocdn.com/s3/m/aef43c6b7e21af45b307a8b3.png)
课程设计任务书学生姓名:专业班级:电信0804指导教师:工作单位:信息工程学院题目: 基于定时器的单片机仿真和C语言开发初始条件:本课程设计,要求用使用Proteus仿真软件进行系统设计与仿真。
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、课程设计工作量:1周内完成对系统的设计、仿真。
2、技术要求:1)试用定时器中断方式或查询定时器溢出标志方式从P口输出给定周期的方波。
要求进行电路仿真实验,并使用C语言进行程序的开发。
2)要求学生主动思考,自主发挥,实现系统的特色功能。
3、查阅至少5篇参考文献。
按《武汉理工大学课程设计工作规范》要求撰写设计报告书。
全文用A4纸打印,图纸应符合绘图规范。
提交报告的主要内容:(使用Proteus 7.5 sp3)1)题目2)仿真所完成的主要功能和特色简介——摘要(特别是自己扩展的功能,根据特色功能评优)3)Proteus仿真的基本流程4)所使用芯片以及引脚功能简介(需要提供对应芯片DataSheet的下载链接)5)设计方案与工作原理,给出仿真电路图6)实验记录与结果分析时间安排:1)2011 年7 月9~10 日,查阅相关资料,学习设计原理。
2)2011 年7 月11~12 日,方案选择和电路设计仿真。
3)2011 年7 月13 日,设计说明书撰写。
4)2011 年7 月14 日上交报告,同时进行答辩。
指导教师签名:年月日系主任(或责任教师)签名:年月日目录1 摘要···················································2 Proteus软件和Keil软件简介······························2.1 Proteus软件简介····················································2.2 Keil软件简介······················································3 设计过程···············································3.1 设计原理及拓展内容说明············································3.2 所用主要元器件····················································3.3 设计仿真电路······················································3.4 C语言代码·························································4 仿真结果及分析·········································5 心得体会···············································6 参考文献···············································7 本科生课程设计成绩评定表·······························1 摘要基本要求:1)本课设的主要目的是应用Proteus软件和嵌入式C语言编程工具,结合单片机原理及应用、微机原理与接口技术等专业课程,强化和巩固专业理论基础,掌握Proteus 仿真的技巧和嵌入式C语言编程工具,提高单片机开发能力,并为嵌入式开发打下基础。
单片机原理与接口技术实验指导书
![单片机原理与接口技术实验指导书](https://img.taocdn.com/s3/m/e1ecb3ecd4d8d15abf234e5f.png)
机械电子工程专业《单片机原理与接口技术》课程实验指导书撰写人:审定人:目录第一部分绪论 (1)第二部分基本实验指导 (2)实验一 (2)实验二 (9)实验三 (11)实验四 (14)实验五 (17)实验六 (19)实验七 (21)实验八 (23)第三部分扩展实验实验九 (26)实验十 (30)实验十一 (35)第一部分绪论本指导书是根据《单片机原理与接口技术》课程实验教学大纲编写的,适用于机械电子工程专业。
一、本课程实验的作用与任务本课程的实践性较强,安排适当的上机可以帮助学生理解教学内容,锻炼动手能力和综合设计能力。
二、本课程实验的基础知识熟悉Keil软件的使用,学习过单片机原理与接口技术及有一定的电路常识。
三、本课程实验教学项目及其教学要求序号实验项目名称学时教学目标、要求1单片机程序设计集成开发环境应用22掌握实验环境的应用,熟练掌握软件的各项功能2 定时器/计数器程序设计实验22掌握定时器的几种工作模式,并应用各种模式进行定时3 数码管显示程序设计实验22会对数码管译码,会进行动态显示数据4 独立式键盘程序设计实验22会对独立键盘进行消抖动,会识别按键5 行列矩阵式键盘程序设计实验22会用扫描法识别行矩阵按键6 秒表显示实验22会运用定时、中断知识进行综合设计7 串口通信实验22会编程让单片机和串口进行通信8 步进电机实验22能控制步进电机正传和反转合计1 16第二部分基本实验指导实验一单片机C51程序设计集成开发环境应用一、实验目的1. 了解集成开发环境Keil Vision3文件管理的特点。
2. 学会使用开发环境新建文件、编辑、编译程序。
3. 掌握开发环境程序设计相关设置及其意义。
二、实验要求实现单片机P1连接的LED发光二极管实现流水灯功能。
三、实验原理1. 熟练操作开发环境。
2. 利用C51相关知识,编写简单程序,生成可执行文件。
3. 记录编译错误信息,总结错误原因,写出解决办法。
实验二 单片机定时器计数器编程
![实验二 单片机定时器计数器编程](https://img.taocdn.com/s3/m/90ba9c3b195f312b3069a591.png)
实验二单片机定时器/计数器编程一、实验目的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;}}}}五、实验总结对软件及计数器的操作及代码不太熟悉,多次查询课本及上网查找资料后懂得计数器工作方式及计数操作,其他问题迎刃而解。
实验二 P1口及定时器计数器实验
![实验二 P1口及定时器计数器实验](https://img.taocdn.com/s3/m/ad97f042e55c3b3567ec102de2bd960591c6d951.png)
实验二 P1口及定时器计数器实验实验二p1口及定时器计数器实验实验二 P1端口和定时器计数器实验一、实验目的1.掌握单片机基本I/O端口的使用特点,了解扩展I/O端口的方法;2.掌握单片机定时器的工作原理,体验定时器的使用特点;3.掌握中断技术、编程方法和特点。
二、实验仪器1.一块C51实验开发板,两台电脑三、实验内容1.在P1端口进行试验连接仿真器和c51实验开发板,p1口做输出口,p1口连接至8只发光二极管接口jp8,如图3-1所示,接通开发板电源。
编写程序,使发光二极管指示灯循环点亮。
p1cpu89s52图3-1p1口输出CPU的振荡频率为11.0592 MHz,需要一个延迟子程序延迟来点亮LED周期。
延迟时间为(0b3+1)×256×10+2)×2×12÷11059200=1(秒)。
delay:movr5,#0ahmovr6,#00hdelay1:movr7,#0b3hdjnzr7,$Djnzr6,delay1djnzr5,delay1参考主程序org0000hljmpstartorg0040h开始:mova,#0fehloop:movp1,a;点亮1只ledrla;左循环lcalldelay;延时1秒sjmploop修改程序,使指示灯向右循环;修改程序,使指示灯右循环间隔为0.1秒;2.在0引脚上的P1 2KHz方波输出2khz的方波需要定时器产生0.25ms连续的定时信号,可选用t0方式2,自动装入参数的8位定时方式。
单片机的主频为11.0592mhz,定时器初始值应为256-0.25×一千×11.0592/12=26=1小时参考程序奥格哈姆普斯特org000bh;t0中断入口地cplp1.0retiorg0100hstart:movtmod,#02h;置t0为方式2movtl0,#1ah;延时为0.25ms的定时器初始值,movth0,#1ahsetbpt0;当只有一个中断设置0时,设置优先级是没有意义的;中断使能setbea;开放式中断setbtr0;启动定时器sjmp$end运行程序,用接在p1.0上的led灯看效果。
计算机硬件技术基础实验教程答案(重庆大学)
![计算机硬件技术基础实验教程答案(重庆大学)](https://img.taocdn.com/s3/m/b04f9e09cc175527072208b9.png)
计算机硬件技术基础实验教程答案 实验一:简单程序设计实验(1)编写一个 32 位无符号数除法的程序,要求将存放在 NUM1 中的 32 位无符号数与存放 在 NUM2 中的 16 位无符号数相除,结果存放在 NUM3 和 NUM4 中。
程序流程图略。
参考源程序:DATASEGMENTNUM1 DD 2A8B7654H NUM2 DW 5ABCH NUM3 DW ? NUM4 DW ?DATAENDSCODESEGMENTASSUME DS:DATA, CS:CODESTART: MOV AX,DATA;数据段寄存器初始化MOV DS,AXMOV AX, WORD PTR NUM1 MOV DX, WORD PTR NUM1+2 DIV NUM2 MOV NUM3,AX MOV NUM4,DX MOV AH,4CH ;正常返回DOS 系统INT 21HCODEENDS END START(2)编写一个拆字程序。
要求将存放在 ARY 单元的 2 位十六进制数 X 1X 2 拆为 X 1 和 X 2 两 部分,并以 0X 1 和 0X 2 的形式分别存入 ARY+1 和 ARY+2 单元中。
程序流程图略。
参考源程序:DATA SEGMENTARY DB 2AH,?,?DATA ENDSCODESEGMENTASSUME DS:DATA, CS:CODESTART: MOV AX,DATAMOV DS,AXMOV SI,OFFSET ARY ;取ARY 的偏移地址 MOV AL,[SI];取16进制数至ALMOV BL,ALAND AL,0F0H ;取16进制数的高四位,即X1SHR AL,4MOV [SI+1],AL ;存0X1MOV AL,BLAND AL,0FH ;取16进制数的低四位,即X2MOV [SI+2],AL ;存0X2MOV AH,4CHINT 21HCODE ENDSEND START实验二:分支程序设计实验(1)编写一个字符比较程序,比较3 个无符号字节数A,B,C 的大小,并根据比较结果对变量K 赋值:如果3 个数不相等,则K=0;如果3 个数中有两个相等,则K=1;如果3 个数都相等,则K=2。
实验三(一)(二)定时器与计数器功能认识与应用、扩展
![实验三(一)(二)定时器与计数器功能认识与应用、扩展](https://img.taocdn.com/s3/m/d2feed936bec0975f465e2c6.png)
实验三 定时器/计数器实验(一)一、实验目的通过实验了解定时器和计数器的不同应用。
进一步掌握定时器和计数器的编程和调试的方法。
二、实验内容要求学生自行设计并调试程序(教师可适当提示)1、自复位接通延时定时器电路(一个机器周期脉冲发生器电路)提示:先思考下面三个电路,根据定时器的刷新方式分析它们能否正常工作?不能工作的程序应如何修改?为了确保在每次定时器达到预置值时,自复位定时器的输出都能够接通一个程序扫描周期,用一个常闭触点来代替定时器位作为定时器的使能输入。
但一个程序扫描周期的脉冲过窄,在状态表中无法监视,为解决这种状况,可使用比较指令“LDW >= T33,+40”控制PLC 的某个输出点,再用状态图监视。
(思考:若想形成自复位计数器电路应如何编程?)知识回顾:定时器的刷新方式: 1ms 定时器每隔1ms 刷新一次与扫描周期和程序处理无关即采用中断刷新方式。
因此当扫描周期较长时,在一个周期内可能被多次刷新,其当前值在一个扫描周期内不一定保持一致。
10ms 定时器则由系统在每个扫描周期开始自动刷新。
由于每个扫描周期内只刷新一次,故而每次程序处理期间,其当前值为常数。
100ms 定时器则在该定时器指令执行时刷新。
下一条执行的指令,即可使用刷新后的结果,非常符合正常的思路,使用方便可靠。
但应当注意,如果该定时器的指令不是每个周期都执行,定时器就不能及时刷新,可能导致出错。
使用定时器本身的常闭触点作定时器的使能输入。
定时器的状态位置1时,依靠本身的常闭触点的断开使定时器复位,并重新开始定时,进行循环工作。
采用不同时基标准的定时器时,会有不同的运行结果,具体分析如下:(1)T32为1ms 时基定时器,每隔1ms 定时器刷新一次当前值,CPU 当前值若恰好在处理常闭触点和常开触点之间被刷新,Q0.0可以接通一个扫描周期,但这种情况出现的几率很小,一般情况下,不会正好在这时刷新。
若在执行其他指令时,定时时间到,1ms 的定时刷新,使定时器输出状态位置位,常闭触点打开,当前值复位,定时器输出状态位立即复位,所以输出线圈Q0.0一般不会通电。
8255并行口实验+8253定时器实验
![8255并行口实验+8253定时器实验](https://img.taocdn.com/s3/m/cb2f7e711fd9ad51f01dc281e53a580216fc5061.png)
实验2 8255A并行口实验(一)一、实验目的1.掌握并行接口芯片8255的使用与硬件接口方法。
2.掌握8255A的各种工作方式和编程原理。
二、8255A芯片介绍8255A是可编程通用并行接口芯片,它具有A、B、C三个并行接口,用+5V 单电源供电,能在以下三种方式下工作:方式0:基本输入/输出方式方式1:选通输入/输出方式(应答式输入输出方式)方式2:双向选通工作方式8255工作于方式1或2时,PC口的一些引脚作为A和B口的联络信号线,如下表:三、实验内容1、并行口工作于方式0时的传送(1)设计一个电路:用8255A做并行口,读入8个开关的状态并通过发光二极管显示出来。
(当拨动开关时,相应的发光二极管的状态时刻跟随变化)(2)当总开关K闭合(K=1)时,分开关能够控制对应的发光二极管;而当总开关K断开(K=0)时,分开关无论如何拨动,对应发光二极管都不跟随变化。
2、方式1用8255芯片的B口工作于方式1做输入,A口工作于方式0做输出。
采用查询与中断2种方式,实现拨动开关控制发光二极管的显示。
提示:必须理解8255方式1输入的工作过程及相关联络控制信号的先后时序关系。
根据上述要求设计电路并编写程序。
实验3 8255并行口实验(二)一、实验目的1. 通过可编程并行接口芯片8255实现十字路口交通灯的模拟控制。
2. 掌握七段数码显示管的使用方法。
3. 掌握软件延时方法的使用。
4. 进一步掌握并行接口芯片8255的使用方法。
二、实验内容1.根据实验系统现有的实验电路,设计电路并编写程序使12个灯按交通变化规律亮、灭或闪烁。
要完成本实验,必须先了解交通路灯的亮灭规律,设有一个十字路口分为南北方向和东西方向,初始状态为红灯全亮,之后,南北绿灯亮,东西红灯亮,南北方向通车。
延时一段时间后,南北绿灯熄灭,而南北黄灯开始闪烁,闪烁若干次以后,南北红灯亮,而同时东西的绿灯亮,东西方向通车,延时一段时间后,东西绿灯熄灭,而东西黄灯开始闪烁,闪烁若干次以后,再切换到南北方向,之后,重复上述过程。
实验定时器/计数器接口扩展设计
![实验定时器/计数器接口扩展设计](https://img.taocdn.com/s3/m/7b0f72d3ba0d4a7303763a01.png)
实验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 08003hCOUNT0 equ 08000hCOUNT1 equ 08001hCOUNT2 equ 08002hcode segmentassume cs:codestart proc nearmov al, 30h ; 通道0,方式0mov dx, CONTROLout dx, almov al, 5 ; 计数器初始值。
mov dx, COUNT0out dx, al ; 低八位mov al, 0out dx, al ; 高八位Again:mov al, 00000000B ; 锁存计数器值mov dx, CONTROLout dx, almov dx, COUNT0in al, dx ; 读入计数值低八位mov bl, alin al, dx ; 读入计数值高八位mov ah, almov al, bljmp Againstart endpcode endsend start1、定时器:工作方式0,计数值减完后输出一个脉冲宽度的高电平。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
五、实验总结
整理实验程序,并进行实验结果定性分析。