📄 func.c.bak
字号:
/*********************** (C) COPYRIGHT 2008 GETSOON************************
* File Name : func.c
* Author : Tsinming
* Date First Issued : 08/08/2008
* Description : function program body
***************************************************************************
* History:
* 09/18/2008: V1.0
* 08/08/2008: V0.1
**************************************************************************/
#include "ke2demo.h"
/* Constant defintion----------------------------------------------------*/
// ledchar8_tab: 0,1,2,3,4,5,6,7,8,9
const u8 ledchar8_tab[10] = {0x7E, 0x30, 0x6D, 0x79, 0x33, 0x5B, 0x5F, 0x70, 0x7F, 0x7B};
// lcdchar8_tab: 0,1,2,3,4,5,6,7,8,9
const u8 lcdchar8_tab[10] = {0xBE, 0x06, 0x7C, 0x5E, 0xC6, 0xDA, 0xFA, 0x0E, 0xFE, 0xDE};
/* Variable defintion----------------------------------------------------*/
sreg u8 LedLData, LcdData0, LcdData1, LcdData2, LcdData3, LcdData4,
LcdData5, LcdData6, LcdData7, LcdData8, LcdData9, LcdData10,
LcdData11, LcdData12;
sreg u16 ADSign;
u8 LedDisData[8], LcdNum[10], LcdDisData[13], CalYear, CalMonth, CalData, CalWeek,
TimeHour, TimeMin, TimeSenc, ConfPara, ConfMenu;
u32 LedNum;
bit lcd_point1, lcd_point2, lcd_point3, lcd_point4, lcd_data,
lcd_time, lcd_temp, lcd_key, lcd_comm, lcd_batt;
/* Functions defintion---------------------------------------------------*/
void eepwrite(void);
void eepread(void);
void ledlight(void);
void lcddisplay(void);
void lcdinit(void);
void lcddriver(void);
void leddisplay(void);
void ledinit(void);
void leddriver(void);
void ledsendbyte(u8 data_byte);
void datanum(void);
void timenum(void);
void datadrive(void);
void timedrive(void);
void tempdrive(void);
void config(void);
void RestrictArea(u8 *Para, u8 Min, u8 Max);
/* EEPROMDRIVE-----------------------------------------------------------*/
void eepwrite(void)
{
IICData[0] = CalYear;
IICData[1] = CalMonth;
IICData[2] = CalData;
IICData[3] = CalWeek;
IICData[4] = TimeHour;
IICData[5] = TimeMin;
IICData[6] = TimeSenc;
}
void eepread(void)
{
CalYear = IICData[0];
CalMonth = IICData[1];
CalData = IICData[2];
CalWeek = IICData[3];
TimeHour = IICData[4];
TimeMin = IICData[5];
TimeSenc = IICData[6];
}
/* ----------------------------------------------------------------------*/
void config(void)
{
lcd_point1 = 0;
lcd_point2 = 0;
lcd_point3 = 0;
lcd_point4 = 0;
LcdNum[1] = 0x0;
LcdNum[2] = 0x0;
LcdNum[3] = 0x0;
LcdNum[4] = 0x0;
LcdNum[5] = 0x0;
LcdNum[6] = 0x0;
LcdNum[7] = 0x0;
LcdNum[8] = lcdchar8_tab[((ConfPara / 10) % 10)];
LcdNum[9] = lcdchar8_tab[(ConfPara % 10)];
switch(ConfMenu)
{
case 0:
LcdNum[0] = 0x72;
LcdNum[1] = 0x72;
LcdNum[2] = lcdchar8_tab[1];
CalYear = ConfPara;
break;
case 1:
LcdNum[0] = 0x72;
LcdNum[1] = 0x72;
LcdNum[2] = lcdchar8_tab[2];
CalMonth = ConfPara;
break;
case 2:
LcdNum[0] = 0x72;
LcdNum[1] = 0x72;
LcdNum[2] = lcdchar8_tab[3];
CalData = ConfPara;
break;
case 3:
LcdNum[0] = 0x72;
LcdNum[1] = 0x72;
LcdNum[2] = lcdchar8_tab[4];
CalWeek = ConfPara;
break;
case 4:
LcdNum[0] = 0x72;
LcdNum[1] = 0x72;
LcdNum[2] = lcdchar8_tab[5];
TimeHour = ConfPara;
break;
case 5:
LcdNum[0] = 0x72;
LcdNum[1] = 0x72;
LcdNum[2] = lcdchar8_tab[6];
TimeMin = ConfPara;
break;
case 6:
LcdNum[0] = 0x72;
LcdNum[1] = 0x72;
LcdNum[2] = lcdchar8_tab[7];
TimeSenc = ConfPara;
break;
default:
break;
}
}
/* ----------------------------------------------------------------------*/
void datanum(void)
{
if(CalWeek >= 8)
{
CalWeek = 1;
}
if(CalYear >= 20)
{
CalYear = 0x0;
}
if(CalMonth >= 13)
{
CalYear++;
CalMonth = 1;
}
if(CalData >= 31)
{
CalMonth++;
CalData = 1;
}
}
void datadrive(void)
{
LcdNum[0] = lcdchar8_tab[CalWeek];
LcdNum[1] = 0x0;
LcdNum[2] = lcdchar8_tab[2];
LcdNum[3] = lcdchar8_tab[0];
LcdNum[4] = lcdchar8_tab[(CalYear / 10) % 10];
LcdNum[5] = lcdchar8_tab[CalYear % 10];
LcdNum[6] = lcdchar8_tab[((CalMonth / 10) % 10)];
LcdNum[7] = lcdchar8_tab[(CalMonth % 10)];
LcdNum[8] = lcdchar8_tab[((CalData / 10) % 10)];
LcdNum[9] = lcdchar8_tab[(CalData % 10)];
lcd_point1 = 0;
lcd_point2 = 0;
lcd_point3 = 0;
lcd_point4 = 0;
lcd_time = 0;
lcd_data = 1;
lcd_temp = 0;
}
/* ----------------------------------------------------------------------*/
void timenum(void)
{
if(TimeSenc >= 60)
{
TimeMin++;
TimeSenc = 0x0;
}
if(TimeMin >= 60)
{
TimeHour++;
TimeMin = 0x0;
}
if(TimeHour >= 24)
{
CalData++;
TimeSenc = 0x0;
TimeMin = 0x0;
TimeHour = 0x0;
}
}
void timedrive(void)
{
LcdNum[0] = lcdchar8_tab[CalWeek];
LcdNum[1] = 0x0;
LcdNum[2] = 0x0;
LcdNum[3] = 0x0;
LcdNum[4] = lcdchar8_tab[((TimeHour / 10) % 10)];
LcdNum[5] = lcdchar8_tab[(TimeHour % 10)];
LcdNum[6] = lcdchar8_tab[((TimeMin / 10) % 10)];
LcdNum[7] = lcdchar8_tab[(TimeMin % 10)];
LcdNum[8] = lcdchar8_tab[((TimeSenc / 10) % 10)];
LcdNum[9] = lcdchar8_tab[(TimeSenc % 10)];
lcd_point1 = 1;
lcd_point2 = 1;
lcd_point3 = 1;
lcd_point4 = 1;
lcd_time = 1;
}
/* ----------------------------------------------------------------------*/
void tempdrive(void)
{
LcdNum[0] = 0x0;
LcdNum[1] = 0x0;
LcdNum[2] = 0x0;
LcdNum[3] = 0x0;
LcdNum[4] = 0x0;
LcdNum[5] = 0x0;
LcdNum[6] = lcdchar8_tab[(LedNum / 10) % 10];
LcdNum[7] = lcdchar8_tab[LedNum % 10];
LcdNum[8] = lcdchar8_tab[(TempData.7 * 5)];
LcdNum[9] = 0x0;
lcd_point1 = 0;
lcd_point2 = 0;
lcd_point3 = 0;
lcd_point4 = 1;
lcd_temp = 1;
}
/* ----------------------------------------------------------------------*/
void RestrictArea(u8 *Para, u8 Min, u8 Max)
{
if(*Para < Min)
*Para = Max;
else if(*Para > Max)
*Para = Min;
}
/* LEDDISPLAY------------------------------------------------------------*/
void leddisplay(void)
{
LedNum = (TempData >> 8); //ADValue;
LedDisData[0] = 0x46; //T
LedDisData[1] = 0x4F; //E
LedDisData[2] = 0x67; //P
LedDisData[3] = 0x0;
LedDisData[4] = ledchar8_tab[(LedNum / 10) % 10];
LedDisData[5] = ledchar8_tab[LedNum % 10];
LedDisData[6] = 0x80;
LedDisData[7] = ledchar8_tab[(TempData.7 * 5)];
}
void ledinit(void)
{
LED_LOAD = 0;
ledsendbyte(0x0C); //shutdown control
ledsendbyte(0x01);
LED_LOAD = 1;
delaynop();
LED_LOAD = 0;
ledsendbyte(0x0B); //scanned limit(8)
ledsendbyte(0x07);
LED_LOAD = 1;
delaynop();
LED_LOAD = 0;
ledsendbyte(0x09); //decode enable
ledsendbyte(0x00);
LED_LOAD = 1;
delaynop();
LED_LOAD = 0;
ledsendbyte(0x0A); //intensity control
ledsendbyte(0x0F);
LED_LOAD = 1;
}
void leddriver(void)
{
register u8 i;
for(i = 0; i < 8; i++)
{
LED_LOAD = 0;
ledsendbyte(i + 1);
ledsendbyte(LedDisData[i]);
LED_LOAD = 1;
}
}
void ledsendbyte(u8 data_byte)
{
register u8 i;
for(i = 0; i < 8; i++)
{
LED_CLK = 0;
if((data_byte << i) & 0x80)
{LED_DIN = 1;}
else
{LED_DIN = 0;}
LED_CLK = 1;
}
}
/* LEDLIGHT--------------------------------------------------------------*/
void ledlight(void)
{
u8 i;
LedLData = 0xFF;
i = (ADValue >> 5);
for(; i > 0; i--)
{LedLData &= (0xFE << i);}
if((ADValue >> 4) == 1)
{LedLData = 0xFE;}
P2.3 = LedLData.7;
P2.2 = LedLData.6;
P2.1 = LedLData.5; //P2.5 in KE2 v1.0
P2.0 = LedLData.4; //P2.4 in KE2 v1.0
P4.3 = LedLData.3;
P4.2 = LedLData.2;
P4.1 = LedLData.1;
P4.0 = LedLData.0;
}
/* LCD-------------------------------------------------------------------*/
void lcddisplay(void)
{
LcdData0 = LcdNum[0];
LcdData1 = LcdNum[1];
LcdData2 = LcdNum[2];
LcdData3 = LcdNum[3];
LcdData4 = LcdNum[4];
LcdData5 = LcdNum[5];
LcdData6 = (LcdNum[6] >> 4);
LcdData7 = (LcdNum[6] << 4);
LcdData8 = (LcdNum[7] >> 4);
LcdData9 = (LcdNum[7] << 4);
LcdData10 = LcdNum[8];
LcdData11 = LcdNum[9];
LcdData6.6 = lcd_point1;
LcdData6.5 = lcd_point2;
LcdData9.2 = lcd_point3;
LcdData9.1 = lcd_point4;
LcdData12.0 = lcd_key;
LcdData12.1 = lcd_comm;
LcdData12.2 = lcd_batt;
LcdData12.5 = lcd_data;
LcdData12.6 = lcd_time;
LcdData12.7 = lcd_temp;
LcdData7.3 = ADSign.0;
LcdData7.2 = ADSign.1;
LcdData7.1 = ADSign.2;
LcdData8.5 = ADSign.3;
LcdData8.6 = ADSign.4;
LcdData8.7 = ADSign.5;
LcdData0.0 = ADSign.6;
LcdData1.0 = ADSign.7;
LcdData2.0 = ADSign.8;
LcdData3.0 = ADSign.9;
LcdData4.0 = ADSign.10;
LcdData5.0 = ADSign.11;
LcdData6.4 = ADSign.12;
LcdData7.4 = ADSign.13;
LcdData9.4 = ADSign.14;
LcdData9.0 = ADSign.15;
LcdData12.3 = 1;
LcdData12.4 = 1;
LcdData11.0 = 1;
LcdData10.0 = 1;
LcdDisData[0] = LcdData0;
LcdDisData[1] = LcdData1;
LcdDisData[2] = LcdData2;
LcdDisData[3] = LcdData3;
LcdDisData[4] = LcdData4;
LcdDisData[5] = LcdData5;
LcdDisData[6] = LcdData6;
LcdDisData[7] = LcdData7;
LcdDisData[8] = LcdData8;
LcdDisData[9] = LcdData9;
LcdDisData[10] = LcdData10;
LcdDisData[11] = LcdData11;
LcdDisData[12] = LcdData12;
}
void lcdinit(void)
{
iic_start();
iic_sendbyte(0x7C); //slave address
iic_sendbyte(0xEA); //software reset ICSET
iic_sendbyte(0xBF); //display ctrl DISCTL
iic_sendbyte(0xc8); //display on
iic_stop();
}
void lcddriver(void)
{
u8 i;
iic_start();
iic_sendbyte(0x7C); //slave address
iic_sendbyte(0x00);
for(i = 0; i < 13; i++)
{
iic_sendbyte(LcdDisData[i]);
}
iic_stop();
}
/********************** (C) COPYRIGHT 2008 GETSOON************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -