智能家居控制系统VB上的代码

发布者:创意探险最新更新时间:2018-01-12 来源: eefocus关键字:智能家居  控制系统 手机看文章 扫描二维码
随时随地手机看文章

#include  
#include  
#include      

#define TURE 1 
#define FALSE 0 

#define delayus() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()

 

/*************************************** 
**自定义数据类型 
***************************************/ 
typedef unsigned char     uint8;      
typedef unsigned int        uint16; 
typedef unsigned long        uint32; 

/*************************************** 
**按键消息结构体 
***************************************/ 
typedef struct          

  uint8  handle;          //功能索引 
  uint8  assignments;     //键值 
  uint8  time;            //键按下的时间 

} K_MSG; 

/****************************************** 
** 端口定义 
******************************************/ 
sbit LCD_E        = P2^7;     
sbit LCD_RW        = P2^6; 
sbit LCD_RS        = P2^5; 
sbit TLED        = P2^4; 
sbit Uout        = P3^7;  
sbit Bell        = P2^0; 
        

sfr LCD_DOUT         =    0x80; 
sfr key_interface    =    0x90; 

/****************************************** 
** 全局变量 
******************************************/ 
K_MSG kmsg; 

bit DisplayUpdataFlag,ClICk_Flag, BellingFlag, MeasureFlag, DelayFlag, MeaDelayExt; 

uint8 T0_IRQ_Times, ShowPage, OBScure, PulseCoun, MeaDelayTime; 

uint8 DisplayBuff[33]; 

uint8  RevTimeH; 
uint16 RevTimeL; 
uint32 RevTime; 

uint8 code TestString[]={"www.huayimcu.com"}; 

/******************************************************************************/ 
/******************************************************************************* 
** 函数名称: LcdDelay 
** 功能描述: LCD控制时序用到的延时程序 
** 
** 输 入: times-延时量 
** 
** 输 出: 无 
**          
** 全局变量: 无 
** 调用模块: 无 

**------------------------------------------------------------------------------- 
*********************************************************************************/ 
void LcdDelay(uint8 times) 

    while(times--); 


/******************************************************************************* 
** 函数名称: ReadLCDCR 
** 功能描述: 读LCD命令寄存器 
** 
** 输 入: 无 
** 
** 输 出: (uint8) 读到的数据 
**          
** 全局变量: 无 
** 调用模块: LcdDelay 

*********************************************************************************/ 
uint8 ReadLCDCR(void) 

      uint8 byte; 

      LCD_RS = 0; 
      LCD_RW = 1; 
      LCD_E = 1; 
      LcdDelay(4); 
      byte = LCD_DOUT; 
     LCD_E = 0; 
      return(byte); 


/******************************************************************************* 
** 函数名称: WriteLCDCR 
** 功能描述: 写LCD命令寄存器 
** 
** 输 入: (uint8 thdata) 将要写进寄存器的数据 
** 
** 输 出: 无 
**          
** 全局变量: 无 
** 调用模块: LcdDelay 

*********************************************************************************/ 
void WriteLCDCR(uint8 thEDAta) 

      LCD_DOUT = thedata; 
      LCD_RS = 0; 
      LCD_RW = 0; 
      LCD_E = 1; 
      LcdDelay(4); 
      LCD_E=0; 

/******************************************************************************* 
** 函数名称: WriteLCDDR 
** 功能描述: 写LCD数据寄存器 
** 
** 输 入: (uint8 thedata) 将要写进寄存器的数据 
** 
** 输 出: 无 
**          
** 全局变量: 无 
** 调用模块: LcdDelay 

*********************************************************************************/ 
void WriteLCDDR(uint8 thedata) 

      LCD_DOUT = thedata; 
      LCD_RS = 1; 
      LCD_RW = 0; 
      LCD_E = 1; 
      LcdDelay(4); 
      LCD_E = 0; 


/******************************************************************************* 
** 函数名称: Test_LCDBF 
** 功能描述: 检测LCD忙标志 
** 
** 输 入: 无 
** 
** 输 出: 无 
**          
** 全局变量: 无 
** 调用模块: ReadLCDCR 
** 
*********************************************************************************/ 
void Test_LCDBF(void) 

      uint8 temp,ErrorTime; 

    ErrorTime = 0xff; 
      do 
      { 
            temp = ReadLCDCR(); 
        ErrorTime--; 
        if(ErrorTime == 0) 
            break; 
      } 
      while(temp & 0x80); 


