找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

如何去除下面这段程序的液晶显示屏的光标

[复制链接]
admin 发表于 2012-9-2 22:32:40 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
#include <msp430x24x.h>
#ifndef _HLCD_H_
#define _HLCD_H_

#define LCDSTD BIT1 //宏定义LCD接口
#define LCDSCLK BIT2
#define LCDCS BIT0

void Lcd_Io();
void WriteBit(char B);
void WriteByte(char B,char I);
void LCD_init(void);
void LCDWriteLine(int Line,unsigned int HZCode[10]);
void Delay();

//------------------------对LCD所用的端口进行初始化------------------------
void Lcd_Io()
{
P2SEL&=~(BIT0+BIT1+BIT2);//5.0,5.1,5.127接LCD显示
P2DIR|=(BIT0+BIT1+BIT2);//5.0--CS,5.1--STD,5.2--SCLK

P2SEL&=~BIT4;//5.4接背光,初始为灭
P2DIR|=BIT4;
P2OUT&=~BIT4;
}
//---------------------------------延时函数-----------------------------------
void Delay(unsigned int De)
{
while(De--);
}

//------------------------------LCD位书写函数------------------------------
//书写一位信息,对应时序图上CLK一个脉冲的操作
void WriteBit(char B)
{
int De;
if(B!=0)P2OUT|=LCDSTD;//STD=1
else P2OUT&=~LCDSTD;

P2OUT|=LCDSCLK;//SCLK=1
De=18;while(De--);
P2OUT&=~LCDSCLK;//SCLK=0
}

//-----------------------------LCD字节书写函数-----------------------------
//书写一个字节,用此函数可以向LCD写机内码位一个字节的字符,如果要书写机内码为
//16位的字符,应该连续调用此函数两次
void WriteByte(char B,char I)
{
int De,i;

P2OUT|=LCDCS;//片选有效CS=1

for(i=1;i<6;i++)WriteBit(1);//5个空脉冲,数据为1

WriteBit(0);//RW=0
De=15;while(De--);
WriteBit(I);//写指令还是数据?
De=15;while(De--);
WriteBit(0);//写一个0
De=15;while(De--);

WriteBit(B&0x0080);//写第7位
De=15;while(De--);
WriteBit(B&0x0040);//写第6位
De=15;while(De--);
WriteBit(B&0x0020);//写第5位
De=15;while(De--);
WriteBit(B&0x0010);//写第4位
De=15;while(De--);

for(i=1;i<5;i++) WriteBit(0);//4个空脉冲,数据为0
De=15;while(De--);

WriteBit(B&0x0008);//写第3位
De=15;while(De--);
WriteBit(B&0x0004);//写第2位
De=15;while(De--);
WriteBit(B&0x0002);//写第1位
De=15;while(De--);
WriteBit(B&0x0001);//写第0位
De=15;while(De--);

for(i=1;i<5;i++) WriteBit(0);//4个空脉冲,数据为0
De=15;while(De--);

P2OUT&=~LCDCS;//片选无效 CS=0
}

//-------------------------------LCD初始化函数--------------------------------
void LCD_init(void)
{
Lcd_Io();
Delay(3);
WriteByte(0x30,0);Delay(2);//8比特控制,基本指令集
WriteByte(0x01,0);Delay(2);//清屏
WriteByte(0x06,0);Delay(2);//光标自动右移一位,整屏不移动
WriteByte(0x0c,0);Delay(2);
}

//-------------------------------LCD行书写函数--------------------------------
//对LCD一行进行写操作,入口参数Line为写操作目标行,HZCode为一行字符的机内码
void LCDWriteLine(int Line,unsigned int HZCode[8])
{
int i;
switch (Line)
{
case 1:Line=0x80;break;
case 2:Line=0x90;break;
case 3:Line=0x88;break;
case 4:Line=0x98;break;
}
WriteByte(Line,0);
Delay(1000);
for (i=0;i<8;i++)
{
WriteByte((HZCode&0xff00)>>8,1);
WriteByte(HZCode&0x00ff,1);
}
}

#endif
#define uchar unsigned char
void int_clk()
{
uchar i;
BCSCTL1&=~XT2OFF;//XT
BCSCTL2|=SELM1+SELS;
do
{
IFG1 &=~OFIFG;
for(i=0;i<100;i++)

_NOP();
}
while((IFG1&OFIFG)!=0);
IFG1&=~OFIFG;
}
main()
{
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
int Line=1;
unsigned int HZCode[8]={0xd611,0xd611,0xd611,0xd611,0xd611,0xd611,0xd611,0xd611};
int_clk();
LCD_init();
Lcd_Io();
LCDWriteLine(Line,HZCode);

}
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-29 12:31 , Processed in 0.049387 second(s), 9 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表