AVR和51單片機(jī)串口通信簡(jiǎn)單實(shí)驗(yàn)
//AVR發(fā)送方代碼 //采用2400波特率
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define uint unsigned int
#define k1 PIND_Bit4 //設(shè)置為喇叭
#define k3 PIND_Bit6 //設(shè)置為發(fā)光管
#define k4 PIND_Bit7 //發(fā)送控制命令
#define k3 PIND_Bit6 //設(shè)置為發(fā)光管
#define k4 PIND_Bit7 //發(fā)送控制命令
#define UDRE 5
#define RXC 7
#define RXC 7
uchar dat=48;
void delay(uint k)
{
uint i,j;
for(i=0;i for(j=0;j<1140;j++);
}
{
uint i,j;
for(i=0;i
}
#include "1602.h"
void port_init()
{
PORTA=0xff;
DDRA=0xff;
PORTB=0xff;
DDRB=0xff;
PORTC=0xff;
DDRC=0xff;
PORTD=0xff;
DDRD=0x0f;
}
{
PORTA=0xff;
DDRA=0xff;
PORTB=0xff;
DDRB=0xff;
PORTC=0xff;
DDRC=0xff;
PORTD=0xff;
DDRD=0x0f;
}
void serial_init()
{
UCSRB=0x00;
UCSRA=0x02; //雙倍速
UCSRC=0x06; //8位字符模式
UBRRH=0x01; //2400波特率
UBRRL=0xa0;
UCSRB=0x18;
}
{
UCSRB=0x00;
UCSRA=0x02; //雙倍速
UCSRC=0x06; //8位字符模式
UBRRH=0x01; //2400波特率
UBRRL=0xa0;
UCSRB=0x18;
}
void send(uchar k) //串口發(fā)送函數(shù)
{
while(!(UCSRA&(1< UDR=k;
}
{
while(!(UCSRA&(1<
}
void key1()
{
static uint i,j;
if(k1==0)
{
if(i==0)
{
j++;
if(j>10)
{
if(k1==0)
{
i=1;j=0;
dat=49;
}
}
}
}
else
{
i=0;j=0;
}
}
{
static uint i,j;
if(k1==0)
{
if(i==0)
{
j++;
if(j>10)
{
if(k1==0)
{
i=1;j=0;
dat=49;
}
}
}
}
else
{
i=0;j=0;
}
}
void key3()
{
static uint i,j;
if(k3==0)
{
if(i==0)
{
j++;
if(j>10)
{
if(k3==0)
{
i=1;j=0;
dat=50;
}
}
}
}
else
{
i=0;j=0;
}
}
{
static uint i,j;
if(k3==0)
{
if(i==0)
{
j++;
if(j>10)
{
if(k3==0)
{
i=1;j=0;
dat=50;
}
}
}
}
else
{
i=0;j=0;
}
}
void main()
{
port_init();
serial_init();
init1602();
delay(1000);
while(1)
{
displayonechar(1,6,dat);
if(k4==0)
{
send(dat);
}
key1(); //喇叭發(fā)聲
key3(); //2極管發(fā)光
}
}
}
}
//----------1602庫(kù)函數(shù)-----------
#define RS PORTB_Bit0
#define RW PORTB_Bit1
#define EN PORTB_Bit2
#define DATA PORTA
#define busy 0x80
#define RW PORTB_Bit1
#define EN PORTB_Bit2
#define DATA PORTA
#define busy 0x80
void wait()
{
uchar val;
DATA=0xff;
RS=0;
RW=1;
__no_operation();
__no_operation();
EN=1;
__no_operation();
__no_operation();
DDRA=0x00;
val=PINA;
while(val&busy)
{
val=PINA;
}
EN=0;
DDRA=0xff;
}
void writecmd(uchar cmd)
{
wait();
RS=0;
RW=0;
__no_operation();
DATA=cmd;
__no_operation();
EN=1;
__no_operation();
__no_operation();
EN=0;
}
關(guān)鍵詞:
AVR51單片機(jī)串口通
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論