首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

帮忙看一看啊,下载之后什么结果也没有~~~~

帮忙看一看啊,下载之后什么结果也没有~~~~

本帖最后由 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) 附件为顶层框图
求助:关于st7920 lcd1 2864显示的问题


版主帮忙看一看啊
有个性  很不错
安逸通电子www.netic.cn联系方式0755-82785393
返回列表