TX-1C板proteus仿真为什么LM016L不显示数值
小弟新手,学郭天祥老师那个视频,第十讲讲那个电子钟,第一次做电子钟,就想着先照写一个,但是我之前用的学习板不是TX-1c,所以在网上下了个TX-1C版的proteus仿真...
小弟新手,学郭天祥老师那个视频,第十讲讲那个电子钟,第一次做电子钟,就想着先照写一个,但是我之前用的学习板不是TX-1c,所以在网上下了个TX-1C版的proteus仿真文件,但是用了之后那个LM016L不显示数值,不知道为什么(第一次用proteus,之前用学习板),麻烦各位帮忙看看,proteus截图如下
程序如下(只做到可以变秒)#include#define uchar unsigned char#define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;sbit rs=P3^5;sbit lcden=P3^4;uchar code table[]=" 2011-9-9 FRI";uchar code table1[]=" 00:00:00";uchar count,shi,fen,miao;void delay(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}void write_com(uchar com){ rs=0; lcden=0; P0=com; delay(1); lcden=1; delay(1); lcden=0;}void write_date(uchar date){ rs=1; lcden=0; P0=date; delay(1); lcden=1; delay(1); lcden=0;}void init(){ uchar num; dula=0; wela=0; lcden=0; write_com(0x38);//指令码,设置16*2显示。5*7点阵,8位数据接口 write_com(0x0c);//指令码,开显示,不显示光标 write_com(0x06);//指令码,0000 0110,每写一个光标加一,屏幕不移动 write_com(0x01);//指令码,清屏 write_com(0x80);// //write_com(0x80);// for(num=0;num { write_date(table[num]); delay(2); } write_com(0x80+0x40);// //write_com(0x80+0x40);// for(num=0;num { write_date(table1[num]); delay(2); } TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; }void write_sfm(uchar add,uchar date){ uchar shi1,ge; shi1=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi1); write_date(0x30+ge);}void main(){ init(); while(1) { if(count==20) { count=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; } } } write_sfm(10,miao); } }}void timer0() interrupt 1{ TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++; } 展开
程序如下(只做到可以变秒)#include#define uchar unsigned char#define uint unsigned intsbit dula=P2^6;sbit wela=P2^7;sbit rs=P3^5;sbit lcden=P3^4;uchar code table[]=" 2011-9-9 FRI";uchar code table1[]=" 00:00:00";uchar count,shi,fen,miao;void delay(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}void write_com(uchar com){ rs=0; lcden=0; P0=com; delay(1); lcden=1; delay(1); lcden=0;}void write_date(uchar date){ rs=1; lcden=0; P0=date; delay(1); lcden=1; delay(1); lcden=0;}void init(){ uchar num; dula=0; wela=0; lcden=0; write_com(0x38);//指令码,设置16*2显示。5*7点阵,8位数据接口 write_com(0x0c);//指令码,开显示,不显示光标 write_com(0x06);//指令码,0000 0110,每写一个光标加一,屏幕不移动 write_com(0x01);//指令码,清屏 write_com(0x80);// //write_com(0x80);// for(num=0;num { write_date(table[num]); delay(2); } write_com(0x80+0x40);// //write_com(0x80+0x40);// for(num=0;num { write_date(table1[num]); delay(2); } TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; }void write_sfm(uchar add,uchar date){ uchar shi1,ge; shi1=date/10; ge=date%10; write_com(0x80+0x40+add); write_date(0x30+shi1); write_date(0x30+ge);}void main(){ init(); while(1) { if(count==20) { count=0; miao++; if(miao==60) { miao=0; fen++; if(fen==60) { fen=0; shi++; if(shi==24) { shi=0; } } } write_sfm(10,miao); } }}void timer0() interrupt 1{ TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++; } 展开
4个回答
展开全部
您写的程序关键部分是不是应该如下修改,您试一下,看能否仿真出来。
while(1)
{
if(count==20)
{
count=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
}
if(fen==60)
{
fen=0;
shi++;
}
if(shi==24)
{
shi=0;
}
write_sfm(10,miao);
write_sfm(7,fen);
write_sfm(4,shi);
}
}
还有就是P0口应该接排阻不是你那个样子连接的。排阻可以输入respack来选择8个的排阻。排阻用1k的,公共端口接5V上拉电源。
while(1)
{
if(count==20)
{
count=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
}
if(fen==60)
{
fen=0;
shi++;
}
if(shi==24)
{
shi=0;
}
write_sfm(10,miao);
write_sfm(7,fen);
write_sfm(4,shi);
}
}
还有就是P0口应该接排阻不是你那个样子连接的。排阻可以输入respack来选择8个的排阻。排阻用1k的,公共端口接5V上拉电源。
追问
抱歉,按您的说法做了,LM016L还是没显示数值,我查了下,据说proteus这个软件在涉及到中断就会有问题,不知道是否有关,另外,电子钟我已经在自己那块板上做出来了,用的别的器件
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询