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

📄 sed.c

📁 c51 lcd sed1330显示驱动
💻 C
字号:

#include  <reg51.h>
#include  <intrins.h>
#include  <absacc.h>
#define   WC_ADD  XBYTE[0x0001] /*定义写命令地址*/
#define WD_ADD  XBYTE[0x0000] /*定义写数据地址*/
/* SYSTEM SET  代码 */ 
unsigned char code SYSTAB[8]={0x30,0x87,0x0F,0x27,0x42,0x0F0,0x28,0x00};
/* SCROLL 代码 */
unsigned char code SCRTAB[10]={0x00,0x00,0x0f0,0x00,0x40,
0x0f0,0x00,0x80,0x00,0x0};
void main()
{
SED1330_inital();  /* SED1330 初始化成*/
show_one(6,56,“沈铁科研所”);  /* 在坐标(6,56)处显示汉字 */
for(;;) { }  /* 等待 */
}
/*----------------------------------------
---------------------------------*/
void SED1330_inital(void)
{  /* SED1330 初始化紫程序 */
unsigned char i;
CS_SED();    /* 使 SED1330片选有效 */
WC_ADD = 0x40;  /* 写入SYSTEM SET 代码 */
for(i=0;i<8;i++) {  WD_ADD = SYSTAB[i]; }
WC_ADD = 0x44;  /* 写入SCROLL 代码 */
for(i=0;i<10;i++)  { WD_ADD = SCRTAB[i]; }
WC_ADD = 0x5A; WD_ADD = 0;  /* 写入SCROLL 代码 */
WC_ADD = OVLAY; WD_ADD = 0x0C; /* 写入SCROLL 代码 */
WC_ADD = DISPON; WD_ADD = 0x04; /* 写入SCROLL 代码 */
}
void show (unsigned int x,unsigned char y,unsigned char *string)
{  /*显示汉字子程序*/
unsigned char i,j,k,csrL,csrH;
unsigned int cursor_addr;
/* 计算光标地址*/
cursor_addr = x + y * (SYSTAB[3]+1);
WC_ADD = 0x4F; /* 设置光标移动方向 */
k=0;
for(;string[k]  != 0;)
{
hzk_readpoint(&string[k]);/* 读取汉字点阵信息 */
CS_SED();    /* 使 SED1330片选有效 */
WC_ADD = 0x46;WD_ADD = cursor_addr % 256;WD_ADD = cursor_addr / 256;
WC_ADD = 0x42;    /* 向SED1330写入汉字信息的左半部分 */
for(j=0;j<16;j++) { WD_ADD = DBYTE[0x50+j*2];  }
cursor_addr ++ ; /* 光标地址加1 */
WC_ADD = 0x46;WD_ADD = cursor_addr % 256;WD_ADD = cursor_addr / 256;
WC_ADD = 0x42; /* 向SED1330写入汉字信息的右半部分 */
for(j=0;j<16;j++) { WD_ADD = DBYTE[HZ_POINT_ADR+j*2+1];   }
cursor_addr ++ ; /* 光标地址加1 */
WC_ADD = 0x4F;   /* 设置光标移动方向 */
k=k+2;   /*取下一个汉字*/
}
}
/*-----------------------------------------
--------------------------------*/
void hzk_readpoint(unsigned char singlehz[2])
{  /* 读取汉字库点阵信息子程序 */
unsigned char i,hzk_r_temp[2];
hzk_r_temp[0] = singlehz[0];
hzk_r_temp[1] = singlehz[1];
/* 计算汉字点阵在字库中的起始地址 */
hzk_r_temp[0]=hzk_r_temp[0]&0x7f;
hzk_r_temp[0]=hzk_r_temp[0]-0x21;
hzk_r_temp[1]=hzk_r_temp[1]&0x7f;
hzk_r_temp[1]=hzk_r_temp[1]-0x21;
LowPointer = hzk_r_temp[0] * 94 + hzk_r_temp[1];
Pointer = (unsigned long)LowPointer * (unsigned long)32;
HighPointer = Pointer / 0x0ffff;
LowPointer = Pointer & 0x0ffff;
CS_HZK(); /*使硬汉字库的片选有效*/
/* 计算并设置高3位地址A16、A17、A18 */
A16 = HighPointer & 0x01;
A17 = HighPointer & 0x02;
A18 = HighPointer & 0x04;
for(i=0;i<32;i++)/*   读取汉字点阵信息,并存入0x50开始的内部RAM */
{ DBYTE[0x50+i] = XBYTE[ LowPointer]; LowPointer++; }

⌨️ 快捷键说明

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