📄 sed.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 + -