电路设计,软件开发,专业项目团队承接电子产品开发!


ISPRO下载型编程器
火爆销售中

RS232/TTL转换器
全IC串口窃电

RS232/TTL转换线
全IC串口窃电

ByteBlasterMV Cable
CPLD/FPGA并口下载线

ByteBlaster II Cable ISPRO下载型编程器
支持S51/AVR/PIC
超级51开发板套件
前卫实用超值

PC/MCU/CPLD
三合一学习套件

全新万年历方案
AVR单片机开发板
 

Min51单片机仿真机
迷你型

ARM7开发板
仅售260元!
 

RS-232/RS-485双向接口电平转换器  

51单片机升级STM32
火爆销售中
MPLAB-ICD2
火爆销售中
LED51开发板
玩具又名图文显示棒

面板模块/开发板
经济危机明智决择

       

GSM MODEM GSM猫

SMS短信模块 工业级/全自动
火爆销售中

大功率数传电台

高速数传电台

您当前位置:电子技术资料 -> 外围驱动 -> LCD液晶显示 ->

祝您阅读愉快!

ISPRO下载型编程器

RS232 TO TTL转换器
↑↑本文相关产品介绍↑↑

带字库液晶显示模块12864(st7920控制器)msp430f149驱动程序


类别:技术文章
来源:未知
作者:未知
关键字:st7920
加入日期:2010-8-4

//液晶12864(st7920控制器)msp430f149驱动
//===========================================================================//
//名称:带字库液晶显示模块12864(st7920控制器)msp430f149驱动程序//
//中国电子网 www.EC66.com
//===========================================================================//
//===========================================================================//
//mcumsp430f149//
//晶振内部dco//
//p43rs//
//p42r/w//
//p41e//
//p40rst//
//p30-p37db//
//===========================================================================//
#include
/*************************/
#defineUcharunsignedchar
#defineUintunsignedint
#defineUlongunsignedlong
Ucharbusy,hang,lie;
/********************************/
//定义字符串数组*/
/********************************/
charSTR2[]="http://www.qfmcu.com";;
charSTR3[]="http://www.mcubbs.net";;
/**************************定义函数原型********************************/
voidDelayus(Ulongilinshi);/*延时函数*/
voidBUSYLOOP();//*判忙函数*//
voidWrite_command(UcharCMD,Ucharbb);//*发控制字函数*//
voidWrite_data(UcharCMD);//*发数据函数*//
voidCHUSHIHUA();//*初始化函数*//
voidCLEAR();//*清屏*//
voidDisplay(Uchar*ptr,Ucharddram);//**显字符串函数**//
/*********************************************延时
**************************************/
//voidDelayus(Ulongt)
//{Ulongi,j;
//for(i=0;i//for(j=0;j//;
//}
voidDelayus(Ulongilinshi)
{Ulongii;
for(ii=0;ii}
//*********************判忙函数************************//
voidBUSYLOOP()
{//P1=0x0ff;
//do{
//P4OUT&=0xf7;//RS=0;
//P4OUT|=0x04;//RW=1;
//P4OUT|=0x02;//E=1;
//busy=P3IN;//BUSY=P1;
//P4OUT&=0xfd;//E=0;
//}
//while(busy>0x7f);
Delayus(10);
}
//*********************写控制字函数****************************//
voidWrite_command(UcharCMD,Ucharbb)
{
if(bb)
{BUSYLOOP();}
P4OUT&=0xf7;//RS=0;
P4OUT&=0xfb;//RW=0;
P4OUT|=0x02;//E=1;
P3OUT=CMD;//P1=CMD;
Delayus(10);
P4OUT&=0xfd;//E=0;
}
//*********************写数据函数****************************//
voidWrite_data(UcharCMD)
{BUSYLOOP();
//Delayus(1000);
P4OUT|=0x08;//RS=1;
P4OUT&=0xfb;//RW=0;
P4OUT|=0x02;//E=1;
P3OUT=CMD;//P1=CMD;
Delayus(10);
P4OUT&=0xfd;//E=0;
}
/***************************清屏*************************************/
voidCLEAR()
{P4OUT&=0xf7;//RS=0;
P4OUT&=0xfb;//RW=0;
P4OUT|=0x02;//E=1;
P3OUT=0x01;//P1=0x01;
Delayus(10);
P4OUT&=0xfd;//E=0;
}
//*************************液晶初始化********************************//
voidCHUSHIHUA()
{
Delayus(40000);
Write_command(0x30,0);
Delayus(1500);
Write_command(0x30,0);
Delayus(400);
Write_command(0x0C,1);
Delayus(1500);
Write_command(0x01,1);
Delayus(15000);
Write_command(0x06,1);
}
/*=======================================================
显示字符串
=======================================================*/
voidDisplay(Uchar*ptr,Ucharddram)
{
Ucharl,i1,x;
l=0;
if(ddram<0x88)
{hang=0;}//定位行地址:第一行
elseif(ddram<0x90)
{hang=2;}//定位行地址:第三行
elseif(ddram<0x98)
{hang=1;}//定位行地址:第二行
else
{hang=3;}//定位行地址:第四行
lie=0x0f&ddram;//定位列地址
if(lie>0x07)
{lie=lie-0x08;}
x=lie*2;
Write_command(ddram,0);//定位显示起始地址
while((ptr[l])!="\0")
{l++;}
for(i1=0;i1{Write_data(ptr[i1]);//输出单个字符
x++;
if(x==0x10)
{x=0;
hang++;
switch(hang)
{
case0:Write_command(0x80,0);
break;
case1:Write_command(0x90,0);
break;
case2:Write_command(0x88,0);
break;
case3:Write_command(0x98,0);
}
if(hang>3)
{
Write_command(0x80,0);
hang=0;
}
}
}
}
/**************************主函数开始***********************************/
main()
{WDTCTL=WDTPW+WDTHOLD;//停止看门狗
DCOCTL=0XE0;//初始化时钟
BCSCTL1=0X86;
BCSCTL2=0X00;
P3DIR=0xff;
P3OUT=0x00;
P4DIR=0x0f;
P4OUT=0x00;
////////////////////////////////
CLEAR();
CHUSHIHUA();//初始化函数//
Display(STR2,0x80);//上面一行显示一个预定字符串
Display(STR3,0x88);
Delayus(200);
Write_command(0x9C,0);//将光标移到0x9C
Write_command(0x0f,0);//光标处反白闪烁
//write_command(0x08,0);//进入睡眠状态
//delayus(200);
//write_command(0x0C,0);//唤醒
while(1)
{;}
}
/*************************主函数结束*************************************/


您可能还会关注的相关技术资料:

中国电子网
www.EC66.com
QQ:34740080 EMAIL:iloveaoe@163.com
最佳浏览:1024*768
Copyright (C) 2001-2010 EC66.COM All Rights Reserved
Aoe/帝国 制作维护
粤ICP备18061901号