历史上的今天
今天是:2025年01月30日(星期四)
2018年01月30日 | MSP430液晶SED1335控制器程序
2018-01-30 来源:eefocus
//------------------------------------------------------------
//MSP430子程序(液晶控制器子程序)
//声明:转载请保留以上信息,用于商业用途,请联系作者
//------------------------------------------------------------
// Control SED1335
// Function show
//------------------------------------------------------------
#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;
}
史海拾趣
|
UPS 按照工作方式可分为: 在线式 (OLINE) 、在线互动式 (LINE INTERACTIVE)后备式 (OFF LINE) 3 种。由于在线式 UPS有其他 UPS电源和稳压电源无法比拟的优点 , 使在线式 UPS在各行业得到了广泛的应用。1 在线式 UPS工作原理… 查看全部问答> |
|
1、输入端与输出端的边线应避免相邻平行, 以免产生反射干扰。必要时应加地线隔离;两相邻层的布线要互相垂直,平行容易产生寄生耦合。 2、地线>电源线>信号线,通常信号线宽为:8mil~12mil;电源线为50mil~100mil。对数字电路 ...… 查看全部问答> |
|
我写了一个很简单的程序,窗口上就两个按钮,用于动态分配和释放内存.打开WinCE.net的SystemProperties的Memory选项卡查看内存情况,发现分配可以,但按了释放内存的按钮却不能释放内存,不知原因,望高手指点!… 查看全部问答> |
|
报名参与:『ADI实验室电路DIY大赛』正式启动!https://bbs.eeworld.com.cn/thread-293726-1-1.html ADI实验室电路品种繁多,涉及面很广,如何选择合适的DIY项目可能是件容易令人困扰的事,但深究起来,其实可玩性是很大的,从今天开始,我将陆续 ...… 查看全部问答> |
|
大家帮看看为什么DeviceIoControl访问OID_802_11_BSSID_LIST老是失败 如题,下面一段程序中,DeviceIoControl访问OID_802_11_BSSID_LIST老是失败(见下面红色),也就是说bResult一直等于0;为什么?请教牛人!!!可能的问题出现在哪?为什么第二个DeviceIoControl失败?#include \"stdafx.h\"#include <windows.h ...… 查看全部问答> |
|
卓跃教育发现随着采用Android系统的谷歌手机、平板电脑等产品逐渐扩大市场占有率,Android平台人才的缺口日益显现。据业内统计,目前国内的3G研发人才缺口有三、四百万,其中Android研发人才缺口至少30万。&n ...… 查看全部问答> |




