📄 5026.txt
字号:
20mm双色(2R1G)显示模组扫描程序。
涉及芯片有,5026,245。
为静态扫描。
/***********头文件***************/
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
/************扫描****************/
uchar disp0 = 0x00;
uchar disp1 = 0xff;
uchar code disp[8][16] = {
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff},{0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00},
{0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00},
{0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00},
{0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00},
{0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00},
{0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00},
{0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
};
uchar code disp2[16][16] = {
{0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80},{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01},
};
uchar disp3[] = {0x80,0x40,0x20,0x01,0x08,0x04,0x02,0x01};
/************位口定义*************/
sbit STB = 0x93;
sbit SCLK = 0x94;
sbit RDD = 0x95;
sbit GDD = 0x96;
sbit OE = 0x97;
bit flag = 0;
uchar n = 2;
/************子函数声明***********/
void init();
void int0();
void SendRDate_5026(uchar RDate1,uchar RDate2);
void SendGDate_5026(uchar GDate1,uchar GDate2);
void SendRGDate_5026(uchar RGDate1,uchar RGDate2);
void Delay(uchar n);
void SendRRDate_5026(uchar RDate1,uchar RDate2);
void SendGGDate_5026(uchar RDate1,uchar RDate2);
void SendRRGGDate_5026(uchar RDate1,uchar RDate2);
/************主函数**************/
void main(void)
{
uchar i,j,k;
OE = 0;
init();
for(i=0;i<8;i++)
{
SendRGDate_5026(disp1,disp1);
Delay(10);
}
if(flag)
{
flag = 0;
while(1)
{
if(n==0)
{
for(i=0;i<8;i++)
{
SendGDate_5026(disp1,disp1);
_nop_();
}
}
else if(n==1)
{
for(i=0;i<8;i++)
{
SendRDate_5026(disp1,disp1);
_nop_();
}
}
else if(n==2)
{
for(j=0;j<8;j++)
{
for(i=0;i<8;i++)
{
SendRRDate_5026(disp[j][2*i],disp[j][2*i+1]);
_nop_();
}
STB = 1;
_nop_();
_nop_();
STB = 0;
for(k=0;k<10;k++)
{
Delay(100);
}
}
for(j=0;j<16;j++)
{
for(i=0;i<8;i++)
{
SendRRDate_5026(disp2[j][2*i],disp2[j][2*i+1]);
_nop_();
}
STB = 1;
_nop_();
_nop_();
STB = 0;
for(k=0;k<10;k++)
{
Delay(100);
}
}
for(j=0;j<8;j++)
{
for(i=0;i<8;i++)
{
SendGGDate_5026(disp[j][2*i],disp[j][2*i+1]);
_nop_();
}
STB = 1;
_nop_();
_nop_();
STB = 0;
for(k=0;k<10;k++)
{
Delay(100);
}
}
for(j=0;j<16;j++)
{
for(i=0;i<8;i++)
{
SendGGDate_5026(disp2[j][2*i],disp2[j][2*i+1]);
_nop_();
}
STB = 1;
_nop_();
_nop_();
STB = 0;
for(k=0;k<10;k++)
{
Delay(100);
}
}
for(j=0;j<8;j++)
{
for(i=0;i<8;i++)
{
SendRRGGDate_5026(disp[j][2*i],disp[j][2*i+1]);
_nop_();
}
STB = 1;
_nop_();
_nop_();
STB = 0;
for(k=0;k<10;k++)
{
Delay(100);
}
}
for(j=0;j<16;j++)
{
for(i=0;i<8;i++)
{
SendRRGGDate_5026(disp2[j][2*i],disp2[j][2*i+1]);
_nop_();
}
STB = 1;
_nop_();
_nop_();
STB = 0;
for(k=0;k<10;k++)
{
Delay(100);
}
}
}
}
}
}
/***********子函数***************/
void init()
{
EA = 1;
EX0 = 1;
IT0 = 1;
}
void int0() interrupt 0
{
flag = ~flag;
if(n<2)
{
++ n;
}
else
{
n = 0;
}
}
void SendRRDate_5026(uchar RDate1,uchar RDate2)
{
uchar i;
for(i=0;i<8;i++)
{
SCLK = 0;
if(RDate1&(0x80>>i))
{
RDD = 1;
GDD = 0;
}
else
{
RDD = 0;
GDD = 0;
}
SCLK = 1;
_nop_();
}
for(i=8;i<16;i++)
{
SCLK = 0;
if(RDate2&(0x80>>(i-8)))
{
RDD = 1;
GDD = 0;
}
else
{
RDD = 0;
GDD = 0;
}
SCLK = 1;
_nop_();
}
}
void SendRDate_5026(uchar RDate1,uchar RDate2)
{
uchar i;
for(i=0;i<8;i++)
{
SCLK = 0;
if(RDate1&(0x80>>i))
{
RDD = 1;
GDD = 0;
}
else
{
RDD = 0;
GDD = 0;
}
SCLK = 1;
_nop_();
}
for(i=8;i<16;i++)
{
SCLK = 0;
if(RDate2&(0x80>>(i-8)))
{
RDD = 1;
GDD = 0;
}
else
{
RDD = 0;
GDD = 0;
}
SCLK = 1;
_nop_();
}
STB = 1;
_nop_();
_nop_();
STB = 0;
}
void SendGGDate_5026(uchar GDate1,uchar GDate2)
{
uchar i;
for(i=0;i<8;i++)
{
SCLK = 0;
if(GDate1&(0x80>>i))
{
GDD = 1;
RDD = 0;
}
else
{
GDD = 0;
RDD = 0;
}
SCLK = 1;
_nop_();
}
for(i=8;i<16;i++)
{
SCLK = 0;
if(GDate2&(0x80>>(i-8)))
{
GDD = 1;
RDD = 0;
}
else
{
GDD = 0;
RDD = 0;
}
SCLK = 1;
_nop_();
}
}
void SendGDate_5026(uchar GDate1,uchar GDate2)
{
uchar i;
for(i=0;i<8;i++)
{
SCLK = 0;
if(GDate1&(0x80>>i))
{
GDD = 1;
RDD = 0;
}
else
{
GDD = 0;
RDD = 0;
}
SCLK = 1;
_nop_();
}
for(i=8;i<16;i++)
{
SCLK = 0;
if(GDate2&(0x80>>(i-8)))
{
GDD = 1;
RDD = 0;
}
else
{
GDD = 0;
RDD = 0;
}
SCLK = 1;
_nop_();
}
STB = 1;
_nop_();
_nop_();
STB = 0;
}
void SendRRGGDate_5026(uchar RGDate1,uchar RGDate2)
{
uchar i;
for(i=0;i<8;i++)
{
SCLK = 0;
if(RGDate1&(0x80>>i))
{
GDD = 1;
RDD = 1;
}
else
{
GDD = 0;
RDD = 0;
}
SCLK = 1;
_nop_();
}
for(i=8;i<16;i++)
{
SCLK = 0;
if(RGDate2&(0x80>>(i-8)))
{
GDD = 1;
RDD = 1;
}
else
{
GDD = 0;
RDD = 0;
}
SCLK = 1;
_nop_();
}
}
void SendRGDate_5026(uchar RGDate1,uchar RGDate2)
{
uchar i;
for(i=0;i<8;i++)
{
SCLK = 0;
if(RGDate1&(0x80>>i))
{
GDD = 1;
RDD = 1;
}
else
{
GDD = 0;
RDD = 0;
}
SCLK = 1;
_nop_();
}
for(i=8;i<16;i++)
{
SCLK = 0;
if(RGDate2&(0x80>>(i-8)))
{
GDD = 1;
RDD = 1;
}
else
{
GDD = 0;
RDD = 0;
}
SCLK = 1;
_nop_();
}
STB = 1;
_nop_();
_nop_();
STB = 0;
}
void Delay(uchar n)
{
uchar i;
for(;n>0;n--)
{
for(i=0;i<125;i++)
;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -