找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: admin
打印 上一主题 下一主题
收起左侧

51hei开发板无线遥控电脑演示程序

  [复制链接]
641#
ID:39432 发表于 2012-6-11 02:55 | 只看该作者
不错,好东西,看看学习下,谢谢。
回复

使用道具 举报

642#
ID:41603 发表于 2012-6-11 10:10 | 只看该作者
给力 研究下
回复

使用道具 举报

643#
ID:41610 发表于 2012-6-11 11:57 | 只看该作者
看看
回复

使用道具 举报

644#
ID:41572 发表于 2012-6-12 22:30 | 只看该作者

 

回复

使用道具 举报

645#
ID:27303 发表于 2012-6-13 14:50 | 只看该作者
很好,很强大~ ....
回复

使用道具 举报

646#
ID:40821 发表于 2012-6-14 14:27 | 只看该作者

IO定义:

输出口P0.0

输入口P2.7\P2.6P2.5\P2.4

要求:1、P2.6为低时,P0.0为高;P2.7和P2.6为低时,P0.0为低。P2.7单独为低时,不作任何反映。

        2、当P2.4为低时,无论P2.7和P2.6在什么状态,P0.0为低。

        3、当P2.5为低时,P0.0为低。

以下是程序,但有问题,请高手指出:

/*

 


*/
#include<STC12C5A60S2.h>
#define uchar unsigned char
#define uint unsigned int
#define Delaytime  100 //消抖
#define Delaybeemp 10
typedef signed   long           INT64S;
typedef unsigned long           INT64U;
typedef signed   int            INT32S;
typedef unsigned int            INT32U;
typedef signed   short          INT16S;
typedef unsigned short          INT16U;
typedef signed   char           INT8S;
typedef unsigned char           INT8U;
/*IO口定义*/
sbit out_upper=P0^0;   //接电磁阀
sbit out_lower = P0^2; //不用
sbit Buzzer = P0^1; //不用

 

sbit Upper_limit=P2^4; //(接光膜传感器)
sbit Lower_limit = P2^5; //检测电磁到位开关

sbit button = P2^6; //按钮S2
sbit button1 = P2^7; //按钮S1

typedef struct tagTYPE_UART_BUFFER
{
 INT8U  ucFlag; 
    INT8U  ucIndex;
    INT8U  ucLength;
    INT8U  ucBuffer[20];
}TYPE_UART_BUFFER, *pTYPE_UART_BUFFER;

typedef struct tagTYPE_UART_INFO
{
    TYPE_UART_BUFFER    sRX;
    TYPE_UART_BUFFER    sTX;
}TYPE_UART_INFO, *pTYPE_UART_INFO;
// ---------------------------------------------
unsigned char button_flag,jishu_flag,Upper_limit_flag,Lower_limit_flag;
unsigned char delay = Delaytime;
TYPE_UART_INFO xdata sUART0_Info = {0};

void sendonebyte(void);
/*
函数功能:串口初始化,
波特率:38400 工作在1T模式,使用定时器1计数
*/
void InitUART(void)
{
    TMOD = 0x21;
    SCON = 0x50;
 AUXR |= 0x40;//使其工作在1T模式下
    TH1 = 0xF7;
    TL1 = TH1;
    PCON = 0x00;
    EA = 1;
    ES = 1;
    TR1 = 1;

 //定时器0 定时时间:10ms
 TH0 = 0x0FF;
    TL0 = 0x0F6;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
 //初始化输入输出的io
 P0M0 = 0xff;
 P0M1 = 0x00;
 P2M0 = 0x00;
 P2M1 = 0xff;
}

/*
函数功能:延时时间为10ms
*/
void delay_10ms(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=38;b>0;b--)
            for(a=130;a>0;a--);
}

void main(void)
{
 uchar i,flag=0;
// jishu_flag = 0;
 InitUART();
 out_upper = 1;//此时汽缸向上动作
 out_lower = 1;
 Upper_limit_flag = 0;   //  光幕传感器
 Lower_limit_flag = 0;     //到位开关
 button_flag = 0; //按钮S1
 button1_flag = 0; //按钮S2
 while(1)
 {
//  if(sUART0_Info.sRX.ucFlag == 1)
//  {
//   sUART0_Info.sRX.ucFlag = 0;
//    out_upper = 1;//此时汽缸向上动作
//    out_lower = 1;
//   for(i = 0;i<sUART0_Info.sRX.ucLength;i++)
//   {
//    sUART0_Info.sRX.ucBuffer = 0;
//   }
//  }

 


  if(Upper_limit_flag == 1)  //光幕传感器
  {
      Upper_limit_flag = 0;
      out_upper = 1;//此时汽缸向上动作
      out_lower = 1;
      flag = 0;
     
  }
  if((Lower_limit_flag == 1)&&(flag == 0)) //限位开关和光幕传感器做逻辑与运算
  {
   Lower_limit_flag = 0;     //限位开关为低电位
    flag = 1;
   out_upper = 1;//此时汽缸向下动作
   out_lower = 0;
   sendonebyte();
  }
  if(button_flag == 1)&&(button1_flag == 1)    //按钮按下
  {
     button_flag = 0;
     out_upper = 0;//此时汽缸向下动作
     out_lower = 1;
  }
//  if((input==0)&&(jishu_flag == 0))
//  {
//   delay_10ms();
//   if((input==0)&&(jishu_flag == 0))
//   {
//    output = 0;//把汽缸合上
//    jishu_flag = 1;
//    overtime = 0;
//    while((input_test_qg==1)&&(overtime++ < Delaybeemp-1))
//    {
//    
//     for(i = 0;i< 100;i++)
//     {
//      delay_10ms();    
//     }
//    }
//     if(overtime>=Delaybeemp-1)
//     {
//      Buzzer = 0;
//     }
//     else if(input==0)
//     {
//      sendonebyte();
//     }
//   }
//  }
//  if(button_flag == 1)
//  {
//   button_flag = 0;
//   Buzzer = 1;
//   output = 1;
//  // jishu_flag = 0;
//  } 
//  if(input==1)
//  {
//   delay_10ms();
//   if(input==1)
//   {
//    jishu_flag = 0; 
//    Buzzer = 1;
//   } 
//  }
 }  
}


void ISR_UART0(void)interrupt 4
{

     INT8U ucTemp;// 暂存变量
    // 接收
    if (RI){
        // ---------------------------------------------
        // 启动接收
        RI = 0;
        ucTemp = SBUF;
        // 判断数据
        switch (sUART0_Info.sRX.ucIndex)
  {
            case 0:// "Z"
                if (ucTemp == 'Z')
    {
                    // "Z"
                    sUART0_Info.sRX.ucBuffer[sUART0_Info.sRX.ucIndex ++] = ucTemp;
                }
                else
    {
                    // 无效数据
                    sUART0_Info.sRX.ucIndex = 0;
                }
                break;
            case 1:// "U"
                if (ucTemp == 'U')
    {
                  
                    sUART0_Info.sRX.ucBuffer[sUART0_Info.sRX.ucIndex ++] = ucTemp;
                }
                else
    {
                    // 无效数据
                    sUART0_Info.sRX.ucIndex = 0;
                }
                break;
            case 2:// "Z"
                if (ucTemp == 'Z')
    {
                    // "Z"
                    sUART0_Info.sRX.ucBuffer[sUART0_Info.sRX.ucIndex ++] = ucTemp;
                }
                else
    {
                    // 无效数据
                    sUART0_Info.sRX.ucIndex = 0;
                }
                break;
            default:// 通信数据
                // 接收通信数据,
                sUART0_Info.sRX.ucBuffer[sUART0_Info.sRX.ucIndex ++] = ucTemp;             
                // 接收通信数据,判断回车键
                if(((ucTemp == '\r')||((ucTemp == '\n')))&&(sUART0_Info.sRX.ucIndex >= 3))
    {
                 sUART0_Info.sRX.ucLength = sUART0_Info.sRX.ucIndex;
     sUART0_Info.sRX.ucIndex = 0; //接收完,清零索引
     sUART0_Info.sRX.ucFlag = 1;                
                }
                else
    {
                }
                break;
        } 
        // ---------------------------------------------
    }

    // ---------------------------------------------
    if (TI){
        // ---------------------------------------------
        TI = 0;
        // ---------------------------------------------
        if (sUART0_Info.sTX.ucIndex < sUART0_Info.sTX.ucLength)
  {
            SBUF = sUART0_Info.sTX.ucBuffer[sUART0_Info.sTX.ucIndex ++];
        }
        else
  {
            sUART0_Info.sTX.ucIndex = 0;
            sUART0_Info.sTX.ucLength = 0;
        }
        // ---------------------------------------------
    }
    // ---------------------------------------------
}

//10 ms扫描按键
void Timer0Interrupt(void) interrupt 1
{
  // 清除标志
    TF0 = 0;
    TR0 = 0;
    TH0 = 0x0FF;
    TL0 = 0x0F6;
 TR0 = 1;  
 if((button == 0)||(Upper_limit == 0)||(Lower_limit == 0)) //按钮、光幕传感器、到位开关存在逻辑或的关系
 {
  delay -- ; //延时消抖
  if(!delay)
  {
   delay =  Delaytime;
   if(button == 0)
   {
    button_flag =1;
   }
   else if(Upper_limit == 0)
   {
    Upper_limit_flag = 1;
   }
   else if(Lower_limit == 0)
   {
     Lower_limit_flag = 1;
   }           
  }
 }

    //add your code here!
}

void sendonebyte(void)
{
  sUART0_Info.sTX.ucBuffer[0] = 'Z';
  sUART0_Info.sTX.ucBuffer[1] = 'f';
  sUART0_Info.sTX.ucBuffer[2] = 'Z';
  sUART0_Info.sTX.ucBuffer[3] = '\r';
  sUART0_Info.sTX.ucIndex = 0;
     sUART0_Info.sTX.ucLength = 4;
  SBUF = sUART0_Info.sTX.ucBuffer[sUART0_Info.sTX.ucIndex ++];
}

回复

使用道具 举报

647#
ID:28763 发表于 2012-6-14 16:52 | 只看该作者
好东西,谢谢分享
回复

使用道具 举报

648#
ID:41681 发表于 2012-6-14 18:21 | 只看该作者

要看

回复

使用道具 举报

649#
ID:41740 发表于 2012-6-14 19:30 | 只看该作者
啥玩意!!!看看不行呀!!
回复

使用道具 举报

650#
ID:41744 发表于 2012-6-14 20:09 | 只看该作者
爽啊
回复

使用道具 举报

651#
ID:24379 发表于 2012-6-14 22:53 | 只看该作者
实用的东西,这样我躺在床上看大片,也不用爬起来操作电脑了 但现在都BB了 还是设计个用本本设定命令传给单片机的好
回复

使用道具 举报

652#
ID:41752 发表于 2012-6-14 22:58 | 只看该作者

技术讨论群:50269734;欢迎从事仪器仪表、机电、工控自动化、力机、环保、

测绘仪器、试验分析仪器、搅拌站等行业的朋友加入。

回复

使用道具 举报

653#
ID:27494 发表于 2012-6-15 12:24 | 只看该作者
 有完整程序吗?
回复

使用道具 举报

654#
ID:41766 发表于 2012-6-15 15:21 | 只看该作者
很好,很强大,不知道行不行
回复

使用道具 举报

655#
ID:41776 发表于 2012-6-15 19:05 | 只看该作者

回复

使用道具 举报

656#
ID:39486 发表于 2012-6-17 20:57 | 只看该作者

看看

回复

使用道具 举报

657#
ID:41853 发表于 2012-6-18 12:00 | 只看该作者
不错,学习了
回复

使用道具 举报

658#
ID:41860 发表于 2012-6-18 13:35 | 只看该作者
回复

使用道具 举报

659#
ID:41956 发表于 2012-6-21 00:29 | 只看该作者
niu..................
回复

使用道具 举报

660#
ID:41987 发表于 2012-6-22 07:04 | 只看该作者

大家好我也来看看

回复

使用道具 举报

661#
ID:41984 发表于 2012-6-22 22:29 | 只看该作者

看看 谢谢

 

回复

使用道具 举报

662#
ID:42054 发表于 2012-6-24 16:51 | 只看该作者
想学
回复

使用道具 举报

663#
ID:41925 发表于 2012-6-25 09:18 | 只看该作者
想看看~
回复

使用道具 举报

664#
ID:42068 发表于 2012-6-25 11:38 | 只看该作者
不知道好吗
回复

使用道具 举报

665#
ID:1805 发表于 2012-6-26 13:32 | 只看该作者
 刚好在学遥控,哈哈;)
回复

使用道具 举报

666#
ID:42122 发表于 2012-6-26 16:13 | 只看该作者
学习下
回复

使用道具 举报

667#
ID:42159 发表于 2012-6-27 16:01 | 只看该作者

学习!!!!

回复

使用道具 举报

668#
ID:42172 发表于 2012-6-27 23:54 | 只看该作者
hao li hai
回复

使用道具 举报

669#
ID:42178 发表于 2012-6-28 07:39 | 只看该作者

谢了呵呵

回复

使用道具 举报

670#
ID:42178 发表于 2012-6-28 07:39 | 只看该作者
谢了
回复

使用道具 举报

671#
ID:42180 发表于 2012-6-28 08:56 | 只看该作者
非常好哦
回复

使用道具 举报

672#
ID:42180 发表于 2012-6-28 09:33 | 只看该作者

有源程序吗?

我想看看

回复

使用道具 举报

673#
ID:42203 发表于 2012-6-28 17:03 | 只看该作者
不错
回复

使用道具 举报

674#
ID:40341 发表于 2012-6-28 19:21 | 只看该作者

不错,看下。

回复

使用道具 举报

675#
ID:42220 发表于 2012-6-29 10:16 | 只看该作者
feichanghaohahhh
回复

使用道具 举报

676#
ID:42227 发表于 2012-6-29 12:29 | 只看该作者
很好的东西,可以拓展
回复

使用道具 举报

677#
ID:42317 发表于 2012-7-2 09:22 | 只看该作者

不怎么样 遥控一个电脑还得单独用一个开发版

 

回复

使用道具 举报

678#
ID:42339 发表于 2012-7-2 15:06 | 只看该作者
恢复 回复
回复

使用道具 举报

679#
ID:42412 发表于 2012-7-4 14:06 | 只看该作者
这个太有用的
回复

使用道具 举报

680#
ID:42414 发表于 2012-7-4 15:04 | 只看该作者
看看 谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表