LCD12864 串行方式画sin直线显示图像.docx

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

LCD12864 串行方式画sin直线显示图像.docx

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

LCD12864 串行方式画sin直线显示图像.docx

LCD12864串行方式画sin直线显示图像

#include

#include

#include

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

#defineucharunsignedchar

#defineuintunsignedint

#defineclear0x01//清屏

#definereset_DDRAM0x02//DDRAM地址归位

#defineleft_move0x04//游标左移

#defineright_move0x06//游标右移

#defineall_left_move0x05//画面整体左移

#defineall_right_move0x07//画面整体右移

#definedisplay_left_move0x10//显示游标左移

#definedisplay_right_move0x14//显示游标右移

#defineset_function10x30//基本指令集动作

#defineset_CGRAM0x40//设定CGRAM地址

#defineset_DDRAM0x80//设定DDRAM地址

#defineset_function20x34//扩充指令集动作

#definefanbai0x04//反白第一行(扩充指令集)

#defineset_GDRAM0x80//设定GDRAM地址(扩充指令集)

#defineON_G0x36//开绘图显示(扩充指令集)

#defineset_function20x34//关绘图显示(扩充指令集)

//端口定义

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,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,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

for(j=0;j<125;j++)//大概1ms

_nop_();

}

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

//串行发送一个字节

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

voidLCD_sendbyte(ucharbyte)

{

uchari;

for(i=0;i<8;i++)

{

LCD_SCLK=0;//拉低时钟线

_nop_();

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);//取高四位,数据分两次传送,

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

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

LCD_sendbyte(0xf0&(com<<4));//低四位放在第二个字节的高四位

LCD_CS=0;

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

}

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

//写数据

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

voidLCD_write_dat(uchardat)

{

LCD_CS=1;

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

(1),0

LCD_sendbyte(0xf0&dat);//取高四位,数据分两次传送,

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

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

LCD_sendbyte(0xf0&(dat<<4));//低四位放在第二个字节

LCD_CS=0;

Delay_nms(10);

}

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

//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;

break;

case3:

addr=0x88+y-1;

break;

case4:

addr=0x98+y-1;

break;

default:

break;

}

LCD_write_com(addr);//字符显示开始地址

}

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

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

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

voidLCD_Putstring(ucharx,uchary,uchar*pData)

{

LCD_Setaddress(x,y);

while(*pData!

='\0')

{

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

{

LCD_write_dat(0x00);//高字节全部填0

LCD_write_dat(0x01<<(15-x_bit));

}

LCD_write_com(0x36);//打开绘图显示

LCD_write_com(0x30);//回到基本指令集

}

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

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

//x表示数组的首

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

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

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