精华内容
下载资源
问答
  • 定时器使用实验

    2012-11-17 21:39:33
    定时器使用实验
  • 单片机定时器应用实验 实验
  • AVR单片机 实验定时器应用实验 1 实验目的 通过实验,掌握定时器的使用方法。着重掌握定时中断的使用。 2 实验内容 (3) 在定时中断中实现4位数码管的动态刷新。 (4) 利用定时中断中设计实现蜂鸣器发出断续警报...

    AVR单片机 实验三 定时器应用实验

    1 实验目的
    通过实验,掌握定时器的使用方法。着重掌握定时中断的使用。
    2 实验内容
    (3) 在定时中断中实现4位数码管的动态刷新。
    (4) 利用定时中断中设计实现蜂鸣器发出断续警报声响。
    (5) 配合按键外部中断控制警报声响的启动与解除。

    实验电路:
    在这里插入图片描述

    在这里插入图片描述

    3在2ms的定时中断中设计实现蜂鸣器发出0.25 KHz、每隔500 ms的断续警报声响。当按下按键时,启动警报声响,并于数码管显示”HELP” ,当再次按下按键时,则停止警报声响,并于数码管显示”SAFE” 。(写出完整程序代码)。
    原始程序码:
    实训3 蜂鸣器 数码管显示safe fale时蜂鸣器响 软键盘控制
    #include <iccioavr.h>
    #include <macros.h>
    #include <stdio.h>
    #include <iom16v.h>
    void Show(void);
    unsigned char safe[4] = { 0x92, 0x88, 0x8e, 0x86 }; //SAFE数组内容
    unsigned char help[4] = { 0x89, 0x86, 0xc7, 0x8c }; //HELP数组内容
    unsigned char buf[4] = { 0x92, 0x88, 0x8e, 0x86 }; //预设显示数组内容: SAFE
    unsigned char en[4] = { 0xf7, 0xfb, 0xfd, 0xfe }; //4位数码管扫描码
    unsigned char key = 0, sts = 0, ix = 0;//键值(警报1or解除2),状态标志(按下1,弹起0),指针(数码管地址位)
    unsigned char alm = 0, buz = 0, flg = 0;//警报状态的两个500ms,控制蜂鸣器开关,每2ms是否中断
    int cnt = 0; //计时计数器变量

    void main(void)
    {
    DDRA = 0xff; //设PA0~PA7全部为输出
    PORTA = 0xff; //令数码管所有段灯皆不亮
    DDRB = 0xff; //设PB0~PB7为输出
    PORTB = 0xff; //关闭所有数码管及关闭蜂鸣器
    DDRD = 0xf0; //设PD0~PD3为输入, PD4~PD7为输出
    PORTD = 0xef; //设PD4恒为”Lo”, PD3上拉电阻有效
    GICR |= 0x80; //允许INT1发生中断
    MCUCR |= 0x08; //设置INT1为下沿触发方式
    TCCR0 = 0x0c; //设T/C0为CTC工作模式,时钟分频256
    TCNT0 = 0; //T/C0计数器内容清0
    OCR0 = 64; //设置OCR0使之产生约2ms的定时
    TIMSK = 0x02; //允许T/C0比较匹配中断
    SREG |= 0x80; //致能中断

    do{
    	if (flg == 1)                  //2ms定时标志是否设定?
    	{
    		Show();                 //调用数码管动态扫描显示函数
    		flg = 0;                  //解除2ms定时标志
    	}
    	if (PIND & 0x08)          //按键式否已放开
    		sts = 0;                  //按键式否已放开
    } while (1);
    

    }

    void Show(void)
    {
    PORTB = PORTB | 0x0f; //关闭所有数码管
    PORTA = buf[ix]; //送出段码至数码管
    PORTB = PORTB&en[ix]; //显示该位数码管
    ix++; //数码管位指针切换至下一位
    if (ix>3)
    ix = 0; //若已到最后1位, 则数码管位指针清0
    }

    #pragma interrupt_handler INT1_SUB: 3 //INT1中断服务程序
    void INT1_SUB(void)
    {
    int i;

    if (sts == 0)                        //是否为刚按下按键?
    {
    	key = key + 1;                   //键值加1
    	if (key>2)
    		key = 1;                   //若键值大于2,强制回至1
    	switch (key)
    	{
    	case 1:                    //进入警报状态,显示HELP
    		for (i = 0; i < 4; i++)
    		{
    			buf[i] = help[i];
    		}
    		break;
    	case 2:                    //解除警报状态,显示SAFE
    		for (i = 0; i < 4; i++)
    		{
    			buf[i] = safe[i];
    		}
    		break;
    	}
    	sts = 1;                       //进入按键除抖动状态
    }
    

    }

    #pragma interrupt_handler TC0_SUB: 20
    void TC0_SUB(void)
    {
    if (key == 1) //进入警报状态
    {
    if (cnt == 0)
    {
    cnt = 250;
    alm = ~alm;
    }
    if (alm)
    {
    buz = ~buz;
    if (buz)
    {
    PORTB = PORTB & 0x7f;
    }
    else
    {
    PORTB = PORTB | 0x80;
    }
    }
    else
    {
    PORTB = PORTB | 0x80;
    }

    }
    if (key == 2)
    	PORTB = PORTB | 0x80;          //若为解除警报状态则关闭蜂鸣器
    if (cnt > 0)
    	cnt = cnt - 1;	                   //计时计数器减1
    flg = 1;	 	                   //设置2ms标志位,以表示2ms已终了
    

    }
    4 思考题: 若警报响声为250 ms,而断开停顿为500 ms; 则程序该如何修改?

    #pragma interrupt_handler TC0_SUB: 20
    void TC0_SUB()
    {
    if(cnt0)
    {
    cnt=375;
    }
    if(key
    1) //进入警报状态
    {
    if(cnt>250)
    {
    if(buz0)
    {
    PORTB=PORTB & 0x7f;
    buz=1;
    }
    else
    {
    PORTB=PORTB|0x80;
    buz=0;
    }
    }
    }
    if(key
    2)
    PORTB=PORTB|0x80; //若为解除警报状态则关闭蜂鸣器
    if(cnt>0)
    cnt=cnt-1; //计时计数器减1
    flg=1; //设置2ms标志位,以表示2ms已终了
    }

    展开全文
  • STM32F407IGT6单片机定时器应用实验例程22个合集KEIL工程源码+文档说明: YSF4_HAL-020. TIM6-基本定时器定时.rar YSF4_HAL-021. TIM7-基本定时器定时.rar YSF4_HAL-022. TIM2-通用定时器定时.rar YSF4_HAL-023. TIM3...
  • 定时器中断实验

    2019-01-22 16:08:49
    定时器中断实验
  • 1、实验二: 定时器指令实验一、实验目的熟悉定时器指令以及实验设备的使用方法二、实验设备可编程序控制器 编程器或者计算机编程软件SAC-PC可编程序控制器教学设备软件。三、实验步骤1、根据控制要求和I/O的地址分配...

    《PLC定时器指令实验报告》由会员分享,可在线阅读,更多相关《PLC定时器指令实验报告(4页珍藏版)》请在人人文库网上搜索。

    1、实验二: 定时器指令实验一、实验目的熟悉定时器指令以及实验设备的使用方法二、实验设备可编程序控制器 编程器或者计算机编程软件SAC-PC可编程序控制器教学设备软件。三、实验步骤1、根据控制要求和I/O的地址分配表编制梯形图程序,输入设备(PC机或编程 器)与CPMIA正确连接;2、检查确认连接无误后,接通电源(实验中不允许带电插,拔电器插头)。3、正确输入程序,调试并运行程序,观察输出的变化情况并做好实验记录。4、实验结束,经教师认可后有序退出并切断电源,总结实验结果。四、按照下面给出的控制要求编写梯形图程序,输入到可编程序控制器中运行,根据运行情况进行调试,修改程序,直到通过为止。1、通电延。

    2、时控制梯形图:程序:LD 00000TIM 001#020LD TIM001OUT 01000时序图:2、断电延时控制梯形图:程序:LD 00001TIM 001#020LD NOT 00001OR NOT TIM001OUT 01000 时序图: 3、 通电断电延时控制梯形图:程序:LD 00000TIM 001#020LD 00001TIM 002#020LD NOT 00001OR NOT TIM002AND TIM001OUT 01000 时序图:4、 闪烁报警控制梯形图:程序:LD 00000AND NOT TIM002TIM 001#020LD 01000TIM 002#020LD TIM001OUT 01000时序图:五、实验心得通过本次实验熟悉用计算机编程软件操作,梯形图的输入,编辑和检查程序并且掌握程序在线运行的步骤以及学习如何调试程序的基本方法,练习了使用定时器做通电、断电、通断电以及闪烁报警的延时效果,合理地配置定时器的常开、常闭开关可以达到要求的延时。

    展开全文
  • 定时器功能实验

    2015-12-25 19:29:13
    1. 使用定时器0的匹配输出功能,控制蜂鸣器鸣叫。 2. 定时器 1 匹配输出实验使用定时器 1 的匹配输出功能,控制蜂鸣器鸣叫,匹配中断程序中设置LED1灯闪。 3. PWM音乐输出实验
  • 单片机定时器计数器实验报告单片机定时器计数器实验报告篇一:单片机计数器实验报告 计数器实验报告 ㈠ 实验目的 1. 学习单片机内部定时/计数器的使用和编程方法; 2. 进一步掌握中断处理程序的编程方法。 ㈡ ...

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

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

    篇一:单片机计数器实验报告  计数器实验报告  ㈠ 实验目的  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 MAIN  ORG 001BH AJMP MAIN1 MAIN:  MOV SP,#60H  MOV TMOD,#15H MOV 20H,#14H MOV TL1,#0B0H MOV TH1,#3CHMOV TL0,#00H   ;T0的中断入口地址 ;设置T1做定时器,T0做计数器,都于方式1工作 ;装入中断次数 ;装入计数值低8位 ;装入计数值高8位   MOV TH0,#00H  SETB TR1 ;启动定时器T1 SETB TR0 ;启动计数器T0 SETB ET1 ;允许T1中断 SETB EA ;允许CPU中断 SJMP $;等待中断  MAIN1: PUSH PSW PUSH ACC CLR TR0  CLR TR1 MOV TL1,#0B0H MOV TH1,#3CH  DJNZ 20H,RETUNT MOV 20H ,#14H  SHOW: MOV R0,TH0 MOV R1,TL0  MOV A,R1 MOV B,#0AH DIV AB  MOV C,ACC.3MOV P1.0,C MOV C,ACC.2 MOV P1.1,C MOV C,ACC.1 MOV P1.2,C MOV C,ACC.0 MOV P1.3,C  MOV 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.0  MOV P1.7,C ;保护现场  ;装入计数值低8位  ;装入计数值高8位,50ms;允许T1中断  ;未到1s,继续计时 ;1s到重新开始  ;显示计数器T0的值;读计数器当前值 ;将计数值转为十进制  ;显示部分,将A中保存的十位赋给L0~L3 将B中保存的各位转移到A中 ;将个位的数字显示在L4~L7上  ;  RETUNT:  MOV TL0,#00H;将计数器T0清零 MOV TH0,#00H  SETB TR0SETB TR1POP ACCPOP PSW  RETI ;中断返回  在频率为1000HZ时,L0~L7显示为50;频率为300HZ时,L0~L7显示为15,结果正确,程序可以正确运行。 思考与小结:  有了前面的定时器实验做基础,定时器计数器的选择以及初始化已经不再是难点,本次试验的重点是写入两个中断判断程序和十六进制到十进制的转化和显示。 MOV TL1,#0B0H ;装入计数值低8位  MOV TH1,#3CH;装入计数值高8位,50ms  MOV 20H,#14H ;未到1s,继续计时 DJNZ 20H,RETUNT;1s到重新开始 RETUNT:  MOV TL0,#00H;将计数器T0清零 MOV TH0,#00H  由于书上详细解释了设置中断时间的问题,所以中断程序并没有什么太大的难点,主要是要思考一下程序的执行顺序问题。  十六进制到十进制的转化和显示使我们这次实验遇到的比较大的困难,刚开始采用的是DA指令,由于没有搞清楚它的实质错误的使用了DA。DA用于十六进制到BCD的转换,不能用于十六进制到8421的转换,于是我们思考了很久

    展开全文
  • CC2530基础实验课程 电信工程系 实验按键控制LED交替闪烁 通信类专业教学资源库 PPT模板下载/moban/ 行业PPT模板/hangye/ 节日PPT模板/jieri/ PPT素材下载/sucai/ PPT背景图片/beijing/ PPT图表下载www.1ppt.co
  • .西华大学实验报告(机械类)开课学院及实验室:机械工程与自动化学院计算机机房 实验时间...程 名 称单片机原理及应用课 程 代 码8417421实验项目名称定时器中断实验项 目 代 码指 导 教 师张恕远项 目 学 分一、目的...

    .

    西华大学实验报告(机械类)

    开课学院及实验室:机械工程与自动化学院计算机机房 实验时间 :2012年 4月 7 日

    学 生 姓 名罗茂梁学 号312010080301706成 绩学生所在学院机械工程与自动化学院年级/专业/班2010级机制7班课 程 名 称单片机原理及应用课 程 代 码8417421实验项目名称定时器中断实验项 目 代 码指 导 教 师张恕远项 目 学 分一、目的二、三、

    四#include

    #define uchar unsigned char//宏定义

    #define uint unsigned int

    uchar code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//定义数码管的断码

    uchar num;

    uchar timecounter=100;//软件计数器的初值

    sbit led=P2^5;//管脚sfr的定义

    void delayms(uint x)//延时子程序

    {

    uchar j;

    while(x--)

    for(j=0;j<123;j++){;}

    }

    void main()//主程序

    {

    TMOD=0x01;//置定时器T0,非门控,方式1

    TL0=0xf0; //置定时器的初值

    TH0=0xd8; //置定时器的初值

    EA=1;//开总中断

    ET0=1;//开T0

    TR0=1;//启动定时

    while(1)//无限循环

    {

    P0=dispcode[num];led=0;delayms(5);//num显示

    }

    }

    void timer0() interrupt 1//中断程序

    {

    TL0=0xf0;

    TH0=0xd8;

    timecounter--;

    if(timecounter==0)

    {

    timecounter=100;//重置软件计数器的初值

    num++;//num加1

    if(num>9)num=0;//num归零

    }

    }

    2实验内容2

    #include

    #define uchar unsigned char

    #define uint unsigned int

    uchar code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

    uchar num;

    uchar timecounter=100;

    sbit led1=P2^5;

    sbit led0=P2^6;

    void delayms(uint x)

    {

    uchar j;

    while(x--)

    for(j=0;j<123;j++){;}

    }

    void main()

    {

    TMOD=0x01;

    TL0=0xf0;

    TH0=0xd8;

    EA=1;

    ET0=1;

    TR0=1;

    while(1)

    {

    P0=0xff;

    P0=dispcode[num/10];led1=1;led0=0;delayms(5);

    P0=0xff;

    P0=dispcode[num%10];led1=0;led0=1;delayms(5);

    }

    }

    void timer0() interrupt 1

    {

    TL0=0xf0;

    TH0=0xd8;

    timecounter--;

    if(timecounter==0)

    {

    timecounter=100;

    num++;

    if(num>99)num=0;

    }

    }

    五、

    写出用LCD完成实验内容(2)的程序,并进行调试。

    答:#include

    #define uchar unsigned char

    #define uint unsigned int

    uchar code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

    uchar num;

    uchar timecounter=100;

    sbit led1=P2^5;

    sbit led0=P2^6;

    void delayms(uint x)

    {

    uchar j;

    while(x--)

    for(j=0;j<123;j++){;}

    }

    void main()

    {

    TMOD=0x01;

    TL0=0xf0;

    展开全文
  • 实验六:定时器中断实验实验目的 熟悉 LPC2000 系列 ARM7 微控制器的定时器 0/1 的基本设置及应用实验设备 硬件:PC 机 一台 EasyARM2013 开发板 一套 软件:Windows98/XP/2000 系统, ADS 1.2 集成开发环境 三...
  • 电子-实验8定时器中断实验.rar,单片机/嵌入式STM32-F0/F1/F2
  • STM32定时器详解(定时器中断实验

    万次阅读 多人点赞 2019-04-18 21:19:09
    文章目录STM32定时器分类定时器中断实验计数器时钟频率计数器模式向上计数模式库函数操作 STM32定时器分类 STM32的定时器分为很多类,按照功能的不同可以分为: 高级定时器(TIM1和TIM8) 通用定时器(TIM2-TIM5) ...
  • 定时器中断实验操作

    2020-05-24 16:10:41
    内部触发输入(ITRx):使用一个定时器作为另一个定时器的预分频器,如可以配置一个定时器Timer1而作为另一个定时器Timer2的预分频器。 3、定时器中断实验相关寄存器 (1)计数器当前值寄存器CNT (2)预分频寄存器...
  • 555定时器典型应用实验
  • 定时器4实验

    千次阅读 2014-01-05 15:21:35
    下面的这个代码主要是使用定时器3来控制led灯的亮灭的,使用的单片机是粤嵌的cc2530底板。 /** * 项目名称:定时器4实验 * 时间:2014年1月5日10:16:04 * 作者:林少油 **/ #include #define YLED P1_0 #define ...
  • zynq 的定时器中断实验

    千次阅读 2018-04-01 00:43:44
    本文通过定时器中断实验,介绍zynq 的中断和定时器的基本使用方法。本文是在helloworld 实验的基础上完成的,所以必须先完成了helloworld 的实验。这个可以学习本博客的helloworld 实验,或者开发板提供的helloworld...
  • 一、实验要求用CPU内部定时器中断方式计时,实现P1每一秒钟输出状态发生一次反转.二、实验目的1、学习8031内部计数器的使用和编程方法。...本实验使用的是定时器。2、定时器有关的寄存器有工作方式寄...
  • 14 . 定时器中断实验

    2021-05-17 16:12:40
    定时器中断实验 我们介绍了STM32F1 的外部中断,这一章我们来学习下定时器中断。STM32F1 的定时器功能非常强大,其包含 2 个基本定时器(TIM6、TIM7)、4 个通用定时器(TIM2-TIM5)和2 个高级定时器(TIM1、TIM8)...
  • STM32 定时器中断实验

    2011-04-09 10:52:27
    基于高端嵌入式Cortex-M32的STM32单片机编写的STM32 定时器中断实验,便于大家共同学习嵌入式单片机

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,610
精华内容 7,444
关键字:

定时器应用实验