LCD12864 串行方式画sin直线显示图像Word格式文档下载.docx

上传人:b****5 文档编号:20428020 上传时间:2023-01-22 格式:DOCX 页数:17 大小:19.29KB
下载 相关 举报
LCD12864 串行方式画sin直线显示图像Word格式文档下载.docx_第1页
第1页 / 共17页
LCD12864 串行方式画sin直线显示图像Word格式文档下载.docx_第2页
第2页 / 共17页
LCD12864 串行方式画sin直线显示图像Word格式文档下载.docx_第3页
第3页 / 共17页
LCD12864 串行方式画sin直线显示图像Word格式文档下载.docx_第4页
第4页 / 共17页
LCD12864 串行方式画sin直线显示图像Word格式文档下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

LCD12864 串行方式画sin直线显示图像Word格式文档下载.docx

《LCD12864 串行方式画sin直线显示图像Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《LCD12864 串行方式画sin直线显示图像Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。

LCD12864 串行方式画sin直线显示图像Word格式文档下载.docx

//端口定义

sbitLCD_CS=P3^5;

//片选信号

sbitLCD_SID=P3^6;

//串行数据线

sbitLCD_SCLK=P3^4;

//串上时钟输入

//数组,字定义

ucharcodea[]={"

阿姆YOUNG"

};

//定义要显示的字符串

uintx=0;

//图片取模

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

codeuchartu[]={

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

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

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xC0,0x00,0x00,0x04,0x00,0x00,0x00,

0x07,0xFF,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xE0,0x00,0x07,0xFF,0x00,0x00,0x00,

0x05,0xC6,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xE0,0x01,0xFF,0xFF,0x80,0x00,0x00,

0x05,0x5E,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xF0,0x3F,0xFF,0xFF,0x80,0x00,0x00,

0x07,0x7E,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,

0x05,0xFE,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xC7,0x80,0x00,

0x05,0xFE,0x00,0x00,0x00,0x00,0x00,0x01,0xF1,0xFF,0xFF,0xFF,0xFF,0xCF,0xC0,0x00,

0x05,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xDF,0xE0,0x00,

0x07,0xF6,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,

0x05,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,

0x04,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0x3F,0xFF,0xFF,0xF0,0x00,

0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xBF,0xFE,0x07,0xFF,0xFF,0xF0,0x00,

0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x0F,0x3F,0xFC,0x03,0xFF,0xFF,0xE0,0x00,

0x02,0x00,0x06,0x20,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x03,0xFF,0xFF,0xC0,0x00,

0x03,0xFC,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x03,0xFF,0xF8,0x00,0x00,

0x02,0xC8,0x0D,0x80,0x00,0x00,0x00,0x00,0x00,0x3F,0xE0,0x03,0xFF,0xE0,0x00,0x00,

0x02,0xC8,0x1D,0xC0,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x07,0xFF,0xC0,0x00,0x00,

0x02,0x4E,0x30,0xF0,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x07,0xFF,0xC0,0x00,0x00,

0x0F,0xFE,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x1F,0xC0,0x0F,0xFF,0xC0,0x00,0x00,

0x06,0xC8,0x12,0x40,0x00,0x00,0x00,0x00,0x00,0x1F,0xE0,0x3F,0xFF,0x80,0x00,0x00,

0x06,0x58,0x1F,0xC0,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0x80,0x00,0x00,

0x07,0xFE,0x12,0x40,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0x80,0x00,0x00,

0x06,0x18,0x1F,0xC0,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0x00,0x00,0x00,

0x00,0x78,0x12,0x40,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFE,0x00,0x00,0x00,

0x00,0x30,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFC,0x00,0x00,0x00,

0x00,0x00,0x1B,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF8,0x00,0x00,0x00,

0x00,0x00,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xF0,0x00,0x00,0x00,

0x01,0x80,0x73,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xC0,0x00,0x00,0x00,

0x01,0x80,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0xFE,0x00,0x00,0x00,0x00,

0x01,0x80,0x13,0x60,0x00,0x00,0x00,0x00,0x00,0x7F,0xFD,0xE0,0x00,0x00,0x00,0x00,

0x01,0x80,0xFF,0xC0,0x00,0x00,0x00,0x00,0x03,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,

0x01,0x80,0xC3,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,

0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,

0x01,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,

0x01,0x80,0x03,0x00,0x00,0x60,0x00,0x00,0x03,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x07,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x3F,0xFC,0x00,0x00,0x0F,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x03,0xFF,0xF8,0x00,0x00,0x1F,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x0C,0x7F,0xC0,0xF8,0x00,0x00,0x3F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x07,0xFC,0x03,0xFC,0x00,0x00,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x07,0xC2,0x03,0xFE,0x00,0x01,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x07,0xC2,0x03,0xF7,0x00,0x03,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x05,0xC2,0x03,0xFB,0x00,0x07,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x0F,0xC2,0x01,0xFB,0x80,0x07,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x05,0xC0,0x01,0xFD,0xC0,0x0F,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x03,0x80,0x01,0xFC,0xE0,0x1F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x03,0x82,0x00,0xFC,0xE0,0x1F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x03,0x82,0x00,0xFE,0x70,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x03,0x82,0x00,0xFE,0x78,0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x03,0x80,0x00,0x7E,0x38,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x03,0x00,0x00,0x7F,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x03,0x02,0x00,0x7F,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x03,0x06,0x08,0x3F,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x03,0x06,0x00,0x3F,0x8F,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x03,0x06,0x00,0x3F,0x87,0x1F,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x03,0x00,0x00,0x03,0x97,0xBF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0x9F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x7F,0xFF,0xFD,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

//延时函数

voidDelay_nms(ucharn)

{

uchari;

ucharj;

for(i=0;

i<

n;

i++)

for(j=0;

j<

125;

j++)//大概1ms

_nop_();

}

//串行发送一个字节

voidLCD_sendbyte(ucharbyte)

8;

{

LCD_SCLK=0;

//拉低时钟线

LCD_SID=(bit)(byte&

0x80);

//发送最高位数据

LCD_SCLK=1;

//上升沿发送数据

byte=byte<

<

1;

//左移一位

}

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

//写指令

voidLCD_write_com(ucharcom)

LCD_CS=1;

LCD_sendbyte(0xf8);

//送入5个连续的“1“,启动一个周期,11111,RW(0),RS(0),0

LCD_sendbyte(0xf0&

com);

//取高四位,数据分两次传送,

//每个字节的内容被送入两个字节

//高四位放在第一个字节的高四位

(com<

4));

