简介: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; }
上一篇:CSMA协议在无线传感器网络中的实现
下一篇:基于MSP430的湿度计作品展示
推荐阅读最新更新时间:2024-10-20 13:52
设计资源 培训 开发板 精华推荐
- 有奖直播:瑞萨电子 R-Car 先进驾驶辅助系统方案
- EEworld新春感恩回馈之ST新出道“高富帅”STM32F746G-DISCO 199元包邮
- MPS有奖活动|绿色AI“芯” 动力,探索节能低碳的AI供电方案!
- 帮助他人,成就自己:EEWORLD月度问答榜(第4期)
- 已结束|TI 直播【创新下一代汽车网关系统】
- 报名有礼:【TI C2000在实时控制系统中的新特性】网络直播诚邀您参与!
- e络盟e选第三期:热门产品5折起,价格锁定更安心
- 双 11 拯救行动:用开发板治愈单身狗之忧桑
- 开发板芯币竞拍,每日一款!今日竞拍开发板:大黄蜂开发板
- Mentor线上研讨会丨FPGA仿真验证平台ModelSim应用进阶