OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6451|回复: 5

MD050SD的驱动问题

[复制链接]

22

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
171
金钱
171
注册时间
2013-4-25
在线时间
14 小时
发表于 2014-7-3 16:24:21 | 显示全部楼层 |阅读模式
5金钱
我自己根据时序图写了一个驱动,不过不好使,哪个大神帮我看看。资料说需要一个300Hz的背光,不过我看51的例子好像没有用到。下面是我的程序
#include <avr/io.h>
#include <string.h>
#include <stdio.h>
#include <avr/sfr_defs.h>//包含BV位操作符
#define F_CPU 7372800
#include <util/delay.h>

#define LCD_W 800
#define LCD_H 480


#define uchar unsigned char 
#define uint unsigned int

#define delay_us(x)     _delay_us(x)         //AVR GCC延时函数 x(us)
#define delay_ms(x)     _delay_ms(x) 

#define  LCD_DataPortH PORTA     //高8位数据口
#define  LCD_DataPortL PORTC     //低8位数据口
 
#define SET_LCD_RS  ORTD|=_BV(PD1)    //数据/命令切换
#define CLR_LCD_RS  ORTD&=~_BV(PD1) 
#define SET_LCD_WR  ORTD|=_BV(PD2)    //写控制
#define CLR_LCD_WR  ORTD&=~_BV(PD2)  
#define SET_LCD_RD  ORTD|=_BV(PD3)    //读控制
#define CLR_LCD_RD  ORTD&=~_BV(PD3)   
#define SET_LCD_CS  ORTD|=_BV(PD4)    //片选
#define CLR_LCD_CS  ORTD&=~_BV(PD4)
#define SET_LCD_REST  ORTD|=_BV(PD5)   //复位 
#define CLR_LCD_REST  ORTD&=~_BV(PD5)



//画笔颜色
#define WHITE         0xFFFF
#define BLACK         0x0000  
#define BLUE         0x001F  
#define BRED             0XF81F
#define GRED 0XFFE0
#define GBLUE 0X07FF
#define RED           0xF800
#define MAGENTA       0xF81F
#define GREEN         0x07E0
#define CYAN           0x7FFF
#define YELLOW         0xFFE0
#define BROWN 0XBC40 //棕色
#define BRRED 0XFC07 //棕红色
#define GRAY   0X8430 //灰色
#define DARKBLUE       0X01CF //深蓝色
#define LIGHTBLUE       0X7D7C //浅蓝色  
#define GRAYBLUE       0X5458 //灰蓝色
#define LIGHTGREEN     0X841F //浅绿色
#define LGRAY 0XC618 //浅灰色(PANNEL),窗体背景色
#define LGRAYBLUE        0XA651 //浅灰蓝色(中间层颜色)
#define LBBLUE           0X2B12 //浅棕蓝色(选择条目的反色)

extern  uint BACK_COLOR, POINT_COLOR;   //背景色,画笔色

/*void LCD_Writ_Bus(uchar VH,uchar VL)   //并行数据写入函数
{
    LCD_DataPortH=VH;
LCD_DataPortL=VL;
CLR_LCD_WR;
SET_LCD_WR; 
} */
#ifdef  Bus_16    //条件编译-16位数据模式   
void LCD_Writ_Bus(char VH,char VL)   //并行数据写入函数
{
    LCD_DataPortH=VH;
LCD_DataPortL=VL;
CLR_LCD_WR;
SET_LCD_WR;
}
#else //条件编译-8位数据模式 
void LCD_Writ_Bus(char VH,char VL)   //并行数据写入函数
{
    LCD_DataPortH=VH;
    CLR_LCD_WR;
SET_LCD_WR;
LCD_DataPortH=VL;
CLR_LCD_WR;
SET_LCD_WR;
}
#endif
void LCD_WR_DATA8(uchar VH,uchar VL) //发送数据-8位参数
{
    SET_LCD_RS;
LCD_Writ_Bus(VH,VL);
}  
 void LCD_WR_DATA(uint da)
{
    SET_LCD_RS;
LCD_Writ_Bus(da>>8,da);
}  
void LCD_WR_REG(uint da)  
{
    CLR_LCD_RS;
LCD_Writ_Bus(da>>8,da);
}
//设置起始地址与结束地址
void Address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2)

LCD_WR_REG(0x02);//开始y
LCD_WR_DATA(y1); 
LCD_WR_REG(0x03);//开始x
LCD_WR_DATA(x1);    
    LCD_WR_REG(0x06);//结束y
LCD_WR_DATA(y2); 
LCD_WR_REG(0x07);//结束x
LCD_WR_DATA(x2);   
LCD_WR_REG(0x0f);  
}
void Lcd_Init(void)
{
SET_LCD_RD;
SET_LCD_WR;
CLR_LCD_REST;
delay_ms(8); //此处保证要有5ms以上才能保证复位稳定,推荐8ms
SET_LCD_REST;
delay_ms(8); //此处保证要有5ms以上才能保证复位稳定,推荐8ms
CLR_LCD_CS;  //打开片选使能

LCD_WR_REG(0x01); //打开背光
LCD_WR_DATA(16); 

}

void LCD_Clear(uint Color)    //清屏函数,Color:要清屏的填充色
{
uchar VH,VL;
uint i,j;
VH=Color>>8;
VL=Color;
Address_set(0,0,LCD_W-1,LCD_H-1);
    for(i=0;i<LCD_W;i++)
{
 for (j=0;j<LCD_H;j++)
  {
        LCD_WR_DATA8(VH,VL);
   }

 }
}
main()
{  
    DDRA=0XFF;
DDRB=0XFF;
DDRC=0XFF;
DDRD=0XFF;
Lcd_Init();   //初始化
while(1)
{   
LCD_Clear(RED);  
delay_ms(1000);
LCD_Clear(GREEN);
delay_ms(1000);
LCD_Clear(BLUE);
delay_ms(1000);
    }


}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

38

主题

2061

帖子

6

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3273
金钱
3273
注册时间
2012-1-16
在线时间
37 小时
发表于 2014-7-3 19:02:12 | 显示全部楼层
站在巨人的肩膀上不断的前进。。。
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-7-7
在线时间
0 小时
发表于 2014-7-7 11:09:17 | 显示全部楼层
我上星期也写了一个  库函数写的  一直没出效果   模块背面还有个电阻比较发烫  于是我就把这个屏给退了
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-7-7
在线时间
0 小时
发表于 2014-7-7 11:11:34 | 显示全部楼层
我是用STM32写的  下午准备接着调一下  一定要搞出来
回复

使用道具 举报

22

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
171
金钱
171
注册时间
2013-4-25
在线时间
14 小时
 楼主| 发表于 2014-7-10 18:20:21 | 显示全部楼层
回复【4楼】隐形刺客:
---------------------------------
我调出来了,但是显示的字符一多,就乱码。你弄好了么
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
23
金钱
23
注册时间
2014-7-7
在线时间
0 小时
发表于 2014-7-18 14:41:20 | 显示全部楼层
回复【5楼】demowl:
---------------------------------
由于项目需要我换了个七寸的屏  界面都做好了  所以现在没搞MD050SD了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-5 01:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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