导航:首页 > 编程语言 > 12232f液晶屏c程序

12232f液晶屏c程序

发布时间:2021-10-25 20:09:58

⑴ 51单片机 12232液晶屏的操作程序

i_data&=0xf0; // i_data=i_data&0xf0; 高位字节与上1则不变,低四位则被清零 ,因为该12864为串行方式写入,一次需写入8个bit,故内采用循环结构比较好操容作,建议多看DATASHEET以及C语言相关

⑵ 哪位有RT12232B液晶模块的驱动程序C语言编的急!

ford=s:100,

path=[];

ifparent(d)~=0%ifthereisapath!

%path=[];

t=d;

path=[d];

whilet~=s

p=parent(t);

path=[ppath];ifnetCostMatrix(t,farthestPreviousHop(t))<netCostMatrix(t,p)

farthestPreviousHop(t)=p;

⑶ 在哪里可以找到12232F的并行方式C语言显示程序

unit ServerUnit;

interface

uses
Windows, Messages, SysUtils, Classes, Forms,ScktComp,Registry;

type
TFrmServer = class(TForm)
ServerSocket1: TServerSocket;
procere FormCreate(Sender: TObject);
procere ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
procere FormShow(Sender: TObject);
procere ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procere ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
private
{ Private declarations }
procere ClearRegistry;
public
{ Public declarations }
end;

var
FrmServer: TFrmServer;
implementation

{$R *.dfm}//取得本机IP

procere TFrmServer.FormCreate(Sender: TObject);
var
roc:TRegistry;
FileName:string;
begin
{将窗口启动就设为最小界面}
FrmServer.Height :=0;
FrmServer.Width :=0;
// Application.ShowMainForm:=False;
{程序不出现主窗口,但在远程控制中不能用。不然无法连接。也许是我的方法不对吧}

{程序不出现在任务栏}
SetWindowLong(Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE)
or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW);
{当程序一被执行就将自己写入注册表。己用来以后自动启动}
Filename:=Application.ExeName;
roc:=Tregistry.Create ;
roc.RootKey:=HKEY_LOCAL_MACHINE;
roc.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',False);
roc.WriteString('servers',filename);
roc.Destroy;
end;

procere TFrmServer.ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode:=0;
end;

procere TFrmServer.FormShow(Sender: TObject);
begin
ServerSocket1.Port :=7857; {设置端口数}
ServerSocket1.Active :=True; {激活}
end;

procere TFrmServer.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
Receive:string;
N:integer;
begin
Receive:=Socket.ReceiveText ;
N:=StrToInt(Receive);
case n of
1:winexec('netsh interface ip set address "Local Area connection" static 192.168.0.199 255.255.255.0',sw_hide);
2:winexec('netsh interface ip set address "Local Area connection" static 192.168.0.200 255.255.255.0',sw_hide);
3:FrmServer.Close;
4:ClearRegistry;
end;
end;

procere TFrmServer.ClearRegistry;
var
roc:TRegistry;
begin
roc:=Tregistry.Create ;
roc.RootKey:=HKEY_LOCAL_MACHINE;
roc.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Run',False);
roc.DeleteValue('servers');
roc.Destroy;
end;

procere TFrmServer.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode:=0;
end;

end.

⑷ 12864液晶屏显示图片,对应郭天祥的TX-1C开发板的程序!

TX-1C过时了

⑸ 求!!液晶显示 HDG12864f-3 c程序

下面是我机子上调试过的一个程序,希望那个对你有所帮助。。

祝你好运~~~~~~

/*****************************************************************/
/* */
/*名称: LCD12864显示程序 */
/*功能: 显示英文,数字,符号,图片。 */
/*难度等级: 高 */

/*****************************************************************/

#include <reg52.h>
#include <string.h>

#define uchar unsigned char

/**********引脚定义*********/

sbit lck = P3^5;//锁存信号

/********常用命令及参数定义********/
#define DISPON 0x3f
#define DISPOFF 0x3e
#define DISPFIRST 0xc0
#define SETX 0x40
#define SETY 0xb8
#define LCDBUZY 0x80
#define L 0x00
#define R 0x40
#define LIMIT 0x80

/**********全局变量************/
uchar cbyte;
uchar data statu;
bit xy;

/**************函数******************/

void WrL(uchar x);
void WrR(uchar x);
void Lcmcls(void);
void delay1s(void);
void Lcminit (void);
void Putpicture(uchar flag);
void delay(unsigned int time);
void VtoH8x16change(uchar *hzbuf);
void Puthalf(uchar *strch,uchar row,uchar col);
void Wrdata(uchar x,uchar row,uchar col);
void Locatexy(uchar row,uchar col);
void vWrite8x16Character(uchar *ch,uchar row,uchar col,bit flag);
void vWrite8x16String(uchar *str,uchar col, uchar row, bit flag);

extern uchar code picture1[];
extern uchar code picture2[];
extern uchar code char_Table[95][16];

/***********主程序***************/
void main(void)
{
Lcminit();
while(1){
Putpicture(0);
delay1s();
Lcmcls();
Putpicture(1);
delay1s();
Lcmcls();
vWrite8x16String("abcdefghijklmn" ,0, 8,0);
vWrite8x16String("ABCDEFGHIJKLMN", 2, 8,0);
vWrite8x16String("12345678901234", 4, 8,0);
vWrite8x16String("+-*/!@#$%^&*()", 6, 8,0);
delay1s();
Lcmcls();
}

}

/***************微秒级延时*****************/
void delay(unsigned int time)
{ unsigned int i;
for(i=0;i<time;i++);
}

/***************约5S延时********************/
void delay1s(void)
{
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
delay(50000);
}

//***********初始化LCD*******************/

void Lcminit (void)
{
cbyte=DISPOFF;
WrL(cbyte);
WrR(cbyte);
cbyte=DISPON;
WrL(cbyte);
WrR(cbyte);
cbyte=DISPFIRST;
WrL(cbyte);
WrR(cbyte);
Lcmcls();
Locatexy(0,0);
}

/***************LCD清屏********************/
void Lcmcls(void)
{ uchar i,j;
for(i=0;i<8;i++){
delay(6);
for(j=0;j<LIMIT;j++){
delay(6);
Wrdata(0x0,i,j);
}
}
}

/**************写左区***************/

void WrL(uchar x)
{

P0=0xFF;//P0口送FF,准备读
lck = 0;
P1 = 0x2a;//ELCD=1�/W=1(读),CSB=1,CSA=0
lck = 1;
while(P0 & LCDBUZY);//最高位为1,表示忙,则循环
lck = 0;
P1 = 0x00;//ELCD=0,R/W=0(读),CSB=0,CSA=0
lck = 1;
P0 = x; //数据送到P0口
lck = 0;
P1 = 0x22;//ELCD=1,RW = 0(写),CSB=1,CSA=0
lck = 1;
lck = 0;
P1 = 0x00;//ELCD=0,RW = 0(写),CSB=0,CSA=0
lck = 1;
}

/**************写右区**************/
void WrR(uchar data x)
{
P0=0xFF;//P0口送FF,准备读
lck = 0;
P1 = 0x29;//ELCD=1,R/W=1(读),CSB=0,CSA=1
lck = 1;
while(P0 & LCDBUZY);//最高位为1,表示忙,则循环
lck = 0;
P1 = 0x00;//ELCD=0,R/W=0(读),CSB=0,CSA=1
lck = 1;
P0=x; //数据送到P0口
lck = 0;
P1 = 0x21;//ELCD=1,RW = 0(写),CSB=0,CSA=1
lck = 1;
lck = 0;
P1 = 0x00;//ELCD=0,RW = 0(写),CSB=0,CSA=0
lck = 1;

}

