📄 复件 lcdzk.c
字号:
#include <mega128.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include "typedef.h"
#include "app.h"
#include "attention.h"
#include "Flash.h"
#include "g20modem.h"
#include "g20serialdrv.h"
#include "rtc.h"
#include "serialdrv.h"
#include "timer.h"
#include "UDP.h"
#include "protocol.h"
#include "lcdzk.h"
#include "data.h"
#include "ADC.h"
unsigned char _cx,_cy;
unsigned char pl;
extern flash unsigned char strk[STR_NUM*16];
extern flash unsigned char str_index[STR_NUM];
extern flash unsigned char hzk[HZ_NUM*32];
extern flash unsigned int hz_index[HZ_NUM];
//unsigned char MobilePhone[12] = "13611218204"; //"13611218204\0"
#pragma warn-
//eeprom UINT volt_warn;
eeprom UINT Dcurrent_warn;
eeprom UINT Xcurrent_warn;
eeprom UINT pres_warn;
eeprom unsigned char MobilePhone[12] = "13611218204"; //"13611218204\0"
#pragma warn+
void write_comddata(unsigned char mode,unsigned char comda)
{
lcd_ddr=0xff;
if (mode)
{
lcd_a0=1;
}
else
lcd_a0=0;
// lcd_a0=mode;
lcd_port=comda;
lcd_wr=0;
lcd_wr=1;
}
unsigned char read_comddata(unsigned char mode)
{
unsigned char i=0;
lcd_port=0;
if (mode)
{
lcd_a0=1;
}
else
lcd_a0=0;
// lcd_a0=mode;
lcd_ddr=0;
lcd_rd=0;
lcd_rd=0;
i=lcd_in;
lcd_rd=1;
return(i);
}
void wait_ok(void)
{
unsigned char i=0;
while((i&3)!=3)
{
i=read_comddata(1);
}
}
void write_comd1(unsigned char comd)
{
lcd_cs=0;
wait_ok();
write_comddata(1,comd);
lcd_cs=1;
}
void write_comd2(unsigned char comd1,unsigned char comd2)
{
lcd_cs=0;
wait_ok();
write_comddata(0,comd1);
wait_ok();
write_comddata(1,comd2);
lcd_cs=1;
}
void write_comd3(unsigned char comd1,unsigned char comd2,unsigned char comd3)
{
lcd_cs=0;
wait_ok();
write_comddata(0,comd1);
wait_ok();
write_comddata(0,comd2);
wait_ok();
write_comddata(1,comd3);
lcd_cs=1;
}
unsigned char read_data(char dir)
{
unsigned char ch;
write_comd1(0xc1+dir*2);
lcd_cs=0;
wait_ok();
ch=read_comddata(0);
return(ch);
}
void writec(char ch)
{
_cx++;
write_comd2(ch,0xc0);
write_comd3(_cx,_cy,0x21);
}
void gotoc(unsigned char x,unsigned char y,unsigned int gf)
{
unsigned int addr;
addr=y;
addr=x+addr*DISPWIDTH+gf;
write_comd3(addr,addr/256,0x24);
}
void gotoxy(unsigned char x,unsigned char y)
{
gotoc(x,y,TOFFSET);
_cx=x;
_cy=y-pl;
write_comd3(_cx,_cy,0x21);
}
void cls(unsigned int ln)
{
unsigned char j=0;
unsigned int i;
write_comd1(0xb0);
lcd_cs=0;
for (i=0;i<ln;i++)
{
while((j&8)!=8)
{
j=read_comddata(1);
}
write_comddata(0,0);
}
write_comd1(0xb2);
}
void disp_string(unsigned char x,unsigned char y,unsigned char *string)
{
unsigned int quwei;
unsigned char qu;
unsigned char wei;
unsigned char i;
unsigned char _x,_y;
_x=x;
_y=y;
while (*string!=0)
// for (j=0;j<=strlen(string);j++)
{
qu=*string;
string++;
wei=1;
for (i=0;i<STR_NUM;i++)
{
if (qu==str_index[i])
{
qu=i;
wei=0;
break;
}
}
if (wei==0)
{
quwei=qu;
quwei=quwei*16;
for (i=0;i<16;i++)
{
gotoc(_x,_y,GOFFSET);
write_comd2(strk[quwei+i],0xc0);
_y++;
}
}
_x++;
_y=_y-16;
}
}
/*void disp_string(unsigned char x,unsigned char y,unsigned char *string)
{
unsigned int quwei;
unsigned char qu;
unsigned char wei;
unsigned char i;
unsigned char _x,_y;
_x=x;
_y=y;
wei=1;
while (*string!=0)
{
qu=*string;
string++;
for (i=0;i<STR_NUM;i++)
{
if (qu==str_index[i])
{
qu=i;
wei=0;
break;
}
}
if (wei==0)
{
quwei=qu;
quwei=quwei*16;
for (i=0;i<16;i++)
{
gotoc(_x,_y,GOFFSET);
write_comd2(strk[quwei+i],0xc0);
_y++;
}
}
_x++;
_y=_y-16;
}
}
void disp_string(unsigned char x,unsigned char y,unsigned char *string)
{
unsigned char j=0;
gotoxy(x,y);
write_comd1(0xb0);
lcd_cs=0;
while (*string>0x19)
{
while((j&8)!=8)
{
j=read_comddata(1);
}
write_comddata(0,*string-0x20);
_cx++;
string++;
}
write_comd1(0xb2);
gotoxy(_cx,y);
}
*/
void disp_hzstr(unsigned char x, unsigned char y, unsigned char flash *string)
{
unsigned int quwei;
unsigned char qu;
unsigned char wei;
unsigned char i;
unsigned char _x,_y;
_x=x;
_y=y;
while (*string!=0)
{
qu=*string;
string++;
wei=*string;
string++;
quwei=qu;
quwei=quwei*256+wei;
for (i=0;i<HZ_NUM;i++)
{
if (quwei==hz_index[i])
{
qu=i;
wei=0;
break;
}
}
if (wei==0)
{
quwei=qu;
quwei=quwei*32;
for (i=0;i<16;i++)
{
gotoc(_x,_y,GOFFSET);
write_comd2(hzk[quwei+i*2],0xc0);
write_comd2(hzk[quwei+i*2+1],0xc0);
_y++;
}
}
_x++;
_x++;
_y=_y-16;
}
}
void disp_nhz(unsigned char x,unsigned char y,unsigned char no)
{
unsigned char i,j;
unsigned char _x,_y;
_x=x;
_y=y;
do
{
for (i=0;i<16;i++)
{
gotoc(_x,_y,GOFFSET);
write_comd1(0xc5);
lcd_cs=0;
wait_ok();
j=read_comddata(0);
j=~j;
write_comd2(j,0xc0);
write_comd1(0xc5);
lcd_cs=0;
wait_ok();
j=read_comddata(0);
j=~j;
write_comd2(j,0xc0);
_y++;
}
_x++;
_x++;
_y=_y-16;
}while(--no);
}
void cright(void)
{
_cx++;
write_comd2(0,0xc1);
write_comd3(_cx,_cy,0x21);
}
void cleft(void)
{
_cx--;
write_comd2(0,0xc3);
write_comd3(_cx,_cy,0x21);
}
void clspage(unsigned char page_num,unsigned char page_type)
{
unsigned int i;
i=TOFFSET;
i=i*page_type;
gotoc(0,page_num*(16*DISPHIGH-112*page_type),i);
i=DISPWIDTH;
i=i*(16*DISPHIGH-112*page_type);
cls(i);
}
void read_string(unsigned char si,unsigned char * num)
{
unsigned char i;
for (i=0;i<si;i++)
num[i]=read_data(0)+0x20;
num[si]=0;
}
void screen_line(unsigned char ln)
{
unsigned int addr;
addr=ln;
addr=addr*DISPWIDTH+TOFFSET;
write_comd3(addr,addr/256,0x40);
pl=ln;
}
void InitialDisplay(void)
{
timer_delay(1000);
gotoc(0,0,GOFFSET);
cls(0x2000);
write_comd1(0x80);
cursor_off;
cursor(7);
write_comd3(DISPWIDTH,0,0x41);
write_comd3(0,0,0x42);
write_comd3(DISPWIDTH,0,0x43);
timer_delay(1000);
disp_title(0);
screen_line(0);
graph_page(0);
}
void disp_real(void)
{
unsigned char strdata[15];
ADC_deal();
memset(strdata, 0x00, 15);
sprintf(strdata,"%3d",Dcurrent_a);
disp_string(10,0,strdata);
sprintf(strdata,"%3d",Xcurrent_a);
disp_string(26,0,strdata);
sprintf(strdata,"%3d",Dcurrent_b);
disp_string(10,18,strdata);
sprintf(strdata,"%3d",Xcurrent_b);
disp_string(26,18,strdata);
sprintf(strdata,"%3d",Dcurrent_c);
disp_string(10,36,strdata);
sprintf(strdata,"%3d",Xcurrent_c);
disp_string(26,36,strdata);
sprintf(strdata,"%3d",voltage);
disp_string(8,54,strdata);
sprintf(strdata,"%3d",pressure_w);
disp_string(24,54,strdata);
}
void disp_alarm(void)
{
unsigned char strdata[15];
memset(strdata, 0x00, 15);
sprintf(strdata,"%3d",Dcurrent_warn);
disp_string(13,72,strdata);
sprintf(strdata,"%3d",Xcurrent_warn);
disp_string(23,72,strdata);
}
void disp_title(unsigned char page)
{
unsigned char i;
unsigned char strdata[30];
clspage(0,0);
switch (page)
{
case 0:
disp_hzstr(8,10,"系统初始化");
break;
case 1:
disp_hzstr(0,0,"总电流A");
disp_hzstr(16,0,"支电流A");
disp_hzstr(0,18,"总电流B");
disp_hzstr(16,18,"支电流B");
disp_hzstr(0,36,"总电流C");
disp_hzstr(16,36,"支电流C");
memset(strdata, 0x00, 30);
sprintf(strdata,": A");
disp_string(8,0,strdata);
disp_string(24,0,strdata);
disp_string(8,18,strdata);
disp_string(24,18,strdata);
disp_string(8,36,strdata);
disp_string(24,36,strdata);
disp_hzstr(0,54,"线电压");
sprintf(strdata,": V");
disp_string(6,54,strdata);
disp_hzstr(16,54,"总风压");
sprintf(strdata,": MP");
disp_string(22,54,strdata);
disp_hzstr(0,72,"电流告警值");
sprintf(strdata,"1: A 2: A");
disp_string(10,72,strdata);
disp_hzstr(0,90,"报警手机号:");
memset(strdata, 0x00, 30);
MobilePhone[11]='\0';
for (i=0;i<11;i++)
{
strdata[i]=MobilePhone[i];
}
disp_string(12,90,strdata);
disp_alarm();
break;
default:
break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -