⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 project based on embeded system(c51).txt

📁 一个基于嵌入式内核做的项目的源代码(c51的).
💻 TXT
📖 第 1 页 / 共 5 页
字号:
                    Showyijingfan(yijing);
                }
            break;
            case CSUDU :
                sudu=256*serial[1]+serial[2];
                if(serial[3]==0)
                {
                    Showsudu(sudu);
                }
                else
                {
                    Showsudufan(sudu);
                }
            break;
            case CWENDU:
                wendu=serial[1];
                if(serial[2]==0)
                {
                    Showwendu(wendu);
                }
                else
                {
                    Showwendufan(wendu);
                }
            break;
            case CBAOJING:
            break;
            default:
            break;
        }
         OSWait(K_TMO,OS_TICKS_PER_SEC );

    }
}
    
/*********************************************************************************************************
** 函数名称: CheckPower(void)
** 功能描述: 检测电量任务
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: OSSemCreate(),OSQPend()
**            以及其他与显示有关的所有函数
** 作 者: 陈杰峰   wishercjf@163.com 
** 日 期: 2004年5月15日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/


void CheckPower(void)
{

    power=powerkey;
    if(power==0)
    {
        powertime++;
        if(setbaojing==1)
        {

            run=0;
            motor=1;//停止电机
            ET1=0;
            
            serial[0]=CBAOJING;
            serial[1]=5;
            OSQIntPost(CommandData, serial[0]);
            OSWait(K_TMO,OS_TICKS_PER_SEC );
        
            serial[0]=CYEMIAN;
            serial[1]=16;
            OSQIntPost(CommandData, serial[0]);
            OSWait(K_TMO,OS_TICKS_PER_SEC );
            setbaojing=1;
            test=8;

        }
    }


/*********************************************************************************************************

**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: key.c
**创   建   人: 陈杰峰   wishercjf@163.com 
**最后修改日期:  2004年6月2日
**描        述: 本文件按键的输入函数
*************************************************************************************
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
***********************************************************************************************************/


#include "config.h"

uint8 OS_Q_MEM_SEL KeyReadBuf[16];          /*  配置键盘缓冲区 */

/**********************键盘输入********************************/
/*********************************************************************************************************
** 函数名称: KeyScan
** 功能描述: 键盘驱动与系统相关的扫描函数
** 输 入: 无
**
** 输 出: uint8数,实际的按键值
  KEYJIAWEN      0xfe
  KEYSHENGYIN    0xfd
  KEYQUEDING     0xfb
  KEYSHEZHI      0xf7
  KEYJIA         0xef
  KEYJIAN        0xdf
  KEYMOSHI       0xbf

** 全局变量:  无
** 调用模块: 无
**
** 作 者: 陈杰峰   wishercjf@163.com 
** 日 期: 2004年5月4日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/

uint8 KeyScan(void)
{
    uint8 temp;
    temp=P0&0xff;
    return temp;
}

/*********************************************************************************************************
** 函数名称: KeyInput
** 功能描述: 为键盘输入服务的任务,本程序基本是按照陈明计先生的源程序,只做了很少的修改
** 输 入: 无
** 输 出: 无
** 全局变量: KeyReadBuf
** 调用模块: 一些Small RTOS 服务例程
**
** 作 者: 陈杰峰   wishercjf@163.com 
** 日 期: 2004年5月4日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**-------------------------------------------------------------------------------------------------------
********************************************************************************************************/

void KeyInput(void)
{
    uint8 KeyData;
    uint16 i;
    OSQCreate(KeyReadBuf,16);                       /* 创建读取键盘状态的消息队列 */

    while (1)
    {
        OSWait(K_TMO, 20);  // 延时 20ms 
         KeyData = KeyScan();          //     获当前按键状态 
        if (KeyData == NO_KEY)
        {
           continue;
        }

        OSWait(K_TMO, 2);                // 去抖(延时 20ms)
        if (KeyData != KeyScan())
        {
            continue;
        }
         OSQIntPost(KeyReadBuf, KEY_DOWN);
         OSQPost(KeyReadBuf, KeyData);

        i = KEY_START / (OS_TICKS_PER_SEC / 50);
        do
        {
            OSWait(K_TMO,OS_TICKS_PER_SEC/10 );
            if (KeyData != KeyScan())
            {
                goto KeyEnd;                        // 按键松开
            }
        } while (--i != 0);


         while (1)
        {
                                                  //   处理按键连击事件 

            OSQIntPost(KeyReadBuf, KEY_ALWAYS);
            OSQPost(KeyReadBuf, KeyData);
     

            i = KEY_DELAY / (OS_TICKS_PER_SEC / 50);
            do
            {
                OSWait(K_TMO,OS_TICKS_PER_SEC / 50);
                if (KeyData != KeyScan())
                {
                    goto KeyEnd;                    // 按键松开 
                }
            } while (--i != 0);
        }

KeyEnd:
                                                    // 处理按键松开事件 
            OSQIntPost(KeyReadBuf, KEY_UP);
            OSQPost(KeyReadBuf, KeyData);



    }



}