/*************定位*****************/
void Locatexy(uchar row,uchar col)
{
uchar x, y, right;
switch(col&0xc0)
{
case 0:{
P0=0xFF;//P0口送FF,准备读
lck = 0;
P1 = 0x29;//ELCD=1,R/W=1(读),CSB=0,CSA=1
lck = 1;
while(P0 & LCDBUZY);//最高位为1,表示忙,则循环
lck = 0;
P1 = 0x00;
lck = 1;
right = 1;break;}//置右半屏标志
case 0x40:{
P0=0xFF;//P0口送FF,准备读
lck = 0;
P1 = 0x2a;//ELCD=1,R/W=1(读),CSB=1,CSA=0
lck = 1;
while(P0 & LCDBUZY);//最高位为1,表示忙,则循环
lck = 0;
P1 = 0x00;//ELCD=0,R/W=0(读)�CSB=0,CSA=0
lck = 1;
right = 0;break;}//置左半屏标志
}
x=col&0x3f|SETX;//把列数据变成行命令
y=row&0x07|SETY;//把行数据变成行命令
/**********************************/
lck = 0;
if(right)
P1 = 0x29;
else
P1 = 0x2a;
lck = 1;
while(P0 & LCDBUZY);//最高位为1,表示忙,则循环
lck = 0;
P1 = 0x00;
lck = 1;
/*********以上为判断忙标志********/
/*********************************/
P0 = y;
lck = 0;
if(right)
P1 = 0x21;
else
P1 = 0x22;
lck = 1;
lck = 0;
P1 = 0x00;
lck = 1;
/**********以上为送行命令***********/
P0=0xFF;
lck = 0;
if(right)
P1 = 0x29;
else
P1 = 0x2a;
lck = 1;
while(P0 & LCDBUZY);//最高位为1,表示忙,则循环

lck = 0;
P1 = 0x00;
lck = 1;
/*********以上为判断忙标志********/
P0 = x;
lck = 0;
if(right)
P1 = 0x21;
else
P1 = 0x22;
lck = 1;
lck = 0;
P1 = 0x00;
lck = 1;
/**********以上为送列命令***********/
if(right)
statu = 1;
else
statu = 0;//置左又半区标志
}

/**************数据写输出***************/
void Wrdata(uchar x,uchar row,uchar col)
{
Locatexy(row,col);//定位显示位置
lck = 0;
if(statu)
P1 = 0x05;//ELCD=0�R/W=0(写),D/I= 1 ,CSB=0,CSA=1
else
P1 = 0x06;//ELCD=0,R/W=0(写),D/I= 1 ,CSB=1,CSA=0
lck = 1;
P0 = x;
lck = 0;
if(statu)
P1 = 0x25;//ELCD=1,R/W=0(写),D/I= 1 ,CSB=0,CSA=1
else
P1 = 0x26;//ELCD=1,R/W=0(写),D/I= 1 ,CSB=1,CSA=0
lck = 1;

lck = 0;
P1 = 0x00;
lck = 1;
}

/****************图形输出******************/
void Putpicture(uchar flag)
{
unsigned char i,j,row, col ;
unsigned int x;
row = 0; col=0;
for(j=0;j<128;j++){
x=j*0x08;
for(i=0;i<8;i++)
{ if(flag)
cbyte=picture1[x++];
else
cbyte=picture2[x++];
Wrdata(cbyte,row,col);
row++;
}
row=0;
col++;
}

}

/***************半角数据点阵输出*******************/
void Puthalf(uchar *strch,uchar row,uchar col)
{
uchar i,bakerx;
bakerx = row;
for(i=0;i<16;i++)//上半字输出
{
cbyte=strch[i];
Wrdata(cbyte,bakerx,col);

cbyte=strch[i+1];
Wrdata(cbyte,bakerx+1,col);
col++;
i++;
}
}

/************汉字输出******************/
/*void Puthz(uchar *str,uchar row,uchar col)
{
uchar i,bakerx;
bakerx=row;
for(i=0;i<32;i++)
{
cbyte=str[i];
Wrdata(cbyte,row,col); //上半字节输出
i++;
row=bakerx+1;
cbyte=str[i];
Wrdata(cbyte,row,col); //下半字节输出

row=bakerx;
col=col+1;
}
}

*/
/***********************字符型点阵行--》列转换********************/
void VtoH8x16change(uchar *hzbuf)
{ uchar i,j,k, cash[16];
uchar newbyte, savebit[8];
for(k=0;k<16;k++){
newbyte = 0;
for(i=0;i<8;i++){
savebit[i]=hzbuf[i] & 0x80;
}
for(j=0;j<8;j++){
savebit[j] = savebit[j] >> (7-j);
newbyte = newbyte | savebit[j];
}
cash[k] = newbyte;
newbyte = 0;
for(i=8;i<16;i++){
savebit[i-8]=hzbuf[i] & 0x80;
}
for(j=0;j<8;j++){
savebit[j] = savebit[j] >> (7-j);
newbyte = newbyte |savebit[j];
}
cash[k+1] = newbyte;
for(j=0;j<16;j++){
hzbuf[j] = hzbuf[j] <<1;
}
k++;
}
for(i=0;i<16;i++)
hzbuf[i] = cash[i];
}

/************************显示英文和符号字符********************/
void vWrite8x16Character(uchar *ch,uchar row,uchar col,bit flag)
{
uchar ucXArray[16],i;

if(flag){ // 反白显示英文
for(i = 0; i < 16; i++)
ucXArray[i] = ~ch[i];
}else{
for(i = 0; i < 16; i++)
ucXArray[i] = ch[i];
}
VtoH8x16change(ucXArray);
Puthalf(ucXArray,row,col);
}

/*************************显示英文字符串**********************/
void vWrite8x16String(uchar *str,uchar row, uchar col, bit flag)
{
unsigned char i, j,thiscol;
j = strlen(str);
for(i = 0; i < j; i++)
{ thiscol = (i % 16) * 8 + col;//计算列地址
if(str[i] < 0xa1)//当前显示内容为英文字符
vWrite8x16Character(&char_Table[str[i]-0x20][0],row,thiscol,flag);
}
}

⑹ 求LCD12232显示汉字的程序