/******************************************************************************* 
** 函数名称: LCDInit 
** 功能描述: LCD初始化 
** 
** 输 入: 无 
** 
** 输 出: 无 
**          
** 全局变量: 无 
** 调用模块: WriteLCDCR 

*********************************************************************************/ 
void LCDInit(void) 

    uint8 code custom_character[8][8] =  
    {/*自定义5X8字符*/ 
     0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*自定义字符1*/ 
     0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,/*自定义字符2*/ 
     0x00,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,/*自定义字符3*/ 
     0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,/*自定义字符4*/ 
     0x00,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,/*自定义字符5*/ 
     0x00,0x00,0x00,0x00,0x00,0x1f,0x00,0x00,/*自定义字符6*/ 
     0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0x00,/*自定义字符7*/ 
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1f /*自定义字符8*/ 
    }; 

    uint8 i,j; 

      Test_LCDBF(); 
    WriteLCDCR(0x38); 
      for(i=0x20; i>0; i--); 
        for(j=0xff; j>0; j--); 
      Test_LCDBF(); 
      WriteLCDCR(0x38); 
    for(i=0x20; i>0; i--); 
        for(j=0xff; j>0; j--); 
    Test_LCDBF(); 
    WriteLCDCR(0x38); 
    for(i=0x20; i>0; i--); 
        for(j=0xff; j>0; j--); 
    Test_LCDBF(); 
      WriteLCDCR(0x06); 
      Test_LCDBF(); 
      WriteLCDCR(0x0c); 
    Test_LCDBF(); 
    WriteLCDCR(0x01); 
       
    Test_LCDBF(); 
    WriteLCDCR(0x40); 
    for(i=0; i<=7; i++) 
    { 
        for(j=0; j<=7; j++) 
        { 
            Test_LCDBF(); 
            WriteLCDDR(custom_character[i][j]); 
        } 
    }  


/******************************************************************************* 
** 函数名称: LCDDisplay 
** 功能描述: LCD上显示字符串 
** 
** 输 入: *string(指向字符串地址),position(显示位置) 
** 
** 输 出: 无 
**          
** 全局变量: 无 
** 调用模块: WriteLCDCR,WriteLCDDR,Test_LCDBF 

*********************************************************************************/ 
void LCDDisplay(uint8 *string,uint8 position) 

       Test_LCDBF(); 
    WriteLCDCR(position); 
       while(*string != ’#’) 
       { 
         if(position == 0x90) 
         { 
            Test_LCDBF(); 
            WriteLCDCR(0xC0); 
            position = 0xC0; 

         } 
         /*if(*string == ’\0’) 
             *string = ’ ’;     */ 
         Test_LCDBF(); 
        WriteLCDDR(*string++); 
         position++; 
        if(position > 0xCF) 
        { 
            Test_LCDBF(); 
            WriteLCDCR(0x80); 
            position = 0x80; 
        } 
       } 


/******************************************************************************* 
** 函数名称: Timer0_IRQ 
** 功能描述: 定时器0中断服务程序 
** 
** 输 入: 无 
** 
** 输 出: 无 
**          
** 全局变量:  
** 调用模块: 无 
** 
*********************************************************************************/ 
void Timer0_IRQ(void) interrupt 1 using 1 

    TH0 = 0x3c; 
    TL0 = 0xa8; 
    if(++T0_IRQ_Times > 20) 
    { 
        T0_IRQ_Times = 0; 
        Click_Flag = ~Click_Flag; 
        //DisplayUpdataFlag = 1; 
    } 
    if(DelayFlag) 
    { 
        if(++MeaDelayTime > 10) 
        { 
            MeaDelayTime = 0; 
            DelayFlag = 0; 
            MeaDelayExt = 1; 
        } 
    } 


/******************************************************************************* 
** 函数名称: Timer0_IRQ 
** 功能描述: 定时器1中断服务程序 
** 
** 输 入: 无 
** 
** 输 出: 无 
**          
** 全局变量:  
** 调用模块: 无 
** 

*********************************************************************************/ 
void Timer1_IRQ(void) interrupt 3 using 2 

    RevTimeH++; 


void IRQ_int0() interrupt 0 using 2  //INT1中断服务程序,使用第二组寄存器 

    EX0 = 0;         
    TR1 = 0;     

    RevTimeL = 256 * TH1 + TL1; 
    RevTime = RevTimeH * 65536 + RevTimeL; 
    if(RevTime < 1000) 
    { 
        BellingFlag = 1; 
    } 
    else 
    { 
        BellingFlag = 0;     
    } 
    DisplayUpdataFlag = 1;     
    TH1 = 0; 
    TL1 = 0; 


/******************************************************************************* 
** 函数名称: Updata_AD9850 
** 功能描述: 更新AD9850(更新频率相位数据) 
** 
** 输 入: 无 
** 
** 输 出: 无 
**          
** 全局变量:  
** 调用模块: 无 

*********************************************************************************/ 
void UpdataLCD(void) 

    uint8 temp8; 
    uint32 teMP32; 

    temp32 = RevTime; 
    DisplayBuff[16] = temp32 / 100000 + 48; 
    temp32 %= 100000; 
    DisplayBuff[17] = temp32 / 10000 + 48; 
       temp32 %= 10000; 
    DisplayBuff[18] = temp32 / 1000 + 48; 
       temp32 %= 1000; 
    DisplayBuff[19] = temp32 / 100 + 48; 
    temp32 %= 100; 
    DisplayBuff[20] = temp32 / 10 + 48; 
       temp8 = temp32 % 10; 
    DisplayBuff[21] = temp8 + 48; 
    LCDDisplay(DisplayBuff,0x80);     


/******************************************************************************* 
** 函数名称: main 
** 功能描述: 主函数 
** 
** 输 入: 无 
** 输 出: 无 
**          
** 全局变量:  
** 调用模块: 无 

*********************************************************************************/ 
void main(void) 

    //uint8 i; 

    TMOD     = 0x11; 
    EA         = 1; 
    ET0     = 1; 
    ET1     = 1; 
    IT0     = 1; 
    TR0         = 1;     

    LCDInit(); 
    strcpy(DisplayBuff,TestString); 
    DisplayBuff[32] = ’#’; 
    DisplayUpdataFlag = 1; 
    MeaDelayExt = 1; 
    while(1) 
    { 
        TLED = Click_Flag; 
        if(DisplayUpdataFlag) 
        { 
            DisplayUpdataFlag = 0; 
            UpdataLCD(); 
            MeasureFlag = 1; 
        } 
        if(MeasureFlag && MeaDelayExt) 
        { 
            RevTimeH = 0; 
            RevTimeL = 0; 
            RevTime  = 0; 
            IE0 = 0; 
            TF1 = 0; 
            EX0 = 1; 
            TR1 = 1; 
            for(PulseCoun = 0; PulseCoun<10; PulseCoun++) 
            { 
                Uout = ~Uout; 
                delayus(); 
            } 
            MeasureFlag = 0; 
            MeaDelayExt = 0; 
            DelayFlag = 1; 
        } 
        if(BellingFlag) 
        { 
            Bell = 0; 
        } 
        else 
        { 
            Bell = 1; 
        } 

    } 
}


关键字:智能家居  控制系统 引用地址:智能家居控制系统VB上的代码

上一篇:三相步进电机驱动电路
下一篇:智能家居控制系统C程序

推荐阅读最新更新时间:2024-03-16 15:52

基于激光雷达避障的机器人控制系统设计
  0 引 言   移动 机器人 是一种能够感知外部环境,在有障碍物的环境中能够实现动态决策与规划,从而完成避障等多种功能的综合系统。机器人系统通常分为机构本体和控制系统两部分,控制系统的作用是根据用户的指令对机构本体进行操作和控制。随着机器人的智能化水平越来越高,控制器要有方便、灵活的操作方式,以及多种形式的控制方式和高度可靠性,还要有很高的实时性。   为了保证系统的实时性,简化控制系统软件的设计,有必要在控制系统引入嵌入式操作系统。本设计将嵌入式技术与机器人技术相结合,利用ARM作为硬件平台并移人μC/OS-Ⅱ嵌入式实时操作系统,开发了具有多线程、多任务管理的控制终端。嵌入式主控制器ARM是整个机器人控制系统的核心,
[单片机]
基于激光雷达避障的机器人<font color='red'>控制系统</font>设计
工业机器人控制系统的组成有哪些?
机器人控制系统的功能是接收来自传感器的检测信号,根据操作任务的要求,驱动机械臂中的各台电动机就像我们人的活动需要依赖自身的感官一样,机器人的运动控制离不开传感器。机器人需要用传感器来检测各种状态,机器人的内部传感器信号被用来反映机械臂关节的实际运动状态,机器人的外部传感器信号被用来检测工作环境的变化。 工业机器人控制系统的组成 1、控制计算机:控制系统的调度指挥机构。一般为微型机、微处理器有32位、64位等 如奔腾系列CPU以及其他类型CPU。 2、示教盒:示教机器人的工作轨迹和参数设定,以及所有人机交互操作,拥有自己独立的CPU以及存储单元,与主计算机之间以串行通信方式实现信息交互。 3、操作面板:由各种操作按键、状态指示灯
[机器人]
工业机器人控制系统的组成和功能有哪些?
工业机器人是广泛用于工业领域的多关节机械手或多自由度的机器装置,具有一定的自动性,可依靠自身的动力能源和控制能力实现各种工业加工制造功能。工业机器人被广泛应用于电子、物流、化工等各个工业领域之中。 一般来说,工业机器人由三大部分六个子系统组成,三大部分是机械部分、传感部分和控制部分;六个子系统可分为机械结构系统、驱动系统、感知系统、机器人-环境交互系统、人机交互系统和控制系统。那么工业机器人控制系统由哪些组成?有什么功能? 一、工业机器人控制系统的组成 1、控制计算机:控制系统的调度指挥机构。一般为微型机、微处理器有32位、64位等,如奔腾系列CPU以及其他类型CPU。 2、示教盒:示教机器人的工作轨迹和参数设定,以及所有人机
[机器人]
Nest温控器vs小米路由:谁将成为智能家居核心
网易科技讯 5月13日消息,Nest温度控制器是一款超酷的产品。小巧的LCD显示屏、金属质感的外壳和优秀的自学习能力使得消费者突然关心起自家的温度控制器来,先进的功能将智能家居的概念照进现实。但是温控器在中国家庭并不常见。小米路由在最近腾空出世,其目标明确就是要做智能家居的核心。因地制宜,选择路由这种24小时开机的产品做切入,小米的智能牌打得风生水起。两者很有可能在未来碰撞出火花,到底外来和尚会念经还是扬子鳄碰见了长江里的鲨鱼?本文为你做出详细分析。 Nest依托谷歌 平台能力强大 Nest公司开发了一个智能的温控器,并赢得了谷歌的青睐,但这并不是Nest的终极目标。不久前,Nest宣布了一项新的开发项目和Web API,可
[手机便携]
押宝智能家居,小米能否拨开云雾见青天?
在小米在香港IPO之前,关于估值各种爆料和预测,声称小米估值将高达1000亿美元,甚至一度被传出估值2000亿美元。作为一家玩互联网营销起家的企业,对于满天飞的高估值信息,把小米推向风口浪尖,最终,小米以每股发行价17港元,对应市值543亿美元。 尽管首日破发,但雷军放话称要让在上市首日买入小米公司股票的投资人赚一倍!(这段话搜索在百度搜素结果高达78万条记录)。随后几个后面几个交易日,在2018年7月18日一度冲高至22.2港元/股,5570亿港元(710亿美元),当天收盘在21.55元,市值为5406亿港元(约690亿美元)。 如今,截至1月14日上午,小米市值跌至2539亿港元(约324亿美元),相比此前最高7
[嵌入式]
押宝<font color='red'>智能家居</font>,小米能否拨开云雾见青天?
基于TLE7810的车门控制系统设计
  汽车技术发展至今,电子控制单元( ECU )已经应用到在汽车内部的各个环节,技术也日趋成熟。作为车身电子的重要组成部分,车门电子自动控制技术的发展也十分迅速。但在实际应用中,凡是电动车窗或车门设备都有潜在的卡死可能,由此便可引发伤人的危险。因此,在门控系统中, 车窗防夹 设计占有极其重要的位置。   大多数已有的具有防夹功能的电动 车门控制 产品有一个共性,就是在硬件设计中以MCU为核心,辅之以功率器件、控制电路和相关的通信模块(CAN或LIN),由这些组件配合共同实现驱动电机、升降车窗、故障识别与诊断等一系列控制功能。但是,这样的设计往往会遭遇一些技术瓶颈,比如在原理图设计中,MCU外围电路的搭建,功率器件的选取,电子元件之间
[汽车电子]
基于TLE7810的车门<font color='red'>控制系统</font>设计
基于DSP的加速度计温度控制系统的硬件设计
1 引言   近年来,数字信号处理器(DSP)得到了高速发展,性价比不断提高,广泛应用于各个领域,例如通信、语音处理、图像处理、模式识别及工业控制等方面,并且日益显示出巨大的优越性。数字信号处理器利用专门或者通用的数字信号处理电路,以数字计算的方法对信号进行处理,具有处理速度快、灵活、精确、抗干扰能力强、体积小以及可靠性高的特点,可满足对信号快速、精确、实时处理及控制的要求。文中以T1MS320F240型DSP为核心,设计了高精度的惯性导航加速计温度控制系统。 2 TMS320F240系列的基本特征   TMS320F240将DSP的高速运算能力和高效控制能力集于一体,其主要特点如下:      (1)核心CPU包括32位
[应用]
基于PLC的DCS控制系统在污水处理厂中的应用
随着国民经济建设的快速发展,各级政府对环境保护更加关注,各地陆续新建了一大批污水处理厂。这些新建的污水处理厂根据自身特点,对控制系统的性能和价格提出了新的要求。   重庆市奉节污水处理厂采用CASS工艺对生活污水进行处理,日处理量为3万吨。其DCS系统以高性价比的PLC为控制单元,采用商用计算机为监控站。整个系统在实现生产自动化的情况下,有效降低了系统成本,从2004年投产至今运行情况良好。 1 生产工艺简介   污水处理是一种连续的生化反应过程,有氧化沟工艺、AO、SBR、CASS等众多不同的处理工艺。奉节污水处理厂所采用的污水处理工艺为新型改良 CASS(Cyclic Activated Sludge System,循环式活性污
[工业控制]
基于PLC的DCS<font color='red'>控制系统</font>在污水处理厂中的应用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved