📄 main.c
字号:
#include <reg51.h>
#include <absacc.h>
#include "LCM.h"
#include "Serial.h"
#include "82c79.h"
#include "keyCode.h"
uchar key;
uchar pan=0;
sbit rd1 = P1^0;
sbit gd1 = P1^1;
sbit rd2 = P1^2;
sbit gd2 = P1^3;
sbit sck = P1^4;
sbit rck = P1^5;
sbit G = P2^4;
uchar code yansezi[16][4]=
{
0xF7,0xFF,0xDF,0xFF,
0xEF,0x81,0xDF,0xFF,
0x01,0xF7,0x1F,0xF0,
0xBB,0xFB,0xEF,0xFB,
0xD7,0xC1,0xF7,0xFD,
0x01,0xDD,0x03,0xF0,
0xDD,0xD5,0x75,0xF7,
0xED,0xD5,0x77,0xF7,
0xB1,0xD5,0x77,0xF7,
0xDD,0xD5,0x07,0xF0,
0xED,0xD5,0xF7,0xFF,
0x71,0xEB,0xF7,0xDF,
0x9D,0xDB,0xF7,0xDF,
0xE6,0x9D,0xF7,0xDF,
0x78,0xBE,0x0F,0xC0,
0xFF,0xFF,0xFF,0xFF,
};
unsigned char code Bmp0[16]=
{
/*----------------------------------------------------------------
--------------
; 若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺
序。
; 源文件 / 文字 : 0
; 宽×高(像素): 8×16
; 字模格式/大小 : 单色点阵液晶字模,横向取模,字节倒序/16字节
; 数据转换日期 : 2006-9-4 10:56:17
------------------------------------------------------------------
------------*/
0xFF,0xFF,0xFF,0xC7,0x93,0x39,0x39,0x39,0x39,0x39,0x39,0x93,0xC7,0xFF,0xFF,0xFF,
};
unsigned char code Bmp1[16]=
{
/*----------------------------------------------------------------
--------------
; 若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺
序。
; 源文件 / 文字 : 1
; 宽×高(像素): 8×16
; 字模格式/大小 : 单色点阵液晶字模,横向取模,字节倒序/16字节
; 数据转换日期 : 2006-9-4 10:55:37
------------------------------------------------------------------
------------*/
0xFF,0xFF,0xFF,0xE7,0xE1,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0x81,0xFF,0xFF,0xFF,
};
unsigned char code Bmp2[16]=
{
/*----------------------------------------------------------------
--------------
; 若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺
序。
; 源文件 / 文字 : 2
; 宽×高(像素): 8×16
; 字模格式/大小 : 单色点阵液晶字模,横向取模,字节倒序/16字节
; 数据转换日期 : 2006-9-4 10:56:48
------------------------------------------------------------------
------------*/
0xFF,0xFF,0xFF,0x83,0x39,0x39,0x3F,0x9F,0xCF,0xE7,0xF3,0x39,0x01,0xFF,0xFF,0xFF,
};
unsigned char code Bmp3[16]=
{
/*----------------------------------------------------------------
--------------
; 若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺
序。
; 源文件 / 文字 : 3
; 宽×高(像素): 8×16
; 字模格式/大小 : 单色点阵液晶字模,横向取模,字节倒序/16字节
; 数据转换日期 : 2006-9-4 10:57:05
------------------------------------------------------------------
------------*/
0xFF,0xFF,0xFF,0x83,0x39,0x39,0x9F,0xC7,0x9F,0x3F,0x39,0x39,0x83,0xFF,0xFF,0xFF,
};
unsigned char code Bmp4[16]=
{
/*----------------------------------------------------------------
--------------
; 若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺
序。
; 源文件 / 文字 : 4
; 宽×高(像素): 8×16
; 字模格式/大小 : 单色点阵液晶字模,横向取模,字节倒序/16字节
; 数据转换日期 : 2006-9-4 10:57:26
------------------------------------------------------------------
------------*/
0xFF,0xFF,0xFF,0xCF,0xCF,0xC7,0xC3,0xC9,0xC9,0x01,0xCF,0xCF,0x07,0xFF,0xFF,0xFF,
};
unsigned char code Bmp5[16]=
{
/*----------------------------------------------------------------
--------------
; 若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺
序。
; 源文件 / 文字 : 5
; 宽×高(像素): 8×16
; 字模格式/大小 : 单色点阵液晶字模,横向取模,字节倒序/16字节
; 数据转换日期 : 2006-9-4 10:57:44
------------------------------------------------------------------
------------*/
0xFF,0xFF,0xFF,0x01,0xF9,0xF9,0x81,0x31,0x3F,0x3F,0x39,0x39,0x83,0xFF,0xFF,0xFF,
};
unsigned char code Bmp6[16]=
{
/*----------------------------------------------------------------
--------------
; 若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺
序。
; 源文件 / 文字 : 6
; 宽×高(像素): 8×16
; 字模格式/大小 : 单色点阵液晶字模,横向取模,字节倒序/16字节
; 数据转换日期 : 2006-9-4 10:57:58
------------------------------------------------------------------
------------*/
0xFF,0xFF,0xFF,0x87,0x93,0xF9,0xF9,0x81,0x31,0x39,0x39,0x39,0x83,0xFF,0xFF,0xFF,
};
unsigned char code Bmp7[16]=
{
/*----------------------------------------------------------------
--------------
; 若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺
序。
; 源文件 / 文字 : 7
; 宽×高(像素): 8×16
; 字模格式/大小 : 单色点阵液晶字模,横向取模,字节倒序/16字节
; 数据转换日期 : 2006-9-4 10:58:15
------------------------------------------------------------------
------------*/
0xFF,0xFF,0xFF,0x01,0x99,0x99,0xCF,0xCF,0xE7,0xE7,0xE7,0xE7,0xE7,0xFF,0xFF,0xFF,
};
unsigned char code Bmp8[16]=
{
/*----------------------------------------------------------------
--------------
; 若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺
序。
; 源文件 / 文字 : 8
; 宽×高(像素): 8×16
; 字模格式/大小 : 单色点阵液晶字模,横向取模,字节倒序/16字节
; 数据转换日期 : 2006-9-4 10:58:49
------------------------------------------------------------------
------------*/
0xFF,0xFF,0xFF,0x83,0x39,0x39,0x39,0x83,0x93,0x39,0x39,0x39,0x83,0xFF,0xFF,0xFF,
};
unsigned char code Bmp9[16]=
{
/*----------------------------------------------------------------
--------------
; 若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺
序。
; 源文件 / 文字 : 9
; 宽×高(像素): 8×16
; 字模格式/大小 : 单色点阵液晶字模,横向取模,字节倒序/16字节
; 数据转换日期 : 2006-9-4 10:59:10
------------------------------------------------------------------
------------*/
0xFF,0xFF,0xFF,0xC3,0x99,0x39,0x39,0x19,0x03,0x3F,0x3F,0x93,0xC3,0xFF,0xFF,0xFF,
};
unsigned char code Bmp[16]=
{
/*----------------------------------------------------------------
--------------
; 若数据乱码,请检查字模格式设置,注意选择正确的取模方向和字节位顺
序。
; 源文件 / 文字 : -
; 宽×高(像素): 8×16
; 字模格式/大小 : 单色点阵液晶字模,横向取模,字节倒序/16字节
; 数据转换日期 : 2006-9-4 10:59:41
------------------------------------------------------------------
------------*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x81,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
uchar *bm[11]={Bmp0,Bmp1,Bmp2,Bmp3,
Bmp4,Bmp5,Bmp6,Bmp7,Bmp8,Bmp9,Bmp};
sbit TT=P1^0;
void MainDelay(void);
void Serial_Init(void);
void WaitTF0(void);
void WByte(uchar input);
caidan(uchar sp);
caidan0(uchar sa);
caidan1(uchar sb);
caidan2();
Time();
yanse();
sheding();
liangdu();
zimu();
hanzi();
zimu3();
zimu4();
shuru();
hanzi2();
hanzi3();
hanzi4();
code (code *f[3][4])()={Time,
yanse,
sheding,
liangdu,
zimu,
hanzi,
zimu3,
zimu4,
shuru,
hanzi2,
hanzi3,
hanzi4, };
main()
{
uchar sp=1;
uchar sa=1;
uchar sb=1;
uchar sf=0;
uchar sp2=0;
uchar sa2=1;
uchar sb2=1;
uchar sc2=1;
Init8279();
InitCom();
MainDelay();
caidan(sp);
key=0;
while(1)
{
if(key)
{
switch(key)
{
case LEFT:
sp2--;
if(sp2==-1)
{sp2=3;}
if(sp==1)
{
sp=4;
}
else
{
sp=sp>>1;
}
caidan(sp);
break;
case RIGHT:
sp2++;
if(sp2==4)
{sp2=0;}
if(sp==4)
{
sp=1;
}
else
{
sp=sp<<1;
}
caidan(sp);
break;
case Num0:
switch(sp)
{
case 1:
if(sa==8)
{
sa=1;
}
else
{
sa=sa<<1;
}
sf=sa2;
sa2++;
if(sa2==4)
{
sa2=0;
}
caidan0(sa);
break;
case 2:
if(sb==2)
{
sb=1;
}
else
{
sb=sb<<1;
}
sf=sb2;
sb2++;
if(sb2==2)
{
sb2=0;
}
caidan1(sb);
break;
case 4:
sf=0;
caidan2();
break;
}
break;
case Num8:
caidan(sp);
break;
case ENTER:
(* f[sp2][sf])();
caidan(sp);
break;
default:
break;
}
key=0;
}
}
}
void MainDelay(void)
{
uint n;
uchar i;
for(i=0;i<2;i++)
for(n=0;n<40000;n++);
}
caidan(uchar sp)
{
bit sp0=0;
bit sp1=0;
bit sp2=0;
lcd_cls();
sp0=sp&0x01;
sp1=(sp&0x02)>>1;
sp2=(sp&0x04)>>2;
lcd_line(1,1,15,127,15);
lcd_line(1,38,0,38,15);
lcd_line(1,76,0,76,15);
lcd_line(1,1,13,127,13);
DisplayStr(sp0,0, 0,"控制");
DisplayStr(sp1,6, 0,"显示");
DisplayStr(sp2,12, 0,"输入");
}
/* -------------------------------------------------------------
子菜单1:温度上限设定和报警开关
-------------------------------------------*/
caidan0(uchar sa)
{
uchar sa0[4];
uchar i;
for(i=0;i<4;i++)
{
sa0[i]=sa&0x01;
sa=sa>>1;
}
lcd_line(1,1,15,1,64);
lcd_line(1,127,64,127,20);
lcd_line(1,127,20,25,20);
lcd_line(1,25,20,20,15);
if(sa0[3]==0)
{
DisplayStr(sa0[0],0, 2,"1:显示时钟");
DisplayStr(sa0[1],0, 3,"2:颜色调节");
DisplayStr(sa0[2],0, 4,"3:字动作设定");
}
else
{
DisplayStr(sa0[3],0,2,"4:亮度调节");
DisplayStr(sa0[1],0, 3," ");
DisplayStr(sa0[2],0, 4," ");
}
}
/*-----------------------------------------------------
子菜单2:各线路的显示选择
-------------------------------------*/
caidan1(uchar sb)
{
uchar sb0[2];
uchar i;
for(i=0;i<2;i++)
{
sb0[i]=sb&0x01;
sb=sb>>1;
}
DisplayStr(sb0[0],1, 2,"1:显示8个字母");
DisplayStr(sb0[1],1, 4,"2:显示8个汉字");
lcd_line(1,36,15,32,20);
lcd_line(1,32,20,1,20);
lcd_line(1,1,20,1,63);
lcd_line(1,127,63,127,20);
lcd_line(1,127,20,64,20);
lcd_line(1,64,20,58,15);
}
/*--------------------------------------------------------------
子菜单3:各路温度平均值和温度曲线及打印
----------------------------------------------------*/
caidan2()
{
DisplayStr(1,1, 2,"输入英文显示");
lcd_line(1,80,15,70,20);
lcd_line(1,70,20,1,20);
lcd_line(1,1,20,1,63);
lcd_line(1,127,63,127,20);
lcd_line(1,127,20,120,20);
lcd_line(1,120,20,110,15);
}
Time()
{ uchar sp=1;
uchar *m;
uchar x=0;
uchar y=0;
uchar i=0;
uchar tt;
uchar biao[8]={1,2,10,3,4,10,5,9};
key=0;
G=0;
lcd_cls();
DisplayStr(1,1, 2,"显示时钟。。。");
while(1)
{
for(x=0;x<16;x++)
{
P2=x;
P2|=0x80;
for(y=0;y<8;y++)
{
m=bm[biao[y]];
m=m+x;
tt=*m;
for(i=0;i<8;i++)
{
gd1=tt&0x01;
tt=tt>>1;
sck=1;
sck=0;
if(key==3)
{
key=0;
P2=0;
return;
}
}
}
rck=1;
rck=0;
}
if(key==BACK)
{
key=0;
return;
}
}
}
yanse()
{
uchar i;
uchar j;
uchar x;
uchar y;
key=0;
G=0;
lcd_cls();
DisplayStr(0,0, 0,"请设定颜色");
DisplayStr(0,0, 1,"设定为红色");
DisplayStr(0,0, 2,"设定为绿色");
DisplayStr(0,0, 3,"设定为橙色");
while(1)
{
for(x=0;x<16;x++)
{
P2=x;
P2|=0x80;
for(y=0;y<8;y++)
{
if(y<4)
{
j=yansezi[x][y];
}
else
{
j=0xff;
}
for(i=0;i<8;i++)
{
if(pan==0)
{
rd1=j&0x01;
}
else
{
if(pan==1)
{
gd1=j&0x01;
}
else
{
rd1=j&0x01;
gd1=rd1;
}
}
j=j>>1;
sck=1;
sck=0;
}
}
rck=1;rck=0;
}
if(key)
{
switch(key)
{
case Num1:
pan=0;
break;
case Num2:
pan=1;
break;
case Num3:
pan=2;
break;
case BACK:
key=0;
G=1;
return;
default:
break;
}
key=0;
}
}
}
sheding()
{
lcd_cls();
DisplayStr(0,0, 0,"请选择自动作");
}
zimu()
{
lcd_cls();
DisplayStr(0,0, 0,"来来,我是一个菠萝");
}
hanzi()
{}
zimu3()
{}
zimu4()
{}
shuru()
{
lcd_cls();
DisplayStr(0,0, 0,"来来,我是一个菠萝");
}
hanzi2()
{}
hanzi3()
{}
hanzi4()
{}
liangdu()
{
}
void Serial_Init(void)
{
TMOD|=0X02;
TH0=0xa0;
TL0=TH0;
TR0=1;//
TF0=0;
}
void WaitTF0(void)
{
while(!TF0);
TF0=0;
}
void WByte(uchar input)
{
uchar i=8;
WaitTF0();//
TT=(bit)0;
WaitTF0();
while(i--)
{
TT=(bit)(input&0x01);
WaitTF0();
input=input>>1;
}
TT=(bit)1;
WaitTF0();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -