📄 sed1335控制器汉字显示.txt
字号:
关于SED1335控制器汉字显示 [Xiao Zhiquan] [34次] 01-4-23 下午 08:52:37
那位高手知道SED1335控制器汉字显示编程,我有其汇编程序,但看不懂。
什么程序? [牧童] [24次] 01-4-23 下午 09:45:43
我以前用过sed1330我想差不多,有一个汉字显示的例子,我后来看懂了,我也不知道你什
么地方不明白,你可以给我发email:hao_wei@china.com,我或许可以帮你。
我也在做这个 [Dermao] [23次] 01-4-24 11:51:08
我现在正用C来做,我想汇编的思路也差不多,主要就是先写CSRW(set cursor
address),再CSRDIR(set the cursor auto-increment direction),再MWRITE(write
to the display memory)好了,数据都是点阵了。
仔细传授可以吗? [Xiao Zhiquan] [8次] 01-4-24 15:48:08
你是否看了其使用手册和汇编程序?我想将它变成C程序,但每看懂汇编。能否具体讲讲C编程的
思路?
关于SED1335控制器汉字显示C程序 [zx] [41次] 01-4-25 上午 10:48:35
//对液晶控制器SED1330的读写
#include <W77C32.H>
#include "sch.h"
#define SYSTEM_SET 0X40
#define SLEEP_IN 0X53
#define DISP_ON 0X59
#define DISP_OFF 0X58
#define SCROLL 0X44
#define CSRFORM 0X5D
#define CGRAM_ADR 0X5C
#define CSRDIR_UP 0X4E
#define CSRDIR_DOWN 0X4F
#define CSRDIR_LEFT 0X4D
#define CSRDIR_RIGHT 0X4C
#define HDOT_SCR 0X5A
#define OVLAY 0X5B
#define CSRW 0X46
#define CSRR 0X47
#define MWRITE 0X42
#define MREAD 0X43
#define SAD1 0
#define SAD2 0x2580
#define SAD3 0x4B00
#define AP 40
#define Turn_OFF 0
#define Turn_ON 1
#define Twinkle_in_slow 2
#define Twinkle_in_fast 3
unsigned char code Cursor[4]={0,1,2,3};
unsigned char code First_area[4]={0,0x4,0x8,0xC};
unsigned char code Sec_Fourth_area[4]={0,0x10,0x20,0x30};
unsigned char code Third_area[4]={0,0x40,0x80,0xC0};
unsigned char code system_set_code[8]
={0x30,0x87,0x07,39,60,239,40,0};
// ={0x30,0x87,0x07,39,66,240,48,0};
unsigned char code scroll_set_code[10]
={0x0,0x0,240,0x80,0x25,240,0x00,0x4B,0x80,0x70};
// ={0x0,0x0,240,0x80,0x25,240,0x00,0x4B,0x80,0x70};
// ={0x0,0x0,240,0x00,0x10,240,0x00,0x01,0x00,0x18};
void SED1330_system_set(void)
{
unsigned char temp;
SED1330_set_instruction = SYSTEM_SET;
for(temp = 0; temp <8; temp++)
{
SED1330_set_data = system_set_code[temp];
}
}
void SED1330_scroll_set(void)
{
unsigned char temp;
SED1330_set_instruction = SCROLL;
for(temp = 0; temp <10; temp++)
{
SED1330_set_data = scroll_set_code[temp];
}
}
void SED1330_set_display_memory(unsigned char * temp_display_memory,unsigned
int length)
{
unsigned int temp;
SED1330_set_instruction = MWRITE;
for(temp = 0; temp <length; temp++)
{
SED1330_set_data = *(temp_display_memory + temp);
}
}
void SED1330_get_display_memory(unsigned char * temp_display_memory,unsigned
int length)
{
unsigned int temp;
SED1330_set_instruction = MREAD;
for(temp = 0; temp <length; temp++)
{
*(temp_display_memory + temp) = SED1330_read_data;
}
}
/*
void SED1330_set_CGRAM_address(unsigned int SAG)
{
SED1330_set_instruction = CGRAM_ADR;
SED1330_set_data = SAG % 256;
SED1330_set_data = SAG / 256;
}
unsigned int SED1330_get_cursor_address(void)
{
unsigned int temp;
SED1330_set_instruction = CSRR;
temp = SED1330_read_data;
temp <<=8;
temp += SED1330_read_data;
return(temp);
}
void SED1330_sleep_IN(void)
{
SED1330_set_instruction = SLEEP_IN;
ENBL = 1;
}
*/
void SED1330_set_cursor_address(unsigned int cursor_address)
{
SED1330_set_instruction = CSRW;
SED1330_set_data = cursor_address % 256;
SED1330_set_data = cursor_address / 256;
}
void SED1330_display_switch(unsigned char on_off,unsigned char P1)
{
SED1330_set_instruction = on_off;
SED1330_set_data = P1;
}
void SED1330_csrdir(unsigned char dir)
{
SED1330_set_instruction = dir;
}
void SED1330_set_overlay(unsigned char overlay_mode)
{
SED1330_set_instruction = OVLAY;
SED1330_set_data = overlay_mode;
}
void SED1330_set_cursor_mode(unsigned char x, unsigned char y)
{
SED1330_set_instruction = CSRFORM;
SED1330_set_data = x;
SED1330_set_data = y;
}
void SED1330_set_horizontal_scroll(unsigned char P1)
{
SED1330_set_instruction = HDOT_SCR;
SED1330_set_data = P1;
}
非常感谢,很实用,你在哪儿找的? [Dermao] [7次] 01-4-25 下午 04:13:10
十分感谢 [Xiao Zhiquan] [6次] 01-4-25 下午 04:26:57
还有问题 [Dermao] [13次] 01-4-25 下午 05:44:39
(1)我用的sed1335,在定义显示区首地址时,是从0开始由左向右再折回的顺序吗?
(2)我现在这样用,lcd是宽240,高320,那在定义显示区时该如何定义?比如它只有一个
字节来指定行数,那现在就是320行了,不够,怎么办?
关于SED1335控制器汉字显示 [zx] [24次] 01-4-26 下午 02:47:40
程序是我自己照液晶手册编的,据说1335 和1330 一样。
对于不同的显示屏,只需修改
unsigned char code system_set_code[8]
={0x30,0x87,0x07,39,60,239,40,0};
// ={0x30,0x87,0x07,39,66,240,48,0};
unsigned char code scroll_set_code[10]
={0x0,0x0,240,0x80,0x25,240,0x00,0x4B,0x80,0x70};
源程序中的数组就是320x240的。设置时不需指定行数,而是指定显存
的起始地址:0x80,0x25,layer2的起始地址0x2580,
0x00,0x4B,layer3的起始地址0x4B00,
zhangxun_@263.net
各位帮帮忙:帮我看看这个程序(LCD sed1335) [jackli] [9次] 01-9-18 下午 12:21:57
这是图形显示模块的子程序,用PICKHZ.EXE提取的字模能正常显示,用horse2000横向取模
时,我改了一点,但却不能正常显示,我对字模的情况所知无几那位大虾请多多指点帮我改
改这程序!
对于SED1335的显示原理俺还是搞不懂,特别怎样控制320*240个点?#4f指令的用法,
CCTW: MOV A,COD
MOV B,#20H
MUL AB
MOV DPTR,#CCTAB1
ADD A,DPL
PUSH ACC
MOV A,B
ADDC A,DPH
PUSH ACC
MOV A,OY
MOV B,#AP
MUL AB
ADD A,OXL
MOV OXL,A
MOV A,B
ADDC A,#40H
MOV OY,A
MOV DPTR,#WC_ADD
MOV A,#4fH
movx @dptr,a
MOV COUNT1,#02H
CCTW1: MOV DPTR,#WC_ADD
MOV A,#46H
movx @DPTR,A
MOV DPTR,#WD_ADD
MOV A,OXL
movx @DPTR,A
MOV A,OY
movx @DPTR,A
mov dptr,#WC_ADD
MOV A,#42H
movx @DPTR,A
MOV COUNT2,#10H
CCTW2: POP DPH
POP DPL
CLR A
MOVC A,@A+DPTR
INC DPTR
inc dptr;这是我所加的
PUSH DPL
PUSH DPH
MOV DPTR,#WD_ADD
movx @DPTR,A
DJNZ COUNT2,CCTW2
{ POP DPH
POP DPL
MOV A,COD
MOV B,#20H
MUL AB
MOV DPTR,#CCTAB1
INC DPTR
ADD A,DPL
PUSH ACC
MOV A,B
ADDC A,DPH
PUSH ACC}这儿是我加的原想是隔一字模写一次。
MOV A,OXL
ADD A,#01H
MOV OXL,A
MOV A,OY
ADDC A,#00H
MOV OY,A
DJNZ COUNT1,CCTW1
POP ACC
POP ACC
ret
点击这里回复这篇贴子>>
_____________________________________________________________________________
Copyright?,C51BBS论坛 2000-2001
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -