AVR第5课:蜂鸣器

下面是蜂鸣器的电路图。

代码:蜂鸣器代码。

<span style="font-size:18px;">/*
*info:buzzer
*author:chenlu
*date:2014.11.20
*/

//input the head file so that the program can work normally
//iom16v---know the register
//macros---know the BIT(x)
#include<iom16v.h>
#include<macros.h>
//use those can make your study very conveninet
#define uint unsigned int
#define uchar unsigned char

//display methods
void initSystem();
void delay();

//the main function
void main()
{
 	//init your system
	initSystem();
	while(1)
	{
	  	//start your function,and this is core solution
		PORTA = PORTA & (~BIT(1));
		delay();
		delay();
		delay();
		delay();
		PORTA = PORTA | BIT(1);
		delay();
		delay();
		delay();
		delay();
	}
}

//the method of init system
void initSystem()
{
 	//to make PA1 port output
	DDRA = DDRA | BIT(1);
	//to make PA1 port output high level
	PORTA = PORTA | BIT(1);
}

//the sub method of delay
void delay()
{
 	uchar i,j;
 	for(i=0;i<250;i++)
	  for(j=0;j<250;j++);
}</span>

让蜂鸣器响一下,接着停一下,如此循环。

时间: 2025-01-15 09:35:59

AVR第5课:蜂鸣器的相关文章

AVR第3课:点亮发光二极管

和51单片机不同,51单片机的驱动能力比较弱,而AVR单片机的驱动能力比较强,可以直接驱动继电器和发光二极管,所以不需要外接上拉电阻.51单片机的引脚电流只有几十微安,而AVR单片机有40mA左右.电路图如下所示. 代码1:先让所有灯灭,延时一会儿,再让所有灯亮,再延时,这样一直循环. <span style="font-size:18px;">#include <iom16v.h> #include <macros.h> #define uchar

AVR第1课:准备阶段

如果你学过MCS-51单片机,那么你就可以学习AVR单片机了,从MCS-51过度到AVR比较好,如果直接跳过MCS-51而直接学AVR单片机的话,有点难度,而且那样的话不便于你对两种单片机的选择和分析. 学习方法:先学习理论知识,在理论知识里面你至少要了解到AVR单片机和MCS-51单片机的不同之处,并且了解他的基本使用方法,最好是能够学习好并掌握,因为有了MCS-51的底子,学习起来并没有那么困难:再学习做实验来检验我们学习的理论知识,当然是用C语言编程啦,用汇编的话效率太低了,当然你需要一块

AVR第8课:独立按键

值得注意的是,独立按键的检测原理和消抖处理在51单片机中已经讲过了,这些东西都不会变.只是AVR单片机的IO口操作方式改变了.在AVR中,检测方式是:首先让将和独立按键相连接的IO口设置成输出高电平,接着将他们设置成输入模式,再然后检测这些IO口的值.电路图如下所示. 代码1:检测是哪一个按键被按下.这里不需要用到消抖动处理. #include<iom16v.h> #include<macros.h> #define uint unsigned int #define uchar

AVR第2课:配置AVR开发环境

1.AVR单片机C语言编程开发环境:ICCAVR,用于编写程序和编译.下载地址:http://www.iccavr.com. 2.AVR单片机烧写程序环境:(我用的是USB ISP免驱动下载线,而且也是用的转换模块)PROGISP,网上可以下载,自己找.用这个软件的原因是之前我用AVR STDIO4总是出现Connected failed-Seclect AVR Program.最终才找到这个解决办法,希望遇到相同问题的你也可以用这个解决自己遇到的难题. 前一段时间到其他地方客串做了一些管理工作

AVR第6课:数码管显示

这一节我们将讲解数码管的使用,由于原理在学51单片机的时候已经学习过,在这里只需要利用前面学习的对AVR单片机的IO口操作方式就可以自己写练习题了. 下面的数码管是共阳极数码管. 代码:显示从0到9. /* *author:ChenLu *date:2014.11.20 */ //input the head file so that the program can work normally //iom16v---know the register //macros---know the BI

AVR第7课:动态数码管

以下是动态数码管的电路图. 代码:动态数码管. /* *author:ChenLu *date:2014.11.20 */ //input the head file so that the program can work normally //iom16v---know the register //macros---know the BIT(x) #include<iom16v.h> #include<macros.h> //use those can make your s

AVR第11课:如何对待我们的单片机

大家学习MCS51单片机和AVR单片机,又或者是PIC单片机,又或者是MSP430单片机之后,是否感觉自己可以成为一名工程师了呢?我在这里来说说我的看法吧. 我们学习这些单片机的时候,先学习了理论知识,这个一般是书本上的理论知识,比如介绍单片机的发展.单片机的应用领域.单片机的原理等等.然后呢找一块开发板,对着视频教程学习,边看视屏边做实验,学习完之后呢,去做那么一两个小项目,比如"基于LabView和PWM的霍尔测速和控速的直流电机系统",这个项目呢,相对来说综合要求能力比较高,如果

AVR第4课:流水灯

代码:流水灯程序. /* *info:led flow *author:chenlu *date:2014.11.20 */ //input the head file so that the program can work normally //iom16v---know the register //macros---know the BIT(x) #include<iom16v.h> #include<macros.h> //use those can make your

AVR第9课:定时器1的CTC模式

操作定时器实际上就是在操作寄存器并配置参数. <strong>#include<iom16v.h> #include<macros.h> void main() { DDRD = DDRD|0x30; TCCR1A = 0x50; TCCR1B = 0x09; OCR1A = 65535; }</strong> CTC模式下,相关的寄存器:TCCR1A.TCCR1B.OCR1A.相关的引脚是:PD4和PD5.当然你可以用示波器来检测某一引脚PD4或者PD5,