📄 24c256.c
字号:
#include<reg51f.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//#define addwr 0xa0
//#define addrd 0xa1
sbit wp=P0^3;
sbit scl=P0^2;
sbit sda=P0^1;
uchar data column;
uchar data page;
sbit rs=P2^5;
sbit lcd_e=P2^4;
sbit cs1=P3^3;
sbit cs2=P3^4;
sbit rst=P3^5;
//sbit page_4=P1^4;
//sbit busy=P1^7;
/*char code hanzi[4][32]={0x40,0xb0,0x92,0x96,0x9a,0x92,0xf2,0x9e,0x92,0x91,0x99,0x95,0x91,0x50,0x30,0x00,
0x00,0x00,0x40,0x30,0x8c,0x83,0x46,0x2a,0x12,0x2a,0x26,0x42,0xc0,0x40,0x00,0x00,
0x20,0x24,0x24,0x24,0xfe,0x23,0x22,0x20,0xff,0x20,0x22,0xac,0x20,0x30,0x20,0x00,
0x00,0x08,0x48,0x84,0x7f,0x02,0x21,0x10,0x09,0x06,0x1a,0x61,0x80,0xe0,0x00,0x00,
0x00,0xf8,0x08,0x08,0x08,0x08,0x08,0xff,0x08,0x08,0x08,0x08,0x08,0xfc,0x08,0x00,
0x00,0x03,0x01,0x01,0x01,0x01,0x01,0xff,0x01,0x01,0x01,0x01,0x01,0x03,0x00,0x00,
0x00,0x40,0x20,0x10,0xfc,0x03,0x40,0x20,0x10,0xff,0x08,0x04,0x06,0xc0,0x00,0x00,
0x04,0x04,0x04,0x04,0x05,0x04,0x04,0xff,0x94,0x04,0x05,0x05,0x05,0x05,0x40,0x00
};*/
//char code en_A[16]={0x00,0x00,0xE0,0x18,0x18,0xE0,0x00,0x00,0x30,0x0F,0x04,0x04,0x04,0x04,0x0F,0x30};
//char code en_W[16]={0xF8,0x00,0xC0,0x38,0xC0,0x00,0xF8,0x00,0x03,0x3C,0x03,0x00,0x03,0x3C,0x03,0x00};
//char code en_Y[16]={0x08,0x30,0xc0,0x00,0xc0,0x30,0x08,0x00,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x00};
//char code en_C[16]={0xe0,0x10,0x08,0x08,0x08,0x10,0x60,0x00,0x0f,0x10,0x20,0x20,0x20,0x10,0x0c,0x00};
//char code en_O[16]={0x00,0xe0,0x10,0x08,0x08,0x10,0xe0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00};
//char code en_M[16]={0xf8,0xe0,0x00,0x00,0x00,0xE0,0xf8,0x00,0x3f,0x00,0x0f,0x30,0x0f,0x00,0x3F,0x00};
//char code en_aa[16]={0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00,0x01,0x03,0x06,0x0C,0x06,0x03,0x01,0x00};
char code en_0[16]={0xF8,0xFC,0x04,0xC4,0x24,0xFC,0xF8,0x00,0x07,0x0F,0x09,0x08,0x08,0x0F,0x07,0x00};
char code en_1[16]={0x00,0x10,0x18,0xFC,0xFC,0x00,0x00,0x00,0x00,0x08,0x08,0x0F,0x0F,0x08,0x08,0x00};
char code en_2[16]={0x08,0x0C,0x84,0xC4,0x64,0x3C,0x18,0x00,0x0E,0x0F,0x09,0x08,0x08,0x0C,0x0C,0x00};
char code en_3[16]={0x08,0x0C,0x44,0x44,0x44,0xFC,0xB8,0x00,0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00};
char code en_4[16]={0xC0,0xE0,0xB0,0x98,0xFC,0xFC,0x80,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00};
char code en_5[16]={0x7C,0x7C,0x44,0x44,0xC4,0xC4,0x84,0x00,0x04,0x0C,0x08,0x08,0x08,0x0F,0x07,0x00};
char code en_6[16]={0xF0,0xF8,0x4C,0x44,0x44,0xC0,0x80,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00};
char code en_7[16]={0x0C,0x0C,0x04,0x84,0xC4,0x7C,0x3C,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00};
char code en_8[16]={0xB8,0xFC,0x44,0x44,0x44,0xFC,0xB8,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00};
char code en_9[16]={0x38,0x7C,0x44,0x44,0x44,0xFC,0xF8,0x00,0x00,0x08,0x08,0x08,0x0C,0x07,0x03,0x00};
char code en_v[16]={0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00,0x01,0x03,0x06,0x0C,0x06,0x03,0x01,0x00};
char code en_i[16]={0x00,0x00,0x04,0xFC,0xFC,0x04,0x00,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00};
char code en_c[16]={0xF0,0xF8,0x0C,0x04,0x04,0x0C,0x18,0x00,0x03,0x07,0x0C,0x08,0x08,0x0C,0x06,0x00};
char code en_t[16]={0x00,0x1C,0x0C,0xFC,0xFC,0x0C,0x1C,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00};
char code en_o[16]={0xF0,0xF8,0x0C,0x04,0x0C,0xF8,0xF0,0x00,0x03,0x07,0x0C,0x08,0x0C,0x07,0x03,0x00};
char code en_r[16]={0x04,0xFC,0xFC,0x44,0xC4,0xFC,0x38,0x00,0x08,0x0F,0x0F,0x00,0x00,0x0F,0x0F,0x00};
char code en_y[16]={0x00,0x3C,0x7C,0xC0,0xC0,0x7C,0x3C,0x00,0x00,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00};
char code en_h[16]={0xFC,0xFC,0x40,0x40,0x40,0xFC,0xFC,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00};
char code en_a[16]={0xE0,0xF0,0x98,0x8C,0x98,0xF0,0xE0,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00};
char code en_s[16]={0x18,0x3C,0x64,0x44,0xC4,0x9C,0x18,0x00,0x06,0x0E,0x08,0x08,0x08,0x0F,0x07,0x00};
char code en_e[16]={0x04,0xFC,0xFC,0x44,0xE4,0x0C,0x1C,0x00,0x08,0x0F,0x0F,0x08,0x08,0x0C,0x0E,0x00};
char code en_f[16]={0x04,0xFC,0xFC,0x44,0xE4,0x0C,0x1C,0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x00,0x00};
char code en_m[16]={0xFC,0xFC,0x38,0x70,0x38,0xFC,0xFC,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00};
char code en_q[16]={0xF8,0xFC,0x04,0x04,0x04,0xFC,0xF8,0x00,0x07,0x0F,0x08,0x0E,0x3C,0x3F,0x27,0x00};
char code en_mao[16]={0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00,0x00,0x00};
char code en_gang[16]={0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
char code en_z[16]={0x60,0x60,0x20,0xA0,0xE0,0x60,0x20,0x00,0x0C,0x0E,0x0B,0x09,0x08,0x0C,0x0C,0x00};
char code en_u[16]={0xFC,0xFC,0x00,0x00,0x00,0xFC,0xFC,0x00,0x07,0x0F,0x08,0x08,0x08,0x0F,0x07,0x00};
char code en_n[16]={0xFC,0xFC,0x38,0x70,0xE0,0xFC,0xFC,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00};
char code en_d[16]={0x04,0xFC,0xFC,0x04,0x0C,0xF8,0xF0,0x00,0x08,0x0F,0x0F,0x08,0x0C,0x07,0x03,0x00};
char code en_b[16]={0x04,0xFC,0xFC,0x44,0x44,0xFC,0xB8,0x00,0x08,0x0F,0x0F,0x08,0x08,0x0F,0x07,0x00};
void delay();
void send_dat_l(uchar d);
void send_dat_r(uchar d);
void send_dat_disp_l(uchar d);
void send_dat_disp_r(uchar d);
void ini();
void cls_l();
void cls_r();
void disp_l(uchar row,uchar col,char *p);
void disp_r(uchar row,uchar col,char *p);
void hanzi_disp();
void delay()
{
_nop_();_nop_();_nop_();
}
void send_dat_l(uchar d)
{
rs=0;rs=0;
cs1=1;cs1=1;delay();delay();//cs2=0;cs2=0;
lcd_e=1;lcd_e=1;
P1=d;P1=d;//delay();delay();
lcd_e=0;lcd_e=0;
cs1=0;cs1=0;
}
void send_dat_r(uchar d)
{
rs=0;rs=0;
cs2=1;cs2=1;delay();delay();//cs1=1;cs1=1;
lcd_e=1;lcd_e=1;
P1=d;P1=d;//delay();delay();
lcd_e=0;lcd_e=0;
cs2=0;cs2=0;
}
void send_dat_disp_l(uchar d)
{
rs=1;rs=1;
cs1=1;cs1=1;delay();delay();//cs2=1;cs2=1;
lcd_e=1;lcd_e=1;
P1=d;P1=d;//delay();delay();
lcd_e=0;lcd_e=0;
cs1=0;cs1=0;
}
void send_dat_disp_r(uchar d)
{
rs=1;rs=1;
cs2=1;cs2=1;delay();delay();//cs1=1;cs1=1;
lcd_e=1;lcd_e=1;//delay();delay();
P1=d;P1=d;//delay();delay();
lcd_e=0;//lcd_e=0;
cs2=0;cs2=0;
}
void ini()
{
lcd_e=0; rs=0; cs1=cs2=0;//delay();
send_dat_l(0x3e);//关显示命令
//delay();
send_dat_r(0x3e);//关显示命令
//delay();
send_dat_l(0x3f);//开显示命令
//delay();
send_dat_r(0x3f);//开显示命令
//delay();
send_dat_l(0xc0);//设置起始行
//delay();
send_dat_r(0xc0);//设置起始行
//delay();
}
void cls_l()
{
uchar data i,j,disp_page;
for(i=0;i<8;i++)
{
disp_page=i;
disp_page=disp_page|0xb8;//设置页地址
send_dat_l(disp_page);
send_dat_l(0x40); //设置列地址
for(j=0;j<64;j++)
{
//delay();
send_dat_disp_l(0x00);
}
}
}
void cls_r()
{
uchar data i,j,disp_page;
for(i=0;i<8;i++)
{
disp_page=i;
disp_page=disp_page|0xb8;//设置页地址
send_dat_r(disp_page);
send_dat_r(0x40); //设置列地址
for(j=0;j<64;j++)
{
//delay();
send_dat_disp_r(0x00);
}
}
}
void disp_l(uchar row,uchar col,char *p)
{
uchar hang,lie;
uchar k;
//char idata ch;
//hang=lie=k=0;
hang=row;
lie=col;
hang=hang|0xb8;
lie=lie|0x40;
send_dat_l(hang);
send_dat_l(lie);
for(k=0;k<8;k++)
{ //ch=*p;
send_dat_disp_l(*p);
p++;
}
hang+=1;
send_dat_l(hang);
send_dat_l(lie);
for(k=0;k<8;k++)
{ //ch=*p;
send_dat_disp_l(*p);
p++;
}
}
void disp_r(uchar row,uchar col,char *p)
{
uchar hang,lie;
uchar k;
//char idata ch;
//hang=lie=k=0;
hang=row;
lie=col;
hang=hang|0xb8;
lie=lie|0x40;
send_dat_r(hang);
delay();
send_dat_r(lie);
delay();
for(k=0;k<8;k++)
{ //ch=*p;
send_dat_disp_r(*p);
p++;
//delay();
//delay();delay();
}
//delay();
//delay();
hang=hang+1;
send_dat_r(hang);
delay();
send_dat_r(lie);
delay();
for(k=0;k<8;k++)
{ //ch=*p;
send_dat_disp_r(*p);
p++;
//delay();//delay();delay();
}
}
/*void hanzi_disp()
{
uchar data i;
cls_l();
cls_r();
disp_l(0,0,&hanzi[4][32]);
for(i=0;i<4;i++)
{
}
for(i=0;i<4;i++)
{
}
}
*/
void mdelay(uchar j)
{
uchar i;
for(;j>0;j--)
{
for(i=0;i<125;i--)
{;}
}
}
void start(void)
{
sda=1;
scl=1;
_nop_();_nop_();_nop_();_nop_();
sda=0;
_nop_();_nop_();_nop_();_nop_();
}
void stop(void)
{
sda=0;
scl=1;
_nop_();_nop_();_nop_();_nop_();
sda=1;
_nop_();_nop_();_nop_();_nop_();
}
void ack(void)
{
sda=0;
scl=1;
_nop_();_nop_();_nop_();_nop_();
scl=0;
_nop_();_nop_();_nop_();_nop_();
}
void noack(void)
{
sda=1;
scl=1;
_nop_();_nop_();_nop_();_nop_();
scl=0;
_nop_();_nop_();_nop_();_nop_();
}
void send(uchar a)
{
uchar bitchar=8;
//uchar temp;
do
{
//temp=a;
scl=0;
_nop_();_nop_();_nop_();_nop_();
if((a&0x80)==0x80)
sda=1;
else
sda=0;
scl=1;
a=a<<1;
//a=temp;
bitchar--;
mdelay(20);
}while(bitchar);
scl=0;
}
uchar read(void)
{
uchar temp=0;
uchar temp1=0;
uchar bitcounter=8;
sda=1;
do{
scl=0;
_nop_();_nop_();_nop_();_nop_();
scl=1;
_nop_();_nop_();_nop_();_nop_();
if(sda)
temp=temp|0x01;
else
temp=temp&0xfe;
if(bitcounter-1)
{
temp=temp<<1;
//temp=temp1;
}
bitcounter--;
mdelay(20);
}while(bitcounter);
return(temp);
}
void wrtorom(uchar array[],uchar address,uchar num)
{
uchar i;
uchar *ppdata;
ppdata=array;
for(i=0;i<num;i++)
{
start();
send(0xa0);
ack();
// _nop_();_nop_();_nop_();_nop_();
send(address+i);
ack();
// _nop_();_nop_();_nop_();_nop_();
send(*(ppdata+i));
ack();
//_nop_();_nop_();_nop_();_nop_();
stop();
mdelay(20);
mdelay(20);
mdelay(20);
//i+=2;
}
}
void rdfromrom(uchar array[],uchar address,uchar num)
{
uchar i;
uchar *ppdata;
ppdata=array;
for(i=0;i<num;i++)
{
start();
send(0xa0);
ack();
// _nop_();_nop_();_nop_();_nop_();
send(address+i);
ack();
//_nop_();_nop_();_nop_();_nop_();
start();
send(0xa1);
ack();
// _nop_();_nop_();_nop_();_nop_();
*(ppdata+i)=read();
scl=0;
noack();
stop();
//i+=2;
}
}
void displaynumqian(uchar a)//显示千位数
{
switch(a)
{
case 0: disp_r(4,0,&en_0[0]); break;
case 1: disp_r(4,0,&en_1[0]); break;
case 2: disp_r(4,0,&en_2[0]); break;
case 3: disp_r(4,0,&en_3[0]); break;
case 4: disp_r(4,0,&en_4[0]); break;
case 5: disp_r(4,0,&en_5[0]); break;
case 6: disp_r(4,0,&en_6[0]); break;
case 7: disp_r(4,0,&en_7[0]); break;
case 8: disp_r(4,0,&en_8[0]); break;
case 9: disp_r(4,0,&en_9[0]); break;
default: break;
}
}
void displaynumbai(uchar a)//显示百位数
{
switch(a)
{
case 0: disp_r(4,10,&en_0[0]); break;
case 1: disp_r(4,10,&en_1[0]); break;
case 2: disp_r(4,10,&en_2[0]); break;
case 3: disp_r(4,10,&en_3[0]); break;
case 4: disp_r(4,10,&en_4[0]); break;
case 5: disp_r(4,10,&en_5[0]); break;
case 6: disp_r(4,10,&en_6[0]); break;
case 7: disp_r(4,10,&en_7[0]); break;
case 8: disp_r(4,10,&en_8[0]); break;
case 9: disp_r(4,10,&en_9[0]); break;
default: break;
}
}
void displaynumshi(uchar a)//显示十位数
{
switch(a)
{
case 0: disp_r(4,20,&en_0[0]); break;
case 1: disp_r(4,20,&en_1[0]); break;
case 2: disp_r(4,20,&en_2[0]); break;
case 3: disp_r(4,20,&en_3[0]); break;
case 4: disp_r(4,20,&en_4[0]); break;
case 5: disp_r(4,20,&en_5[0]); break;
case 6: disp_r(4,20,&en_6[0]); break;
case 7: disp_r(4,20,&en_7[0]); break;
case 8: disp_r(4,20,&en_8[0]); break;
case 9: disp_r(4,20,&en_9[0]); break;
default: break;
}
}
void displaynumge(uchar a)//显示个位数
{
switch(a)
{
case 0: disp_r(4,30,&en_0[0]); break;
case 1: disp_r(4,30,&en_1[0]); break;
case 2: disp_r(4,30,&en_2[0]); break;
case 3: disp_r(4,30,&en_3[0]); break;
case 4: disp_r(4,30,&en_4[0]); break;
case 5: disp_r(4,30,&en_5[0]); break;
case 6: disp_r(4,30,&en_6[0]); break;
case 7: disp_r(4,30,&en_7[0]); break;
case 8: disp_r(4,30,&en_8[0]); break;
case 9: disp_r(4,30,&en_9[0]); break;
default: break;
}
}
main()
{ //uchar i;
uchar number[4]={9,8,7,6};
wp=0;
wrtorom(number,90,4);
mdelay(20);
// number[0]=0;
// number[1]=0;
// number[2]=0;
// number[3]=0;
rdfromrom(number,90,4);
//number[1]=0;
//number[3]=0;
cs1=cs2=0;
//delay();delay();
rst=1;
delay();
delay();
ini();
cls_l();
cls_r();
//while(1)
//{
disp_l(0,54,&en_o[0]);
disp_l(0,44,&en_t[0]);
disp_l(0,34,&en_c[0]);
disp_l(0,24,&en_i[0]);
disp_l(0,14,&en_v[0]);
disp_l(2,0,&en_f[0]);
disp_l(2,10,&en_r[0]);
disp_l(2,20,&en_e[0]);
disp_l(2,30,&en_q[0]);
disp_l(2,40,&en_mao[0]);
disp_r(2,0,&en_1[0]);
disp_r(2,10,&en_h[0]);
disp_r(2,20,&en_z[0]);
disp_l(4,0,&en_c[0]);
disp_l(4,10,&en_o[0]);
disp_l(4,20,&en_u[0]);
disp_l(4,30,&en_n[0]);
disp_l(4,40,&en_t[0]);
disp_l(4,50,&en_mao[0]);
displaynumqian(number[0]);
displaynumbai(number[1]);
displaynumshi(number[2]);
displaynumge(number[3]);
disp_l(6,4,&en_s[0]);
disp_l(6,14,&en_t[0]);
disp_l(6,24,&en_a[0]);
disp_l(6,34,&en_n[0]);
disp_l(6,44,&en_d[0]);
disp_l(6,54,&en_b[0]);
disp_r(6,1,&en_y[0]);
disp_r(0,1,&en_r[0]);
// for(i=0;i<100;i++);
disp_r(0,11,&en_y[0]);
// for(i=0;i<100;i++);
disp_r(0,21,&en_gang[0]);
// for(i=0;i<100;i++);
// disp_l(2,30,&en_C[0]);
disp_r(0,31,&en_4[0]);
// for(i=0;i<100;i++);
while(1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -