📄 main.c
字号:
#include "varheader.h"
#include "vardef.h"
void DispHMS (unsigned int x,unsigned int y,unsigned char *buffer)
{
unsigned char HalfData;
unsigned char Cycle;
WriteIns(0x08);
for (Cycle=0;Cycle<3;Cycle++)
{
HalfData=buffer[Cycle]&0xf0;
HalfData=_cror_(HalfData,4);
x+=PAGE1_TIME_INTERVAL;
WriteData(x,y,HalfData+0x10,0X01);
HalfData=buffer[Cycle]&0x0f;
x+=PAGE1_TIME_INTERVAL;
WriteData(x,y,HalfData+0x10,0X01);
if (Cycle <2)
{
x+=PAGE1_TIME_INTERVAL;
WriteData(x,y,CHAR_MAOH,0X01);
}
}
}
void DispYMD(unsigned int x,unsigned int y,unsigned char *buffer)
//在显示扫描曲线的时候可能
//还用这个函数
{
unsigned char HalfData;
unsigned char Cycle;
WriteIns(0x08);
WriteData(x,y,CHAR_2,0X01);
x+=PAGE1_TIME_INTERVAL;
WriteData(x,y,CHAR_0,0X01);
for (Cycle=0;Cycle<3;Cycle++)
{
HalfData=buffer[Cycle]&0xf0;
HalfData=_cror_(HalfData,4);
x+=PAGE1_TIME_INTERVAL;
WriteData(x,y,HalfData+0x10,0X01);
HalfData=buffer[Cycle]&0x0f;
x+=PAGE1_TIME_INTERVAL;
WriteData(x,y,HalfData+0x10,0X01);
if (Cycle <2)
{
x+=PAGE1_TIME_INTERVAL;
WriteData(x,y,CHAR_MINUS,0X01);
}
}
}
void Page1ShowTime()
{
unsigned char Buffer[3];
unsigned char i;
for (i=0;i<3;i++)
{
Buffer[i] = ReadClock(REG_YEAR-i);
}
DispYMD( PAGE1_TIME_POS_X,PAGE1_TIME_POS_Y,&Buffer[0]);
Buffer[0] = ReadClock(REG_HOUR);
Buffer[1] = ReadClock(REG_MIN);
Buffer[2] = ReadClock(REG_SEC);
DispHMS( PAGE1_TIME_POS_X+35,PAGE1_TIME_POS_Y,&Buffer[0]);
}
//
// X
// ___________________________________________________________\
// | /
// |
// |
// Y |
// |
// |
// |
// |
// \|/
void Page1(void)
{
unsigned char xdata Step;
unsigned int xdata AxisX;
unsigned int xdata AxisY;
unsigned char xdata ByteNum;
unsigned char xdata BitNum;
unsigned char xdata Line;
unsigned char xdata Col;
unsigned char xdata Cycle;
unsigned char xdata Multiple;
AxisX=PAGE1_START_POS_X; //起始的位置
AxisY=PAGE1_START_POS_Y;
//分析方式
WriteIns(0x07);
WriteData(AxisX+23, AxisY+30,HZ_FEN,0X01);
WriteData(AxisX+33, AxisY+30,HZ_XI,0X01);
WriteData(AxisX+43, AxisY+30,HZ_FANG,0X01);
WriteData(AxisX+53, AxisY+30,HZ_SHI,0X01);
WriteData(AxisX+10, AxisY+100,HZ_BUTTON,0X01);//定波长
WriteData(AxisX+15, AxisY+100,HZ_DING,0X01);
WriteData(AxisX+20, AxisY+100,HZ_BO,0X01);
WriteData(AxisX+25, AxisY+100,HZ_CHANG,0X01);
WriteData(AxisX+50, AxisY+100,HZ_JI,0x01); //基线扫描
WriteData(AxisX+55, AxisY+100,HZ_XIAN,0x01);
WriteData(AxisX+60, AxisY+100,HZ_SAO,0x01);
WriteData(AxisX+65, AxisY+100,HZ_MIAO,0x01);
WriteData(AxisX+15, AxisY+170,HZ_JIAO,0x01); //校准曲线
WriteData(AxisX+20, AxisY+170,HZ_ZHUN,0x01);
WriteData(AxisX+25, AxisY+170,HZ_QU,0x01);
WriteData(AxisX+30, AxisY+170,HZ_XIAN,0x01);
WriteData(AxisX+50, AxisY+170,HZ_BO,0x01); //波长扫描
WriteData(AxisX+55, AxisY+170,HZ_CHANG,0x01);
WriteData(AxisX+60, AxisY+170,HZ_SAO,0x01);
WriteData(AxisX+65, AxisY+170,HZ_MIAO,0x01);
WriteData(AxisX+15, AxisY+240,HZ_DONG,0x01); //动力学
WriteData(AxisX+20, AxisY+240,HZ_LI,0x01);
WriteData(AxisX+25, AxisY+240,HZ_XUE,0x01);
WriteData(AxisX+50, AxisY+240,HZ_SHU,0x01); //数据库
WriteData(AxisX+55, AxisY+240,HZ_JU,0x01);
WriteData(AxisX+60, AxisY+240,HZ_KU,0x01);
WriteData(AxisX+15, AxisY+310,HZ_XI2,0x01); //系统设置
WriteData(AxisX+20, AxisY+310,HZ_TONG,0x01);
WriteData(AxisX+25, AxisY+310,HZ_SHE,0x01);
WriteData(AxisX+30, AxisY+310,HZ_ZHI2,0x01);
DrawFrame();
}
main()
{
unsigned char xdata i ;
unsigned char xdata Reg ;
unsigned char xdata KeyValue;
unsigned int xdata Col ;
unsigned int xdata Line ;
unsigned char xdata IntNum ;
unsigned char xdata ExitCode;
unsigned int xdata ButtonPosX;
unsigned int xdata ButtonPosY;
unsigned char xdata SelectedMode;
/*主要就是三个方面的内容一个是分频的系数,一个是键盘的方式,一个是总清的命令*/
clear();
EA=0;
INIT_8279:
{
INS_8279=KB_DISP_MODE;
INS_8279=KB_CLK_DIV;
INS_8279=KB_CLEAR_ALL;
do
{
KeyValue=INS_8279;
KeyValue&=0x80;
} while ( KeyValue);
INS_8279=KB_READ_RAM;
}
KeyValue=DATA_8279 ; //CLEAR DATA Buffer
LCD_DISP_OFF;
Page1();
LCD_DISP_ON;
SelectedMode=0;
ButtonPosX=10;
ButtonPosY=100;
ExitCode =0;
while(1)
{
IntNum=ADDR_INT;
if(!(IntNum&0X80))
{
WriteClock(REG_CLOCK_B,CLOCK_FROZE); /*首先将寄存器FROZE*/
Page1ShowTime();
ReadClock(REG_CLOCK_C);
WriteClock(REG_CLOCK_B,CLOCK_UNFROZE);
IntNum|=0X80;
} /*END IF BIT7*/
if (!(IntNum&0x40)) //表示有键盘中断
{
KeyValue=DATA_8279;
KeyValue&=0x3f; //取得有效的数据位
switch (KeyValue)
{
case 0x06: //press enter
{
ExitCode=1;
break;
}
case 0x05: // UP ARROW
{
if (SelectedMode>1) //NOT the most up
{
ClearRectangle( ButtonPosX,ButtonPosY,3,24,0X01);
WriteIns(0x07);
ButtonPosY-=70;
WriteData(ButtonPosX,ButtonPosY,HZ_BUTTON,0X01);
SelectedMode-=2;
}
break;
}
case 0x0d: // DOWN ARROW
{
if (SelectedMode<5) //NOT the most down
{
ClearRectangle( ButtonPosX,ButtonPosY,3,24,0X01);
WriteIns(0x07);
ButtonPosY+=70;
WriteData(ButtonPosX,ButtonPosY,HZ_BUTTON,0X01);
SelectedMode+=2;
}
break;
}
case 0x15: // LEFT ARROW
{
if (SelectedMode%2>0)//odd line
{
ClearRectangle( ButtonPosX,ButtonPosY,3,24,0X01);
WriteIns(0x07);
ButtonPosX-=35;
WriteData(ButtonPosX,ButtonPosY,HZ_BUTTON,0X01);
SelectedMode--;
}
break;
}
case 0x1d: // RIGHT ARROW
{
if (SelectedMode%2==0 && SelectedMode<6) //even line
{
ClearRectangle( ButtonPosX,ButtonPosY,3,24,0X01);
WriteIns(0x07);
ButtonPosX+=35;
WriteData(ButtonPosX,ButtonPosY,HZ_BUTTON,0X01);
SelectedMode++;
}
break;
}
}
IntNum|=0x40;
}
if (ExitCode) break;
}
switch (SelectedMode)
{
case 0x00: //定波长
{
Page2(0x00);
break;
}
case 0x01: //基线扫描
{
break;
}
case 0x02: //校准曲线
{
break;
}
case 0x03: //波长扫描
{
break;
}
case 0x04: //动力学
{
break;
}
case 0x05: //数据库
{
break;
}
case 0x06: //系统设置
{
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -