📄 main.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 + -