Board logo

标题: 帮忙看一看啊,下载之后什么结果也没有~~~~ [打印本页]

作者: budong627    时间: 2012-2-9 14:10     标题: 帮忙看一看啊,下载之后什么结果也没有~~~~

本帖最后由 budong627 于 2012-2-9 14:14 编辑

//对需要用到的头文件与管脚进行定义说明
#include "system.h"
#include <unistd.h>
#include "altera_avalon_pio_regs.h"
#define LCD_DATA *(unsigned int *)PIO_LCD12864_DATA_BASE
#define LCD_DATA_DIR *(unsigned int *)(PIO_LCD12864_DATA_BASE+4)
#define LCD_RSRW *(unsigned int *)PIO_LCD12864_RSRW_BASE
#define LCD_EN *(unsigned int *)PIO_LCD12864_EN_BASE
#define LCD_DATA_IN 0
#define LCD_DATA_OUT 0xFF

//判忙函数
void busyloop()
{
unsigned int busy=0;
LCD_DATA=0xff;
do{
LCD_RSRW=0x01; //使数据口为输入状态(读出忙标志(BF))
usleep(50); //延时50ms
LCD_EN=0x1; //使lcd_en为1 ,为数据输入作准备(高 DR→I/O缓冲)
busy=LCD_DATA; //读取忙信号
usleep(50);
LCD_EN=0; //产生读取数据的有效电平
}
while(busy>0x7f); //假如状态位为忙,继续判忙
}

//写控制字
void write_command(char cmd)
{
busyloop(); //判忙函数
LCD_RSRW=0; //写控制字的状态
LCD_EN=0x1; //为有效电平做准备
LCD_DATA_DIR=LCD_DATA_OUT; //使数据口为输出状态
LCD_DATA=cmd; //输出命令到数据口
usleep(100); //延时100ms
LCD_EN=0; //产生有效电平
}

//初始化函数
void initialization()
{
IOWR(PIO_LCD12864_RESET_BASE,0,1);
//LCD_DATA=0;
write_command(0x30);//功能设定
usleep(100);
write_command(0x06);起始点设定光标右移
usleep(37);
write_command(0x01);//清屏
usleep(100);
write_command(0x0c);//显示状态开关
usleep(100);
write_command(0x02);//地址归零
}
//写数据
void write_data(char data)
{
busyloop(); //判忙函数
LCD_RSRW=0x2; //写控制字的状态
LCD_EN=0x01; //为有效电平做准备
usleep(50); //延时50ms
LCD_DATA_DIR=LCD_DATA_OUT; //使数据口为输出状
LCD_DATA=data; //输出命令到数据口
usleep(100); //延时100ms
LCD_EN=0; } //产生有效电平

//写字符串子程序:其中addr是地址,str是字符的地址
void write_string(char addr,char* str)
{
write_command(addr); //写显示地址
do{
write_data(*str); //写显示数据
str++;
}
while(*str!='\0'); //判断是否写完
}

//写中文字串
//写中文字串: 其中addr是地址,str是字符的地址,i是中文的字数
void write_chstring(char addr,int* str,int i)
{
int chstr;
int hstr=0,lstr=0;
write_command(addr); //写显示地址
do{
chstr=*str;
lstr=chstr&0xff;
hstr=(chstr>>8)&0xff;
write_data(hstr); //写显示高位数据
write_data(lstr); //写显示低位数据
str++; //数据地址加一
i--; //数据量减一
}
while(i!=0); //判断是否写完
}

int main()
{

int hanzi[]={'汉','字'};
char *a="abcdefg";

initialization();
write_command(0x80);//lcd第一行地址为0x80-0x87,第三行为0x088-0x08f,第二行为0x90-0x97,第四行0x98-0x9f
write_chstring(0x80,hanzi,2);
write_string(0x88,a);
}
Tw35S2DZ.rar (3.25 KB) 附件为顶层框图


附件: [顶层框图] Tw35S2DZ.rar (2012-2-9 14:10, 3.25 KB) / 下载次数 313
http://bbs.eccn.com/attachment.php?aid=16991&k=78c07af702b54f915474fd6a3cf96d7c&t=1716486240&sid=r6V57K
作者: budong627    时间: 2012-2-9 14:12

求助:关于st7920 lcd1 2864显示的问题


版主帮忙看一看啊
作者: netic8    时间: 2012-2-25 20:53

有个性  很不错




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0