MSP430控制SED1335液晶显示源程序例程
2021-04-23 来源:eefocus
简介:MSP430控制SED1335液晶显示源程序例程
/*-------------------------------------
基于MSP430单片机子程序
功能:SED1335液晶控制器子程序
介绍:SED1335是日本SEIKOEPSON公司出品的液晶显示控制器,在同类产品中是功能很强。其特点为:有较强功能的I/O缓冲器;指令功能丰富;四位数据并行发送;图形和文本方式混合显示。
来源:晖创电子网:www.schuitron.comMSP430源程序例程
------------------------------- */
#define WC_ADD XBYTE[0xC100]
#define WD_ADD XBYTE[0xC000]
#define RD_ADD XBYTE[0xC100]
#define RB_ADD XBYTE[0xC000]
void INTR(void);
void CLEAR(void); /* 信号输入 x [0---319] ,y [0---239] */
void CCTW(unsigned int x,unsigned char y,unsigned char m,unsigned char n,unsigned char *p);
void dot (unsigned int x,unsigned char y,bit c); /* c=1 划点 c=0 取消点*/
void INTR(void)
{
unsigned char code SYSTAB[]={0x30,0x87,0x07,0x27,0x42,0xf0,0x28,0x00}; // control parameter
unsigned char code SCRTAB[]={0x00,0x00,0xf0,0x00,0x40,0xf0,0x00,0x80,0x00,0x00};
unsigned char i=0x0;
WC_ADD = 0x40;
for(i = 0 ;i < 8; i++)
{
WD_ADD = SYSTAB;
}
WC_ADD = 0x44;
for(i = 0;i < 10;i++)
{
WD_ADD = SCRTAB;
}
WC_ADD = 0x5a;
WD_ADD = 0x0;
WC_ADD = 0x5b;
WD_ADD = 0x0;
WC_ADD = 0x59;
WD_ADD = 0x54;
}
void CLEAR(void)
{
unsigned char i=0,j=0;
WC_ADD = 0x4c;
WC_ADD = 0x46;
WD_ADD = 0x0;
WD_ADD = 0x0;
WC_ADD = 0x42;
for(i = 0;i < 255;i++)
{
for(j = 0;j < 255;j++)
{ WD_ADD = 0x0;
}
}
}
void CCTW(unsigned int x,unsigned char y,unsigned char m,unsigned char n,unsigned char *p)
{
unsigned char ap=0x28,i,j,k,tt=0,uu=0,rr=0,ee=0,ff=0,gg=0; /*ap 修改 P7, 行字符个数 */
unsigned int l;
tt = x%8;
x=x/8;
l = y*ap + x+0x4000;
x = (unsigned char)(l&0x00ff);
y = (unsigned char)((l&0xff00)>>8);
WC_ADD=0x4c; /*设置光标“右”移动方式 */
for(i=0;i< n;i++)
{
WC_ADD = 0x46; /* 光标指针设置 */
WD_ADD = x; /* 光标地址16位 */
WD_ADD = y;
if(tt==0)
{
WC_ADD = 0x42; /* 连续写入数据*/
for (j=0;j WD_ADD = *p; p++ ; } } /* 0 1 2 3 */ else { /* 0---7 8---16 17---24 25---32*/ for(j=0;j RD_ADD=0x43; /* 读数据 */ uu=RD_ADD; rr=RD_ADD; /*-----------------------------------------------------*/ gg=*p; /* 处理数据*/ p++; k=uu>>(8-tt); k=k<<(8-tt); // 高位 ee=k; k=gg>>tt; // 移高位作为低位 ee=ee|k; /*-----------*/ k=rr<k=k>>tt; // 低位 ff=k; k=gg<<(8-tt); ff=ff|k; /*--------------------------------------------------------------*/ WC_ADD=0x4d; /*改变光标“左”移动方式 */ RD_ADD=0x43; k=RD_ADD; k=RD_ADD; WC_ADD=0x4c; /*非复光标“右”移动方式 */ WC_ADD = 0x42; /* 送数据两个 */ WD_ADD =ee; WD_ADD =ff; /*本送一个数据,前面送了两个,需要返回一个*/ WC_ADD=0x4d; /*改变光标“左”移动方式 */ RD_ADD=0x43; k=RD_ADD; k=RD_ADD; WC_ADD=0x4c; /*非复光标“右”移动方式 */ RD_ADD=0x43; k=RD_ADD; } } l=(ap+x+(y<<8)); x=(unsigned char)(l&0x00ff); y=(unsigned char)((l&0xff00)>>8); } } void dot (unsigned int x,unsigned char y,bit c) { unsigned char ap=0x28,tt=0,uu=0,gg=0,k=0; /*ap 修改 P7, 行字符个数 */ unsigned int l=0; tt = x%8; x = x/8; l = y*ap + x+0x4000; x = (unsigned char)(l&0x00ff); y = (unsigned char)((l&0xff00)>>8); WC_ADD = 0x4c; WC_ADD = 0x46; /* 光标指针设置 */ WD_ADD = x; /* 光标地址16位 */ WD_ADD = y; RD_ADD=0x43; /* 读数据 */ uu=RD_ADD; if(c) { gg = 1; gg =gg<<(7-tt); uu=uu|gg; } else { gg = 1; gg =gg<<(7-tt); gg = ~gg; uu=uu≫ } WC_ADD=0x4d; RD_ADD=0x43; k=RD_ADD; WC_ADD = 0x4c; /*非复光标“右”移动方式 */ WC_ADD = 0x42; /* 送数据两个 */ WD_ADD = uu; }
下一篇:基于MSP430的湿度计作品展示
- MSP430f5529LP通过串口数据控制LED亮灭
- msp430f5529入门(1)自创按键控制LED灯实验
- MSP430F5529火箭板 ---> 控制时钟系统输出频率实验(含时钟系统分析)
- 低功耗的c语言编程,关于低功耗msp430PID控制电机转速的C程序
- msp430单片机(一)控制LED灯的亮灭
- 基于MSP430G2553的模拟风扇控制系统
- MSP430G2553 PWM控制速度,并自我检测和简单调节速度
- MSP430F5529-编码器电机控制小车的进退
- TI - MCU - MSP430使用指南5 -> ICC中断控制器
- TI - MCU - MSP430使用指南3 -> SYS系统控制