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

📄 lcd2.c

📁 CGG12864串行控制液晶 该液晶能修改参数显示为黑字与白字.能改变倒反显示方试
💻 C
字号:
/*eeprom_is_ready() //EEPROM 忙检测(返回EEWE 位)
eeprom_busy_wait() //查询等待EEPROM 准备就绪
uint8_t eeprom_read_byte (const uint8_t *addr) //从指定地址读一字节
uint16_t eeprom_read_word (const uint16_t *addr) //从指定地址一字
void eeprom_read_block (void *buf, const void *addr, size_t n) //读块
void eeprom_write_byte (uint8_t *addr, uint8_t val) //写一字节至指定地址
void eeprom_write_word (uint16_t *addr, uint16_t val) //写一字到指定地址
void eeprom_write_block (const void *buf, void *addr, size_t n)//写块*/
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#define uch unsigned char
#define uint unsigned int
#include "lcd_inf.h"
//#include "lcd_inf.c"
#include "img.h"
#define com_out PORTC

#define sdo     0x1
#define clk     0x2
#define A0      0x20
#define RES     0x10
#define CS      0x8

#define A0L  com_out&=~A0
#define RESL com_out&=~RES
#define CSL  com_out&=~CS   

#define A0H  com_out|=A0
#define RESH com_out|=RES
#define CSH  com_out|=CS   

#define sdo_l  com_out&=~sdo
#define sdo_h  com_out|=sdo

#define clk_l  com_out&=~clk
#define clk_h  com_out|=clk

void s_spi(uch data){
SPCR|=(1<<SPE);//使能SPI
SPDR=data;
while(!(SPSR&(1<<SPIF))); 

/*
  uch i;
  clk_l; 
  for(i=8;i!=0;i--)
    {
	 clk_l;
	 clk_l;
	 clk_l;
	 clk_l;
     if(data&0x80)sdo_h;else sdo_l;
     clk_h; 
     clk_h; 
     data<<=1;
    }	
	*/
}
void w_by(uch x){

A0H;
s_spi(x);

}
void w_com(uch x){

A0L; 
s_spi(x);
//CSH;
}
void xyini(uch x,uch y){//坐标设置
uch i;
y&=0xf;
w_com(0xb0|y);
i=(x>>4)|0x10;
w_com(i);

i=x&0xf;
i++;
w_com(i);

}
void startline(uch x){//起始行设置
x|=0x40;
w_com(x);
}
void dis(const uch *px){
uch x,y;
uch i;
for(y=0;y<8;y++){
   xyini(0,y);
   for(x=0;x<128;x++){
    i=pgm_read_byte(px);
	px++;
	w_by(i);}
	}
}
void ini(void){		//初始化

	PORTC=0xff;DDRC=0xff;
	DDRB=0xff;
	DDRB|=(1<<PB3)|(1<<PB5);//设MOSI SCK 为输出
    SPCR=(1<<MSTR);// |(1<<DORD)|(1<<CPOL)|(1<<CPHA)
	SPSR=(1<<SPI2X);
    SPCR|=(1<<SPE);//使能SPI
	
}
/*
void dispaly(void){
 uch topline,liuid;
  uint daly;
  //jisuan();//算出各个参数的拆分值
  satline(0);
  openlcd();
  dis_tu(0,0,40,2,logo);
  dis_tu(0,2,64,2,set_t);
  dis_tu(0,5,64,2,dis_t);
            dis_tu(40,0,24,2,gantan);//故障
  xyini(0,0);
  for(topline=6;topline!=0;topline--)w_by(0x1,1);
            dis_tu(70,0,24,2,dian);//漏电
  xyini(30,0);
  for(topline=16;topline!=0;topline--)w_by(0x1,1);
  dis_tu(105,0,23,2,pentou);
  xyini(0,4);w_by(0xff,0);
  dis_tu(84,2,19,2,t_16);
  dis_tu(84,5,19,2,t_16);
  dis_tu(64,2,10,2,shu_16[sv_arry[1]]);//设定
  dis_tu(74,2,10,2,shu_16[sv_arry[0]]);//
  dis_tu(64,5,10,2,shu_16[t_arry[1]]);//温度
  dis_tu(74,5,10,2,shu_16[t_arry[0]]);
  dis_tu(106,2,16,2,&liu[1]);//流水
  for(topline=2;topline<8;topline++)
     {
     xyini(63,topline);
     w_by(0xff,1);}
  xyini(0,7);
  w_by(0xff,0);
//--------------------------------瞬时
    xyini(39,4);
  w_by(0xfc,1);
    xyini(39,5);
  w_by(0xff,1);
    xyini(39,6);
  w_by(0xff,1);
  
    xyini(61,4);
  w_by(0xfc,1);
    xyini(61,5);
  w_by(0xff,1);
    xyini(61,6);
  w_by(0xff,1);
  xyini(40,6);
  //-----------------
  wef(sun[2],1);
  wef(sun[1],1);
  w_by(0xc0,1);
  wef(sun[0],1);
  wef(10,1);
  //-------------------
  jindu_dis(7);
//----------------------------------//总累积
  xyini(1,7);
  w_by(0x80,0);
  wef(11,0);
  wef(12,0);
  for(topline=0;topline<7;topline++){
    wef(zonlei_arry[topline],0);
	}
  w_by(0xc0,0);
  wef(zonlei_arry[7],0);
  wef(10,0);
  for(topline=6;topline!=0;topline--)w_by(0x80,0);
  //-------------------------//本次累积
  xyini(0,7);
  for(topline=6;topline!=0;topline--)w_by(0x80,1);
  wef(13,1);
  wef(14,1);
  wef(15,1);
  w_by(0x80,1);
  w_by(0x80,1);
  w_by(0x80,1);
  w_by(0x80,1);
   wef(11,1);
   wef(12,1);
   wef(benlei_arry[3],1);
   wef(benlei_arry[2],1);
   wef(benlei_arry[1],1);
   w_by(0xc0,1);
   wef(benlei_arry[0],1);
   wef(10,1); w_by(0x80,1);
   w_by(0x80,1);
}
*/
int main(void){    //入口
uch i;
RESL;RESL;RESL;RESL;RESL;RESL;RESL;RESL;
RESH;
 ini();
 CSL;
	    w_com(0xaf);       //ON DISPLAY
        w_com(0xa0);       //左右屏交换
        w_com(0xa6);       //正反显
        w_com(0xa4);       //CLEAR 
        w_com(0xa3);       //1/9BIA
        w_com(0xc8);       //正反选择,C0  C8
        w_com(0x2f);       //POWER CONTROL
        w_com(0x81);       //VOLUM MODE SET
        w_com(0x20);       //显示亮度   
       	w_com(0xac);	   //static indicator off  
        startline(32);
		

dis(logo);
   while(1);
   
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -