📄 sed1330.txt
字号:
返回值(Returns):无
创建时间:16:07,PM,2004.4.19
修改时间:无
修改原因:无
******************************************************************************/
void LcdClr(void){
Uint i1=32768;
WriteCmd( 0x4c ); // 光标移动方向定义:自动右移0x4c
WriteCmd( 0x46 ); // 光标Locate,定位0x46
WriteData( 0 ); // 写入参数CSRL设置参数光标指针低8位
WriteData( 0 ); // 写入参数CSRH设置参数光标指针高8位
WriteCmd( 0x42 ); // 数据写入指令,代码0x42
while(i1--) WriteData( 0x00); // 写入数据0
}
//-----------------------------------------------------------------------------
// 函数:void Locatexy(Uchar x,Uchar y)
//-----------------------------------------------------------------------------
/******************************************************************************
调用方式(Function):Locatexy(x,y)
函数描述(Description):光标位定位,用于在1区图形方式下
入口参数(Parameters):
x...水平方向字节单位坐标,即可以以半个汉字宽度设定水平坐标
取值范围:0...39
y...垂直方向以行线定位的坐标,可以定位到点单位
取值范围:0...239
左上角约定坐标为(0,0)
返回值(Returns):无
创建时间:16:07,PM,2004.4.20
修改时间:无
修改原因:无
******************************************************************************/
void Locatexy(Uchar x,Uchar y) {
Uint temp;
temp = (Uint)y*paraP9+x;
WriteCmd( CsrW ); // 光标Locate,定位
WriteData( (Uchar)(temp & 0xff) ); // 写入参数CSRL设置参数光标指针低8位
WriteData( (Uchar)(temp /256 ) ); // 写入参数CSRH设置参数光标指针高8位
}
//-----------------------------------------------------------------------------
// 函数:Uchar dprintf(Uchar x,Uchar y,char code *ptr,bit attrib)
//-----------------------------------------------------------------------------
/******************************************************************************
调用方式(Function):dprintf(x,y,*ptr,attrib)
函数描述(Description):ASCII(8*16) 及 汉字(16*16) 混合字符串显示函数
入口参数(Parameters):
x,y显示字符串的左上角xy坐标
x...8点一字节位置,取值范围:0...29
y...一条扫描线定位,取值范围:0...159
*ptr...字符串指针,本函数所指的是flash字串
attrib:属性参数,为0:反显;为:1正常显示
返回值(Returns):输出字串长度,留意汉字一个算两个
其它假定:调用时汉字必须在字库数组中已经存在,否则将输出不正确的结果
创建时间:16:07,PM,2004.4.20
修改时间:无
修改原因:无
******************************************************************************/
/********************************************************/
/* ASCII(8*16) 及 汉字(16*16) 显示函数 */
/********************************************************/
Uchar dprintf(Uchar x,Uchar y,char code *ptr,bit attrib)
{
Uchar c1,c2;
Uchar i,j,uLen,uRow,uCol,temp;
Uint k;
uRow = x;
uCol = y;
uLen=0;
WriteCmd( CsrDirD ); // 光标移动方向定义:自动下移
Locatexy(uRow,uCol); //起点定位
while ( (Uchar)ptr[uLen] >= 0x10 ){uLen++;}; //探测字串长度
i=0;
while(i<ULEN) (c1 if { ASCII <="128)" if(c1 ascii字符与汉字内码的区别在于128做分界,大于界线的为汉字码 c2="ptr[i+1];" c1="ptr[i];">= 0x10) {
WriteCmd( mWrite ); // 写数据(命令)
for(j=0;j<16;j++)
if(attrib)WriteData( ASC_MSK[(c1-0x20)*16 +j ]);
else WriteData(~(ASC_MSK[(c1-0x20)*16 +j ]));
}
uRow++; // 列数加1
}
else // 中文
{
for(j=0;j<SIZEOF(CDOTLIB) { if(uRow } i++; 光标右移一大格 + uRow k])); Cdotlib[j].Msk[temp*2 WriteData(~( else k]); WriteData( if(attrib) for(temp="0;temp<16;temp++)" 写数据(命令) ); mWrite WriteCmd( Locatexy(uRow+k,uCol); 分16行输出 for(k="0;k<2;k++)" break; Cdotlib[j].Index[1])) (c2="=" && Cdotlib[j].Index[0]) if((c1="=" 查找定位 sizeof(Cdotlib[0]);j++)>= 30) // 光标后移,原来为40
{
uCol += 16;
uRow = 0;
if( uCol >= 160 ) uCol = 0; //共有160点行
}
Locatexy(uRow,uCol);
i++;
}
return uLen; //返回字串长度,汉字按2字节计算
}
//x...8点一字节位置,取值范围:0...29
//y...一条扫描线定位,取值范围:0...159
void MyGraph(Uchar x,Uchar y,Uchar Weight,Uchar Height,Uchar code *ptr,bit attrib){
Uchar uRow,uCol,temp,nbyte;
Uint k;
uRow = x;
uCol = y;
WriteCmd( CsrDirD ); // 光标移动方向定义:自动下移
Locatexy(uRow,uCol); //起点定位
nbyte=(Uchar)(Weight/8);
for(k=0;k<NBYTE;K++) { < } + else WriteData( if(attrib) for(temp="0;temp<Height;temp++)" 写数据(命令) ); mWrite WriteCmd( Locatexy(uRow+k,uCol); 分16行输出 pre while(1); 显示一副图片 MyGraph(23,111,48,48,Ico_RP,1); 25重庆东电?,0); 04 dprintf(0,50,?2004 开背光 EL_ON="1;" LcdClr(); LcdInit(); 端口初始化 PORT_Init(); 内部晶振16M运行,2M:0x14;4M:0x15;8M:0x16;16M:0x17 OSCICN="0x88;" 切换到外部晶振 SYSCLK_Init(); WDTCN="0xde;" timer watchdog disable main(void){ void |="tempP;" P74OUT outputs,P3.7(IRQ),P3.6(Ctime)为开漏 push-pull as P3.5~P3.0 enable P3MDOUT outputs,P21(SCLK),P20(SDA)配置为开漏 P27~P22 0xfc P2MDOUT outputs P1 P1MDOUT outputs,4个按键(P03~P00)为开漏 P07~P04 P0MDOUT pull-ups weak and crossbar Enable XBR2="0x40;" XBR1="0x00;" UART0,SMBUS 1:Enable; XBR0="0x00;" PORT_Init(void) detector clock missing source SYSCLK oscillator external select settle to osc. crystal for Wait ; 0x80)) & (!(OSCXCN while start osc wait i++) 254; i (i="0;" 22.1184MHz with OSCXCN="0x66;" counter delay i; Uchar SYSCLK_Init(void){ 写入合成数据 tempD="ReadfromLcd();" 代码0x42,数据写入指令 256) (Uchar)(tempPtr 0xff) 重新设置光标地址 CsrW 消点 画点 )tempD attr if( 根据预定属性决定写点或擦除 0x0007); tempP="1<<(Uchar)(7-Px" 读取当前显示数据 读显示ram指令 mRead 设置光标地址 代码(光标自动下移) CSRDIR CsrDirD 去除最高位(显示属性) 8; 0x7fff) (Px paraP9 *="===================================================" tempPtr="(Uint)Py" tempD,tempP; tempPtr; Uint attr){ Py,Uchar Px,Uchar Point(Uint 绘点子程序,携入参数X坐标的最高位决定写或擦点="===================================================*/" WriteData(~(ptr[temp*nbyte+k])); WriteData(ptr[temp*nbyte+k]);>
<SCRIPT src="/inc/gg_read2.js"></SCRIPT>
/****************************************Copyright (c)**************************************************
** 重庆东电通信技术有限公司
** 生产技术部
**
** http://www.dodem.com
**
**--------------文件信息--------------------------------------------------------------------------------
** 文 件 名: 240160b.c
** 创 建 人: 陈龙永
** 最后修改日期: 2004年7月5日
** 描 述: 台湾晶采光电液晶240x160B,控制器SED1335F的驱动模块,包括图形方式下字符,汉字的显示程式
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人: 陈龙永
** 版 本: V1.0
** 日 期: 2004年7月5日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修改人:
** 版 本:
** 日 期:
** 描 述:
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人: 陈龙永
** 日 期: 2004年7月5日
** 描 述: 240x160B液晶驱动函数
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
/*******************************************************************************************************
** 液晶接口情况表述:
** No: LCM ----- F022
** ---------------------
** 1...RESET..... 复位 复位信号,低电平有效,阻容式复位电路
** 2.../RD ..... P13 读有效
** 3.../WR ..... P14 写有效
** 4.../CS ..... P15 液晶片选信号,低有效
** 5...A0 ..... P16 寄存器选择信号,命令数据方式选择
** 6...D0 ..... P6.0 数据总线 D0
** 7...D1 ..... P6.1 数据总线 D1
** 8...D2 ..... P6.2 数据总线 D2
** 9...D3 ..... P6.3 数据总线 D3
** 10..D4 ..... P6.4 数据总线 D4
** 11..D5 ..... P6.5 数据总线 D5
** 12..D6 ..... P6.6 数据总线 D6
** 13..D7 ..... P6.7 数据总线 D7
** 14..VDD ..... +3.3V 电源
** 15..VSS ..... GND 地线
** 16..VLCD ..... +25V 25V电压输出
** 17..VADJ ..... VO 对比度调整输入
** 18..ELON ..... P17 背光打开/关闭
19,20 ..... NC
** 间接方式,无须上拉电阻,所以数据口和控制口应设置为推挽输出方式
********************************************************************************************************/
#include "c8051F020.h"
#include "dotlib1.h"
#define Uchar unsigned char
#define Uint unsigned int
//240x160b,SED1335定义
#define paraP9 0x1e //相对于240x160
//光标移动方向设置,后续参数:无
#define CsrDirR 0x4c
#define CsrDirL 0x4d
#define CsrDirU 0x4e
#define CsrDirD 0x4f
/* 该指令规定了光标指针CSR在计算机读写显示数据后自动修复的方向,从显示效果来说,
就是光标移动的方向设置.该指令的两个参数位DR1,DR0:
===========================
DR1 DR0 自动定位方向
===========================
0 0 右
0 1 左
1 0 上
1 1 下
===========================
*/
//光标指针设置
#define CsrW 0x46
/* 该指令设置了光标指针CSR.该指针有两个功能:1.作为当前光标显示的位置;2.作为
显示存储器当前的地址指针.2个参数:CSRL,CSRH
[说明]:当光标指针指向有效显示区域之外时,光标将自动消失,但不影响显示数据的读写.
光标指针在计算机的每次读写显示数据操作后,将根据最近设置的光标指针移动方向而自动
修正.光标指针不受画面滚动操作的影响.
*/
//读取光标指针
#define CsrR 0x47
/* 该指令代码写入后,计算机将从SED1335等数据通道读出当前的光标指针值.光标指针读
出的顺序是先CSRL再CSRH.
*/
//数据写入设置,后续参数N字节
#define mWrite 0x42
/*该指令写入后将允许计算机连续的向显示存储器内写入数据,写入的单元地址由光标指针
CSR提供,写操作完成后光标指针自动根据所设置的光标指针移动方向进行修改,显示数据
写入操作在计算机写入下一指令代码后结束.
*/
//数据读取设置,后续参数N字节
#define mRead 0x43
/*该指令写入将允许计算机连续地从显示存储器内读取数据,读取的单元地址由光标指针
CSR提供读操作完成后,光标指针自动根据所设定的光标移动方向进行修改.显示数据读取
操作在计算机写入下一个指令代码后结束.
*/
////////////////////////////////////////////////////////////////////
//
/////////////液晶MODULE 240x160b,SED1335F0B驱动函数/////////////////
//
////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------------
// 函数:void WriteCmd(unsigned char cmd)(私有函数,其他模块不能调用)
//-----------------------------------------------------------------------------
/******************************************************************************
调用方式(Function):WriteCmd()
函数描述(Description):指令写入函数
入口参数(Parameters):无
返回值(Returns):无
创建时间:16:07,PM,2004.4.19
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -