历史上的今天
今天是:2024年10月15日(星期二)
2019年10月15日 | 开源ARM7驱动拼接1024X1024LCD屏Proteus仿真源码
2019-10-15 来源:51hei
在当年还没有人尝试过用多块LCD拼接成大屏幕的仿真程序,采用ARM7驱动,希望多交流。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

单片机源程序如下:
#include "config.h"
uint8 BMP[]={
0x00,0x00,0x00,0x00,0x00,0x01,0xF3,0xF0,0x7F,0x18,0x1B,0xFB,0xF2,0x02,0x41,0xF1,
…………
…………
…………限于本文篇幅 余下代码请从51黑下载附件…………
0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x00,0x00,0x00,0x00},/*":",5*/
};
#define RD (1<<8)
#define RW (1<<9)
#define CD (1<<10)
#define CE1 (1<<11)
#define CE2 (1<<12)
#define CE3 (1<<13)
#define CE4 (1<<14)
#define CE5 (1<<15)
#define CE6 (1<<16)
#define CE7 (1<<17)
#define CE8 (1<<18)
#define CE9 (1<<19)
#define CE10 (1<<20)
#define CE11 (1<<21)
#define CE12 (1<<22)
#define CE13 (1<<23)
#define CE14 (1<<24)
#define CE15 (1<<25)
#define CE16 (1<<26)
#define LCD_CUR_POS 0x21 /* 光标位置设置(只有设置到有效显示地址并打开显示时才看到) */
#define LCD_CGR_POS 0x22 /* CGRAM偏置地址设置(可以增加自已的符号) */
#define LCD_ADR_POS 0x24 /* 地址指针位置(设置读写操作指针) */
#define LCD_TXT_STP 0x40 /* 文本区首址(从此地址开始向屏幕左上角显示字符) */
#define LCD_TXT_WID 0x41 /* 文本区宽度(设置显示宽度,N/6或N/8,其中N为x轴的点数) */
#define LCD_GRH_STP 0x42 /* 图形区首址(从此地址开始向屏幕左上角显示点) */
#define LCD_GRH_WID 0x43 /* 图形区宽度(设置显示宽度,N/6或N/8,其中N为x轴的点数) */
#define LCD_MOD_OR 0x80 /* 显示方式:逻辑或 */
#define LCD_MOD_XOR 0x81 /* 显示方式:逻辑异或 */
#define LCD_MOD_AND 0x82 /* 显示方式:逻辑与 */
#define LCD_MOD_TCH 0x83 /* 显示方式:文本特征 */
#define LCD_DIS_SW 0x90 /* 显示开关:D0=1/0,光标闪烁启用/禁用 */
/* D1=1/0,光标显示启用/禁用 */
/* D2=1/0,文本显示启用/禁用(打开后再使用) */
/* D3=1/0,图形显示启用/禁用(打开后再使用) */
#define LCD_CUR_SHP 0xA0 /* 光标形状选择:0xA0-0xA7表示光标占的行数 */
#define LCD_AUT_WR 0xB0 /* 自动写设置 */
#define LCD_AUT_RD 0xB1 /* 自动读设置 */
#define LCD_AUT_OVR 0xB2 /* 自动读/写结束 */
#define LCD_INC_WR 0xC0 /* 数据一次写,地址加1 */
#define LCD_INC_RD 0xC1 /* 数据一次读,地址加1 */
#define LCD_DEC_WR 0xC2 /* 数据一次写,地址减1 */
#define LCD_DEC_RD 0xC3 /* 数据一次读,地址减1 */
#define LCD_NOC_WR 0xC4 /* 数据一次写,地址不变 */
#define LCD_NOC_RD 0xC5 /* 数据一次读,地址不变 */
#define LCD_SCN_RD 0xE0 /* 屏读 */
#define LCD_SCN_CP 0xE8 /* 屏拷贝 */
#define LCD_BIT_OP 0xF0 /* 位操作:D0-D2--定义D0-D7位,D3--1为置位,0为清除 */
void CHECK_BUSY_COM()
{
IODIR=0xff000000;
do
{
IOSET=CD;
IOSET=RW;
IOCLR=RD;
}
while(!(IOPIN|0xfffe));
IOSET=RD;
}
void CHECK_BUSY_DAT()
{
IODIR=0xff000000;
do
{
IOSET=CD;
IOSET=RW;
IOCLR=RD;
}
while(!(IOPIN|0xfffd));
IOSET=RD;
}
void LCD_Write_Command(uint8 dat)
{
// CHECK_BUSY_COM();
IOCLR=0xff;
IOSET=dat;
IOSET=CD;
IOSET=RD;
IOCLR=RW;
IOSET=RW;
}
void LCD_Write_Data(uint8 dat)
{
// CHECK_BUSY_DAT();
IOCLR=0xff;
IOSET=dat;
IOCLR=CD;
IOSET=RD;
IOCLR=RW;
IOSET=RW;
}
void LCD_Write_Command3(uint8 command,uint8 dat1,uint8 dat2)
{
LCD_Write_Data(dat1);
LCD_Write_Data(dat2);
LCD_Write_Command(command);
}
void LCD_Write_Command1(uint8 command,uint8 dat1)
{
LCD_Write_Data(dat1);
LCD_Write_Command(command);
}
void LCD_Initialize()
{
LCD_Write_Command3(LCD_TXT_STP,0x00,0x00);
LCD_Write_Command3(LCD_TXT_WID,32,0x00);
LCD_Write_Command3(LCD_GRH_STP,0x00,0x00);
LCD_Write_Command3(LCD_GRH_WID,32,0x00);
LCD_Write_Command(LCD_MOD_OR);
LCD_Write_Command(LCD_DIS_SW|0x08);
}
void LCD_FillAll(uint8 dat)
{ uint32 i;
LCD_Write_Command3(LCD_ADR_POS, 0x00, 0x00); // 置地址指针
LCD_Write_Command(LCD_AUT_WR); // 自动写
for(i=0;i<240*128;i++)
{
LCD_Write_Data(dat);
}
LCD_Write_Command(LCD_AUT_OVR); // 自动写结束
LCD_Write_Command3(LCD_ADR_POS,0x00,0x00); // 重置地址指针
}
void LCD_UpdatePoint(uint32 x, uint32 y,uint8 dat)
{ uint32 addr;
/* 找出目标地址 */
addr = y*(256>>3) + (x>>3);
LCD_Write_Command3(LCD_ADR_POS, addr&0xFF, addr>>8); // 置地址指针
/* 输出数据 */
LCD_Write_Command1(LCD_INC_WR, dat);
}
void Disp_LCD_HZ(uint16 x,uint16 y,uint16 xsize,uint16 ysize,uint8 *dat)
{
uint32 i,j;
for(j=0;j for(i=0;i
史海拾趣
|
vxworks NAT的问题 .只要回复都给分...分不够再加... 版上的各位大侠,有人在vxworks5.4下做过NAT的东西没,能给小弟一点提示吗,现在这个东西已径把我折磨的半死了。 也可以把资料发到我的email中。zhouxiongjun@hotmail.com 谢谢啦。 … 查看全部问答> |
|
我用的仿真设备是(msp-fetp4301f1.3)不知道是不是这样看的,使用时是不是直接把它接到计算机的并口就可以开始仿真了?cpu是msp430f149的,如果我要写一个AD采样程序,要不要外加电源?可不可以直接使用例子??… 查看全部问答> |
|
最近在用MSP430F149做一个谐波检测的功能,听说FFT能够实现,但是无从下手,希望高手们能够指教,或给出FFT程序,或给出学习的方法均可,谢谢大家能帮忙了~~~… 查看全部问答> |
|
没有调用GPIO_EXTILineConfig为什么也能进中断 刚刚开始学习STM32,现在遇到一个问题,不明白是为什么。 我按照教程上写了一个最简单的中断程序,就是按键 然后进中断,点亮led 按键是 PA0,led是PA2 按照教程上的写法 GPIO_InitTypeDef GPIO_InitStructure; NVIC_InitTypeDef NVIC_In ...… 查看全部问答> |
|
本帖最后由 扬帆起航 于 2014-2-16 21:57 编辑 开这篇文章的目的主要是记录一下自己在DIY四轴飞行器的过程中遇到的各种问题以及解决的方法,同时由于能力有限,也希望高手们能够帮忙一块来解决问题! 提前感谢大家! 首先说明: 1.该飞控 ...… 查看全部问答> |




