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

📄 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:			Chenxibing
** Modified date:		2005-01-14
** Version:
** Descriptions:		GPIO按键输入实验。
**
********************************************************************************************************/
#include "config.h"

  
  uint32  key; 
 
int key_value(void)  
{ 
 uint32 temp;  
 uint32 i,j;
  
   
  PINSEL0 = PINSEL0 & (~0xff);                                  // 将P0.0~P0.7设置为按键控制输入端
  //PINSEL1 = 0x00000000;
  IO0DIR = 0x0f<<4;                                             // 将P0.4~P0.7设置为输出;P0.0~P0.3默认输入

  
  IO0SET=0x0f<<4;                                               // 使P0.4~P0.7输出高电平
  IO0CLR=1<<4;                                                  // 使P0.4输出低电平
 
  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<<4;                                               // 同上
  IO0CLR=1<<5;
 
   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<<4;                                                // 同上                                              
  IO0CLR=1<<6;

  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<<4;                                               // 同上
  IO0CLR=1<<7;
  
  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++);
} 

/*
*********************************************************************************************************
** 函数名称 :main()
** 函数功能 :GPIO输入实验测试。
** 			  检测按键KEY1。KEY1按下 ,蜂鸣器蜂鸣,松开后停止蜂鸣。
** 跳线说明 :把JP8的KEY1跳线短接,JP11连接蜂鸣器。
*********************************************************************************************************
*/
const uint32 KEY_TABLE[16] = {0x00,0x01,0x02,0x03,              //LED灯键值
                            0x04,0x05,0x06,0x07,
                            0x08,0x09,0x0a,0x0b,
                            0x0c,0x0d,0x0e,0x0f};
 const uint32 LEDS8 = (0xff << 18);	                            // P1[25:18]控制LED8~LED1
 
                            
int main(void)
 {  
	PINSEL2 = PINSEL2 & (~0x08);                                // P1[25:16]连接GPIO
	IO1DIR  = LEDS8;			                                // 设置LED1控制口为输出

    
  while(1)                                                      // 按键控制主函数,使用查询方式
  {  IO1SET = LEDS8;   
   key_value();
   IO1CLR = ((KEY_TABLE[key])<<18);
   DelayNS(20);
 } 
  return 0;
 }
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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