硬件:TG12232B (122*32)模拟口线接线方式
连接线图:
--------------------------------------------------|
|DB0-----P0.0 | DB4-----P0.4 | RW-------P1.1 | A0--------P1.0 |
|DB1-----P0.1 | DB5-----P0.5 | RS-------P2.1 | V0接1K电阻到GND |
|DB2-----P0.2 | DB6-----P0.6 | E1-------P1.3 |
|DB3-----P0.3 | DB7-----P0.7 | E2-------P1.2 |
---------------------------------------------------
[注:AT89x52使用22.1184M或11.0592M晶振,实测使用22.1184M或11.0592都可以]
编译平台:Keil uV2 7.08
//可能看起来有点乱,不过效果还是不错的,显示图形总的来说比显示汉字要简单,当然显示汉字也不难。
希望此程序能给你一些帮助。
=============================================================*/
#include <AT89X52.H>#define uchar unsigned char
#define uint unsigned int#define E1 P1_3 //块1 左边
#define E2 P1_2 //块2 右边
#define RW P1_1
#define A0 P1_0 //A0为1时是数据,0时为指令数据
#define DATA P0 //数据extern unsigned char code Bmpt1[];
extern unsigned char code Bmpt2[];
extern unsigned char code Bmpt3[];
extern unsigned char code Bmpt4[];
extern unsigned char code Bmpt5[];
extern unsigned char code Bmpt6[];
extern unsigned char code Bmpt7[];
extern unsigned char code Bmptc[];
extern unsigned char code bmp001[];
extern unsigned char code Bmp08[];
extern unsigned char code Bmp07[];
extern unsigned char code Bmp06[];
extern unsigned char code Bmp05[];
extern unsigned char code Bmp04[];
extern unsigned char code Bmp03[];
extern unsigned char code Bmp02[];
extern unsigned char code Bmp01[];
extern unsigned char code Bmp012[];
extern unsigned char code Bmp003[];
extern unsigned char code Bmp002[];
//延时
void delay(unsigned int i)
{
unsigned char k=200;
while(i>0)
{
i--;
}
while(k>1)k--;
}//左页
//发送数据
void OUTMD(unsigned char i)
{
A0=1; //写数据
//delay(5);
E1=1;
//delay(10);
DATA=i;
//delay(5);
E1=0;}
//左页
//发送命令
void OUTMI(unsigned char i)
{
A0=0; //写指令
//delay(5);
E1=1;
//delay(10);
DATA=i;
//delay(5);
E1=0;}
//右页
//发送数据
void OUTSD(unsigned char i)
{
A0=1; //写数据
//delay(5);
E2=1;
//delay(10);
DATA=i;
//delay(5);
E2=0;}
//右页
//发送命令
void OUTSI(unsigned char i)
{
A0=0; //写指令
//delay(5);
E2=1;
//delay(10);
DATA=i;
//delay(5);
E2=0;}
//初始化
void lcdini(void)
{
RW=0;
OUTMI(0XE2);
OUTSI(0XE2);//复位
OUTMI(0XAE);
OUTSI(0XAE);//POWER SAVE
OUTMI(0XA4);
OUTSI(0XA4);//动态驱动
OUTMI(0XA9);
OUTSI(0XA9);//1/32占空比
OUTMI(0XA0);
OUTSI(0XA0);//时钟线输出
OUTMI(0XEE);
OUTSI(0XEE);//写模式OUTMI(0X00);
OUTMI(0XC0);
OUTSI(0X00);
OUTSI(0XC0);OUTMI(0XAF);
OUTSI(0XAF);}
/*
函数说明:同时设置主从显示页为0-3页。(内函数,私有,用户不直接调用)
------------------------------------------------------------------------
*/
void SetPage(uchar page0,uchar page1)
{
OUTMI(0xB8|page1);OUTSI(0xB8|page0);
}/*
--------------------------------------------------------------------------------
函数说明:同时设置主从列地址为0-121。(内函数,私有,用户不直接调用)
--------------------------------------------------------------------------------
*/
void SetAddress(uchar address0,uchar address1)
{
OUTMI(address1);OUTSI(address0);
}/*
--------------------------------------------------------------------------------调用方式:void PutChar0(uchar ch)
函数说明:在右页当前地址画一个字节8个点。(内函数,私有,用户不直接调用)
--------------------------------------------------------------------------------
-*/
void PutCharR(uchar ch)
{
OUTSD(ch);
}/*
--------------------------------------------------------------------------------调用方式:void PutChar1(uchar ch)
函数说明:在左页当前地址画一个字节8个点。(内函数,私有,用户不直接调用)
--------------------------------------------------------------------------------
-*/
void PutCharL(uchar ch)
{
OUTMD(ch);
} /*
--------------------------------------------------------------------------------调用方式:void DrawBmp(bit layer,uchar width,uchar *bmp)
函数说明:画一个图,layer表示上下层,width是图形的宽,高都是16,bmp是
图形指针
使用zimo3软件,纵向取模,字节倒序/240字节
--------------------------------------------------------------------------------
-*/
void DrawBmp(bit layer,uchar width,uchar *bmp)
{
uchar x,address,i=0; //address表示显存的物理地址
uchar page=0; //page表示上下两页
bit window=0; //window表示左右两页
//putcharR //右边
//putcharL //左边for (x=width;x>1;x--)
{
if (i>60) {window=1;address=i%61;}
else address=i; if(layer==0) //显示一行八个字
{
SetPage(0,0);
SetAddress(address,address);
if(window==1)PutCharR(bmp[i]);
else PutCharL(bmp[i]);
SetPage(1,1);
SetAddress(address,address);
if(window==1)PutCharR(bmp[i+width]);
else PutCharL(bmp[i+width]);
}
else
{ //显示第二行八个汉字
SetPage(2,2);
SetAddress(address,address);
if(window==1)PutCharR(bmp[i]);
else PutCharL(bmp[i]);
SetPage(3,3);
SetAddress(address,address);
if(window==1)PutCharR(bmp[i+width]);
else PutCharL(bmp[i+width]);
}
i++;}
}
/*
--------------------------------------------------------------------------------调用方式:void clrscr(void)
函数说明:清屏
--------------------------------------------------------------------------------
-*/
void clrscr(void)
{
uchar i;
uchar page;
for (page=0;page<4;page++)
{
SetPage(page,page);
SetAddress(0,0);
for (i=0;i<61;i++){PutCharR(0);PutCharL(0);}
}
} //-----------------------------------------------------------
//图片显示
//采用字模2生成或字模3生成的都可以.
//-----------------------------------------------------------
void DrawBmp1(uint x_add, uchar width,uchar *bmp)
{
uchar x,address,i=0; //address表示显存的物理地址
uchar page=0; //page表示上下两页
bit window=0; //window表示左右两页
//putcharR //右边
//putcharL //左边
for (x=width;x>1;x--)
{
if (x_add>60) {window=1;address=x_add%61;}
else address=x_add;
SetPage(0,0);
SetAddress(address,address);
if(window==1)PutCharR(bmp[i]);
else PutCharL(bmp[i]);
SetPage(1,1);
SetAddress(address,address);
if(window==1)PutCharR(bmp[i+width]);
else PutCharL(bmp[i+width]);
SetPage(2,2);
SetAddress(address,address);
if(window==1)PutCharR(bmp[i+width+width]);
else PutCharL(bmp[i+width+width]);
SetPage(3,3);
SetAddress(address,address);
if(window==1)PutCharR(bmp[i+width+width+width]);
else PutCharL(bmp[i+width+width+width]);
i++;
x_add++;}
}//---------------------------------------------------------------
//---------------------------------------------------------------
//采用zimo2 显示汉字,以汉字的显示方式
//void Draw_word(uchar d_where,uint x_add,bit layer,uchar width)
//d_where表示在码表中第几个汉字,x_add横坐标位置,layer显示的层, width显示的宽度。
//---------------------------------------------------------------
void Draw_word(uchar d_where,uint x_add,bit layer,uchar width)
{
uchar x,i=0,address; //address表示显存的物理地址
uchar page=0; //page表示上下两页
bit window=0; //window表示左右两页
//putcharR //右边
//putcharL //左边
d_where=d_where*32;for (x=width;x>1;x--)
{
if (x_add>60) {window=1;address=x_add%61;}
else address=x_add; if(layer==0) //显示一行八个字
{SetPage(0,0);
SetAddress(address,address);
if(window==1)PutCharR(bmp001[d_where]);//右边
else PutCharL(bmp001[d_where]);//左边
SetPage(1,1);
SetAddress(address,address);
if(window==1)PutCharR(bmp001[d_where+width]);
else PutCharL(bmp001[d_where+width]);}
else
{ //显示第二行八个汉字
SetPage(2,2);
SetAddress(address,address);
if(window==1)PutCharR(bmp001[d_where]);//右边
else PutCharL(bmp001[d_where]);//左边
SetPage(3,3);
SetAddress(address,address);
if(window==1)PutCharR(bmp001[d_where+width]);
else PutCharL(bmp001[d_where+width]);}
x_add++;
d_where++;
}
}
/*
//------------------------------------------------------------------
//字模2显示一个汉字
//纵向取模,字节倒序
void disp_one(bit top_low,bit widows,uchar address,uchar width,uchar*bmp)
{
if(top_low==0)
{
SetPage(0,0);
SetAddress(address,address);
if(window==1)PutCharR(bmp001[next][i]);
else PutCharL(bmp001[next][i]);
SetPage(1,1);
SetAddress(address,address);
if(window==1)PutCharR(bmp001[next][i+width]);
else PutCharL(bmp001[next][i+width]);
}
else
{
SetPage(0,0);
SetAddress(address,address);
if(window==1)PutCharR(bmp001[next][i]);
else PutCharL(bmp001[next][i]);
SetPage(1,1);
SetAddress(address,address);
if(window==1)PutCharR(bmp001[next][i+width]);
else PutCharL(bmp001[next][i+width]);
}
}
*/
//液晶显示规则
// M(左) S(右)
// page page
// 0 | 0
// 1 | 1
// 2 | 2
// 3 | 3void delay1s(unsigned char i)
{
while(i>1)
{
i--;delay(65530);
}
}//显示动态的等待图标
void wait1(unsigned char i)
{
for(;i>1;i--)
{delay1s(2);<br>clrscr(); //<br>DrawBmp1(0,60,Bmptc); //<br>DrawBmp1(76,19,Bmpt1); //<br>delay1s(2);<br>clrscr(); //<br>DrawBmp1(0,60,Bmptc); //<br>DrawBmp1(76,19,Bmpt2); //<br>delay1s(2);<br>clrscr(); //<br>DrawBmp1(0,60,Bmptc); //<br>DrawBmp1(76,19,Bmpt3); //<br>delay1s(2);<br>clrscr(); //<br>DrawBmp1(0,60,Bmptc); //<br>DrawBmp1(76,19,Bmpt4); //<br>delay1s(2);<br>clrscr(); //<br>DrawBmp1(0,60,Bmptc); //<br>DrawBmp1(76,19,Bmpt5); //<br>delay1s(2);<br>clrscr(); //<br>DrawBmp1(0,60,Bmptc); //<br>DrawBmp1(76,19,Bmpt6); //<br>delay1s(2);<br>clrscr(); //<br>DrawBmp1(0,60,Bmptc); //<br>DrawBmp1(76,19,Bmpt7); //<br>}}
//演示程序
void main()
{ lcdini(); //reset
clrscr(); //clr
Draw_word(0,0,0,16); //
Draw_word(1,16,0,16); //
Draw_word(2,32,0,16); //
Draw_word(3,48,0,16); //
Draw_word(0,64,0,16); //
Draw_word(1,80,0,16); //
Draw_word(2,96,0,16); //DrawBmp(1,120,Bmp002); //
clrscr(); //
delay1s(3);
DrawBmp1(0,122,Bmp012); //LOGO
while(1)
{
delay1s(3);clrscr(); //
DrawBmp1(10,101,Bmp07); //delay1s(8);
clrscr(); //
wait1(3);
DrawBmp1(0,122,Bmp04); //
delay1s(8);
clrscr(); //
wait1(3);
DrawBmp1(0,122,Bmp03); //超前科技
delay1s(8);
clrscr(); //
wait1(3);
clrscr(); //
DrawBmp1(10,101,Bmp05); //
delay1s(8);
clrscr(); //
wait1(3);
clrscr(); //
DrawBmp1(10,101,Bmp06); //
delay1s(8);
clrscr(); //
wait1(3);
clrscr(); //
DrawBmp1(10,101,Bmp08); //
delay1s(8);
clrscr(); //
wait1(3);
clrscr(); //
DrawBmp1(0,122,Bmp01); //这仿真器真不错,用过都说好.
wait1(8);
}
}

⑺ LCD液晶屏秒表程序c语言谁有急求!!!!

//此程序实现计时秒表功能,时钟显示范围00.00~99.99 秒,分辨度:0.01 秒
#include "p18f458.h"
unsigned char s[4]; //定义0.01 秒、0.1 秒、1 秒、10 秒计时器
unsigned char k,data,sreg;
unsigned int i;
const table[11]={0xc0 ,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90};
//不带小数点的显示段码表
const table0[10]={0X40,0X79,0X24,0X30,0X19,0X12,0X02,0X78,0X00,0X10};
//带小数点的显示段码表
void clkint(void);
//TMR0 初始化子程序
void tmint()
{
T0CON=0XCF; //设定TMR0L 工作于8 位定时器方式
//内部时钟,TMR0不用分频
INTCON=0X20; //总中断禁止,TMR0 中断允许,清除TMR0 的中断标志
INTCON2bits.TMR0IP=1; //TMR0 中断高优先级
RCONbits.IPEN=1; //使能中断优先级
}
//系统其它部分初始化子程序
void initial()
{
TRISA=0x00; //A口设置为输出
TRISB=0XF0; //RB1 输出,RB4 输入
TRISC=0x00; //SDO引脚为输出,SCK 引脚为输出
TRISE=0x00; //E口设置为输出
SSPCON1=0x30; //SSPEN=1;CKP=1,FOSC/4
SSPSTAT=0xC0; //时钟下降沿发送数据
PIR1=0; //清除SSPIF 标志
data=0X00; //待显示的寄存器赋初值
PORTBbits.RB1=0;
PORTAbits.RA3=0;
PORTE=0; //将 K1,K2,K3,K4 四条列线置0
}
//SPI 传输数据子程序
void SPILED(char data)
{
SSPBUF=data; //启动发送
do
{
;
}while(PIR1bits.SSPIF==0);
PIR1bits.SSPIF=0;
}
//显示子程序,显示4 位数
void dispaly()
{
PORTAbits.RA5=0; //准备锁存
for(k=0;k<4;k++)
{
data=s[k];
if(k==2) data=table0[data]; //个位需要显示小数点
else data=table[data];
SPILED(data); //发送显示段码
}
for(k=0;k<4;k++)
{
data=0xFF;
SPILED(data); //连续发送4 个DARK,使显示好看一些
}
PORTAbits.RA5=1; //最后给锁存信号,代表显示任务完成
}
//软件延时子程序
void DELAY()
{
for(i = 3553; --i ;)
continue;
}
//键扫描子程序
void KEYSCAN()
{
while(1)
{
dispaly(); //调用一次显示子程序
while(PORTBbits.RB4==0)
{
DELAY(); //若有键按下,则软件延时
break;
}
if (PORTBbits.RB4==0) break; //若还有键按下,则终止循环扫描,返回
}
}
//等键松开子程序
void keyrelax()
{
while(1)
{
dispaly(); //调用一次显示子程序
if (PORTBbits.RB4==1) break; //为防止按键过于灵敏,每次等键松开才返回
}
}
/* 高优先级中断向量*/
#pragmacode InterruptVectorHigh=0x08
void InterruptVectorHigh (void)
{
_asm
goto clkint //跳到中断程序
_endasm
}
//中断服务程序
#pragmacode
#pragma interrupt clkint
void clkint()
{
TMR0=0X13; //对 TMR0写入一个调整值。因为写入TMR0 后接着的
//两个周期不能增量,中断需要3 个周期的响应时间,
//以及C 语言自动进行现场保护要消耗周期
INTCONbits.T0IF=0; //清除中断标志
sreg=sreg+1; //中断计数器加1
if(sreg==40) //中断次数为40 后,才对S0,S1,S2,S3 操作
{
sreg=0;
s[0]=s[0]+1;
if(s[0]==10)
{
s[0]=0 ;
s[1]=s[1]+1;
if(s[1]==10)
{
s[1]=0 ;
s[2]=s[2]+1;
if(s[2]==10)
{
s[2]=0;
s[3]=s[3]+1;
if(s[3]==10) s[3]=0;
}
}
}
}
}
//主程序
main()
{
tmint(); //TMR0 初始化
initial(); //spi 显示初始化及系统其它部分初始化
INTCONbits.GIE=0; //总中断禁止
while(1)
{
for(k=0;k<4;k++)
{
s[k]=0;
}
sreg=0; //赋显示初值
dispaly(); //调用一次显示子程序
KEYSCAN(); //键扫描,直到开始键按下
keyrelax(); //等键松开
INTCONbits.GIE=1; //总中断允许
KEYSCAN(); //键扫描直到停止键按下,在键扫描时有显示
keyrelax(); //等键松开
INTCONbits.GIE=0; //总中断禁止
KEYSCAN(); //键扫描到清0 键按下,在键扫描时有显示
keyrelax(); //等键松开
}
}

兴宇合电子

⑻ 求液晶12232并口c程序,带字库的

到的是一些并口的汇编程序.并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用.本程序在AT89S52单片机上已经调试成功,有什么问题,大家多多交流指教.使用这款LCD应该要注意的问题<br>一定要在VO与VDD及VSS这三个脚间接一个20K的电位器<br>电位器的中间脚接VO,其它二脚接VDD和VSS<br>然后调节电位器的大小,直到有显示为止。欢迎大家提出意见

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define x1 0x80
#define x2 0x88
#define y 0x80
#define comm 0
#define dat 1

sbit cs = P3^3;
sbit std = P3^1;
sbit sclk = P3^0;

void wr_lcd (uchar dat_comm,uchar content);
void delay (uint us);

uchar code tab1[]={
"天行健君子以自强不息"
"地势坤君子以厚德载物"
};

uchar code tab31[]={
"北京欢迎你WelcometoBeijing"
};
uchar code tab32[]={
/*-- 调入了一幅图像:F:\梁\画图\HOCO12832.bmp --*/
/*-- 宽度x高度=128x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7F,0x80,0x00,0x00,0x00,0x00,0x18,0x0C,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x01,0xFF,0x80,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x13,0x10,0x03,0xFE,0x00,
0x03,0xFF,0xC0,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x3F,0x30,0x1F,0xFF,0xC0,
0x03,0xFF,0xE0,0x00,0x00,0x00,0x00,0x8C,0x03,0xF0,0x00,0x7F,0xE0,0x7C,0x01,0xE0,
0x03,0xFF,0xF0,0x00,0x00,0x00,0x01,0x36,0x06,0xC0,0x00,0x5F,0xC0,0xFF,0xFC,0x60,
0x01,0xFF,0xF0,0x00,0x00,0x00,0x02,0x1B,0x0F,0x80,0x00,0xFF,0x01,0xFE,0x0F,0x30,
0x00,0xEF,0xF0,0x00,0x00,0x00,0x02,0x6D,0x9F,0x00,0x00,0x3E,0x03,0xFF,0xF1,0x90,
0x00,0xFF,0xF8,0x00,0x00,0x00,0x04,0x36,0xFE,0x00,0x01,0xFF,0x07,0xFF,0xFC,0x90,
0x00,0xEF,0xFF,0xFF,0x80,0x00,0x04,0xDB,0x7E,0x00,0x03,0xFF,0x87,0xFF,0xFC,0xD0,
0x00,0x0F,0xFF,0xFF,0xC0,0x00,0x04,0x6D,0xFC,0x00,0x07,0xFF,0x8F,0xFF,0xFE,0x50,
0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x04,0x36,0xFC,0x10,0x07,0xFF,0x8F,0xFF,0xFE,0x90,
0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x04,0x1B,0xF8,0x10,0x07,0xFF,0xCF,0xFF,0xFE,0x80,
0x00,0x0F,0xFF,0xFF,0xF0,0x00,0x04,0x0F,0xF8,0x10,0x07,0xFF,0xFF,0xFF,0xFA,0x00,
0x00,0x07,0xFF,0xFF,0xF0,0x00,0x04,0x07,0xF0,0x10,0x07,0xFF,0xFF,0xFF,0xFA,0x00,
0x00,0xFF,0xFF,0xFF,0xF8,0x00,0x02,0x03,0xF0,0x20,0x07,0xFF,0xFF,0xFF,0xBA,0x00,
0x00,0xFD,0xFF,0xFF,0xFC,0x00,0x02,0x03,0xF0,0x20,0x03,0xFF,0xFF,0xDF,0xB8,0x00,
0x00,0xC1,0xC0,0x3F,0xFC,0x00,0x01,0x01,0xE0,0x40,0x00,0xFF,0xFF,0xDF,0xB0,0x00,
0x00,0x81,0xC0,0x3F,0xCE,0x00,0x00,0x81,0xE0,0x80,0x00,0x7F,0xFF,0xDF,0xA0,0x00,
0x00,0x81,0x80,0x1D,0xCF,0x00,0x00,0x41,0xE1,0x00,0x00,0x3F,0xFF,0x9B,0x00,0x00,
0x01,0x83,0x80,0x1F,0xC7,0x80,0x00,0x21,0xE2,0x00,0x00,0x1F,0xFD,0xB6,0x00,0x00,
0x01,0xC3,0x00,0x0E,0xE6,0x80,0x00,0x19,0xEC,0x00,0x00,0x07,0xFE,0x20,0x00,0x00,
0x00,0xC3,0x00,0x07,0x67,0x40,0x00,0x07,0xF0,0x00,0x00,0x03,0x3E,0x00,0x00,0x00,
0x00,0x02,0x00,0x03,0xE7,0xA0,0x00,0x00,0x00,0x00,0x00,0x02,0x8E,0x00,0x00,0x00,
0x00,0x06,0x00,0x03,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x00,0x00,0x00,
0x00,0x06,0x00,0x07,0x03,0x00,0x77,0x46,0x74,0x24,0x80,0x06,0x04,0x00,0x00,0x00,
0x00,0x1C,0x00,0x06,0x00,0x00,0x55,0x45,0x54,0x57,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x1C,0x00,0x0E,0x00,0x00,0x45,0x45,0x74,0x57,0x80,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1C,0x00,0x00,0x55,0x45,0x44,0x74,0x80,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x38,0x00,0x00,0x77,0x76,0x47,0x54,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

uchar code tab5[]={
/*-- 调入了一幅图像:F:\梁\画图\COCK.bmp --*/
/*-- 宽度x高度=128x64 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x80,0x00,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0C,0x43,0x01,0x80,0x00,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x19,0xFF,0x07,0x00,0x07,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x3F,0xFC,0x1E,0x00,0x1F,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xBF,0xFF,0xFC,0x00,0x7F,0xFC,0x00,0x7F,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0xF0,0x00,0xFF,0xC0,0x00,0x0F,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFC,0x01,0xF0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xDF,0xFF,0xC0,0x07,0xFF,0xFF,0xFF,0x80,0xF0,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0xFF,0xE0,0x38,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x1F,0xFF,0xF0,0x03,0xF8,0x38,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xE0,0x00,0x3F,0xFF,0xFF,0xC0,0x7C,0x18,0x00,0x00,0x00,
0x00,0x00,0x00,0x04,0x7F,0xF0,0x00,0x3F,0xFF,0xFF,0xF8,0x1E,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xFE,0x0F,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0xFF,0x87,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0x83,0x88,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xFF,0xC3,0x88,0x00,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xFF,0xE1,0x88,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xE1,0x88,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xF1,0x88,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xF3,0x08,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xF2,0x10,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0x8F,0xFF,0xFF,0xFF,0xFF,0xF0,0x20,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0x7F,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0x7F,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0x7E,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0x3E,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xCF,0xFF,0x3C,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xCF,0xFE,0x38,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0x8F,0xFE,0x38,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0x8F,0xFE,0x30,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1F,0x7C,0x20,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x1E,0x78,0x00,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFE,0x1E,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xDA,0x3C,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xF2,0x30,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xF1,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x7C,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x78,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x72,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x40,0x04,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x0C,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0C,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x38,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

/*----初始化-----*/
void init_lcd (void)
{
wr_lcd (comm,0x30); /*30---基本指令动作*/
wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
delay (100);
wr_lcd (comm,0x06); /*光标的移动方向*/
wr_lcd (comm,0x0c); /*开显示,关游标*/
}

/*----上半屏显示汉字或字符----*/
void chn_dispup (uchar code *chn)
{
uchar i,j;
wr_lcd (comm,0x30); //30---基本指令动作
wr_lcd (comm,0x80); //把显示地址设为0X80,即为第一行的首位--第一页
j=0;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);
}

/*----下半屏显示汉字或字符---*/
void chn_dispdown (uchar code *chn)
{
uchar i,j;
wr_lcd (comm,0x30); /*30---基本指令动作*/
wr_lcd (comm,0x90); //把显示地址设为0X90,即为第二行的首位--第二页
j=0;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);
}

/*---上下半屏顺序显示汉字或字符----*/
void chn_disp1 (uchar code *chn)
{
uchar i,j;
wr_lcd (comm,0x30); /*30---基本指令动作*/

wr_lcd (comm,0x80); //把显示地址设为0X80,即为第一行的首位--第一页
j=0;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);

wr_lcd (comm,0x90); //把显示地址设为0X90,即为第二行的首位--第二页
j=1;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);
}

/*----显示图形----*/
void img_disp (uchar code *img)
{
uchar i,j;
for(j=0;j<32;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34); //扩充指令操作
wr_lcd (comm,y+j); //先将垂直的字节坐标(Y)写入绘图RAM 地址
wr_lcd (comm,x1+i); //再将水平的字节坐标(X)写入绘图RAM 地址。
wr_lcd (comm,0x30); //基本指令动作
wr_lcd (dat,img[j*16+i*2]); //写入第一个Bytes
wr_lcd (dat,img[j*16+i*2+1]); //写入第二个Bytes
}
}
for(j=32;j<64;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34); //扩充指令操作
wr_lcd (comm,y+j-32); //先将垂直的字节坐标(Y)写入绘图RAM 地址
wr_lcd (comm,x2+i); //再将水平的字节坐标(X)写入绘图RAM 地址
wr_lcd (comm,0x30); //基本指令动作
wr_lcd (dat,img[j*16+i*2]); //写入第一个Bytes
wr_lcd (dat,img[j*16+i*2+1]); //写入第二个Bytes
}
}
wr_lcd (comm,0x36);
}

/*--------显示点阵-----------*/
void lat_disp (uchar data1,uchar data2)//data1,data2是要显示的数据
{
uchar i,j,k,x;
x=x1;
for(k=0;k<2;k++)
{
for(j=0;j<16;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34); //扩充指令操作
wr_lcd (comm,y+j*2); //先将垂直的字节坐标(Y)写入绘图RAM 地址
wr_lcd (comm,x+i); //再将水平的字节坐标(X)写入绘图RAM 地址
wr_lcd (comm,0x30); //功能设置:一次送8位数据,基本指令集
wr_lcd (dat,data1); //写入第一个Bytes
wr_lcd (dat,data1); //写入第二个Bytes
}
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34); //扩充指令操作
wr_lcd (comm,y+j*2+1); //先将垂直的字节坐标(Y)写入绘图RAM 地址
wr_lcd (comm,x+i); //再将水平的字节坐标(X)写入绘图RAM 地址
wr_lcd (comm,0x30); //基本指令操作
wr_lcd (dat,data2); //写入第一个Bytes
wr_lcd (dat,data2); //写入第二个Bytes
}
}
x=x2;
}
wr_lcd (comm,0x36);
}

/*--------------清DDRAM------------------*/
void clrram (void)
{
wr_lcd (comm,0x30);
wr_lcd (comm,0x01);
delay (180);
}
/*---------------------------------------*/
void wr_lcd (uchar dat_comm,uchar content)
{
uchar a,i,j;
delay (50);
a=content;
cs=1;
sclk=0;
std=1;
for(i=0;i<5;i++)
{
sclk=1;
sclk=0;
}
std=0;
sclk=1;
sclk=0;
if(dat_comm)
std=1; //data
else
std=0; //command
sclk=1;
sclk=0;
std=0;
sclk=1;
sclk=0;
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{
a=a<<1;
std=CY;
sclk=1;
sclk=0;
}
std=0;
for(i=0;i<4;i++)
{
sclk=1;
sclk=0;
}
}
}
/*-----------------------------------*/
void delay (uint us) //delay time
{
while(us--);
}
void delay1 (uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<15;j++)
delay(1);
}
/*------------------主程序--------------------*/
void main ()
{
SP=0x5f;
init_lcd ();
while (1)
{
clrram();
lat_disp (0x00,0x00); //显示点阵
delay1 (8000);
clrram();
lat_disp (0xcc,0xcc); //显示点阵
delay1 (8000);
clrram();
chn_disp1 (tab1); //上下半屏顺序显示汉字或字符
delay1 (8000);
clrram();
lat_disp (0xff,0x00); //显示点阵
delay1 (8000);
img_disp (tab5); //显示图形
delay1 (8000);
clrram();
chn_dispup (tab31); //上半屏顺序显示汉字或字符
delay1 (8000);
clrram();
chn_dispdown (tab31); //下半屏顺序显示汉字或字符
delay1 (8000);

}
}

⑼ 单片机控制12232液晶显示的几种C语言源程序

试试下面的代码

在atmega128中写通讯协议的头四位数字时好像不能分开一位一位的送,而是要把它当作一个16进制的整体移位写入!程序中的comm为写0表示写12232c的指令,dat为1表示写数据。cs,sclk,std分别为片选、时钟、及数据io口,可用sbit指令定义。
/************lcd初始化程序**************/
voidinit_lcd(void)
{
wr_lcd(comm,0x30);/*30---基本指令集动作,8位控制接口*/
wr_lcd(comm,0x01);/*清屏,地址指针指向00H*/
delay(80);
wr_lcd(comm,0x06);/*光标的移动方向,光标右移*/
wr_lcd(comm,0x0c);/*开显示,关光标*/
}
/******************LCD显示任意量程序********************/
voideng_disp(ucharx,uchary,ucharcode*eng)
{
uchari,j;
wr_lcd(comm,0x30);
wr_lcd(comm,0x80);/*第一行的起始地址*/
for(j=0;j<y;j++)
{
for(i=0;i<x;i++)
wr_lcd(dat,eng[j*16+i]);
if((y==2)&&(j==1))
{wr_lcd(comm,0x90);
for(i=0;i<8;i++)
wr_lcd(dat,eng[j*16+i]);
}
}
}
/*********************LCD显示中文(欢迎界面)程序******************/
voidchn_disp(ucharcode*chn)/*lcd显示中文*/
{
uchari,j;
wr_lcd(comm,0x30);
wr_lcd(comm,0x80);/*第一行的起始地址*/
j=0;
for(i=0;i<16;i++)
wr_lcd(dat,chn[j*16+i]);
wr_lcd(comm,0x90);//第二行的起始地址
j=1;
for(i=0;i<16;i++)
wr_lcd(dat,chn[j*16+i]);
}
/***************************LCD清内存程序*******************/
voidclrram(void)//lcd清内存
{
wr_lcd(comm,0x30);
wr_lcd(comm,0x01);
delay(120);
}
/*************LCD写数据或写命令子程序****************/
voidwr_lcd(uchardat_comm,ucharcontent)/*lcd写数据*/
{
uchara,i,j;
delay(40);
a=content;//a为指令代码或者数据
cs=1;//置位cs开始传输数据
sclk=0;//拉低sclk准备给上升沿,发送数据
std=1;//置1
for(i=0;i<5;i++)/*先传输起始字节,首先5个1,sclk的上升沿传输启动*/
{
sclk=1;
sclk=0;
}
std=0;//RW=0;
sclk=1;
sclk=0;
if(dat_comm)
std=1;//如果是数据则RS为1
else
std=0;//如果是控制字则RS为0
sclk=1;//给上升沿,启动传输
sclk=0;//拉低sclk
std=0;//第8位为0,起始字节传输完毕
sclk=1;//给上升沿,启动传输
sclk=0;
for(j=0;j<2;j++)//一个字节分两次发送,第一次发送高四位,后面补4个0,第二次发送低4位,后面同样补4个0
{
for(i=0;i<4;i++)//先传输高4位
{
a=a<<1;//数据循环左移一位,低位补0
std=CY;//把进位进行传输
sclk=1;
sclk=0;
}
std=0;
for(i=0;i<4;i++)//后4位数据为4个0
{
sclk=1;
sclk=0;
}
}
}
/**********************LCD延时程序************************************/
voiddelay(uintus)//lcd延时时间
{
while(us--);
}
voiddelay1(uintms)
{
uinti,j;
for(i=0;i<ms;i++)
for(j=0;j<15;j++)
delay(1);
}
/*********************显示数据位子程序*******************/
voidmath_disp(uintmath)
{uintk;
uchari;
ucharj;
k=math;
dispbuf[0]=k/10000;//得到万位数
k=k%10000;
dispbuf[1]=k/1000;//得到千位数
k=k%1000;
dispbuf[2]=k/100;//得到百位数
k=k%100;
dispbuf[3]=k/10;//得到十位数
dispbuf[4]=k%10;//得到个位数
wr_lcd(comm,0x90);//给第二行的起始地址以让数据在第二行显示,
for(i=0;i<5;i++)
{
for(j=0;j<2;j++)//连续显示两个tab2中的字节,LCD自动把这两个字节联系起来显示一个数据
{
wr_lcd(dat,tab2[xs2*dispbuf[i]+j]);//调用显示子函数
}
}
}

⑽ 求MS12232/12832液晶屏的51单片机串口驱动程序---并口的比较多,串口的太少见了。

由于12232F这个显示器用得比较平常,但平常见到的是一些并口的汇编程序.并且也没有对应于12232F的并口程序,串口的C51程序极少见,为了方便大家使用.本程序在AT89S52单片机上已经调试成功,有什么问题,大家多多交流指教.使用这款LCD应该要注意的问题<br>一定要在VO与VDD及VSS这三个脚间接一个20K的电位器<br>电位器的中间脚接VO,其它二脚接VDD和VSS<br>然后调节电位器的大小,直到有显示为止。欢迎大家提出意见

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define x1 0x80
#define x2 0x88
#define y 0x80
#define comm 0
#define dat 1

sbit cs = P3^3;
sbit std = P3^1;
sbit sclk = P3^0;

void wr_lcd (uchar dat_comm,uchar content);
void delay (uint us);

uchar code tab1[]={
"天行健君子以自强不息"
"地势坤君子以厚德载物"
};

uchar code tab31[]={
"北京欢迎你WelcometoBeijing"
};
uchar code tab32[]={
/*-- 调入了一幅图像:F:\梁\画图\HOCO12832.bmp --*/
/*-- 宽度x高度=128x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7F,0x80,0x00,0x00,0x00,0x00,0x18,0x0C,0x00,0x00,0x01,0x00,0x00,0x00,0x00,
0x01,0xFF,0x80,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x13,0x10,0x03,0xFE,0x00,
0x03,0xFF,0xC0,0x00,0x00,0x00,0x00,0x58,0x00,0x00,0x00,0x3F,0x30,0x1F,0xFF,0xC0,
0x03,0xFF,0xE0,0x00,0x00,0x00,0x00,0x8C,0x03,0xF0,0x00,0x7F,0xE0,0x7C,0x01,0xE0,
0x03,0xFF,0xF0,0x00,0x00,0x00,0x01,0x36,0x06,0xC0,0x00,0x5F,0xC0,0xFF,0xFC,0x60,
0x01,0xFF,0xF0,0x00,0x00,0x00,0x02,0x1B,0x0F,0x80,0x00,0xFF,0x01,0xFE,0x0F,0x30,
0x00,0xEF,0xF0,0x00,0x00,0x00,0x02,0x6D,0x9F,0x00,0x00,0x3E,0x03,0xFF,0xF1,0x90,
0x00,0xFF,0xF8,0x00,0x00,0x00,0x04,0x36,0xFE,0x00,0x01,0xFF,0x07,0xFF,0xFC,0x90,
0x00,0xEF,0xFF,0xFF,0x80,0x00,0x04,0xDB,0x7E,0x00,0x03,0xFF,0x87,0xFF,0xFC,0xD0,
0x00,0x0F,0xFF,0xFF,0xC0,0x00,0x04,0x6D,0xFC,0x00,0x07,0xFF,0x8F,0xFF,0xFE,0x50,
0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x04,0x36,0xFC,0x10,0x07,0xFF,0x8F,0xFF,0xFE,0x90,
0x00,0x0F,0xFF,0xFF,0xE0,0x00,0x04,0x1B,0xF8,0x10,0x07,0xFF,0xCF,0xFF,0xFE,0x80,
0x00,0x0F,0xFF,0xFF,0xF0,0x00,0x04,0x0F,0xF8,0x10,0x07,0xFF,0xFF,0xFF,0xFA,0x00,
0x00,0x07,0xFF,0xFF,0xF0,0x00,0x04,0x07,0xF0,0x10,0x07,0xFF,0xFF,0xFF,0xFA,0x00,
0x00,0xFF,0xFF,0xFF,0xF8,0x00,0x02,0x03,0xF0,0x20,0x07,0xFF,0xFF,0xFF,0xBA,0x00,
0x00,0xFD,0xFF,0xFF,0xFC,0x00,0x02,0x03,0xF0,0x20,0x03,0xFF,0xFF,0xDF,0xB8,0x00,
0x00,0xC1,0xC0,0x3F,0xFC,0x00,0x01,0x01,0xE0,0x40,0x00,0xFF,0xFF,0xDF,0xB0,0x00,
0x00,0x81,0xC0,0x3F,0xCE,0x00,0x00,0x81,0xE0,0x80,0x00,0x7F,0xFF,0xDF,0xA0,0x00,
0x00,0x81,0x80,0x1D,0xCF,0x00,0x00,0x41,0xE1,0x00,0x00,0x3F,0xFF,0x9B,0x00,0x00,
0x01,0x83,0x80,0x1F,0xC7,0x80,0x00,0x21,0xE2,0x00,0x00,0x1F,0xFD,0xB6,0x00,0x00,
0x01,0xC3,0x00,0x0E,0xE6,0x80,0x00,0x19,0xEC,0x00,0x00,0x07,0xFE,0x20,0x00,0x00,
0x00,0xC3,0x00,0x07,0x67,0x40,0x00,0x07,0xF0,0x00,0x00,0x03,0x3E,0x00,0x00,0x00,
0x00,0x02,0x00,0x03,0xE7,0xA0,0x00,0x00,0x00,0x00,0x00,0x02,0x8E,0x00,0x00,0x00,
0x00,0x06,0x00,0x03,0x83,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x00,0x00,0x00,
0x00,0x06,0x00,0x07,0x03,0x00,0x77,0x46,0x74,0x24,0x80,0x06,0x04,0x00,0x00,0x00,
0x00,0x1C,0x00,0x06,0x00,0x00,0x55,0x45,0x54,0x57,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x1C,0x00,0x0E,0x00,0x00,0x45,0x45,0x74,0x57,0x80,0x08,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1C,0x00,0x00,0x55,0x45,0x44,0x74,0x80,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x38,0x00,0x00,0x77,0x76,0x47,0x54,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

uchar code tab5[]={
/*-- 调入了一幅图像:F:\梁\画图\COCK.bmp --*/
/*-- 宽度x高度=128x64 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x80,0x00,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0C,0x43,0x01,0x80,0x00,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x19,0xFF,0x07,0x00,0x07,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x3F,0xFC,0x1E,0x00,0x1F,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xBF,0xFF,0xFC,0x00,0x7F,0xFC,0x00,0x7F,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0xF0,0x00,0xFF,0xC0,0x00,0x0F,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFC,0x01,0xF0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xDF,0xFF,0xC0,0x07,0xFF,0xFF,0xFF,0x80,0xF0,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0xFF,0xE0,0x38,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x1F,0xFF,0xF0,0x03,0xF8,0x38,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xE0,0x00,0x3F,0xFF,0xFF,0xC0,0x7C,0x18,0x00,0x00,0x00,
0x00,0x00,0x00,0x04,0x7F,0xF0,0x00,0x3F,0xFF,0xFF,0xF8,0x1E,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xFE,0x0F,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0xFF,0x87,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0x83,0x88,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xFF,0xC3,0x88,0x00,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xFF,0xE1,0x88,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xE1,0x88,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xF1,0x88,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xF3,0x08,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xF2,0x10,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0x8F,0xFF,0xFF,0xFF,0xFF,0xF0,0x20,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0x7F,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0x7F,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0x7E,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0x3E,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xCF,0xFF,0x3C,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xCF,0xFE,0x38,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0x8F,0xFE,0x38,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0x8F,0xFE,0x30,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1F,0x7C,0x20,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x1E,0x78,0x00,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFE,0x1E,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xDA,0x3C,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xF2,0x30,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xF1,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x7C,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x78,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x72,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x40,0x04,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x0C,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0C,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x38,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

/*----初始化-----*/
void init_lcd (void)
{
wr_lcd (comm,0x30); /*30---基本指令动作*/
wr_lcd (comm,0x01); /*清屏,地址指针指向00H*/
delay (100);
wr_lcd (comm,0x06); /*光标的移动方向*/
wr_lcd (comm,0x0c); /*开显示,关游标*/
}

/*----上半屏显示汉字或字符----*/
void chn_dispup (uchar code *chn)
{
uchar i,j;
wr_lcd (comm,0x30); //30---基本指令动作
wr_lcd (comm,0x80); //把显示地址设为0X80,即为第一行的首位--第一页
j=0;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);
}

/*----下半屏显示汉字或字符---*/
void chn_dispdown (uchar code *chn)
{
uchar i,j;
wr_lcd (comm,0x30); /*30---基本指令动作*/
wr_lcd (comm,0x90); //把显示地址设为0X90,即为第二行的首位--第二页
j=0;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);
}

/*---上下半屏顺序显示汉字或字符----*/
void chn_disp1 (uchar code *chn)
{
uchar i,j;
wr_lcd (comm,0x30); /*30---基本指令动作*/

wr_lcd (comm,0x80); //把显示地址设为0X80,即为第一行的首位--第一页
j=0;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);

wr_lcd (comm,0x90); //把显示地址设为0X90,即为第二行的首位--第二页
j=1;
for (i=0;i<16;i++)
wr_lcd (dat,chn[j*16+i]);
}

/*----显示图形----*/
void img_disp (uchar code *img)
{
uchar i,j;
for(j=0;j<32;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34); //扩充指令操作
wr_lcd (comm,y+j); //先将垂直的字节坐标(Y)写入绘图RAM 地址
wr_lcd (comm,x1+i); //再将水平的字节坐标(X)写入绘图RAM 地址。
wr_lcd (comm,0x30); //基本指令动作
wr_lcd (dat,img[j*16+i*2]); //写入第一个Bytes
wr_lcd (dat,img[j*16+i*2+1]); //写入第二个Bytes
}
}
for(j=32;j<64;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34); //扩充指令操作
wr_lcd (comm,y+j-32); //先将垂直的字节坐标(Y)写入绘图RAM 地址
wr_lcd (comm,x2+i); //再将水平的字节坐标(X)写入绘图RAM 地址
wr_lcd (comm,0x30); //基本指令动作
wr_lcd (dat,img[j*16+i*2]); //写入第一个Bytes
wr_lcd (dat,img[j*16+i*2+1]); //写入第二个Bytes
}
}
wr_lcd (comm,0x36);
}

/*--------显示点阵-----------*/
void lat_disp (uchar data1,uchar data2)//data1,data2是要显示的数据
{
uchar i,j,k,x;
x=x1;
for(k=0;k<2;k++)
{
for(j=0;j<16;j++)
{
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34); //扩充指令操作
wr_lcd (comm,y+j*2); //先将垂直的字节坐标(Y)写入绘图RAM 地址
wr_lcd (comm,x+i); //再将水平的字节坐标(X)写入绘图RAM 地址
wr_lcd (comm,0x30); //功能设置:一次送8位数据,基本指令集
wr_lcd (dat,data1); //写入第一个Bytes
wr_lcd (dat,data1); //写入第二个Bytes
}
for(i=0;i<8;i++)
{
wr_lcd (comm,0x34); //扩充指令操作
wr_lcd (comm,y+j*2+1); //先将垂直的字节坐标(Y)写入绘图RAM 地址
wr_lcd (comm,x+i); //再将水平的字节坐标(X)写入绘图RAM 地址
wr_lcd (comm,0x30); //基本指令操作
wr_lcd (dat,data2); //写入第一个Bytes
wr_lcd (dat,data2); //写入第二个Bytes
}
}
x=x2;
}
wr_lcd (comm,0x36);
}

/*--------------清DDRAM------------------*/
void clrram (void)
{
wr_lcd (comm,0x30);
wr_lcd (comm,0x01);
delay (180);
}
/*---------------------------------------*/
void wr_lcd (uchar dat_comm,uchar content)
{
uchar a,i,j;
delay (50);
a=content;
cs=1;
sclk=0;
std=1;
for(i=0;i<5;i++)
{
sclk=1;
sclk=0;
}
std=0;
sclk=1;
sclk=0;
if(dat_comm)
std=1; //data
else
std=0; //command
sclk=1;
sclk=0;
std=0;
sclk=1;
sclk=0;
for(j=0;j<2;j++)
{
for(i=0;i<4;i++)
{
a=a<<1;
std=CY;
sclk=1;
sclk=0;
}
std=0;
for(i=0;i<4;i++)
{
sclk=1;
sclk=0;
}
}
}
/*-----------------------------------*/
void delay (uint us) //delay time
{
while(us--);
}
void delay1 (uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
for(j=0;j<15;j++)
delay(1);
}
/*------------------主程序--------------------*/
void main ()
{
SP=0x5f;
init_lcd ();
while (1)
{
clrram();
lat_disp (0x00,0x00); //显示点阵
delay1 (8000);
clrram();
lat_disp (0xcc,0xcc); //显示点阵
delay1 (8000);
clrram();
chn_disp1 (tab1); //上下半屏顺序显示汉字或字符
delay1 (8000);
clrram();
lat_disp (0xff,0x00); //显示点阵
delay1 (8000);
img_disp (tab5); //显示图形
delay1 (8000);
clrram();
chn_dispup (tab31); //上半屏顺序显示汉字或字符
delay1 (8000);
clrram();
chn_dispdown (tab31); //下半屏顺序显示汉字或字符
delay1 (8000);

}
}

阅读全文

与12232f液晶屏c程序相关的资料

热点内容
学校出台文件从哪里找 浏览:536
部落电影推荐 浏览:12
火影之另样的活着苹果鸭梨汁小说 浏览:718
华为怎么下载壮观app 浏览:710
绘画工具介绍 浏览:692
韩国一个女钢琴家个一个学生 浏览:860
dianyinggo 浏览:581
主角姓秦天的都市小说 浏览:442
李彩谭演的电影 浏览:826
重生晚清军阀系列小说 浏览:207
露三点的欧美电影 浏览:461
问卷网数据库设计 浏览:879
儿子与后妈的韩国电影 浏览:741
保证java语言可移植性的特征 浏览:481
还有哪些能玩的网络游戏 浏览:520
pe可以导入哪些类型的媒体文件 浏览:550
stm32如何烧录程序 浏览:722
in旧版本 浏览:349
粤政易手机版接收的文件在哪里 浏览:209
三及港片电影 浏览:561

友情链接