找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4636|回复: 0
打印 上一主题 下一主题
收起左侧

avr单片机 Mega16定时器实验报告

[复制链接]
跳转到指定楼层
楼主
ID:358936 发表于 2018-6-26 00:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1  实验目的
通过实验,掌握定时器的使用方法。着重掌握定时中断的使用!
2  实验内容
  • 使用Mega16单片机的timer0产生1ms间隔的定时中断(建议采用application builder,既可以用Normal工作模式也可以使用CTC模式),(1)在定时中断中实现4位数码管的动态刷新。(2)在1ms的定时中断中设计100mS的时间标志位,在主程序中查询时间标志位,实现LED闪烁。
2、 重新配置TImer0工作在PWM模式,用按键改变PWM的占空比,调节电机转速;
3  实验预习要求
仔细阅读教材中定时中断的范例;
4        实验步骤
1、启动ICCAVR,创建一个工程文件,配置timer0,实现10ms的定时中断,采用Application Builder来生成初始化代码。注意:本次实验使用的IO口也要初始化,包括数码管驱动所使用的IO,按键等
2、在定时中断中实现四位数码管的定时刷新(注:要使用上次实验课的HC595的驱动),并在定时中断中实现100ms的时间标志(时标),在主程序中查询时标,实现led(PORTC口任何一个LED都可)闪烁;
3、重新配置TImer0工作在PWM模式,初始占空比设置为10%,然后使用按键INT1(在原理图中为SW8,连接到了单片机的PD3引脚上』来改变占空比,例如每按一次按键,占空比增加10%。
注:实验中要使用的管脚有:PD4、PD5、PD6、PD7、PB0、PB1、PA0,PD3,各管脚连接请参照原理图。


实验三 定时器应用实验

报 告 内 容

1  实验目的

   通过实验,掌握定时器的使用方法。着重掌握定时中断的使用!

2  实验内容

    1、使用Mega16单片机的timer0产生1ms间隔的定时中断(建议采用application builder,既可以用Normal工作模式也可以使用CTC模式),(1)在定时中断中实现4位数码管的动态刷新。(2)在1ms的定时中断中设计100mS的时间标志位,在主程序中查询时间标志位,实现LED闪烁。
2、重新配置TImer0工作在PWM模式,用按键改变PWM的占空比,调节电机转速;

3  使用Mega16单片机的timer0产生1ms间隔的定时中断(建议采用application builder,既可以用Normal工作模式也可以使用CTC模式),写出采用的工作模式,以及定时器各个寄存器的值。


  1. #include <iom16v.h>
  2. #include <macros.h>

  3. void port_init(void)
  4. {
  5. PORTA = 0x00;
  6. DDRA  = 0x00;
  7. PORTB = 0x00;
  8. DDRB  = 0x00;
  9. PORTC = 0x00; //m103 output only
  10. DDRC  = 0x00;
  11. PORTD = 0x00;
  12. DDRD  = 0x00;
  13. }

  14. //TIMER0 initialize - prescale:8
  15. // WGM: CTC
  16. // desired value: 1000Hz
  17. // actual value: 992.063Hz (-0.8%)
  18. void timer0_init(void)
  19. {
  20. TCCR0 = 0x00; //stop
  21. TCNT0 = 0x83; //set count计数
  22. OCR0  = 0x7D;  //set compare匹配
  23. TCCR0 = 0x0A; //start timer
  24. }

  25. //call this routine to initialize all peripherals
  26. void init_devices(void)
  27. {
  28. //stop errant interrupts until set up
  29. CLI(); //disable all interrupts
  30. port_init();
  31. timer0_init();

  32. MCUCR = 0x00;
  33. GICR  = 0x00;
  34. TIMSK = 0x00; //timer interrupt sources
  35. SEI(); //re-enable interrupts
  36. //all peripherals are now initialized
  37. }
复制代码

4  在定时中断中实现4位数码管的动态刷新。(只写出定时中断相关的代码,本部分要借用上次实验课实现的HC595的驱动函数)

5、在1ms的定时中断中设计1000mS的时间标志位,在主程序中查询时间标志位,秒表功能。(只写定时中断服务程序和实现秒表的功能代码)


完整的Word格式文档51黑下载地址:
实验三 定时器实验.doc (62 KB, 下载次数: 13)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表