?? 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 + -