📄 main.c
字号:
/************************************************************************************
* Copyright (c) 2004,西安铭朗电子科技有限责任公司
* All rights reserved.
*
* 文件名称: Main.C
* 文件标识: none
* 适用器件: C8051F020
*
* 摘 要: 本文件是AD测试实验;使用外部22.1184MHz晶振.
* 功能:开机显示"铭朗科技,WWW.MLARM.COM"信息,为待机界面。
* 数秒后在LCD上显示ADC1通道0和1电压及温度值,
*
* 当前版本:1.1
* 作 者:刘大伟
* 完成日期:2007年2月10日
*
*************************************************************************************/
/*******************************引用外部头文件***************************************/
#include "main.h"
/************************************************************************************/
#if LCDA|LCDB
/*************************************************************************************
* 函数名称:Datashift;
*
* 函数功能描述:不同LCD显示Flash字库的数据顺序调整;
*
* 输入参数:unsigned char类型i 取数据的相应位,unsigned char指针类型;
*
* 返回数据:unsigned char类型 返回的显示数据;
*
* 注意: none;
*************************************************************************************/
unsigned char Datashift (unsigned char i,unsigned char *p)
{
unsigned char Datatemp[8];
switch(i)
{
case 0x80:
Datatemp[0]=((*p++)&i);
Datatemp[1]=((*p++)&i)>>1;
Datatemp[2]=((*p++)&i)>>2;
Datatemp[3]=((*p++)&i)>>3;
Datatemp[4]=((*p++)&i)>>4;
Datatemp[5]=((*p++)&i)>>5;
Datatemp[6]=((*p++)&i)>>6;
Datatemp[7]=((*p++)&i)>>7;
break;
case 0x40:
Datatemp[0]=((*p++)&i)<<1;
Datatemp[1]=((*p++)&i);
Datatemp[2]=((*p++)&i)>>1;
Datatemp[3]=((*p++)&i)>>2;
Datatemp[4]=((*p++)&i)>>3;
Datatemp[5]=((*p++)&i)>>4;
Datatemp[6]=((*p++)&i)>>5;
Datatemp[7]=((*p++)&i)>>6;
break;
case 0x20:
Datatemp[0]=((*p++)&i)<<2;
Datatemp[1]=((*p++)&i)<<1;
Datatemp[2]=((*p++)&i);
Datatemp[3]=((*p++)&i)>>1;
Datatemp[4]=((*p++)&i)>>2;
Datatemp[5]=((*p++)&i)>>3;
Datatemp[6]=((*p++)&i)>>4;
Datatemp[7]=((*p++)&i)>>5;
break;
case 0x10:
Datatemp[0]=((*p++)&i)<<3;
Datatemp[1]=((*p++)&i)<<2;
Datatemp[2]=((*p++)&i)<<1;
Datatemp[3]=((*p++)&i);
Datatemp[4]=((*p++)&i)>>1;
Datatemp[5]=((*p++)&i)>>2;
Datatemp[6]=((*p++)&i)>>3;
Datatemp[7]=((*p++)&i)>>4;
break;
case 0x08:
Datatemp[0]=((*p++)&i)<<4;
Datatemp[1]=((*p++)&i)<<3;
Datatemp[2]=((*p++)&i)<<2;
Datatemp[3]=((*p++)&i)<<1;
Datatemp[4]=((*p++)&i);
Datatemp[5]=((*p++)&i)>>1;
Datatemp[6]=((*p++)&i)>>2;
Datatemp[7]=((*p++)&i)>>3;
break;
case 0x04:
Datatemp[0]=((*p++)&i)<<5;
Datatemp[1]=((*p++)&i)<<4;
Datatemp[2]=((*p++)&i)<<3;
Datatemp[3]=((*p++)&i)<<2;
Datatemp[4]=((*p++)&i)<<1;
Datatemp[5]=((*p++)&i);
Datatemp[6]=((*p++)&i)>>1;
Datatemp[7]=((*p++)&i)>>2;
break;
case 0x02:
Datatemp[0]=((*p++)&i)<<6;
Datatemp[1]=((*p++)&i)<<5;
Datatemp[2]=((*p++)&i)<<4;
Datatemp[3]=((*p++)&i)<<3;
Datatemp[4]=((*p++)&i)<<2;
Datatemp[5]=((*p++)&i)<<1;
Datatemp[6]=((*p++)&i);
Datatemp[7]=((*p++)&i)>>1;
break;
case 0x01:
Datatemp[0]=((*p++)&i)<<7;
Datatemp[1]=((*p++)&i)<<6;
Datatemp[2]=((*p++)&i)<<5;
Datatemp[3]=((*p++)&i)<<4;
Datatemp[4]=((*p++)&i)<<3;
Datatemp[5]=((*p++)&i)<<2;
Datatemp[6]=((*p++)&i)<<1;
Datatemp[7]=((*p++)&i);
break;
default:
break;
}
return Datatemp[0]|
Datatemp[1]|
Datatemp[2]|
Datatemp[3]|
Datatemp[4]|
Datatemp[5]|
Datatemp[6]|
Datatemp[7];
}
#endif
/*************************************************************************************
* 函数名称:Disp_Flash_Word;
*
* 函数功能描述:LCD单字显示Flash字库;
*
* 输入参数:unsigned char类型page页,unsigned char类型local位置,BYTE类型坐标x,y;
*
* 返回数据:none;
*
* 注意: none;
*************************************************************************************/
void Disp_Flash_Word (unsigned char page,local,x,y)
{
unsigned long addrtemp;
unsigned char xdata diptemp[32];
#if LCDA|LCDB
unsigned char xdata contemp[32];
unsigned char i,j,k;
#endif
page--;
local--;
addrtemp = (unsigned long)(page*94+local)*32;
Flash_DataRD (addrtemp, diptemp, 32);
#if LCDA
for(k=0;k<2;k++)
{
j=0;
for(i=0x80;i!=0;i>>=1)
{
contemp[31-16*(1-k)-2*j] = Datashift(i,&diptemp[16*k+8]);
contemp[31-16*(1-k)-2*j-1] = Datashift(i,&diptemp[16*k+0]);
j++;
}
}
LCDA_ShowHZxy(y, x, 16, 16, contemp);
#elif LCDB
for(k=0;k<2;k++)
{
j=0;
for(i=0x80;i!=0;i>>=1)
{
contemp[31-16*(1-k)-2*j] = Datashift(i,&diptemp[16*k+8]);
contemp[31-16*(1-k)-2*j-1] = Datashift(i,&diptemp[16*k+0]);
j++;
}
}
LCDB_ShowHZxy(y, x, 16, 16, contemp);
#elif LCDC
LCDC_DispFWord(x, y, diptemp, 2, 16, 1);
#endif
}
/*************************************************************************************
* 函数名称
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -