原创
ATmega16_App_V1.0开发板范例2:有源蜂鸣器驱动实验
一、
程序结构
二、
仿真效果
三、程序源码
1、main.c
- /*******************************************************************************
- Platform : ATmega16_App_V1.0开发板(http://bbs.armavr.com)
- Project : 范例二:有源蜂鸣器驱动实验
- Clock F : 3.6864M
- Software : ICCAVR7.14C
- Author : 林夕依然
- Version : 09.11.03
- comments :
- 1、实现蜂鸣器的周期鸣叫。
- 2、需将JP5短接帽装上。
- 3、模块化编程。
- *******************************************************************************/
- #include <iom16v.h>
- #include <macros.h>
- #include "bell.h"
- void main(void)
- {
- DDRD=0XFF;
- PORTD=0XFF;
- while(1)
- {
- bell();
- }
- }
2、bell.c
- /*******************************
- Platform : ATmega16_App_V1.0开发板(http://bbs.armavr.com)
- function :蜂鸣函数
- Clock F : 3.6864M
- Software : ICCAVR7.14C
- Author : 林夕依然
- Version : 09.11.03
- comments :
- 1、无源蜂鸣器为AC蜂鸣器,须输入一定频率的脉冲波才可发声。
- 2、有源蜂鸣器为DC蜂鸣器,只要两端有电压即可发声。
- 3、有源蜂鸣器间隔50ms发声。
- ********************************/
- #include <iom16v.h>
- #include <macros.h>
- #include "delay.h"
- void bell(void)
- {
- PORTD&=~(1<<D5);
- DelayMs(50);
- PORTD|=(1<<D5);
- DelayMs(50);
- }
3、delay.c
- /*******************************
- Platform : ATmega16_App_V1.0开发板(http://bbs.armavr.com)
- function :延时函数
- Clock F : 3.6864M
- Software : ICCAVR7.14C
- Author : 林夕依然
- Version : 09.11.03
- comments :
- 1、两种方式实现延时
- ********************************/
- /*---------------------------------------------------------------------------------
- 延时程序计算方法
- 计数个数j = 延时时间/6*晶振频率 - 1
- ---------------------------------------------------------------------------------*/
- //方式一:
- void Delay(void)
- {
- unsigned char a, b, c;
- for (a = 1; a; a++)
- for (b = 1; b; b++)
- for (c = 0; c<10; c++) //循环次数=255*255*10
- ;
- }
- //方式二:1ms延时,准确性较Delay();高
- void DelayMs(unsigned int i)
- {
- while(i--)
- {
- unsigned int j;
- for(j=1;j<=613;j++)
- ;
- }
- }
4、bell.h
5、delay.h
- void Delay(void);
- void DelayMs(unsigned int i);
四、完整项目文件
https://static.assets-stash.eet-china.com/album/old-resources/2009/11/5/640edf2a-9613-4fb0-9c06-c092c27efb23.rar
文章评论(0条评论)
登录后参与讨论