avr单片机lcd1602

AVR单片机显示LCD字符,我这LCD1602感觉没问题了。可是为什么就是无法显示呢,求大神帮忙。程序如下:#include<mega16.h>#include<dela... AVR单片机显示LCD字符,我这LCD1602感觉没问题了。可是为什么就是无法显示呢,求大神帮忙。
程序如下:
#include<mega16.h>#include<delay.h>#define EN PIND.7#define RS PIND.5#define RW PIND.6#define BF PINCC.7#define uchar unsigned char#define uint unsigned intuchar num[]="124122012015";uchar i; /***************** 忙检测函数*******************/uchar Busy() {bit flag;DDRC=0x00;RS=0; /*根据规定,RS为低电平,RW为高电平时,可以读状态*/RW=1;EN=1; /*E=1,才允许读写*/
delay_ms(1); flag=PORTC.7; PORTD.7=0;return flag;} /***************** 写命令函数*******************/void write_com(uchar com){ DDRC=0xff;while(Busy()==1); /*如果忙就等待*/RS=0; /*选择写命令模式*/ RW=0; /*选择写模式*/delay_ms(1); PORTC=com; /*将要写的命令送到数据总线上*/ delay_ms(1); EN=1; /*给使能端一个高脉冲*/ delay_ms(1); /*稍作延迟*/EN=0; /*给使能端置零,完成下降沿,是写命令完成*/} /***************** 写数据函数*******************/void write_data(uchar date){DDRC=0xff;RS=1; /*选择写数据模式*/ RW=0; /*选择写模式*/PORTC=date;/*将要写的数据送到数据总线上*/ delay_ms(5); EN=1; /*给使能端一个高脉冲*/ delay_ms(5); /*稍作延迟*/EN=0; /*给使能端置零,完成下降沿,使写命令完成*/}/* 初始化子函数*/void init(){
EN=0;write_com(0x38);/*设置16X2显示,5X7点阵,8位数据接口*/write_com(0x0c);/*设置开显示,不显示光标*/write_com(0x06);/*写一个字符后地址指针加1*/write_com(0x01);/*显示清零,数据指针清零*/}void main(){
init(); DDRD=0xff; write_com(0x80); for(i=0;i<12;i++) { write_data(num[i]); delay_ms(5); } while(1);} 请各位前辈帮忙下,感激不尽!
展开
 我来答
百度网友186dfeac08
2014-04-20 · TA获得超过754个赞
知道小有建树答主
回答量:1074
采纳率:50%
帮助的人:530万
展开全部
你在停止仿真的状态下,双击1602液晶,然后把250K频率改成1000K频率,这样液晶的仿真反应时间就更快,能接收单片机更快的操作。

你试一下。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式