这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » wgq615MCU开发板DIY进程跟帖

共32条 3/4 1 2 3 4 跳转至
助工
2011-12-14 17:39:37     打赏
21楼

void main()

 SCON=0x50; //串口方式1,允许接收
 T2CON=0x34; //设定时器2 开始计数
 
  RCAP2H = 0xFF;
  RCAP2L = 0xD9;//设定波特率为9600
  TR2=1;//启动定时器2
  SM2=1;
  TI=1;
  TB8=1;
  ES=1;
  //EA=1;
  
  
  
  
  

 while(1)
 {
  P1=SBUF;  
  while(!RI);
  RI=0;
  SBUF=P1;
  while(!TI);
  TI=0;
  delay(100);
  
 }
 
 }


助工
2011-12-16 16:40:19     打赏
22楼
更新串口接收数据并在LCD上显示数据!


助工
2011-12-16 16:44:53     打赏
23楼
发个实际效果上来,和大家分享!

稍后传代码!


助工
2011-12-16 16:47:39     打赏
24楼

代码供大家参考!


#include<reg52.h>


#define unchar unsigned char
#define unint  unsigned int
unchar nb,ww,x;

sbit SCL=P1^1;
sbit SDA=P1^2;

sbit RS=P2^4;
sbit RW=P2^5;
sbit EN=P2^6;

void dslcd_wradd(unchar com);
void dslcd_wrdate(unchar date);
void lcd_xy(unchar aa,unchar bb);
void init_1602();
unchar code tebol[]={"   www.eepwcom.cn.welcom to MCUDIY-51   "};

void delay(unint z)
{
 unint x,y;
 for(x=z;x>0;x--)
    for(y=120;y>0;y--);
 
 }
void main()

 SCON=0x50; //串口方式1,允许接收
 T2CON=0x34; //设定时器2 开始计数 
  RCAP2H = 0xFF;
  RCAP2L = 0xD9;//设定波特率为9600
  TR2=1;//启动定时器2
  ES=1;
  EA=1;
  init_1602();
  lcd_xy(1,2);
  for(x=0;x<40;x++)
  {
   dslcd_wrdate(tebol[x]);
   }
  lcd_xy(2,2); 
  
 while(1)
 {
  
  
  } 
  
 
 }
 
void uart0() interrupt 4
{
 
  ww=SBUF;   
  if(RI==1)
  {
   RI=0;
   REN=0;
   //delay(1);
   SBUF=ww;
   REN=1;
   dslcd_wrdate(ww);
  }  
 
 } 

void dslcd_wradd(unchar com)
{
 RS=0;
 RW=0;
 EN=0;
 P0=com;
 delay(2);
 EN=1;
 delay(2);
 EN=0; 

 
void dslcd_wrdate(unchar date)
{
 RS=1;
 RW=0;
 EN=0;
 P0=date;
 delay(2);
 EN=1;
 delay(2);
 EN=0; 

  
 
void lcd_xy(unchar aa,unchar bb)
{
 unchar k;
 if(aa==1)
 k=0x80+bb; 
 else
 k=0xC0+bb; 
 dslcd_wradd(k);
 delay(20);

void init_1602()
{
 dslcd_wradd(0x38);
 delay(5);
 dslcd_wradd(0x01);
 delay(5);
 dslcd_wradd(0x06);
 delay(5);
 dslcd_wradd(0x0d);
 delay(2);
 } 


助工
2011-12-20 18:00:22     打赏
25楼
这几天弄AD总算能弄通了!

明天把图片传上来

助工
2011-12-21 15:34:50     打赏
26楼
很不容易调试通了,传上来与大家共享!
先传图片,随后传视频,视频正在上传中。。。。。。


助工
2011-12-21 16:40:06     打赏
27楼

上来视频卡卡你看




视频地址:http://player.56.com/v_65442566.swf



通过LCD显示出来AD的数据并通过串口发送出去!


助工
2011-12-21 16:42:14     打赏
28楼
通过串口把AD的数据读出来!


视频地址:http://player.56.com/v_65442646.swf

助工
2011-12-22 11:16:25     打赏
29楼
 uchar ww;
 void init();
  void write_byte();
  void write_add(uchar control,uchar date);
   void respons();
    void start();
   void stop();
   void delay()
{;;}
/* void delay()   //延时4-5个微秒
 {
  uchar x;
  for(x=1;x>0;x--);
  } */
 
 void delay_1ms(uint z)
 {
  uint x,y;
  for(x=z;x>0;x--)
            for(y=110;y>0;y--)
                  ;
 }
 
 void start()//开始信号
 {
  SDA=1;
     delay();
   SCL=1;
     delay();
   SDA=0;
     delay();
 }
 
 void stop()      //停止信号
 {
  SDA=0;
     delay();
   SCL=1;
     delay();
   SDA=1;
     delay();
 }
 
 
 void respons()//应答  相当于一个智能的延时函数
 {
         uchar i;
   SCL=1;
     delay();
   while((SDA==1)&&(i<250))
            i++;
       SCL=0;
     delay();
 }
 
 void init()      //初始化
 {
   SDA=1;
     delay();
   SCL=1;
     delay();    
 }
 
 uchar read_byte()
 {
    uchar i,k;
         SCL=0;
     delay();
   SDA=1;
     delay();
   for(i=0;i<8;i++)
    {
          SCL=1;
             delay();
           k=(k<<1)|SDA;//先左移一位,再在最低位接受当前位
              SCL=0;
             delay();
   }
  return k;
 
 }
 
 void write_byte(uchar date)       //写一字节数据
 {
        uchar i,temp;
      temp=date;
         for(i=0;i<8;i++)
    {
          temp=temp<<1; //左移一位 移出的一位在CY中
           SCL=0;                      //只有在scl=0时sda能变化值
                 delay();
           SDA=CY;
            delay();
           SCL=1;
             delay();            
   }   
   SCL=0;
     delay();
   SDA=1;
     delay();
 }
 
 
 
 void write_add(uchar control,uchar date)
 {
         start();
   write_byte(PCF8591);        //10010000  前四位固定 接下来三位全部被接地了 所以都是0 最后一位是写 所以为低电平
         respons();
         write_byte(control);
       respons();
         write_byte(date);
  respons();
         stop();
 
 }
 
 uchar read_add()
 {
   uchar date;
        start();
   write_byte(PCF8591);
       respons();
         write_byte(0x42);
       respons();
         start();
   write_byte(PCF8591+1);      //把最后一位变成1,读
      respons();
         date=read_byte();
  stop();
    return date;
 
 }
 void main()

 SCON=0x50; //串口方式1,允许接收
 T2CON=0x34; //设定时器2 开始计数 
  RCAP2H = 0xFF;
  RCAP2L = 0xD9;//设定波特率为9600
  TR2=1;//启动定时器2
  ES=1;
  EA=1;
 init();
  
  
 while(1) 
 {
  
  ww=read_add();
  } 
  
 
 }
 
void uart0() interrupt 4
{
 
  //ww=SBUF;   
  if(RI==1)
  {
   RI=0;
   REN=0;
   
   //delay(1);
   SBUF=ww;
   REN=1;
  }  
 
 } 

助工
2011-12-22 11:18:21     打赏
30楼

共32条 3/4 1 2 3 4 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]