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

📄 main.c

📁 基于ARM的温度显示程序
💻 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	TaskStkLengh	64			//Define the Task0 stack length 定义用户任务0的堆栈长度 
OS_STK	TaskStk[TaskStkLengh];		//Define the Task0 stack 定义用户任务0的堆栈
void 	Task0(void *pdata);			//Task0 任务0


/*******************************************************************************************************/
#include "config.h"

  
  uint32  key;
   const uint32 LEDS8 = (0xff << 18);	                            // P1[25:18]控制LED8~LED1  
 
int key_value(void)  
{ 
 uint32 temp;  
 uint32 i,j;
 
   
  PINSEL0 = PINSEL0 & (~0x00ff);                                // 将P0.0~P0.3设置为按键控制输入端
  PINSEL1 = PINSEL1 & (~0xff00);                                //
  PINSEL2 = PINSEL2 & (~0x08);                                  // P1[25:16]连接GPIO
  IO1DIR  = LEDS8;			                                    // 设置LED1控制口为输出
  IO0DIR = 0x0f<<20;                                            // 将P0.20~P0.23设置为输出;P0.0~P0.3默认输入

  
  IO0SET=0x0f<<20;                                              // 使P0.20~P0.23输出高电平
  IO0CLR=1<<20;                                                 // 使P0.20输出低电平
 
  temp=IO0PIN & 0x0f;                                           // 获取P0.0~P0.3端口上的值    
  if (temp!=0x0f)  
    {  
      for(i=50;i>0;i--)  
      for(j=200;j>0;j--);                                       // 延时去抖
        
      temp=temp & 0x0f;  
      if (temp!=0x0f)  
        {    
          temp=temp & 0x0f;               
          switch(temp)                                          // 判断哪个按键按下
            {  
              case 0x0e:  
                key=0;  
                break;  
              case 0x0d:  
                key=4;  
                break;  
              case 0x0b:  
                key=8;  
                break;  
              case 0x07:  
                key=12;  
                break;  
              default:
                break;           
            }                     

        }  
    } 


 
 
  IO0SET=0x0f<<20;                                               // 同上
  IO0CLR=1<<21;
 
   temp=IO0PIN & 0x0f;   
   if (temp!=0x0f)  
     {  
      for(i=50;i>0;i--)  
      for(j=200;j>0;j--);  
        
       temp=temp & 0x0f;  
       if (temp!=0x0f)  
         {    
           temp=temp & 0x0f;         
           switch(temp)  
             {  
               case 0x0e:  
                 key=1;  
                 break;  
               case 0x0d:  
                 key=5;  
                 break;  
               case 0x0b:  
                 key=9;  
                 break;  
               case 0x07:  
                 key=13;  
                 break;  
               default:
               break; 
             }  

         }  
     }  
 
 
  IO0SET=0x0f<<20;                                                // 同上                                              
  IO0CLR=1<<22;

  temp=IO0PIN & 0x0f;    
  if (temp!=0x0f)  
    {  
      for(i=50;i>0;i--)  
      for(j=200;j>0;j--);  
      
      temp=temp & 0x0f;  
      if (temp!=0x0f)  
        {    
          temp=temp & 0x0f;             
          switch(temp)  
            {  
              case 0x0e:  
                key=2;  
                break;  
              case 0x0d:  
                key=6;  
                break;  
              case 0x0b:  
                key=10;  
                break;  
              case 0x07:  
                key=14;  
                break;  
              default:
              break;        
            }  
        }  
    }  


  IO0SET=0x0f<<20;                                               // 同上
  IO0CLR=1<<23;
  
  temp=IO0PIN & 0x0f;    
      if (temp!=0x0f)  
        {  
         for(i=50;i>0;i--)  
         for(j=200;j>0;j--);  
           
          temp=temp & 0x0f;  
          if (temp!=0x0f)  
            {    
              temp=temp & 0x0f;        
              switch(temp)  
                {  
                  case 0x0e:  
                    key=3;  
                    break;  
                  case 0x0d:  
                    key=7;  
                    break;  
                  case 0x0b:  
                    key=11;  
                    break;  
                  case 0x07:  
                    key=15;  
                    break;  
                  default:
                  break;
                }  

            }  
        } 
      
  return key;                                                   // 返回键值
}



void DelayNS (uint32 dly)                                       // 延时程序
{
	uint32 i;
	
	for ( ; dly>0; dly--)
		for (i=0; i<50000; i++);
} 

/*********************************************************************************************************/
const uint32 KEY_TABLE[16] = {0x00,0x01,0x02,0x03,              //LED灯键值
                            0x04,0x05,0x06,0x07,
                            0x08,0x09,0x0a,0x0b,
                            0x0c,0x0d,0x0e,0x0f};
/****************************************************************************
* 名称: main()
* 功能: 初始化uC/OS-II操作系统,建立第一个任务,然后启动系统。
****************************************************************************/
int main(void)
{
	OSInit ();																										
	OSTaskCreate (Task0,(void *)0, &TaskStk[TaskStkLengh - 1], 2);		
	OSStart ();
	return 0;															
}

/*******************************************************************************************************
**                            Task0 任务0
** 功能:使用ZLG/GUI,在屏幕上同时显示多个"Hello ZLG/GUI!"字符串
********************************************************************************************************/

void Task0(void *pdata)
{   uint8  j;
  

	pdata = pdata;
	TargetInit ();
	
	GUI_Initialize();                           // 初始化LCM
    GUI_SetColor(1, 0);                         // 设置前景色和背景色
    
    
	while (1)
	{ 
	  for(j=0; j<9; j++)
	  {
	    IO1SET = LEDS8;   
        key_value();
        IO1CLR = ((KEY_TABLE[key])<<18);
        
	    

        
		OSTimeDlyHMSM(0, 0, 1, 0);              // 延时1秒
	  }
	  GUI_ClearSCR();                           // 清屏
	  
	   
        switch(key)
          {
            case 0:
               GUI_PutString(30,0, "this key is 0");      // 指定位置显示字符串
            case 1:
               GUI_PutString(30,8, "this key is 1");      // 指定位置显示字符串
            case 2:
               GUI_PutString(30,16, "this key is 2");      // 指定位置显示字符串
            case 3:
               GUI_PutString(30,24, "this key is 3");      // 指定位置显示字符串
            case 4:
               GUI_PutString(30,32, "this key is 4");;      // 指定位置显示字符串
            case 5:
               GUI_PutString(30,40, "this key is 5");
            case 6:
               GUI_PutString(30,18, "this key is 6");
            case 7:
               GUI_PutString(30,56, "this key is 7");
            case 8:
               GUI_PutString(30,0, "this key is 8");
            case 9:
               GUI_PutString(30,8, "this key is 9");
            case 10:
               GUI_PutString(30,16, "this key is 10");
            case 11:
               GUI_PutString(30,24, "this key is 11");
            case 12:
               GUI_PutString(30,32, "this key is 12");
            case 13:
               GUI_PutString(30,40, "this key is 13");
            case 14:
               GUI_PutString(30,48, "this key is 14");
            case 15:
               GUI_PutString(30,56, "this key is 15");
     
          }
      
	}
}
   
/********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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