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

📄 main.c

📁 STM8-触摸例程
💻 C
字号:
/* MAIN.C file
 * ,摘要:1.6'TFT上显示字符及汉字。IO模拟实现。
    TFT初始化过程中,蜂鸣器叫,LCD显示完后,按一次键,指示灯反转一次,同时蜂鸣器叫一声,另外,电位器AD采集的代码会实时显示出来。触摸键,按下不同的触摸键,对应的指示灯反转一次 共计10个按键
    定时器1 300ms更新中断,并启动AD,AD采集完后,产生AD中断,并软件置标志,同时主程序根据标志显示数据,
		并重新使能AD中断。同时将AD采集的代码值发给串口
   Author: Cache.Lee  from UET
	 Date: 2009-08-25
	 http://www.shop35591312.taobao.com
 * Copyright (c) UET
 */
 
 
#include "stm8s_lib.h"
#include "functions.h" 
#include "ssd1283a_16tft.h"
#include "chinese.h"
#include "stm8_tsl_rc_api.h"

unsigned int ConverValue=0;
bool Flag_ad=0;

void ExtraCode_Init(void);
void Key_Process(void);

void USART_SEND_char(unsigned char x );

main()
{
	unsigned int i;
	unsigned char x=0,temp;
	
	Init_Clock();
	Init_GPIO();	
	
	UART1_DeInit();
	UART1_Init(9600,UART1_WORDLENGTH_8D,UART1_STOPBITS_1,UART1_PARITY_NO,UART1_SYNCMODE_CLOCK_DISABLE,UART1_MODE_TXRX_ENABLE);
	USART_SEND_char(0xbb);
	
	tft_16lcd_init();

	LCD_SetBackColor(Yellow);    
  LCD_Clear();

	LCD_SetTextColor(White);
	LCD_SetBackColor(Black);

	
	LCD_SetTextColor(Red);
	LCD_SetBackColor(Green);
	LCD_WriteBMP(35,40,60,60,bmp);
	LCD_SetTextColor(White);
	LCD_SetBackColor(Black);
  LCD_ShowString(25,100,"u-easytech");//显示图象
	GPIO_WriteReverse(GPIOF, GPIO_PIN_0);	
	
	LCD_SetTextColor(White);
	LCD_SetBackColor(Red);
  LCD_ShowString(25,15,"15_AD:");
	
	  /*  Init GPIO for ADC1 */
	  GPIO_Init(GPIOF, GPIO_PIN_7, GPIO_MODE_IN_FL_NO_IT);
	  ADC1_DeInit();
    ADC1_ConversionConfig(ADC1_CONVERSIONMODE_SINGLE, ADC1_CHANNEL_15, ADC1_ALIGN_RIGHT);
    ADC1_ITConfig(ADC1_IT_EOCIE, ENABLE);
		ADC1_Cmd(ENABLE);
    
		ADC1_StartConversion();
    
		TIM1_DeInit();
		TIM1_TimeBaseInit(15999,TIM1_COUNTERMODE_UP,1000,0);//300ms定时器
		//内部晶振,不分频,15999
		//外部晶振8M,不分频,7999
		TIM1_ITConfig(TIM1_IT_UPDATE,ENABLE);
		TIM1_Cmd(ENABLE);
  	enableInterrupts();		
		
		TSL_Init();
		ExtraCode_Init();
	
	while (1)
   {
		if(GPIO_ReadInputPin(GPIOG, GPIO_PIN_2)==0x04)
		x=0;
		else if(x==0)
	  {
			x=1; 
			GPIO_WriteReverse(GPIOF, GPIO_PIN_0);
			for(i=0;i<40000;i++);
			GPIO_WriteReverse(GPIOF, GPIO_PIN_0);
			GPIO_WriteReverse(GPIOE, GPIO_PIN_1);
			GPIO_WriteReverse(GPIOG, GPIO_PIN_4);
		}
		
	  if(Flag_ad==1)
		{
			Flag_ad=0;
			
			USART_SEND_char(0x20); //空格
						
			temp=ConverValue/1000+0x30;
			LCD_ShowChar(70,15,temp);
			USART_SEND_char(temp);
			
			temp=ConverValue%1000/100+0x30;
			LCD_ShowChar(80,15,temp);
			USART_SEND_char(temp);
			
			temp=ConverValue%100/10+0x30;
			LCD_ShowChar(90,15,temp);
			USART_SEND_char(temp);
			
			temp=ConverValue%10+0x30;
			LCD_ShowChar(100,15,temp);
			USART_SEND_char(temp);
		}	

		TSL_Action();
		Key_Process();
	 }	 
}

/******************************************************************************
  * @brief Initialize all the keys, I/Os for LED
  * @par Parameters:
  * None
  * @retval void None
  * @par Required preconditions:
  * None
  ******************************************************************************
  */
void ExtraCode_Init(void)
{

  u8 i;

  /* All keys are implemented and enabled */

  for (i = 0; i < NUMBER_OF_SINGLE_CHANNEL_KEYS; i++)
  {
    sSCKeyInfo[i].Setting.b.IMPLEMENTED = 1;
    sSCKeyInfo[i].Setting.b.ENABLED = 1;
    sSCKeyInfo[i].DESGroup = 0x01; /* Put 0x00 to disable the DES on these pins */
  }

#if NUMBER_OF_MULTI_CHANNEL_KEYS > 0
  for (i = 0; i < NUMBER_OF_MULTI_CHANNEL_KEYS; i++)
  {
    sMCKeyInfo[i].Setting.b.IMPLEMENTED = 1;
    sMCKeyInfo[i].Setting.b.ENABLED = 1;
    sMCKeyInfo[i].DESGroup = 0x01; /* Put 0x00 to disable the DES on these pins */
  }
#endif
  
  enableInterrupts();
}


void Key_Process(void)	{

	if ((TSL_GlobalSetting.b.CHANGED) && (TSLState == TSL_IDLE_STATE))
  {   
		if (sSCKeyInfo[0].Setting.b.DETECTED)  
    {
      GPIO_WriteReverse(GPIOG, GPIO_PIN_7);			
    }   
		
		if(sSCKeyInfo[1].Setting.b.DETECTED)
		{
			GPIO_WriteReverse(GPIOE,GPIO_PIN_2);		
		}
		
		if(sSCKeyInfo[2].Setting.b.DETECTED)
		{
			GPIO_WriteReverse(GPIOE, GPIO_PIN_3);			
		}
		
		if(sSCKeyInfo[3].Setting.b.DETECTED)
		{
			GPIO_WriteReverse(GPIOE, GPIO_PIN_4);			
		}
		
		if(sSCKeyInfo[4].Setting.b.DETECTED)
		{
			GPIO_WriteReverse(GPIOG, GPIO_PIN_6);		
		}
		
		if(sSCKeyInfo[5].Setting.b.DETECTED)
		{
			GPIO_WriteReverse(GPIOE, GPIO_PIN_0);		
		}
		
		if(sSCKeyInfo[6].Setting.b.DETECTED)
		{
			GPIO_WriteReverse(GPIOE, GPIO_PIN_1);		
		}
		
		if(sSCKeyInfo[7].Setting.b.DETECTED)
		{
			GPIO_WriteReverse(GPIOG, GPIO_PIN_5);		
		}
		
		if(sSCKeyInfo[8].Setting.b.DETECTED)
		{
			GPIO_WriteReverse(GPIOG, GPIO_PIN_4);	
		}
		
		if(sSCKeyInfo[9].Setting.b.DETECTED)
		{
			GPIO_WriteReverse(GPIOG, GPIO_PIN_3);		
		}
				
   TSL_GlobalSetting.b.CHANGED = 0;
  }
}

void USART_SEND_char(unsigned char x )
{
    UART1_SendData8(x);
		while(UART1_GetITStatus(UART1_FLAG_TC)==SET);
		UART1_ClearITPendingBit(UART1_FLAG_TC);		
}

⌨️ 快捷键说明

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