久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

AVR和51單片機串口通信簡單實驗

作者:佚名   來源:本站原創   點擊數:  更新時間:2013年10月28日   【字體:
//AVR作為發送機,控制51的喇叭發聲和2極管發光
 
//AVR發送方代碼             //采用2400波特率
 
#include <iom16.h>
#include <intrinsics.h>
#define uchar unsigned char
#define uint unsigned int
#define k1 PIND_Bit4             //設置為喇叭
#define k3 PIND_Bit6            //設置為發光管
#define k4 PIND_Bit7            //發送控制命令
 
#define UDRE 5
#define RXC 7
uchar dat=48;
void delay(uint k)
{
 uint i,j;
for(i=0;i<k;i++)
for(j=0;j<1140;j++);
}
#include "1602.h"
void port_init()
{
  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; 
}
void send(uchar k)          //串口發送函數
{
 while(!(UCSRA&(1<<UDRE)));
UDR=k;
 
}
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;
}
}
 
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;
}
}
 

void main()
{
  port_init();
  serial_init();
  init1602();
  delay(1000);
  while(1)
  {
    displayonechar(1,6,dat);
    if(k4==0)
    {
    send(dat);
    }
    key1();  //喇叭發聲
    key3(); //2極管發光
  }
}
 
//----------1602庫函數-----------
#define RS PORTB_Bit0
#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;
}
void writedata(uchar data)
{
  wait();
  RS=1;
  RW=0;
 __no_operation();
 DATA=data;
 __no_operation();
 EN=1;
 __no_operation();
 __no_operation();
 EN=0;
}
 
void displayonechar(uchar x,uchar y,uchar dda)
{
  y&=0x01;
  x&=0x0f;
  if(y)x|=0x40;
  x|=0x80;
  writecmd(x);
  writedata(dda);
}
 
void displaychar(uchar x,uchar y,uchar *p)
{
  y&=0x01;
  x&=0x0f;
  while(*p!='\0')
  {
    if(x<=0x0f)
    {
      displayonechar(x,y,*p);
      p++;
      x++;
    }
  }
}

void init1602()
{
 delay(15);
writecmd(0x38);
delay(5);
writecmd(0x38);
delay(5);
writecmd(0x38);
writecmd(0x80);
writecmd(0x01);
writecmd(0x06);
writecmd(0x0c);
}
 
 
 
//51單片機接收端程序  12MHZ晶振,采用2400波特率
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit bz=P3^3;   //喇叭發聲變量
sbit relay=P3^5;     //繼電器吸合變量
code uchar seg[]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};       // 數碼管碼表
code uchar tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};                                //數碼管位選
uchar dat;                           //接受的數據值
uchar start;                             //各方式啟動變量
 
void delay(uint k)
{
 while(k--);
}
void show(uint k)               //顯示函數
{
 static uchar i,j;
 uint ss[4];
 i=0;
 do
 {
   ss[i]=k%10;
   i++;
 }while(k/=10);
 for(j=0;j<i;j++)
 {
   P0=seg[ss[j]];
   P2=tab[j];
   delay(30);
   P0=0xff;
   P2=0xff;
 }
}
void serial_init()   //串口初始化
{
 TMOD|=0x20;
 SM2=0;
 SM1=1;
 SM0=0;
 REN=1;
    TH1=0xf3;
 TL1=0xf3;
 TR1=1;
}
void serial_iit()           //串口中斷設置
{
EA=1;
ES=1;
}
void sss() interrupt 4           //串口中斷子函數
{
 if(RI==1)
 {
  dat=SBUF;
  RI=0;
 }
}
void time0_init()
{
  TMOD|=0x01;
  TH0=0xff;
  TL0=0x88;
  TR0=1;
}
void time0_event() interrupt 1
{
  TH0=0xff;
  TL0=0x88;
  if(start==1)
  {
  bz=~bz;
  }
  else
  bz=1;
}
void time0_iit()   //定時器0中斷開
{
 ET0=1;
}

void main()
{
 serial_init();
 serial_iit();
 time0_init();
 time0_iit();
 relay=1;
 while(1)
 {
   show(dat);
   if(dat==49)
   {
 start=1;
   }
   if(dat==50)
   {
 start=2;
   }
  else
   start=0;
       if(start==2)
    {
   relay=0;
    }
    else
    {
    relay=1;
    }
 }
}
關閉窗口

相關文章

主站蜘蛛池模板: 日韩视频观看 | av网站推荐| 91视频大全 | 精品国产91乱码一区二区三区 | av一区二区三区 | 99视频在线免费观看 | 亚洲成人毛片 | 国产日韩免费视频 | 国产成人综合一区二区三区 | 亚洲一区 | 久久久久久久久久久久一区二区 | 久久亚洲欧美日韩精品专区 | 中文字幕中文字幕 | 国产自产21区 | 国产日产欧产精品精品推荐蛮挑 | 久久亚洲国产精品 | 国产精品毛片无码 | 国产精品一区二区av | 中文字幕日韩一区 | 最近免费日本视频在线 | 久久三区 | 国产欧美精品 | 一区二区三区国产精品 | 欧美成年人视频在线观看 | 亚洲激情一区二区三区 | 国产精品亚洲视频 | 岛国精品 | 一区二区精品视频 | 久久久久久免费免费 | 久久中文字幕一区 | 色综合色综合色综合 | 国产精品永久在线观看 | 色婷婷精品久久二区二区蜜臂av | 一区二区三区av | 一区二区日本 | 超碰成人免费观看 | 黄色片网此 | 蜜桃传媒一区二区 | 免费观看一级黄色录像 | 国产精品久久7777777 | 亚洲三区在线观看 |