基于单片机的液晶显示程序源码Word格式文档下载.docx

上传人:b****4 文档编号:7897405 上传时间:2023-05-09 格式:DOCX 页数:28 大小:21.36KB
下载 相关 举报
基于单片机的液晶显示程序源码Word格式文档下载.docx_第1页
第1页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第2页
第2页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第3页
第3页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第4页
第4页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第5页
第5页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第6页
第6页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第7页
第7页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第8页
第8页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第9页
第9页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第10页
第10页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第11页
第11页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第12页
第12页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第13页
第13页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第14页
第14页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第15页
第15页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第16页
第16页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第17页
第17页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第18页
第18页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第19页
第19页 / 共28页
基于单片机的液晶显示程序源码Word格式文档下载.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的液晶显示程序源码Word格式文档下载.docx

《基于单片机的液晶显示程序源码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的液晶显示程序源码Word格式文档下载.docx(28页珍藏版)》请在冰点文库上搜索。

基于单片机的液晶显示程序源码Word格式文档下载.docx

main()

主函数,初始化图形液晶模块,在屏幕上的随机位置显示随机数字(0--9),

*然后调用画直线函数以屏幕中心为中点画对称的直线,最后显示一个简单

*的窗口。

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

voidmain(void)

{uint8i;

uint8bak;

while

(1)

{LCM_DispIni();

//初始化图形液晶模块

/*提示加载程序,即显示"

Load..."

*/

LCM_DispStr(6,3,"

Load"

);

for(i=0;

5;

i++)

{LCM_DispChar(6,i+7,'

.'

);

DelayS(10);

/*数字显示演示*/

srand(168);

//初始化随机种子

LCM_DispClr();

250;

{uint8x,y;

x=rand()&

0x07;

//取得随机显示位置

y=rand()&

0x0f;

bak=rand()%10+'

0'

;

//取利随机显示数字'

--'

9'

LCM_DispChar(x,y,bak);

DelayS

(2);

#defineCENTER_X64

#defineCENTER_Y32

/*直线演示。

由于直线要基于中心点,具有对称性,所以只要取出第一个点,

即可推出这条直线。

这样做同样达到不同角度的目的。

{uint8x0,y0;

uint8x1,y1;

/*取第一个点坐标*/

x0=rand()&

0x7f;

//取得随机起点

y0=rand()&

0x3f;

/*计算出中心对称点*/

x1=2*CENTER_X-x0;

y1=2*CENTER_Y-y0;

Line(x0,y0,x1,y1,1);

DelayS(5);

/*画窗口演示*/

Rectangle(0,0,127,63,1);

//显示窗口

HLine(0,10,127,1);

RLine(10,0,10,1);

Line(0,0,10,10,1);

Line(10,0,0,10,1);

RLine(120,10,63,1);

//显示滚动条

RectangleFill(120,20,127,30,1);

LCM_DispStr(4,4,"

DP-51PRO"

//在窗口中显示内容

LCM_DispStr(5,1,"

"

DelayS(1500);

}//endofwhile

(1)...

 

被调用函数:

LCM_DRIVE.C

图形液晶TG12864B-2驱动程序。

*说明:

在LCM_DRIVE.H文件中定义了LCM操作地址,左半屏的写命令操作地址为2004H,写

*数据操作地址为2005H,右半屏的写命令操作地址为2000H,写数据操作地址为2001H;

*由于GRAPHICS.C中使用了disp_buf作为作图缓冲区,所以LCM_WriteByte()、LCM_

*DispFill()均要更新disp_buf。

/*LCM复位控制脚定义*/

sbitLCM_RST=P1^0;

LCM_Wr1Command()

写命令子程序,所选屏为左半屏(CS1)。

command要写入LCM的命令字

#defineLCM_Wr1Command(command)LCMCS1W_COM=command

LCM_Wr2Command()

写命令子程序,所选屏为右半屏(CS2)。

#defineLCM_Wr2Command(command)LCMCS2W_COM=command

LCM_Wr1Data()

写数据子程序,所选屏为左半屏(CS1)。

wrdata要写入LCM的数据

#defineLCM_Wr1Data(wrdata)LCMCS1W_DAT=wrdata

LCM_Wr2Data()

写数据子程序,所选屏为右半屏(CS2)。

#defineLCM_Wr2Data(wrdata)LCMCS2W_DAT=wrdata

LCM_DispIni()

LCM显示初始化。

使能显示,设置显示起始行为0并清屏。

*出口参数:

voidLCM_DispIni(void)

LCM_RST=0;

//复位驱动芯片

500;

LCM_RST=1;

LCM_Wr1Command(LCM_DISPON);

//打开显示

LCM_Wr1Command(LCM_STARTROW);

//设置显示起始行为0

LCM_Wr2Command(LCM_DISPON);

LCM_Wr2Command(LCM_STARTROW);

//清屏

LCM_Wr1Command(LCM_ADDRSTRY+0);

//设置页(行)地址

LCM_Wr1Command(LCM_ADDRSTRX+0);

//设置列地址,即列

LCM_Wr2Command(LCM_ADDRSTRY+0);

LCM_Wr2Command(LCM_ADDRSTRX+0);

LCM_WriteByte()

向指定点写数据(一字节)。

xx坐标值(0-127)

*yy坐标值(0-63)

*wrdata所要写的数据

会更新disp_buf相应存储单元

voidLCM_WriteByte(uint8x,uint8y,uint8wrdata)

{x=x&

//参数过滤

y=y&

y=y>

>

3;

disp_buf[y][x]=wrdata;

if(x<

64)//选择液晶控制芯片(即CS1--控制前64个点,CS2--控制后64个点)

{LCM_Wr1Command(LCM_ADDRSTRX+x);

//设置当前列地址,即x坐标

LCM_Wr1Command(LCM_ADDRSTRY+y);

//设置当前页地址,即y坐标

for(x=0;

x<

x++);

//短延时

LCM_Wr1Data(wrdata);

else

{x=x-64;

//调整x变量值

LCM_Wr2Command(LCM_ADDRSTRX+x);

LCM_Wr2Command(LCM_ADDRSTRY+y);

LCM_Wr2Data(wrdata);

LCM_DispFill()

向显示屏填充数据

filldata要写入LCM的填充数据

voidLCM_DispFill(uint8filldata)

{uint8x,y;

for(y=0;

y<

8;

y++)

{LCM_Wr1Command(LCM_ADDRSTRY+y);

LCM_Wr1Command(LCM_ADDRSTRX);

//设置列地址

LCM_Wr2Command(LCM_ADDRSTRX);

64;

x++)

{LCM_Wr1Data(filldata);

LCM_Wr2Data(filldata);

disp_buf[y][x]=filldata;

disp_buf[y][x+64]=filldata;

}

/*ASCII码对应的点阵数据表*/

uint8codeASCII_TAB20[80]={0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x9e,0x00,0x00,

0x00,0x0e,0x00,0x0e,0x00,

0x28,0xfe,0x28,0xfe,0x28,

0x48,0x54,0xfe,0x54,0x24,

0x46,0x26,0x10,0xc8,0xc4,

0x6c,0x92,0xaa,0x44,0xa0,

0x00,0x0a,0x06,0x00,0x00,

0x00,0x38,0x44,0x82,0x00,

0x00,0x82,0x44,0x38,0x00,

0x28,0x10,0x7c,0x10,0x28,

0x10,0x10,0x7c,0x10,0x10,

0x00,0xa0,0x60,0x00,0x00,

0x10,0x10,0x10,0x10,0x10,

0x00,0xc0,0xc0,0x00,0x00,

0x40,0x20,0x10,0x08,0x04

};

uint8codeASCII_TAB30[80]={0x7C,0xA2,0x92,0x8A,0x7C,

0x00,0x84,0xFE,0x80,0x00,

0x84,0xC2,0xA2,0x92,0x8C,

0x42,0x82,0x8A,0x96,0x62,

0x30,0x28,0x24,0xFE,0x20,

0x4E,0x8A,0x8A,0x8A,0x72,

0x78,0x94,0x92,0x92,0x60,

0x02,0xE2,0x12,0x0A,0x06,

0x6C,0x92,0x92,0x92,0x6C,

0x0C,0x92,0x92,0x52,0x3C,

0x00,0x6C,0x6C,0x00,0x00,

0x00,0xAC,0x6C,0x00,0x00,

0x10,0x28,0x44,0x82,0x00,

0x28,0x28,0x28,0x28,0x28,

0x00,0x82,0x44,0x28,0x10,

0x04,0x02,0xA2,0x12,0x0C

};

uint8codeASCII_TAB40[80]={0x64,0x92,0xF2,0x82,0x7C,

0xFC,0x22,0x22,0x22,0xFC,

0xFE,0x92,0x92,0x92,0x6C,

0x7C,0x82,0x82,0x82,0x44,

0xFE,0x82,0x82,0x44,0x38,

0xFE,0x92,0x92,0x92,0x82,

0xFE,0x12,0x12,0x12,0x02,

0x7C,0x82,0x92,0x92,0xF4,

0xFE,0x10,0x10,0x10,0xFE,

0x00,0x82,0xFE,0x82,0x00,

0x40,0x80,0x82,0x7E,0x02,

0xFE,0x10,0x28,0x44,0x82,

0xFE,0x80,0x80,0x80,0x80,

0xFE,0x04,0x18,0x04,0xFE,

0xFE,0x08,0x10,0x20,0xFE,

0x7C,0x82,0x82,0x82,0x7C

uint8codeASCII_TAB50[80]={0xFE,0x12,0x12,0x12,0x0C,

0x7C,0x82,0xA2,0x42,0xBC,

0xFE,0x12,0x32,0x52,0x8C,

0x8C,0x92,0x92,0x92,0x62,

0x02,0x02,0xFE,0x02,0x02,

0x7E,0x80,0x80,0x80,0x7E,

0x3E,0x40,0x80,0x40,0x3E,

0x7E,0x80,0x70,0x80,0x7E,

0xC6,0x28,0x10,0x28,0xC6,

0x0E,0x10,0xE0,0x10,0x0E,

0xC2,0xA2,0x92,0x8A,0x86,

0x00,0xFE,0x82,0x82,0x00,

0x04,0x08,0x10,0x20,0x40,

0x00,0x82,0x82,0xFE,0x00,

0x08,0x04,0x02,0x04,0x08,

0x80,0x80,0x80,0x80,0x80

uint8codeASCII_TAB60[80]={0x00,0x02,0x04,0x08,0x00,

0x40,0xA8,0xA8,0xA8,0xF0,

0xFE,0x90,0x88,0x88,0x70,

0x70,0x88,0x88,0x88,0x40,

0x70,0x88,0x88,0x90,0xFE,

0x70,0xA8,0xA8,0xA8,0x30,

0x10,0xFC,0x12,0x02,0x04,

0x18,0xA4,0xA4,0xA4,0x7C,

0xFE,0x10,0x08,0x08,0xF0,

0x00,0x88,0xFA,0x80,0x00,

0x40,0x80,0x88,0x7A,0x00,

0xFE,0x20,0x50,0x88,0x00,

0x00,0x82,0xFE,0x80,0x00,

0xF8,0x08,0x30,0x08,0xF8,

0xF8,0x10,0x08,0x08,0xF0,

0x70,0x88,0x88,0x88,0x70

uint8codeASCII_TAB70[80]={0xF8,0x28,0x28,0x28,0x10,

0x10,0x28,0x28,0x30,0xF8,

0xF8,0x10,0x08,0x08,0x10,

0x90,0xA8,0xA8,0xA8,0x40,

0x08,0x7E,0x88,0x80,0x40,

0x78,0x80,0x80,0x40,0xF8,

0x38,0x40,0x80,0x40,0x38,

0x78,0x80,0x60,0x80,0x78,

0x88,0x50,0x20,0x50,0x88,

0x18,0xA0,0xA0,0xA0,0x78,

0x88,0xC8,0xA8,0x98,0x88,

0x00,0x10,0x6C,0x82,0x00,

0x00,0x00,0xFE,0x00,0x00,

0x00,0x82,0x6C,0x10,0x00,

0x10,0x10,0x54,0x38,0x10,

0x10,0x38,0x54,0x10,0x10

LCM_DispChar()

指定地址显示字符。

disp_cy显示行值(0-7)

*disp_cx显示列值(0-15)

*dispdata所要显示的字符(ASCII码)

*注:

支持显示字符0-9、A-Z、a-z及空格,字符显示格式为5*7,模为8*8,所以

*屏幕显示为8*16(共8行,每行16个字符)。

voidLCM_DispChar(uint8disp_cy,uint8disp_cx,chardispdata)

{uint8code*pchardata;

uint8i;

disp_cy=disp_cy&

//参数过滤

disp_cx=disp_cx&

/*先要找出显示数据的类型,并设置相应的点阵数据表,然后设置指针,以取得对应的点阵数据。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2