找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5299|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

avr單片機 Mega16定時器實驗報告

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:358936 發(fā)表于 2018-6-26 00:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
1  實驗?zāi)康?/strong>
通過實驗,掌握定時器的使用方法。著重掌握定時中斷的使用!
2  實驗內(nèi)容
  • 使用Mega16單片機的timer0產(chǎn)生1ms間隔的定時中斷(建議采用application builder,既可以用Normal工作模式也可以使用CTC模式),(1)在定時中斷中實現(xiàn)4位數(shù)碼管的動態(tài)刷新。(2)在1ms的定時中斷中設(shè)計100mS的時間標(biāo)志位,在主程序中查詢時間標(biāo)志位,實現(xiàn)LED閃爍。
2、 重新配置TImer0工作在PWM模式,用按鍵改變PWM的占空比,調(diào)節(jié)電機轉(zhuǎn)速;
3  實驗預(yù)習(xí)要求
仔細閱讀教材中定時中斷的范例;
4        實驗步驟
1、啟動ICCAVR,創(chuàng)建一個工程文件,配置timer0,實現(xiàn)10ms的定時中斷,采用Application Builder來生成初始化代碼。注意:本次實驗使用的IO口也要初始化,包括數(shù)碼管驅(qū)動所使用的IO,按鍵等。
2、在定時中斷中實現(xiàn)四位數(shù)碼管的定時刷新(注:要使用上次實驗課的HC595的驅(qū)動),并在定時中斷中實現(xiàn)100ms的時間標(biāo)志(時標(biāo)),在主程序中查詢時標(biāo),實現(xiàn)led(PORTC口任何一個LED都可)閃爍;
3、重新配置TImer0工作在PWM模式,初始占空比設(shè)置為10%,然后使用按鍵INT1(在原理圖中為SW8,連接到了單片機的PD3引腳上』來改變占空比,例如每按一次按鍵,占空比增加10%。
注:實驗中要使用的管腳有:PD4、PD5、PD6、PD7、PB0、PB1、PA0,PD3,各管腳連接請參照原理圖。


實驗三 定時器應(yīng)用實驗

報 告 內(nèi) 容

1  實驗?zāi)康?/strong>

   通過實驗,掌握定時器的使用方法。著重掌握定時中斷的使用!

2  實驗內(nèi)容

    1、使用Mega16單片機的timer0產(chǎn)生1ms間隔的定時中斷(建議采用application builder,既可以用Normal工作模式也可以使用CTC模式),(1)在定時中斷中實現(xiàn)4位數(shù)碼管的動態(tài)刷新。(2)在1ms的定時中斷中設(shè)計100mS的時間標(biāo)志位,在主程序中查詢時間標(biāo)志位,實現(xiàn)LED閃爍。
2、重新配置TImer0工作在PWM模式,用按鍵改變PWM的占空比,調(diào)節(jié)電機轉(zhuǎn)速;

3  使用Mega16單片機的timer0產(chǎn)生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計數(shù)
  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. }
復(fù)制代碼

4  在定時中斷中實現(xiàn)4位數(shù)碼管的動態(tài)刷新。(只寫出定時中斷相關(guān)的代碼,本部分要借用上次實驗課實現(xiàn)的HC595的驅(qū)動函數(shù))

5、在1ms的定時中斷中設(shè)計1000mS的時間標(biāo)志位,在主程序中查詢時間標(biāo)志位,秒表功能。(只寫定時中斷服務(wù)程序和實現(xiàn)秒表的功能代碼)


完整的Word格式文檔51黑下載地址:
實驗三 定時器實驗.doc (62 KB, 下載次數(shù): 13)



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表