唯倚社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 696|回复: 6

[资源分享] 51单片机12864图形液晶滚动演示程序+仿真资料

[复制链接]

19

主题

128

帖子

1065

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1065

最佳新人

发表于 2017-9-24 20:14:38 | 显示全部楼层 |阅读模式

轻松玩转社区

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
51单片机12864图形液晶滚动演示程序+仿真资料


仿真图
1.png

12864源码
[C] 纯文本查看 复制代码
#include <stdio.h>
#include <math.h>
#include <intrins.h>
#include <absacc.h>
#include <string.h>
#include "LCD_12864.h"

sbit RESET = P3^3;
uchar code LCD_WIDTH = 16;
uchar code LCD_HEIGHT = 64;
uchar gCurRow,gCurCol;
uchar tCurRow,tCurCol;
uchar ShowModeSW;
uint txthome,grhome;

uchar Status_BIT_01();
uchar Status_BIT_3();
uchar LCD_Write_Command(uchar cmd);
uchar LCD_Write_Command_P1(uchar cmd,uchar para1);
uchar LCD_Write_Command_P2(uchar cmd,uchar para1,uchar para2);
uchar LCD_Write_Data(uchar dat);
void cls();
uchar LCD_Initialise();
void Set_LCD_POS(uchar row,uchar col);
uchar Status_BIT_01()
{
 	uchar i;
	for(i=5;i>0;i--)
	{
	 	if((LCMCW & 0x03)==0x03)
		break;
	}
	return i;
}

uchar Status_BIT_3()
{
 	uchar i;
	for(i=5;i>0;i--)
	{
	 	if((LCMCW & 0x08)==0x08)
		break;
	}
	return i;	
}

uchar LCD_Write_Command_P2(uchar cmd,uchar para1,uchar para2)
{
 	if(Status_BIT_01()==0) return 1;
	LCMDW = para1;
   	if(Status_BIT_01()==0) return 2;
	LCMDW = para2;
	if(Status_BIT_01()==0) return 3;
	LCMDW = cmd;
	return 0;
}

uchar LCD_Write_Command_P1(uchar cmd,uchar para1)
{
 	if(Status_BIT_01()==0) return 1;
	LCMDW = para1;
   	if(Status_BIT_01()==0) return 2;
	LCMDW = cmd;
	return 0;	
}  

uchar LCD_Write_Command(uchar cmd)
{
	if(Status_BIT_01()==0) return 1;
	LCMDW = cmd;
	return 0; 	
}

uchar LCD_Write_Data(uchar dat)
{
 	if(Status_BIT_3()==0) return 1;
	LCMDW = dat;
	return 0; 		
}

void Set_LCD_POS(uchar row,uchar col)
{
 	uint Pos;
	Pos = row*LCD_WIDTH+col;
	LCD_Write_Command_P2(LC_ADD_POS,Pos%256,Pos/256);
	gCurRow = row;
	gCurCol = col;
}

void cls()
{
 	uint i;
   	LCD_Write_Command_P2(LC_ADD_POS,0x00,0x00);
	LCD_Write_Command(LC_AUT_WR);
	for(i=0;i<0x2000;i++)
	{
	 	Status_BIT_3();
		LCD_Write_Data(0x00);
	}
	LCD_Write_Command(LC_AUT_OVR);
	LCD_Write_Command_P2(LC_ADD_POS,0x00,0x00);
	gCurRow = 0;
	gCurCol = 0;
}

uchar LCD_Initialise()
{
 	RESET = 0;
	RESET = 1;
	LCD_Write_Command_P2(LC_TXT_STP,0x00,0x00);
	LCD_Write_Command_P2(LC_TXT_WID,LCD_WIDTH,0x00);
	LCD_Write_Command_P2(LC_GRH_STP,0x00,0x00);
	LCD_Write_Command_P2(LC_GRH_WID,LCD_WIDTH,0x00);
	LCD_Write_Command_P1(LC_CGR_POS,CGRAMSTART >> 11);
   	LCD_Write_Command(LC_CUR_SHP | 0x01);
	LCD_Write_Command(LC_MOD_OR);
	LCD_Write_Command(LC_DIS_SW | 0x08);
	grhome = GRSTART;
	txthome = TXTSTART;
	return 0;
}



主程序

[C] 纯文本查看 复制代码
#include "LCD_12864.h"
#include <stdio.h>
extern void cls();
extern uchar LCD_Initialise();
extern uchar LCD_Write_Command(uchar cmd);
extern uchar LCD_Write_Command_P2(uchar cmd,uchar para1,uchar para2);
extern uchar LCD_Write_Data(uchar dat);
extern void Set_LCD_POS(uchar row,uchar col);
extern uchar code LCD_WIDTH;
extern uchar code LCD_HEIGHT;
sbit S1 = P1^0;
sbit S2 = P1^1;

uchar code ImageX[] = 
{
 	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};

void main()
{
 	uchar i,j,m;
	uint k,x;
	LCD_Initialise();
	Set_LCD_POS(0,0);
	cls();
	while(1)
	{
	 	if(S1!=0)
		{
		 	LCD_Write_Command_P2(LC_GRH_STP,0,0);
			for(i=0;i<LCD_HEIGHT;i++)
			{
			 	Set_LCD_POS(i,0);
				LCD_Write_Command(LC_AUT_WR);
				for(j=0;j<LCD_WIDTH;j++)
				{
				 	m = ImageX[i*LCD_WIDTH + j];
					if(S2 == 0) 
						m = ~m;
					LCD_Write_Data(m);
				}
				LCD_Write_Command(LC_AUT_OVR);
			}
		}
		else
		{
		 	k = 0;
			while(k!=128/8*LCD_HEIGHT)
			{
				LCD_Write_Command_P2(LC_GRH_STP,k%256,k/256);
				for(x=0;x<5000;x++);
				k+=LCD_WIDTH; 	
			}
		}
	}
	for(x=0;x<40000;x++);
} 







12864LCD图形滚动演示.zip

61.88 KB, 下载次数: 0, 下载积分: E币 -1

售价: 3 E币  [记录]  [购买]

评分

参与人数 1E币 +2 收起 理由
admin + 2 感谢对论坛的支持!

查看全部评分

27

主题

142

帖子

522

积分

版主

Rank: 7Rank: 7Rank: 7

积分
522
发表于 2017-9-25 20:57:12 | 显示全部楼层
伪前排
回复

使用道具 举报

5

主题

120

帖子

800

积分

版主

Rank: 7Rank: 7Rank: 7

积分
800
发表于 2017-9-25 22:31:42 | 显示全部楼层
护此楼的和平!贯彻爱与真实的邪恶可爱又迷人的顶贴角色!---穿梭在银河之间的顶贴队
回复

使用道具 举报

19

主题

128

帖子

1065

积分

版主

Rank: 7Rank: 7Rank: 7

积分
1065

最佳新人

 楼主| 发表于 2017-9-25 22:40:55 | 显示全部楼层
我只是来水经验的
回复

使用道具 举报

21

主题

148

帖子

1170

积分

超级版主

Rank: 8Rank: 8

积分
1170

最佳新人

发表于 2017-9-25 23:00:36 | 显示全部楼层
我不是随便的人,随便起来不是人
回复

使用道具 举报

33

主题

160

帖子

434

积分

版主

Rank: 7Rank: 7Rank: 7

积分
434
发表于 2017-9-25 23:02:02 | 显示全部楼层
出来混老婆总是要换的
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|weiecn ( 湘ICP备14002058号 )

GMT+8, 2018-12-17 02:25 , Processed in 0.063013 second(s), 13 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表