//低四位放在第二个字节的高四位

LCD_CS=0;

Delay_nms(10);

//串行不支持读操作,不可检测忙操作,这里用延时替代

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

//写数据

voidLCD_write_dat(uchardat)

LCD_sendbyte(0xfa);

//送入5个连续的“1“,启动一个周期,11111,RW(0),RS

(1),0

dat);

(dat<

//低四位放在第二个字节

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

//LCD初始化

voidLCD_init(void)

{

LCD_write_com(0x30);

//选择基本指令集

LCD_write_com(0x0c);

//开显示,无游标,不反白

LCD_write_com(0x01);

//清除显示屏幕,把DDRAM位址计数器调整为00H

Delay_nms(5);

//清屏操作时间较长1.6ms因此加此延时

LCD_write_com(0x02);

//清DDRAM位址归位,此处貌似与清屏重复

LCD_write_com(0x06);

//设定光标右移,整体显示不移动

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

//显示字符串

voidprint(uchar*s)

while(*s!

='

\0'

{

LCD_write_dat(*s);

s++;

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

//设置显示地址

voidLCD_Setaddress(ucharx,uchary)

{//地址从第1行第1列开始不从0开始

ucharaddr;

switch(x)

case1:

addr=0x80+y-1;

break;

case2:

addr=0x90+y-1;

case3:

addr=0x88+y-1;

case4:

addr=0x98+y-1;

default:

break;

LCD_write_com(addr);

//字符显示开始地址

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

//让字符串显示在固定位置,设置(x,y)的位置,调用上面的函数

voidLCD_Putstring(ucharx,uchary,uchar*pData)

LCD_Setaddress(x,y);

while(*pData!

='

LCD_write_dat(*pData++);

/*----------------------------------------------------------------------------------------------------------------------*/

//打点绘图,适用于在屏幕上打稀疏的几个点,不能用于横行连续打点

voidLCD_draw_point(ucharx,uchary)

ucharx_byte,x_bit;

//在横坐标的哪一个字节,哪一个位

uchary_byte,y_bit;

//在纵坐标的哪一个字节,哪一个位

x_byte=x/16;

//算出它在哪一个字节(地址)

//注意一个地址是16位的

x_bit=x%16;

//(取模)算出它在哪一个位

y_byte=y/32;

//y是没在哪个字节这个说法

//这里只是确定它在上半屏(32行为一屏)还是下半屏

//0:

上半屏1:

下半屏

y_bit=y%32;

//y_bit确定它是在第几行

LCD_write_com(0x34);

//打开扩展指令集

LCD_write_com(0x80+y_bit);

//垂直地址(上)貌似与说明书正好相反

LCD_write_com(0x80+x_byte+8*y_byte);

//先写水平坐标(下)貌似与说明书正好相反

//具体参照数据手册

//下半屏的水平坐标起始地址为0x88

//(+8*y_byte)就是用来确定在上半屏还是下半屏

if(x_bit<

8)//如果x_bit位数小于8

LCD_write_dat(0x01<

(7-x_bit));

//写高字节。

因为坐标是从左向右的

//而GDRAM高位在左,低位在右

LCD_write_dat(0x00);

//低字节全部填0

else

//高字节全部填0

(15-x_bit));

}

LCD_write_com(0x36);

//打开绘图显示

//回到基本指令集

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

//打点绘图一次打水平一行可以避免断点现象

//x表示数组的首

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

当前位置:首页 > 求职职场 > 社交礼仪

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1