📄 12
字号:
/*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 PORTD
#define sdo 0x1
#define clk 0x2
#define A0 0x4
#define RES 0x8
#define CS 0x10
#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){
CSL;CSL;
A0H;
s_spi(x);
CSH;
}
void w_com(uch x){
CSL;CSL;
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;
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++;
xyini(0,y);
w_by(i);}
}
}
void ini(void){ //初始化
PORTD=0xff;DDRD=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();
//PORTD=0xaa;
w_com(0xaf); //ON DISPLAY
w_com(0xa1); //左右屏交换
w_com(0xa6); //
w_com(0xa4); //CLEAR
w_com(0xa3); //1/9BIAS
w_com(0xc0); //正反选择,
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 + -