完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
//================================================================================
//Function:LCD显示 //================================================================================ #include #include #include "system.h" #include "alt_types.h" #include "altera_avalon_pio_regs.h" //================================================================================ void lcd_busy()//=============RS=0,R/W=1 { unsigned char busy_flag=0xff; while((busy_flag)&0x80) { IOWR_ALTERA_AVALON_PIO_DATA( LCD_RS_BASE,0 );//rs: 1......写数据;0......写命令 IOWR_ALTERA_AVALON_PIO_DATA( LCD_RW_BASE,1 );//rw: 1......read, 0.......write IOWR_ALTERA_AVALON_PIO_DATA( LCD_EN_BASE,0 );//en=0,en先拉低 usleep(100); IOWR_ALTERA_AVALON_PIO_DIRECTION( LCD_DATA_BASE,0 );//设置为输入口 IOWR_ALTERA_AVALON_PIO_DATA( LCD_EN_BASE,1 );//en=0,en再拉高 busy_flag=IORD_ALTERA_AVALON_PIO_DATA( LCD_DATA_BASE );//读取忙碌标志位 usleep(2000); IOWR_ALTERA_AVALON_PIO_DATA( LCD_EN_BASE,0 );//en=0 } IOWR_ALTERA_AVALON_PIO_DIRECTION( LCD_DATA_BASE,1 );//恢复为输出口 } //=========================== LCD写命令(RS=0,RW=0) ============================// void lcd_write_command( unsigned char command ) { lcd_busy(); usleep(1000); IOWR_ALTERA_AVALON_PIO_DIRECTION( LCD_DATA_BASE,1 );//设置为输出口 usleep(100); IOWR_ALTERA_AVALON_PIO_DATA( LCD_RS_BASE,0 );//rs: 1......写数据;0......写命令 IOWR_ALTERA_AVALON_PIO_DATA( LCD_RW_BASE,0 );//rw: 1......read, 0.......write IOWR_ALTERA_AVALON_PIO_DATA( LCD_EN_BASE,0 );//en=0,en先拉低 usleep(100); IOWR_ALTERA_AVALON_PIO_DATA( LCD_EN_BASE,1 );//en=1,再拉高 IOWR_ALTERA_AVALON_PIO_DATA( LCD_DATA_BASE,command );//写命令 usleep(2000); IOWR_ALTERA_AVALON_PIO_DATA( LCD_EN_BASE,0 );//写完命令再拉低en } //=========================== LCD写数据(RS=1,RW=0) ============================// void lcd_write_data( char data ) { lcd_busy(); usleep(1000); IOWR_ALTERA_AVALON_PIO_DIRECTION( LCD_DATA_BASE,1 );//设置为输出口 usleep(100); IOWR_ALTERA_AVALON_PIO_DATA( LCD_RS_BASE,1 );//rs: 1......写数据;0......写命令 IOWR_ALTERA_AVALON_PIO_DATA( LCD_RW_BASE,0 );//rw: 1......read, 0.......write IOWR_ALTERA_AVALON_PIO_DATA( LCD_EN_BASE,0 );//en=0,en先拉低 usleep(100); IOWR_ALTERA_AVALON_PIO_DATA( LCD_EN_BASE,1 );//en=1,再拉高 IOWR_ALTERA_AVALON_PIO_DATA( LCD_DATA_BASE,data );//写数据 usleep(2000); IOWR_ALTERA_AVALON_PIO_DATA( LCD_EN_BASE,0 );//写完数据再拉低en } //================================================================================== //================================= LCD初始化 =================================// void init_lcd() { usleep(80000);//80ms IOWR_ALTERA_AVALON_PIO_DATA(LCD_PSB_BASE,1);//并行模式 usleep(100); lcd_write_command(0x30);//初始化 usleep(5000); lcd_write_command(0x30); usleep(1500); lcd_write_command(0x0C);//显示设定:整体显示,游标关 usleep(1000); lcd_write_command(0x01);//清屏 usleep(20000);//20ms lcd_write_command(0x06);//整屏不移动,点设定,地址指针加1?(手册:画面整体不移动,游标左移,DDRAM 地址计数器(AC)减 1) usleep(1000); } //========================================================================== void lcd_select_xy( unsigned char x,unsigned char y) { unsigned char pos; switch(x) { case 1 : pos=0x80+y-1;break; case 2 : pos=0x90+y-1;break; case 3 : pos=0x88+y-1;break; case 4 : pos=0x98+y-1;break; default: pos=0x80+y-1;break; } lcd_write_command( pos ); } //======================================================================= void lcd_write_string( unsigned char x,unsigned char y,char *str ) { lcd_select_xy(x,y); while(*str) { lcd_write_data(*str); str++; } } //======================================================================= int main() { init_lcd(); usleep(10000);//10ms lcd_write_string(1,2,"faggdg"); lcd_write_string(2,2,"dfasdgg"); return 0; } |
|
相关推荐
4个回答
|
|
在 lcd_write_string(2,2,"dfasdgg"); 后面加一个死循环 while(1) 楼主调试不成功的现象是什么?可以检测各个输出引脚是否满足液晶屏的时序 |
|
|
|
要给出具体不成功的现象才能分析的
|
|
|
|
之前调试成功的代码,现在拷进去再跑的时候,就什么都不显示,诧异诧异,想撞墙,想破脑袋都知道怎么回事
|
|
|
|
就是什么都不显示,之前调试成功了,今天重试的时候,重新把代码拷进去,就怎么也不行了,愁死个人。大神解答。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1413 浏览 1 评论
1208 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1419 浏览 0 评论
913 浏览 0 评论
2223 浏览 0 评论
1425 浏览 34 评论
5610 浏览 113 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 02:18 , Processed in 0.601586 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号