📄 function.h
字号:
#ifndef _function_h
#define _functon_h
#include<stdio.h>
#include<string.h>
#include<reg52.h>
#include<stdlib.h>
#include<absacc.h>
#include<intrins.h>
#include"mobileph.h"
#include"fontLib.h"
#include"system.h"
/**************************************************************
** 函数名称:delayS
** 函数功能:延时以秒为单位
** 输入参数:second
** 返回参数:无
** 调用模块:无
** 全局变量:无
** 备注: 无
****************************************************************/
void delayS(UINT8 second)
{
UINT8 i,j,k;
for(i=second;i>0;i--)
for(j=200;j>0;j--) //100ms
for(k=248;k>0;k--); //0.5ms
}
/**************************************************************
** 函数名称:delayMs
** 函数功能:延时以ms为单位
** 输入参数:second
** 返回参数:无
** 调用模块:无
** 全局变量:无
** 备注: 无
****************************************************************/
void delayMs(UINT8 second)reentrant
{
UINT8 i, k;
for(i=second; i>0; i--)
for(k=248; k>0; k--); //0.5ms
}
/**************************************************************
** 函数名称:delayUs
** 函数功能:延时以us为单位
** 输入参数:second
** 返回参数:无
** 调用模块:无
** 全局变量:无
** 备注: 无
**************************************************************/
void delayUs(UINT8 second)
{
UINT8 i;
for(i=second; i>0; i--);
}
/**************************************************************
** 函数名称:initCpu
** 函数功能:初始化CPU以及uart turn on MC388
** 输入参数:无
** 返回参数:无
** 调用模块:无
** 全局变量:ignitMC
** 备注: 无
****************************************************************/
void initCpu(void)
{
IE = 0x92; //eable interrupt 10010001b:91h
SCON = 0X50; //10000000
PCON = 0X80; //10000000
TMOD = 0X21;
//TCON = 0X40;
TH1 = 0Xfd; //9600BAUD RATE
TL1 = 0Xfd;
TH0 = 0X3c;
TL0 = 0Xaf;
ET0 = 1;
TR1 = 1;
TR0 = 1;
//IT0 = 1;
//IE0 = 0;
// memset(UART_BUFF, 0, UART_BUFF_SIZE);
P0 = 0xFF;
P1 = 0x00;
P2 = 0xFF;
IP = 0X01; //00010000
}
/**************************************************************
** 函数名称:ignitMC()
** 函数功能:turn on MC388
** 输入参数:无
** 返回参数:无
** 调用模块:无
** 全局变量:无
** 备注: 无
****************************************************************/
void ignitMC(void)
{
IGT = 1;
_nop_();
_nop_();
IGT = 0;
IGT = 1;
delayS(1); //DELAY 0.1S
delayUs(20);
IGT = 0;
}
/**************************************************************
** 函数名称:uartSend
** 函数功能:用模拟串口发送一个字节
** 输入参数: sendData:发送的数据或者命令,flag:命令或者数据标志
** 返回参数:无
** 调用模块:无
** 全局变量:无
** 备注: 无
****************************************************************/
void uartSend(UINT8 sendData, UINT8 flag)reentrant
{
UINT8 nBit = 0, temp;
DC = flag;
temp = sendData;
CS = 0;
while(nBit < 8)
{
nBit++;
SCLK = 0;
if(0 == (temp & 0x80))
SDA = 0;
else SDA = 1;
_nop_();
SCLK = 1;
temp <<= 1;
}
CS = 1;
}
/**************************************************************
** 函数名称:iniLcd
** 函数功能:初始化LCD
** 输入参数:无
** 返回参数:无
** 调用模块:无
** 全局变量:无
** 备注: 无
****************************************************************/
void initLcd(void)
{
UINT8 nData = 0;
RST = 0; // reset lcd
delayMs(0x10);
RST = 1;
while (nData < 8)
{
uartSend(cmdLcm[nData], 0); //initial command
nData++;
}
clearScreen();
clearIcons();
}
/**************************************************************
** 函数名称:clearScreen
** 函数功能:清楚这个屏幕
** 输入参数:无
** 返回参数:无
** 调用模块:无
** 全局变量:无
** 备注: 按地址写入数据0
****************************************************************/
void clearScreen(void)reentrant
{
UINT8 page,column;
page = 0xb0;
RAM_PAGE = 0X02;
X_AXIS = 0X04;
while(page <0xb8)
{
uartSend(page, 0);
uartSend(0x10,0);
uartSend(0x04,0);
page++;
column = 4;
while(column < 132)
{
uartSend(0x00, 1);
column++;
}
}
}
/**************************************************************
** 函数名称:cleaIons
** 函数功能:清楚ICON
** 输入参数:无
** 返回参数:无
** 调用模块:无
** 全局变量:无
** 备注: 按地址写入数据0
****************************************************************/
void clearIcons()
{
UINT8 column = 4;
uartSend(0xB8, 0);
uartSend(0X10, 0);
uartSend(0X00, 0);
while(column < 132)
{
column++;
uartSend(0x00, 1);
}
}
/**************************************************************
** 函数名称:cle arPage
** 函数功能:清楚ICON
** 输入参数:无
** 返回参数:无
** 调用模块:无
** 全局变量:无
** 备注: 按地址写入数据0
****************************************************************/
void clearPage(UINT8 PAGE)
{
UINT8 temp = 4;
PAGE |= 0XB0;
uartSend(PAGE, 0);
uartSend(0x10, 0);
uartSend(0x00, 0);
while(temp < 132)
{
temp++;
uartSend(0x00,1);
}
}
/******************************************************
显示光标
******************************************************
void dispCursor(UINT8 page, UINT8 y)
{
UINT8 pos = 0, temp = 0, j = 0,i = 0;
page |= 0xb0;
pos = y;
temp = pos & 0xf0;
temp >>= 4;
pos &= 0x0f;
uartSend(page, 0);
uartSend(temp, 0);
uartSend(pos, 0);
while(j < 0x03)
{
while(i < 0x02)
{
i++;
j++;
uartSend(0xff,1);
}
}
}
*/
/*******************************************************
清除光标
*******************************************************
void clearCursor(UINT8 page, UINT8 y)
{
UINT8 pos = 0, temp = 0, j = 0,i = 0;
page |= 0xb0;
pos = y;
temp = pos & 0xf0;
temp >>= 4;
pos &= 0x0f;
uartSend(page, 0);
uartSend(temp, 0);
uartSend(pos, 0);
while(j < 0x03)
{
while(i < 0x02)
{
i++;
j++;
uartSend(0x00,1);
}
}
}
*/
/**************************************************************
** 函数名称:clearFonts
** 函数功能:清楚N font
** 输入参数:无
** 返回参数:无
** 调用模块:无
** 全局变量:无
** 备注: 按地址写入数据0
****************************************************************/
extern void clearFont(UINT8 PAGE,UINT8 X_AXIS)
{
UINT8 cnt = 0, i,temp;
i = PAGE | 0XB0;
while(cnt < 3)
{
cnt++;
temp = X_AXIS & 0X0F;
uartSend(i,0);
i++;
uartSend(temp,0);
temp = X_AXIS & 0xf0;
temp >>= 4;
temp |= 0x10;
uartSend(temp,0);
temp = 0;
while(temp < 12)
{
uartSend(0x00,1);
temp++;
}
}
if((X_AXIS < 0X06) && (PAGE > 0X02))
{
PAGE -= 3;
X_AXIS = 119;
}
else if((PAGE == 0X02) && (X_AXIS == 0X04))
dispBYD();
}
/*********************************************
** 函数名称
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -