標題:
lcd1602進行仿真沒有顯示,檢查了很久都沒發(fā)現(xiàn)問題
[打印本頁]
作者:
科技論2
時間:
2018-3-25 22:47
標題:
lcd1602進行仿真沒有顯示,檢查了很久都沒發(fā)現(xiàn)問題
為什么lcd1602進行仿真沒有顯示,檢查了很久都沒發(fā)現(xiàn),有那位大哥可以說一下嗎?
其中有些程序是其他功能的,被我注釋掉了。這是我仿真圖
125.JPG
(111.28 KB, 下載次數(shù): 44)
下載附件
pro7仿真
2018-3-25 22:45 上傳
#include<reg51.h>
#include<instrins.h>
sbit rs=P2^0; //位定義
sbit rw=P2^1;
sbit ep=P2^2;
sbit sounder=P2^7;
usigned char code byTable0[]={"welcome to"};
usigned char code byTable1[]={"www*jyumcu*com"};
usigned char code byTable2[]={"S0S1S2S3S4S5S6S7"};
usigned char code byKeyTable0[]={" 1 1 1 1 1 1 1 1"};
void inittimer(void) // 定時器t0初始化
{
TMOD=0x01;
TH0=0xfc;
TL0=0x18;
ET0=1;
EA=1;
TR0=1;
}
void delayms(int z) //延時程序
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=123;>0;y--);
}
/*bit lcdtestbusy(void) //聽說忙信號檢查會影響仿真所以將他注釋了
{
bit btresult;
rs=0;
rw=1;
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
btresult=(bit)(P0&0x80);
ep=0;
return btresult;
}*/
void lcdwritecommand(unsigned char bycommand) //寫指令
{
usigned char data bycounter=0;
while(lcdtestbusy)
{
bycounter++;
if(bycounter==225)
{
return ;
}
}
rs=0;
rw=0;
ep=0;
P0=bycommand;
_nop_();
_nop_();
_nop_();
_nop_();
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
ep=0;
}
void lcdsetposition(unsigned char byposition) //位置1行或2行
{
lcdwritecommand(0x80|byposition) ;
}
void lcdwritedata(unsigned char bydata)
{
unsigned char data bycunter=0;
whlie(lcdtestbusy())
{
bycounter++;
if(bycounter==225)
{
return ;
}
}
rs=1;
rw=0;
ep=0;
P0=bydata;
_nop_();
_nop_();
_nop_();
_nop_();
ep=1;
_nop_();
_nop_();
_nop_();
_nop_();
ep=0;
}
void lcdinit() //lcd初始化
{
lcdwritecommand(0x38);
delayms(1);
lcdwritecommand(0x0c);
delayms(1);
lcdwritecommand(0x06);
delayms(1);
lcdwritecommand(0x01);
delayms(2);
}
void main(void) //主函數(shù)
{
unsigned char data i,bykeyvalue;
inittimer0();
lcdinit();
lcdssetposition(0);
i=0;
while(byTable0[i]!='\0')
{
lcdwritecommand(byTable0[i]);
i++;
delayms(1);
}
lcdsetposition(0x40);
i=0;
while(byTable1[i]!='\0')
{
lcdwritecommand(byTable1[i]);
i++;
delayms(1);
}
delayms(3000);
lcdwritecommand(0x01);
lcdsetposition(0);
i=0;
while(byTable2[i]!='\0')
{
lcdwritecommand(byTable2[i]);
i++;
delayms(1);
}
/* while(1)//原來是蜂鳴器的程序
{
bykeyvalue=P1;
(bit)(bykeyvalue&0x01)=(bit)(bykeyvalue&0x01);
for(i=0;i<8;i++)
{
bykeytable[2*i+1]=bykeyvalue[i]+(bykeyvalue&0x01);
bykeyvalue=_cror_(bykeyvalue,1);
}
lcdsetposition(ox40);
i=0;
while(bykeytable[i]!='\0')
{
lcdwritedata(bykeytable[i]);
i++;
delayms(1);
}
} */
}
void timer0 interrupt 1 //中斷程序
{
TL=0x18;
TH=0xfc;
復(fù)制代碼
作者:
科技論2
時間:
2018-3-26 22:42
可能是程序某些細節(jié)問題
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1