⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 复件 lcdzk.c

📁 使用avr--cc2420模块程序,需要原理图的联系 QQ:120304948
💻 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 + -