找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

ATmega16單片機(jī)藍(lán)牙串口控制程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:114509 發(fā)表于 2019-1-30 11:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
/*
          HC-06藍(lán)牙模塊      ATmega16單片機(jī)
        
        VCC----------------VCC
        GND----------------GND
        TXD----------------RXD(PD0端口,設(shè)置輸入)
        RXD----------------TXD(PD1端口,設(shè)置輸出)
        
*/

/*ICCAVR7.2編程軟件*/
/*使用內(nèi)部8M晶振*/
/*手機(jī)搜索下載<藍(lán)牙串口SPP>*/

/*頭文件*/
#include <iom16v.h>
#include <macros.h>
/*宏定義*/
#define uchar unsigned char
#define uint unsigned int
/*全局變量*/
uchar rdata;
uchar flag=0;
/*端口初始化*/
void IO_init(void)
{         
         DDRA = 0XFF;
         DDRB = 0XF0;
         DDRC = 0XFF;
         //DDRD = 0XFF;
        PORTA = 0X00;
        PORTB = 0X00;
        PORTC = 0XFF;
        //PORTD = 0XFF;
}
/*延時(shí)函數(shù)*/
void delayms(uint i)
{
    while(i--)
    {                          
            uint j;               
        for(j=1;j<=1332;j++);      
    }
}
/*串口初始化,波特率設(shè)置*/
void uart_init()
{
         /*控制寄存器清零*/
        UCSRB=0x00;
        UCSRA=0x00;
        /*異步模式,禁止奇偶校驗(yàn),停止位為1位,數(shù)據(jù)位為8位*/
        UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0);
        /*9600bps @8.0000MHZ 不倍數(shù)*/
        UBRRH=(unsigned char)(0x33>>8);
        UBRRL=(unsigned char)0x33;
        /*接收、發(fā)送使能,接收中斷使能*/
        UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE);
        /*開全局中斷*/
        SREG=BIT(7);
        /*配置TX為輸出*/
        DDRD|=0x02;
}
/*數(shù)據(jù)發(fā)送*/
void uart_senddata(uchar data)
{
         /*第五位UDRE為高,數(shù)據(jù)寄存器空*/
        while(!(UCSRA&(BIT(UDRE))));
        /*發(fā)數(shù)據(jù)至UDR*/
        UDR=data;
        /*第六位TXC高, 發(fā)送結(jié)束*/
        while(!(UCSRA&(BIT(TXC))));
        /*置位TXC*/
        UCSRA|=BIT(TXC);
}
/*數(shù)據(jù)接收中斷服務(wù)*/
#pragma interrupt_handler uart_recdata:12
void uart_recdata(void)
{
         UCSRB&=~BIT(RXCIE);
        rdata=UDR;
        flag=1;
        UCSRB|=BIT(RXCIE);
}
/*主函數(shù)*/
void main(void)
{
        /*端口初始化*/
        IO_init();
        /*串口初始化*/
        uart_init();
        /*大循環(huán)*/
        while(1)
        {
                /*接收到藍(lán)牙數(shù)據(jù)后發(fā)送*/
                if(flag)
                {
                         uart_senddata(rdata);
                        flag=0;
                }
                /*LED燈控制*/
                switch(rdata)
                {
                          case 0xFF:
                                            PORTC=0xFE;
                                           delayms(2000);
                                           PORTC=0XFF;
                                           break;
                        case 0xFE:
                                            PORTC=0xFD;
                                           delayms(2000);
                                           PORTC=0XFF;
                                           break;
                        case 0xFD:
                                            PORTC=0Xfb;
                                           delayms(2000);
                                           PORTC=0XFF;
                                           break;
                        case 0xFB:
                                            PORTC=0xF7;
                                           delayms(2000);
                                           PORTC=0XFF;
                                           break;
                }
        }
}


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

使用道具 舉報(bào)

沙發(fā)
ID:703628 發(fā)表于 2020-3-6 17:18 | 只看該作者
可以給原圖嗎
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

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