液晶程序 ST7290
/************************************************************************************
* Copyright (c) 2007,重庆优易特电子
* All rights reserved.
*
* 文件名称: main.c
* 文件标识: none
* 适用器件: STC89C51RC
*
* 摘 要: 7290液晶显示程序,可以显示汉字、字母、数字。并且液晶本身带字库
*
* 当前版本:1.0
* 作 者:行卫军
* 完成日期:2007年12月10日
*
*************************************************************************************/
#include "reg51.h"
#include "intrins.h"
sbit CS =P1^0;
sbit SID=P1^1;
sbit SCLK=P1^2;
sbit B_light=P2^7; //背光控制
void delay(unsigned int j)
{
unsigned char i;
do{
for(i=0;i <100;i++);
}while(j--);
}
void send_command(unsigned char command_data) //发送命令
{
unsigned char i;
unsigned char i_data,temp_data1,temp_data2;
i_data=0xf8; //操作命令,可以查看资料
delay(10);
CS=1;
SCLK=0;
for(i=0;i <8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data < <1;
}
i_data=command_data;
i_data&=0xf0;
for(i=0;i <8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data < <1;
}
i_data=command_data;
temp_data1=i_data&0xf0;
temp_data2=i_data&0x0f;
temp_data1> > =4;
temp_data2 < <=4;
i_data=temp_data1|temp_data2;
i_data&=0xf0;
for(i=0;i <8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data < <1;
}
CS=0;
}
void send_data(unsigned char command_data) //发送数据
{
unsigned char i;
unsigned char i_data,temp_data1,temp_data2;
i_data=0xfa; //操作命令,可以查看资料
delay(10);
CS=1;
for(i=0;i <8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data < <1;
}
i_data=command_data;
i_data&=0xf0;
for(i=0;i <8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data < <1;
}
i_data=command_data;
temp_data1=i_data&0xf0;
temp_data2=i_data&0x0f;
temp_data1> > =4;
temp_data2 < <=4;
i_data=temp_data1|temp_data2;
i_data&=0xf0;
for(i=0;i <8;i++)
{
SID=(bit)(i_data&0x80);
SCLK=0;
SCLK=1;
i_data=i_data < <1;
}
CS=0;
}
void InitLCD() //液晶初始化
{
send_command(0x30); //功能设置:一次送8位数据,基本指令集
send_command(0x06); //点设定:显示字符/光标从左到右移位,DDRAM地址加1
send_command(0x0c); //显示设定:开显示,显示光标,当前显示位反白闪动
send_command(0x04); //显示设定:开显示,显示光标,当前显示位反白闪动
send_command(0x01); //清DDRAM
send_command(0x02); //DDRAM地址归位
send_command(0x80); //把显示地址设为0X80,即为第一行的首位
}
/* flagnew 是刷新标志位,1则刷新,0不刷新,
x,y为起始座标 x(0 <=x <=3),y(0 <=y <=7),x为行座标,y为列座标;
how为要显示汉字的个数;
str是要显示汉字的地址 */
void DispHanzi(unsigned char x,unsigned char y,unsigned char how,unsigned char *stri)
{
unsigned char hi=0; //汉字显示
if(x==0) send_command(0x80+y); //
else if(x==1) send_command(0x90+y);
else if(x==2) send_command(0x88+y);
else if(x==3) send_command(0x98+y);
for(hi=0;hi <how;hi++)
{
send_data(*(stri+hi*2));
send_data(*(stri+hi*2+1));
}
}
void DispZimu(unsigned char x,unsigned char y,unsigned char how,unsigned char *stri)//字母数字都可以显示
{
unsigned char hi=0; //字母显示
if(x==0) send_command(0x80+y);
else if(x==1) send_command(0x90+y);
else if(x==2) send_command(0x88+y);
else if(x==3) send_command(0x98+y);
for(hi=0;hi <how;hi++)
{
send_data(*(stri+hi));
}
}
main()
{
InitLCD();
B_light=0;
DispHanzi(0,5,3,"实验板");
DispZimu(0,1,8,"Easy51-B");
DispHanzi(1,0,8,"重庆市优易特电子");
DispZimu(2,0,16,"www.u-easytech.c");
DispZimu(3,0,2,"om");
while(1);
}
代理销售STM32芯片、最小系统开发学习板(各种档次芯片开发学习板188元以下)
代理销售台达PLC、变频器等工控产品。
销售 51实验板 销售 51学习板 销售 51最小系统板 销售 51开发板
销售 89C51F040开发板 销售 89C51F020开发板 销售 ADUC0832开发板
销售 51工控板和例程 销售 51工控板和例程 销售 51工控板和例程
提供课程设计、实验学习51系统板,和多达40多个例程,只需150元,只相当一个开发板的价格、你还可获得我们的在线服务。
为广大学子提供优秀的毕设计方案和再学习机会,只需1000元学习、毕业论文两不误。
长期提供嵌入式培训;三菱PLC、台达PLC和欧母龙PLC的编程欧培训;组态王开发培训;Protol 99应用培训等软硬件设计培训服务。
以我们的系统开以方案为您提供充分的学习平台,用我们实时的交流平台为您带来技术上质的飞越,
重庆市优易特电子
联系人:行卫军
电话:023-62111023 023-68659661 023-62209634
网址: <;
单片机菜鸟群:17373243单片机中级学习群:(会员才能加入)
QQ:370302924
我们的服务终止是:用我们的技术给你带来方便和效益。
发表时间:2008年3月12日20:00:32