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

📄 main.c

📁 基于LPC2134的在ucos2操作系统下的源代码
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "config.h"
#include "stdlib.h"

#define   LED1         1<<21
#define   LED2         1<<22
#define   LED3         1<<23

#define   BEEP         1<<25


#define     out    IO1DIR|=(1<<25)         // set output
#define     in     IO1DIR&=~(1<<25)        // set input
#define     set    IO1SET=(1<<25)          // set dat
#define     clr    IO1CLR=(1<<25)          // clr dat
#define     sh     IO1PIN




#define	 TaskStkLengh	1024         // Define the Task0 stack length 定义用户任务0的堆栈长度

OS_STK	 Task0Stk[TaskStkLengh];		   // Define the Task0 stack 定义用户任务0的堆栈
OS_STK	 SJStk[TaskStkLengh];

void 	 Task0(void *pdata);			   // Task0 任务0
void 	 SJ(void *pdata);	

uint8  biaoti[]=
{
/*------------------------------------------------------------------------------
;  源文件 / 文字: 两点温度测量

;  宽×高(像素) : 18×96
------------------------------------------------------------------------------*/
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x08,0x01,0x00,0x40,0x10,0x01,0x00,
  0x40,0x08,0x00,0x10,0xFF,0xFC,0x01,0x00,
  0x27,0xF8,0x00,0x88,0x2F,0x88,0x1F,0xF8,
  0x04,0x80,0x01,0xF8,0x24,0x10,0x3F,0xFC,
  0x28,0xA8,0x10,0x10,0x04,0x80,0x01,0x00,
  0x07,0xF0,0x22,0x20,0x0A,0xA8,0x1F,0xF0,
  0x3F,0xF8,0x01,0x00,0x84,0x10,0x2F,0xF8,
  0x8A,0xA8,0x10,0x10,0x24,0x88,0x1F,0xF0,
  0x54,0x10,0x22,0x20,0x4A,0xA8,0x7F,0xFC,
  0x24,0x88,0x10,0x10,0x57,0xF0,0x23,0xE0,
  0x5A,0xA8,0x00,0x00,0x2A,0x88,0x10,0x10,
  0x20,0x00,0x20,0x00,0x2A,0xA8,0x1F,0xF0,
  0x29,0x48,0x10,0x10,0x2F,0xF8,0x2F,0xF0,
  0x2A,0xA8,0x11,0x10,0x32,0x28,0x1F,0xF0,
  0xC9,0x48,0x22,0x20,0xCA,0xA8,0x1F,0xF0,
  0x24,0x08,0x00,0x00,0x49,0x48,0x21,0x40,
  0x42,0x08,0x11,0x10,0x20,0x08,0x24,0x90,
  0x49,0x48,0x40,0x80,0x45,0x08,0x3F,0xF8,
  0x20,0x28,0x22,0x48,0x49,0x48,0x43,0x60,
  0x48,0xA8,0x01,0x00,0x20,0x10,0x42,0x48,
  0x5F,0xFC,0x9C,0x1C,0x50,0x90,0x7F,0xFC,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 
};

uint8  x1[]=
{
/*------------------------------------------------------------------------------
;  源文件 / 文字: 1号温度:

;  宽×高(像素) : 13×55
------------------------------------------------------------------------------*/
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x7F,0x11,0xF8,0x04,0x00,0x00,0x00,0x41,
  0x09,0x08,0xFF,0xC0,0x00,0x10,0x41,0x01,
  0xF8,0x91,0x01,0x80,0x70,0x7F,0x11,0x08,
  0xFF,0xC1,0x80,0x10,0x00,0x09,0xF8,0x91,
  0x00,0x00,0x11,0xFF,0xC8,0x00,0x9F,0x00,
  0x00,0x10,0x20,0x0B,0xF8,0x80,0x00,0x00,
  0x10,0x3F,0x12,0xA8,0xBF,0x01,0x80,0x10,
  0x01,0x12,0xA8,0x8A,0x01,0x80,0x7C,0x01,
  0x12,0xA9,0x0E,0x00,0x00,0x00,0x0E,0x17,
  0xFD,0x71,0xC0,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00
};

uint8 x2[]=
{
/*------------------------------------------------------------------------------
;  源文件 / 文字: 2号温度:

;  宽×高(像素) : 13×55
------------------------------------------------------------------------------*/
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x7F,0x11,0xF8,0x04,0x00,0x00,0x00,0x41,
  0x09,0x08,0xFF,0xC0,0x00,0x38,0x41,0x01,
  0xF8,0x91,0x01,0x80,0x44,0x7F,0x11,0x08,
  0xFF,0xC1,0x80,0x04,0x00,0x09,0xF8,0x91,
  0x00,0x00,0x09,0xFF,0xC8,0x00,0x9F,0x00,
  0x00,0x10,0x20,0x0B,0xF8,0x80,0x00,0x00,
  0x20,0x3F,0x12,0xA8,0xBF,0x01,0x80,0x40,
  0x01,0x12,0xA8,0x8A,0x01,0x80,0x7C,0x01,
  0x12,0xA9,0x0E,0x00,0x00,0x00,0x0E,0x17,
  0xFD,0x71,0xC0,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00
};
uint8  x[]=
{
/*------------------------------------------------------------------------------
;  源文件 / 文字: 超温!

;  宽×高(像素) : 14×36
------------------------------------------------------------------------------*/
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x23,0xE8,0xFC,0x00,0x00,0x21,
  0x24,0x84,0x30,0x00,0xF9,0x20,0xFC,0x78,
  0x00,0x22,0x68,0x84,0x78,0x00,0xF4,0x04,
  0xFC,0x78,0x00,0x23,0xE4,0x00,0x30,0x00,
  0xBA,0x25,0xFC,0x30,0x00,0xA2,0x29,0x54,
  0x00,0x00,0xA3,0xE9,0x54,0x30,0x00,0xE0,
  0x09,0x54,0x30,0x00,0x9F,0xEB,0xFE,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00
};

uint8    k[]=
{
/*------------------------------------------------------------------------------
;  源文件 / 文字:          

;  宽×高(像素) : 14×36
------------------------------------------------------------------------------*/
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  0x00,0x00,0x00,0x00,0x00,0x00
};

uint8  FONT5x7ASCII_1[][8] = {
/* 0 */
 {
   _XXX____,
   X___X___,
   X___X___,
   X___X___,
   X___X___,
   X___X___,
   _XXX____,
   ________}

/* 1 */
 ,{
   __X_____,
   _XX_____,
   __X_____,
   __X_____,
   __X_____,
   __X_____,
   _XXX____,
   ________}

/* 2 */
 ,{
   _XXX____,
   X___X___,
   ____X___,
   __XX____,
   _X______,
   X_______,
   XXXXX___,
   ________}

/* 3 */
 ,{
   _XXX____,
   X___X___,
   ____X___,
   __XX____,
   ____X___,
   X___X___,
   _XXX____,
   ________}

/* 4 */
 ,{
   ___X____,
   __XX____,
   _X_X____,
   X__X____,
   XXXXX___,
   ___X____,
   ___X____,
   ________}

/* 5 */
 ,{
   XXXXX___,
   X_______,
   XXXX____,
   ____X___,
   ____X___,
   X___X___,
   _XXX____,
   ________}

/* 6 */
 ,{
   __XX____,
   _X______,
   X_______,
   XXXX____,
   X___X___,
   X___X___,
   _XXX____,
   ________}

/* 7 */
 ,{
   XXXXX___,
   ____X___,
   ___X____,
   __X_____,
   _X______,
   _X______,
   _X______,
   ________}

/* 8 */
 ,{
   _XXX____,
   X___X___,
   X___X___,
   _XXX____,
   X___X___,
   X___X___,
   _XXX____,
   ________}

/* 9 */
 ,{
   _XXX____,
   X___X___,
   X___X___,
   _XXXX___,
   ____X___,
   ___X____,
   _XX_____,
   ________}

/* ':' 3a */
 ,{
   ________,
   XX______,
   XX______,
   ________,
   XX______,
   XX______,
   ________,
   ________}
   
};


/****************************************************************************
* 名称: main()
* 功能: 初始化uC/OS-II操作系统,建立第一个任务,然后启动系统。
****************************************************************************/
int main(void)
{
	OSInit ();																										
	OSTaskCreate (Task0,(void *)0, &Task0Stk[TaskStkLengh - 1], 2);		
	OSStart ();
	return 0;															
}
void  delay(uint32 n)
{  
   while(n--);
}

uint8  init(void)
{
  uint8  i;
  out;
  set;
  clr;
  delay(6000);
  set;
  in;
  delay(1200);
  
  if((sh&(1<<25))==0)
  {
   i=1;
   delay(6000);
  }
  else
   i=0;
  return(i);
    
}
uint32  readbit(void)
{
  uint32  dat;
  dat=0;
  out;
  set;
  clr;
  delay(56);
  set;
  delay(56);
  in;
  dat=sh&(1<<25);
  delay(600);
  return  dat;
}
  
void  writeBTS(uint8  dat)
{
  uint8  i;
  out;
  for(i=0;i<8;i++)
   {
      
     if (dat&0x01)
      { 
         set;             
         clr;
         delay(56);         
         set;   
         delay(400);
                  
      }
      else 
      {
         set;    
         clr;
         delay(800);
                 
      }
    dat = dat >> 1;
   }
   set;
  
}
uint32  readBTS(void)
{
   uint32  i,dat;
   uint32 j=0;
   dat=0;
   for(i=0;i<16;i++)
   {
      j=readbit();
      j=(j>>25)&0x01;
      dat=(j<<15)|(dat>>1);
   }
   out;
   set;
   return(dat);
}
 
uint8  readB(void)
{
   uint8  i,dat;
   uint32 j=0;
   dat=0;
   for(i=0;i<8;i++)
   {
      j=readbit();
      j=(j>>25)&0x01;
      dat=(j<<7)|(dat>>1);
   }
   out;
   set;
   return(dat);
}     
void  gettemp1(void)
{
    fp64    temp1,temp2; 
    char    s[20];  
    init();
    writeBTS(0xcc);
    writeBTS(0x44);
    OSTimeDlyHMSM(0,0,0,750);
    
    init();
    writeBTS(0x55);
    
    writeBTS(40);
    writeBTS(171);
    writeBTS(74);
    writeBTS(140);
    writeBTS(1);
    writeBTS(0);
    writeBTS(0);
    writeBTS(142);
   
    
    writeBTS(0xbe);                   
    temp1=readBTS();
    
    
    init();
    writeBTS(0x55);
    
   
    writeBTS(40);
    writeBTS(160);
    writeBTS(235);
    writeBTS(185);
    writeBTS(1);
    writeBTS(0);
    writeBTS(0);
    writeBTS(65);
    
    writeBTS(0xbe);                   
    temp2=readBTS();
    
  
    temp1=temp1*0.0625;
    if((temp1>=50)&&(temp1<=130)&&(temp1!=85))
      {
        IO0CLR=LED1|BEEP;GUI_LoadPic(92,18,(uint8*)x,36,14);
        OSTimeDlyHMSM(0,0,0,400);    
        IO0SET=LED1|BEEP;GUI_LoadPic(92,18,(uint8*)k,36,14);
      }                      
    sprintf(s,"%6.2f\n",temp1);
    if(temp1<130)
     GUI_PutString(54,23,s);
    else
     { 
        GUI_PutString(54,23,"      ");
        GUI_PutString(0,56,"!#1");IO0CLR=LED2|BEEP;
        OSTimeDlyHMSM(0,0,0,400);
        GUI_PutString(0,56,"   ");IO0SET=LED2|BEEP;
     }
    temp2=temp2*0.0625;
    if((temp2>=70)&&(temp2<=130)&&(temp2!=85))
     {
        IO0CLR=LED3|BEEP;GUI_LoadPic(92,32,(uint8*)x,36,14);
        OSTimeDlyHMSM(0,0,0,400);    
        IO0SET=LED3|BEEP;GUI_LoadPic(92,32,(uint8*)k,36,14);
     }                                            
    sprintf(s,"%6.2f\n",temp2);
    if(temp2<130)
     GUI_PutString(54,37,s);
    else
    {
       GUI_PutString(54,37,"      ");
       GUI_PutString(40,56,"!#2");IO0CLR=LED2|BEEP;
       OSTimeDlyHMSM(0,0,0,400);
       GUI_PutString(40,56,"   ");IO0SET=LED2|BEEP;
    }
    
    
            
}
void  readID(void) 
{
    uint8  i;
    uint8  b[8];
    char   s[20];
    init(); 
    writeBTS(0x33);
    for(i=0;i<8;i++)
      b[i]=readB();
    for(i=0;i<3;i++)
    {
      sprintf(s,"%d",b[i]);
      GUI_PutString(18*i,8,s); 
    }
    for(i=3;i<8;i++)
    {
      sprintf(s,"%d",b[i]);
      GUI_PutString(18*(i-3),16,s);
       
    }
} 
      
     
/*********************************************************************************************************
**                            Task0 任务0
** 功能:使用ZLG/GUI,在屏幕上同时显示多个"Hello ZLG/GUI!"字符串
********************************************************************************************************/
void Task0(void *pdata)
{  
    uint8  i;
	pdata = pdata;
	TargetInit ();
	PINSEL2=0x00000000;     
	GUI_Initialize();                           // 初始化LCM
    GUI_SetColor(1, 0);                         // 设置前景色和背景色
    
    GUI_LoadPic(16,0,(uint8*)biaoti,96,18);
    GUI_LoadPic(0,20,(uint8*)x1,55,13);
    GUI_LoadPic(0,34,(uint8*)x2,55,13);
  
    
    IO0DIR  = IO0DIR|LED1|LED2|LED3|BEEP;       // 设置IO0DIR|LED1|LED2|LED3|BEEP为输出口
    
    IO0SET  = LED1|LED2|LED3|BEEP;              // 初始化蜂鸣器不响,LED不亮
    
    OSTaskCreate (SJ,(void *)0, &SJStk[TaskStkLengh - 1], 4);	
	while (1)
	{ 
	   i=init();
	   if(i==1)
	    {
	      GUI_PutString(0,46,"             ");
	      gettemp1();
	      
	    }
	   if(i==0)
	   {
	      GUI_PutString(0,48,"erro:noqijian");IO0CLR=LED2|BEEP;
          OSTimeDlyHMSM(0,0,0,400);
          GUI_PutString(0,48,"             ");IO0SET=LED2|BEEP;
	   }  
	   
	   OSTimeDlyHMSM(0,0,0,50);
	}
}
void SJ(void *pdata) 
{
     
   uint32 times;
   uint8  bak,shuz[6]; 
   pdata = pdata;
   while(1)
   {
       times=CTIME0;
       bak=(times>>16)&0x1F;                              // 获取小时
       shuz[0]=bak/10;
       shuz[1]=bak%10;
       bak=(times>>8)&0x3F;                               // 获取分钟
       shuz[2]=bak/10;
       shuz[3]=bak%10;
       bak=times&0x3F;                                    // 获取秒
       shuz[4]=bak/10;
       shuz[5]=bak%10;
       
       GUI_LoadPic(80,54, *(FONT5x7ASCII_1+shuz[0]),5,8);             //显示小时
       GUI_LoadPic(86,54, *(FONT5x7ASCII_1+shuz[1]),5,8);             //显示小时
       GUI_LoadPic(92,54, *(FONT5x7ASCII_1+10),5,8);                  //显示冒号
       GUI_LoadPic(98,54, *(FONT5x7ASCII_1+shuz[2]),5,8);             //显示分钟  
       GUI_LoadPic(104,54,*(FONT5x7ASCII_1+shuz[3]),5,8);             //显示分钟 
       GUI_LoadPic(110,54,*(FONT5x7ASCII_1+10),5,8);                  //显示冒号
       GUI_LoadPic(116,54,*(FONT5x7ASCII_1+shuz[4]),5,8);             //显示秒
       GUI_LoadPic(122,54,*(FONT5x7ASCII_1+shuz[5]),5,8);             //显示秒 
       
       
        OSTimeDlyHMSM(0,0,0,100);
   }
}
	                 

⌨️ 快捷键说明

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