/*********************************************************************************************/
/*                                 End of File                                               */
/*********************************************************************************************/

/*********************************************************************************************************

**--------------文件信息--------------------------------------------------------------------------------
**文   件   名: oslcd.c
**创   建   人: 陈杰峰   wishercjf@163.com 
**最后修改日期:  2004年6月2日
**描        述: 本文件主要实现lcd的显示功能,LCD采用北京青云的LCM12232B液晶模块,程序对于1520控制器通用
*************************************************************************************
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
***********************************************************************************************************/


#include "config.h"
/******************************************************************/
//         定义两块液晶所需要的变量和端口                         //
/******************************************************************/
uint16 lcd1O_X,lcd1O_Y,lcd1com,dat1;
uint8 count1,code_1;
uint16 lcd2O_X,lcd2O_Y,lcd2com,dat2;
uint8 count2,code_2;
uint16 testdata;

sbit lcd1E2=P2^1;
sbit lcd1E1=P2^0;
sbit lcd1RS=P2^3;
sbit lcd1RW=P2^2;
sbit lcd2E2=P2^5;
sbit lcd2E1=P2^4;
sbit lcd2RS=P2^7;
sbit lcd2RW=P2^6;
sbit ACC_7=ACC^7;


/*    西文字符库定义      */
code unsigned char  CHTAB[96][16]={ 
0
}; 



   /************************************************************************************/
/*    中文字符库定义      */
code unsigned char  CCTAB[85][32]= { 
0

};


/*********************************************************************************************************
** 函数名称: lcd1PR1()、lcd1PR4()
** 功能描述: 向lcd1模块发送命令,因为使用的液晶为两个部分,所以分别控制
**
** 输 入: 无
** 输 出: 无
** 全局变量: DATA1,以及lcd1有关的一些端口
** 调用模块: 
**
** 作 者: 陈杰峰   wishercjf@163.com 
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/


void  lcd1PR1()
{
    lcd1RS=0;
    lcd1RW=1;
    do 
    {
          DATA1=0xFF;
          lcd1E1=1;
          ACC=DATA1;                /*  读状态字  */
          lcd1E1=0;
      }  while (ACC_7==1);                /*  判“忙”标志  */
     lcd1RW=0;
     DATA1=lcd1com;
     lcd1E1=1;
     lcd1E1=0;

}

void  lcd1PR4()
{
    lcd1RS=0;
    lcd1RW=1;
    do  
{
          DATA1=0xFF;
          lcd1E2=1;
          ACC=DATA1;                /*  读状态字  */
          lcd1E2=0;
      }  while (ACC_7==1);                /*  判“忙”标志  */
     lcd1RW=0;
     DATA1=lcd1com;
     lcd1E2=1;
     lcd1E2=0;

}

/*********************************************************************************************************
** 函数名称: lcd1PR2()、lcd1PR5()
** 功能描述: 向lcd1模块发送数据,因为使用的液晶为两个部分,所以分别控制
**
** 输 入: 无
** 输 出: 无
** 全局变量: DATA1,以及lcd1有关的一些端口
** 调用模块: 
**
** 作 者: 陈杰峰   wishercjf@163.com 
** 日 期: 2004年5月10日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/


void  lcd1PR2()
{
    lcd1RS=0;
    lcd1RW=1;
    do  
{
          DATA1=0xFF;
          lcd1E1=1;
          ACC=DATA1;                /*  读状态字  */
          lcd1E1=0;
      }  while (ACC_7==1);                /*  判“忙”标志  */
lcd1RS=1;
     lcd1RW=0;
     DATA1=dat1;
     lcd1E1=1;
     lcd1E1=0;

}

void  lcd1PR5()
{
    lcd1RS=0;
    lcd1RW=1;
    do  
{
          DATA1=0xFF;
          lcd1E2=1;
          ACC=DATA1;                /*  读状态字  */
          lcd1E2=0;
      }  while (ACC_7==1);                /*  判“忙”标志  */
    lcd1RS=1;
     lcd1RW=0;
     DATA1=dat1;
     lcd1E2=1;
     lcd1E2=0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -