📄 c8051f020_s1d1330_sed1335.txt
字号:
/*包含头文件*/
#i nclude <absacc.h>
#i nclude <c8051f020.h>
#i nclude "code.h"
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define AP 40 //一行8点320/4=40个字节
//----------------端口定义-----------------
#define LCD_DATA P4//13358位数据输入
sbit A0= P3^2; //1335数据类型选择
sbit RD= P3^0; // 读选择 ,低电平有效
sbit WR= P3^1; //1335写
//====================常量定义========
uchar SYSTAB[8]={0x30,0x87,0x07,39,52,239,40,0x00};
uchar SCRTAB[10]={0x00,0x00,240,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
//----------------------------- 定义变量-----------------
bit bdata lcd_fanxian;
uchar *add;
/******************************************************************************************
*函数名: WriteCommand
*参数: uchar sys_data,要写的命令字
*返回值: 无
*描述: 向lcd 写命令,lcd write a command byte function
*编写: 罗维平
*版本信息: V1.0 2006年1月7日
******************************************************************************************/
void WriteCommand(uchar sys_data)
{
uchar i;
A0=1;
LCD_DATA=sys_data; //写命令字
for(i=0;i<5;i++);
// RD=1;
// for(i=0;i<10;i++);
WR=0;
for(i=0;i<5;i++);
WR=1;
for(i=0;i<5;i++);
// A0=0;
// for(i=0;i<10;i++);
}
/******************************************************************************************
*函数名: WriteData
*参数: uchar display_data,要显示的数据
*返回值: 无
*描述: 向lcd 写数据,lcd write a display byte function
*编写: 罗维平
*版本信息: V1.0 2006年1月7日
******************************************************************************************/
void WriteData(uchar display_data)
{
uchar i;
A0=0;
// for(i=0;i<10;i++);
LCD_DATA=display_data;
for(i=0;i<5;i++);
// RD=1;
// for(i=0;i<10;i++);
WR=0;
for(i=0;i<5;i++);
WR=1;
for(i=0;i<5;i++);
// A0=1;
// for(i=0;i<10;i++);
}
/******************************************************************************************
*函数名: clear
*参数: 无
*返回值: 无
*描述: 清显示屏RAM
*编写: 罗维平
*版本信息: V1.0 2006年1月7日
******************************************************************************************/
void clear(void)
{
uint i,j;
WriteCommand(0x4c); //读写显示数据后光标向右移动
WriteCommand(0x46); //当前光标显示的位置 显示存储器当前的地址指针
WriteData(0x00);
WriteData(0x00); //地址为0000
WriteCommand(0x42); //数据写入设置 地址有光标决定 方向有光标最近设置光标移动方向决定
for(i=255;i>0;i--)
{
for(j=125;j>0;j--)
{
WriteData(0x00);
}
}
}
/******************************************************************************************
*函数名: intglcd
*参数: 无
*返回值: 无
*描述: SED1335驱动芯片的初始化函数
*编写: 罗维平
*版本信息: V1.0 2006年1月7日
******************************************************************************************/
void intglcd(void)
{
uint counter;
uchar i;
for(counter=0;counter<50000;counter++);
WriteCommand(0x40);
for(i=0;i<8;i++)
{
WriteData(SYSTAB[i]);
} //SET 初始化设置 8
WriteCommand(0x44);
for(i=0;i<10;i++)
{
WriteData(SCRTAB[i]);
} //显示域设置 10
WriteCommand(0x5a);
WriteData(0x00);
WriteCommand(0x5b);
WriteData(0x0c); //显示合成设置 显示一三区为图形显示
clear(); // 清显示屏
WriteCommand(0x4c); /* 光标自动向右增一*/
WriteCommand(0x5d);
WriteData(0x02);
WriteData(0x0f);
WriteCommand(0x59); //显示总开关
WriteData(0x16); //显示开关状态设置?开显示一区
}
/******************************************************************************************
*函数名: WRCC32
*参数: 无
*返回值: 无
*描述: 显示32*32点阵汉字
*编写: 罗维平
*版本信息: V1.0 2006年1月7日
******************************************************************************************/
void WRCC32(uchar ox,uchar oy,uchar code1)
{
uchar i,k;
WriteCommand(0x4f); //读写显示数据后光标向下移动 CSR+AP
for(k=0;k<4;k++)
{
WriteCommand(0x46); //设置当前显示地址
WriteData((AP*oy+ox+k)%256); //显示地址低字节
WriteData((AP*oy+ox+k)/256); //显示地址高字节
WriteCommand(0x42); //计算显示地址指针数据
for(i=0;i<32;i++)
{
if(lcd_fanxian)
{
WriteData(~CCTA32[code1][i*4+k]);
}
else
{
WriteData(CCTA32[code1][i*4+k]);
}
}
}
}
/******************************************************************************************
*函数名: WRCC24
*参数: uchar ox,
uchar oy,
uchar code1,
*返回值: 无
*描述: 显示24*24点阵汉字
*编写: 罗维平
*版本信息: V1.0 2006年1月7日
******************************************************************************************/
void WRCC24(uchar ox,uchar oy,uchar code1)
{
uchar i,k;
WriteCommand(0x4f);
for(k=0;k<3;k++)
{
WriteCommand(0x46);
WriteData((AP*oy+ox+k)%256);
WriteData((AP*oy+ox+k)/256);
WriteCommand(0x42);
for(i=0;i<24;i++)
{
if(lcd_fanxian)
{
WriteData(~CCTA24[code1][i*3+k]);
}
else
{
WriteData(CCTA24[code1][i*3+k]);
}
}
}
}
/******************************************************************************************
*函数名: WRCC16
*参数: uchar ox,
uchar oy,
uchar code1,
*返回值: 无
*描述: 显示16*16点阵汉字
*编写: 罗维平
*版本信息: V1.0 2006年1月7日
******************************************************************************************/
void WRCC16(uchar ox,uchar oy,uchar code1)
{
uchar i,k;
WriteCommand(0x4f);
for(k=0;k<2;k++)
{
WriteCommand(0x46);
WriteData((AP*oy+ox+k)%256);
WriteData((AP*oy+ox+k)/256);
WriteCommand(0x42);
for(i=0;i<16;i++)
{
if(lcd_fanxian)
{
WriteData(~CCTA16[code1][i*2+k]);
}
else
{
WriteData(CCTA16[code1][i*2+k]);
}
}
}
}
/******************************************************************************************
*函数名: WRCC8
*参数: uchar ox,
uchar oy,
uchar code1,
*返回值: 无
*描述: 显示8*16点阵数字,字母
*编写: 罗维平
*版本信息: V1.0 2006年1月7日
******************************************************************************************/
void WRCC8(uchar ox,uchar oy,uchar code1)
{
uchar i;
WriteCommand(0x4f);
WriteCommand(0x46);
WriteData((AP*oy+ox)%256);
WriteData((AP*oy+ox)/256);
WriteCommand(0x42);
for(i=0;i<16;i++)
{
if(lcd_fanxian)
{
WriteData(~CCTA8[code1][i]);
}
else
{
WriteData(CCTA8[code1][i]);
}
}
}
void main(void)
{
uint i;
WDTCN=0xde;
WDTCN=0xad;
//晶振配置,采用内部晶振,默认为2MHz(八分频)
//允许时钟丢失监测器
// OSCICN = 0x97;
// OSCXCN = 0x00;
OSCXCN = 0x67; // start external oscillator with
// 18.432MHz crystal
for (i=0; i < 256; i++) ; // Wait for osc. to start up
while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
OSCICN = 0x08; // select external oscillator as SYSCLK
// source and disable missing clock
// detector 禁止时钟丢失检测
XBR0 = 0x07; // Route SMBus to GPIO pins through crossbar
XBR1 = 0x00;
XBR2 = 0x40; // Enable crossbar and weak pull-ups
P0MDOUT= 0x00;
P1MDIN = 0xFF;
P3MDOUT = 0xFF; //1.8 推挽
P74OUT=0x03; //1.8 添加,非常重要,配置成推挽方式
P0=0xFF;
P2 &= 0x7f;
intglcd();
// lcd_fanxian=1;
WRCC8(8,150,0);
WRCC8(9,150,1);
WRCC32(8,100,0);
WRCC16(2,10,0);
WRCC16(5,10,1);
WRCC16(8,10,3);
WRCC16(11,10,2);
WRCC16(14,10,4);
WRCC16(17,10,5);
WRCC16(20,10,6);
WRCC16(23,10,7);
WRCC16(26,10,8);
WRCC16(29,10,9);
WRCC16(32,10,10);
WRCC16(2,30,10);
WRCC16(5,30,11);
WRCC16(8,30,12);
WRCC16(11,30,13);
WRCC16(14,30,14);
WRCC16(17,30,15);
WRCC16(20,30,16);
WRCC16(23,30,17);
WRCC16(26,30,18);
WRCC16(29,30,19);
WRCC16(32,30,20);
WRCC24(20,100,0);
WRCC24(25,100,1);
while(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -