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

📄 main.c

📁 基于LPC2134的在ucos2操作系统下的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/****************************************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"


uint8 num[10][8]={    //0~9十个数字,字体点阵为5X8

{
  0x70,0x88,0x88,0x88,0x88,0x88,0x88,0x70
},

{
  0x20,0xE0,0x20,0x20,0x20,0x20,0x20,0xF8
},


{
  0x70,0x88,0x08,0x10,0x20,0x40,0x80,0xF8
},


{
  0x70,0x88,0x08,0x30,0x08,0x08,0x88,0x70
},

{
  0x08,0x18,0x28,0x48,0x88,0xFC,0x08,0x08 
},

{
  0xF8,0x80,0x80,0xF0,0x08,0x08,0x88,0x70
},

{

  0x30,0x40,0x80,0xF0,0x88,0x88,0x88,0x70
},

{

  0xF8,0x08,0x10,0x10,0x20,0x20,0x40,0x40
},

{

  0x70,0x88,0x88,0x70,0x88,0x88,0x88,0x70
},

{
  0x70,0x88,0x88,0x88,0x78,0x08,0x10,0x60
}};

uint8 hanzi[4][42]={    //0~9十个数字,字体点阵为5X8

{

/*------------------------------------------------------------------------------
;  源文件 / 文字: 周期

;  宽×高(像素) : 14×24
------------------------------------------------------------------------------*/
  0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xE4,
  0x9E,0x24,0x2F,0xD2,0x2F,0x24,0x92,0x24,
  0x27,0x9E,0x3F,0xA4,0x92,0x20,0x27,0x92,
  0x2F,0x24,0x9E,0x29,0x2F,0xD2,0x4F,0x22,
  0x92,0x40,0x24,0x52,0x80,0xE8,0x26,0x00,
  0x00,0x00
},

{

/*------------------------------------------------------------------------------
;  源文件 / 文字: 点数

;  宽×高(像素) : 14×24
------------------------------------------------------------------------------*/
  0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x09,
  0x50,0x07,0xC5,0x90,0x04,0x0F,0xDE,0x04,
  0x03,0x24,0x3F,0x85,0xA4,0x20,0x89,0x54,
  0x20,0x82,0x14,0x3F,0x8F,0xC8,0x00,0x04,
  0x88,0x49,0x43,0x94,0xC9,0x2C,0x62,0x00,
  0x00,0x00
},

{

/*------------------------------------------------------------------------------
;  源文件 / 文字: 清屏

;  宽×高(像素) : 14×24
------------------------------------------------------------------------------*/
  0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x07,
  0xFC,0x5F,0xE4,0x04,0x02,0x07,0xFC,0x8F,
  0xC5,0x08,0x42,0x04,0x90,0x3F,0xE5,0xFC,
  0x48,0x44,0x90,0x4F,0xC7,0xFE,0xC8,0x44,
  0x90,0x4F,0xC9,0x10,0x48,0x4A,0x10,0x00,
  0x00,0x00
},

{
/*------------------------------------------------------------------------------
;  源文件 / 文字: 启动

;  宽×高(像素) : 14×24
------------------------------------------------------------------------------*/
  0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,
  0x10,0x3F,0xCF,0x90,0x20,0x40,0x10,0x20,
  0x40,0x3E,0x3F,0xCF,0xD2,0x20,0x02,0x12,
  0x3F,0xC5,0x12,0x30,0x48,0x92,0x50,0x4F,
  0xA2,0x50,0x48,0x44,0x9F,0xC0,0x9C,0x00,
  0x00,0x00
}};

uint8   Dispnum[4];
uint8   Dispnum1[4];
uint32   samp1[100];

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

#define   BEEP         1<<25


#define    IO_KEY1    (1<<16)
#define    IO_KEY2    (1<<17)
#define    IO_KEY3    (1<<18)
#define    IO_KEY4    (1<<19)
#define    IO_KEYALL  (IO_KEY1|IO_KEY2|IO_KEY3|IO_KEY4)


#define	TaskStkLengh	512      // 定义用户任务0的堆栈长度

OS_STK	TaskKeyStk[TaskStkLengh];		// 定义用户任务0的堆栈
OS_STK	TaskDispStk[TaskStkLengh];		// 定义用户任务0的堆栈
OS_STK	TaskDelaySampStk[TaskStkLengh];	// 定义用户任务0的堆栈
OS_STK	TaskIntSampStk[TaskStkLengh];	// 定义用户任务0的堆栈

void 	TaskDisp(void *pdata);			// Task0 任务0
void 	TaskKey(void *pdata);			// Task0 任务0
void 	TaskDelaySamp(void *pdata);		// Task0 任务0
void 	TaskIntSamp(void *pdata);		// Task0 任务0

OS_EVENT  *sem;
OS_EVENT  *MyMbox;
OS_EVENT  *ReMsgQeue;
void      *MsgQeueTb[100];


/****************************************************************************
* 名称: main()
* 功能: 初始化uC/OS-II操作系统,建立第一个任务,然后启动系统。
****************************************************************************/
int main(void)
{
	OSInit ();	
	GUI_Initialize();                                     // 初始化LCD
    GUI_SetColor(1, 0);
    //GUI_PutString(0,0, "Hello ZLG/GUI!");                               // 设置前景色和背景色																									
	OSTaskCreate (TaskKey,(void *)0, &TaskKeyStk[TaskStkLengh - 1], 8);	//创建按键任务	
	OSStart ();
	return 0;															
}


uint8 keyin	(void)
{
     uint32  i;
     uint32  io_dat;
     uint8   key;
     if((IO1PIN&IO_KEYALL)!=IO_KEYALL)
      {
        OSTimeDly(2);
        io_dat=IO1PIN;
        if((io_dat&IO_KEYALL)!=IO_KEYALL)
        { 
         if((io_dat&IO_KEY1)==0) key=1;
         if((io_dat&IO_KEY2)==0) key=2;
         if((io_dat&IO_KEY3)==0) key=3; 
         if((io_dat&IO_KEY4)==0) key=4;
         for(i=0;i<1000000000;i++)
         {
           if((IO1PIN&IO_KEYALL)==IO_KEYALL)
            {
              OSTimeDlyHMSM(0,0,0,20); 
              if((IO1PIN&IO_KEYALL)==IO_KEYALL)
              break;
            }
         }
         return(key);
        }
      }
      return(5);
}


/*********************************************************************************************************
**                            TaskKey 任务Key 	优先级为2
********************************************************************************************************/
void TaskKey	(void *pdata)
{   
    uint8  key,jishu=0,i,weizhi=0,flag=0,dangqian=0,jishu1=0;
    uint8  arr[4],err;	
    uint16 cond[2],zhouqi,dianshu;
	pdata = pdata;
	TargetInit ();
	
    PINSEL2 = 0x00000000;                       //设置四个按键的口线为输入状态p1.16~p1.19
    IO1DIR  = 0x00000000;
    
    PINSEL1 = 1<<28 ;                           //设置P0.30连接到AD0.3同时将其它的口设为GPIO口
   
    IO0DIR  = IO0DIR|LED1|LED2|LED3|BEEP;      //设置IO0DIR|LED1|LED2|LED3|BEEP为输出口
    
    IO0SET  = LED1|LED2|LED3|BEEP;              //初始化蜂鸣器不响,LED不亮
    /* 进行ADC模块设置 */                      
    ADCR = 
	        (1 << 3)                        |   // 选择通道0
	        ((Fpclk / 1000000 - 1) << 8)	|	// CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
			(0 << 16)						|	// BURST=0,软件控制转换操作
			(0 << 17)						|	// CLKS=0, 使用11clock转换
			(1 << 21)						|  	// PDN=1,正常工作模式
			(0 << 22)						|  	// TEST1:0=00,正常工作模式
			(1 << 24)                       |
			(0 << 27);						 	// 直接启动ADC转换时,此位无效
	OSTimeDly(10);
	OSTaskCreate (TaskDisp,(void *)0, &TaskDispStk[TaskStkLengh - 1], 10);	//创建显示任务	
    ReMsgQeue=OSQCreate(&MsgQeueTb[0],100);                // 创建消息队列最多可以存放20条消息
    sem=OSMutexCreate(4,&err);
	
	while (1)
	{  
	    key=keyin();
	    switch(dangqian+1)
	      {
	       case  1:
	               
	                switch(key) 
	                {
	                   case   1:
	                          
	                          arr[0]=1;
	                          jishu++;if(jishu==10)jishu=0;          //显示的数字
	                          arr[1]=jishu;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                   break;
	                   case   2:
	                
	                          arr[0]=2;
                              OSQPost(ReMsgQeue,(void*)arr);
	                   break;
	                   case   3:
	               
	                         arr[0]=3;
	                         flag=!flag;
	                         arr[1]=flag; 
	                         OSQPost(ReMsgQeue,(void*)arr);
	                   break;
	                   case   4:
	                          arr[0]=4;
	                          dangqian++;
	                          if(dangqian==4)dangqian=0;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                   break;
	                   default:
                       break;
                  }
                break;
                
          case   2:
                 switch(key) 
                 
	              {
	                   case   1:
	               
	                          arr[0]=5;
	                          jishu1++;if(jishu1==10)jishu1=0;         
	                          arr[1]=jishu1;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                   break;
	                   case   2:
	                
	                          arr[0]=6;
                              OSQPost(ReMsgQeue,(void*)arr);
	                   break;
	                   case   3:
	               
	                         arr[0]=7;
	                         flag=!flag;
	                         arr[1]=flag; 
	                         OSQPost(ReMsgQeue,(void*)arr);
	                   break;
	        
	                   case   4:
	                          arr[0]=4;
	                          dangqian++;
	                          if(dangqian==4)dangqian=0;
	                          OSQPost(ReMsgQeue,(void*)arr);
	                   break;
	                   default:
                       break;
                  }
                 
                break;
          case   3:
                  if(key==3)

⌨️ 快捷键说明

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