如何将HC-05与AVR ATmega8连接起来控制LED

在本教程中,让我们学习如何将hc-05蓝牙模块与avr atmega8微控制器连接。我们将通过蓝牙模块在android移动和atmega8之间建立通信,蓝牙模块通过uart串行通信协议进行。在这个项目中,我们将使用智能手机的蓝牙控制led。
所需材料:
avr atmega8
hc-05 蓝牙模块
发光二极管
usbasp 编程器
10 针 frc 电缆
跳线
面包板
使用的软件:
我们将使用codevisionavr软件编写代码,并使用sinaprog软件使用usbasp程序员将代码上传到atmega8。
蓝牙模块 hc-06:
蓝牙可以在以下两种模式下运行:
命令模式
操作模式
在命令模式下,我们将能够配置蓝牙属性,例如蓝牙信号的名称,密码,操作波特率等。操作模式是我们能够在pic微控制器和蓝牙模块之间发送和接收数据的模式。因此,在本教程中,我们将只玩弄操作模式。命令模式将保留默认设置。设备名称将是hc-05(我正在使用hc-06),密码将是0000或1234,最重要的是,所有蓝牙模块的默认波特率为9600。
模块采用 5v 电源供电,信号引脚工作在 3.3v,因此模块本身存在一个 3.3v 稳压器。因此,我们不必担心。在六个引脚中,只有四个将在操作模式下使用。引脚连接表如下所示
s.no hc-05/hc-06 上的引脚 mcu 上的引脚名称 pic 中的引脚编号
1 vcc vdd 31圣针
2 vcc 格德 32德·针
3 德克萨斯 rc6/tx/ck 25千针
4 接收 rc7/rx/dt 26千针
5 州 数控 数控
6 英文(使能) 数控 数控
使用 codevision 为 atmega 8 创建项目:
安装这些软件后,请按照以下步骤创建项目并编写代码:
第 1 步。打开 codevision 单击“文件 -> 新建”-> 项目。将出现确认对话框。点击是
第 2 步。代码向导将打开。单击第一个选项,即 at90,然后单击确定。
第 3 步。选择您的微控制器芯片,在这里我们将采用如图所示的atmega8。
第 4 步。单击端口。在我们的项目中,我们将使用端口 c4 和 c5 进行 led 接口。因此,通过单击将位 4 和位 5 作为输出。如下图所示:
第5步。我们将使用 usart 用于 rx 和 tx。因此,单击usart选项,然后单击接收器选项,然后保持原样。
第 6 步。单击程序 - >生成,保存并退出。现在,我们一半以上的工作已经完成
步骤 7.在桌面上创建一个新文件夹,以便我们的文件保留在文件夹中,否则我们将分散在整个桌面窗口中。根据需要命名您的文件夹,我建议使用相同的名称来保存程序文件。
我们将有一个接一个的对话框来保存文件。
对保存第一个对话框后将出现的其他两个对话框执行相同的操作。
现在,您的工作区如下所示。
我们的大部分工作都是在向导的帮助下完成的。现在, 我们只需要编写几行代码来连接蓝牙模块并控制 led.
电路图:
下面给出了蓝牙hc-05与avr接口的电路图。
将frc电缆的一端连接到usbasp编程器,另一端将连接到微控制器的spi引脚,如下所述:
frc 母连接器引脚 1 -> 引脚 17,atmega8 的 mosi
引脚 2 连接到 atmega8 的 vcc,即引脚 7
引脚 5 连接到 atmega8 的复位,即引脚 1
引脚 7 连接到 atmega8 的 sck,即引脚 19
引脚 9 连接到 atmega8 的 miso,即引脚 18
引脚 8 连接到 atmega8 的 gnd,即引脚 8
按照电路图连接试验板上的其余组件。
代码和说明:
文章末尾给出了带有演示视频的完整 avr 代码。
在这里,我们在void main函数中声明了一个变量,用于存储来自蓝牙模块的传入字符。
#include
// declare your global variables here
// standard input/output functions
#include
void main(void)
{
char var;                 // declare your local variables here
其余代码很简单,很容易理解。现在,进入代码的最后一行,您将在其中找到一个while循环。我们的主代码将在此循环中。在这里,我们不断检查来自蓝牙模块的传入字符并相应地打开或关闭 led.
while (1)
{
scanf(%c,&var);               //this function is to used to check any character coming from our android app .                    
if (var == 'a')                              // we will send ‘a’ from bluetooth terminal to on the led and ‘b’ to off the led
{
portc.5 = 1;
portc.4 = 0;
}      
if (var == 'b')
{
portc.5 = 0;
portc.4 = 0;
}     
}
我们的代码完成了。现在,我们必须构建我们的项目。单击“构建项目”图标,如下所示。
生成项目后,将在调试> exe 文件夹中生成一个十六进制文件,该文件可以在您之前为保存项目而创建的文件夹中找到。我们将使用此十六进制文件通过sinaprog软件上传到atmega8中。
使用 sinaprog 将代码上传到 atmega 8:
我们将使用sinaprog上传上面生成的十六进制文件,因此打开它并从设备下拉菜单中选择 atmega8。从调试> exe 文件夹中选择十六进制文件,如下所示。
现在,单击程序。
您的微控制器已编程。现在,我们需要一个android应用程序来连接我们的模块。我们将使用“蓝牙终端应用程序”来控制led灯。
安卓应用程序,用于使用 avr 控制 led:
我们将使用智能手机中的“蓝牙终端应用程序”与另一端的hc-05通话以控制led灯。
您可以通过将电路插入pc来使用相同的usbap为电路供电,也可以将外部5v(不超过5!!!!!)施加到atmega8 vcc引脚。
安装后.打开应用程序并将其与蓝牙模块连接(hc-05,默认密码为1234)。
现在,发送“a”,看到 led 会发光。发送“b”,指示灯将熄灭。
因此,现在通过发送字符“a”和“b”,您可以使用智能手机无线控制 led。如果您将语音键盘与蓝牙应用程序一起使用,那么您甚至不需要输入字符“a”和“b”,您只需说出它们,就可以使用语音控制 led。
#include
#include
void main(void)
{
char var;
// declare your local variables here
// input/output ports initialization
// port a initialization
// function: bit7=in bit6=in bit5=in bit4=in bit3=in bit2=in bit1=in bit0=in
ddra=(0<
// state: bit7=t bit6=t bit5=t bit4=t bit3=t bit2=t bit1=t bit0=t
porta=(0<
// port b initialization
// function: bit7=in bit6=in bit5=in bit4=in bit3=in bit2=in bit1=in bit0=in
ddrb=(0<
// state: bit7=t bit6=t bit5=t bit4=t bit3=t bit2=t bit1=t bit0=t
portb=(0<
// port c initialization
// function: bit7=in bit6=in bit5=out bit4=out bit3=in bit2=in bit1=in bit0=in
ddrc=(0<
// state: bit7=t bit6=t bit5=0 bit4=0 bit3=t bit2=t bit1=t bit0=t
portc=(0<
// port d initialization
// function: bit7=in bit6=in bit5=in bit4=in bit3=in bit2=in bit1=in bit0=in
ddrd=(0<
// state: bit7=t bit6=t bit5=t bit4=t bit3=t bit2=t bit1=t bit0=t
portd=(0<
// timer/counter 0 initialization
// clock source: system clock
// clock value: timer 0 stopped
// mode: normal top=0xff
// oc0 output: disconnected
tccr0=(0<
tcnt0=0x00;
ocr0=0x00;
// timer/counter 1 initialization
// clock source: system clock
// clock value: timer1 stopped
// mode: normal top=0xffff
// oc1a output: disconnected
// oc1b output: disconnected
// noise canceler: off
// input capture on falling edge
// timer1 overflow interrupt: off
// input capture interrupt: off
// compare a match interrupt: off
// compare b match interrupt: off
tccr1a=(0<
tccr1b=(0<
tcnt1h=0x00;
tcnt1l=0x00;
icr1h=0x00;
icr1l=0x00;
ocr1ah=0x00;
ocr1al=0x00;
ocr1bh=0x00;
ocr1bl=0x00;
// timer/counter 2 initialization
// clock source: system clock
// clock value: timer2 stopped
// mode: normal top=0xff
// oc2 output: disconnected
assr=0<
tcnt2=0x00;
ocr2=0x00;
// timer(s)/counter(s) interrupt(s) initialization
timsk=(0<
// external interrupt(s) initialization
// int0: off
// int1: off
// int2: off
mcucr=(0<
mcucsr=(0<
ucsrb=(0<
ucsrc=(1<
ubrrh=0x00;
ubrrl=0x33;
// analog comparator initialization
// analog comparator: off
// the analog comparator's positive input is
// connected to the ain0 pin
// the analog comparator's negative input is
// connected to the ain1 pin
acsr=(1<
sfior=(0<
// spi initialization
// spi disabled
spcr=(0<
// twi initialization
// twi disabled
twcr=(0<
while (1)
{
scanf(%c,&var);
if (var == 'a')
{
portc.5 = 1;
portc.4 = 0;
}
if (var == 'b')
{
portc.5 = 0;
portc.4 = 0;
}
}
}

孢子捕捉分析仪:纪录微生物世界的细腻之美
特斯拉正研发超过400英里的电动汽车电池
国产晶圆代工厂华虹半导体登录科创板今日申购
锐高LED驱动器全新突破 三大系列满足各色需求
中国大陆晶圆产能增幅创全球之最!
如何将HC-05与AVR ATmega8连接起来控制LED
PLL锁相环的特性、应用与其基本工作过程
天齐锂业拟通过香港H股上市,目的在于配合公司快速扩张步伐
激荡创意推手创新 飞思卡尔MCU创意大奖赛完美收官
做“好”IC验证工程师的必备技能
恶劣工业环境的设计注意事项
湖南长株潭fm频道列表
昆仑芯2代AI芯片为开发者提供灵活便捷的部署方案
晶体石英振荡器的振动频率
UCOS2系统内核讲述(五) _初始化TCB详情
基于 SemiDrive E3 平台 TRACE32 安装调试与烧录介绍
江苏润石发布11颗通过AEC-Q100 Grade1 &amp; MSL 1湿敏等级认证的车规级芯片
百度入局智能家居,欲快速切入市场
探究SoPC的OSD控制器设计
制作DNA光电组件可由杀鱼下脚料?