原创 ATmega16_App_V1.0开发板范例2:有源蜂鸣器驱动实验

2009-11-5 17:29 3490 5 5 分类: MCU/ 嵌入式
一、程序结构
attachimg.gif 程序结构

二、仿真效果
attachimg.gif 点击看大图

三、程序源码
1、main.c



  1. /*******************************************************************************

  2. Platform : ATmega16_App_V1.0开发板(http://bbs.armavr.com)

  3. Project : 范例二:有源蜂鸣器驱动实验

  4. Clock F : 3.6864M

  5. Software : ICCAVR7.14C

  6. Author : 林夕依然

  7. Version : 09.11.03

  8. comments :

  9. 1、实现蜂鸣器的周期鸣叫。

  10. 2、需将JP5短接帽装上。

  11. 3、模块化编程。

  12. *******************************************************************************/

  13. #include <iom16v.h>

  14. #include <macros.h>

  15. #include "bell.h"



  16. void main(void)

  17. {

  18. DDRD=0XFF;

  19. PORTD=0XFF;

  20. while(1)

  21. {

  22. bell();

  23. }

  24. }
2、bell.c



  1. /*******************************

  2. Platform : ATmega16_App_V1.0开发板(http://bbs.armavr.com)

  3. function :蜂鸣函数

  4. Clock F : 3.6864M

  5. Software : ICCAVR7.14C

  6. Author : 林夕依然

  7. Version : 09.11.03

  8. comments :

  9. 1、无源蜂鸣器为AC蜂鸣器,须输入一定频率的脉冲波才可发声。

  10. 2、有源蜂鸣器为DC蜂鸣器,只要两端有电压即可发声。

  11. 3、有源蜂鸣器间隔50ms发声。

  12. ********************************/

  13. #include <iom16v.h>

  14. #include <macros.h>

  15. #include "delay.h"



  16. void bell(void)

  17. {

  18. PORTD&=~(1<<D5);

  19. DelayMs(50);

  20. PORTD|=(1<<D5);

  21. DelayMs(50);

  22. }
3、delay.c



  1. /*******************************

  2. Platform : ATmega16_App_V1.0开发板(http://bbs.armavr.com)

  3. function :延时函数

  4. Clock F : 3.6864M

  5. Software : ICCAVR7.14C

  6. Author : 林夕依然

  7. Version : 09.11.03

  8. comments :

  9. 1、两种方式实现延时

  10. ********************************/

  11. /*---------------------------------------------------------------------------------

  12. 延时程序计算方法

  13. 计数个数j = 延时时间/6*晶振频率 - 1

  14. ---------------------------------------------------------------------------------*/



  15. //方式一:

  16. void Delay(void)

  17. {

  18. unsigned char a, b, c;

  19. for (a = 1; a; a++)

  20. for (b = 1; b; b++)

  21. for (c = 0; c<10; c++) //循环次数=255*255*10

  22. ;

  23. }



  24. //方式二:1ms延时,准确性较Delay();高

  25. void DelayMs(unsigned int i)

  26. {

  27. while(i--)

  28. {

  29. unsigned int j;

  30. for(j=1;j<=613;j++)

  31. ;

  32. }

  33. }
4、bell.h



  1. void bell(void);
5、delay.h



  1. void Delay(void);

  2. void DelayMs(unsigned int i);

四、完整项目文件


https://static.assets-stash.eet-china.com/album/old-resources/2009/11/5/640edf2a-9613-4fb0-9c06-c092c27efb23.rar

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /3 下一条