单片机/MCU论坛
登录
直播中
鲜于洛
8年用户
3经验值
私信
关注
[问答]
做一个仿真的电压表,用1602显示,发现啥都没有,编译和仿真都没报错,这是怎么回事?
开启该帖子的消息推送
电压表
`#include
#include
#define uchar unsigned char
#define uint unsigned int
***it cs=P3^5;
***it clk=P3^3;
***it da
ti
=P3^4;
***it dato=P3^4;
***it lcden=P2^3;
***it lcdrs=P2^5;
***it dula =P2^6;
***it wela=P2^7;
uchar dat=0x00;
uchar count=0x00;
uchar numu;
uchar CH;
uchar dis[]={0x01,0x02,0x03,0x04};
uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar code tablewe[]={0xfd,0xfb,0xf7,0xf0,0xdf,0xfe};
uchar table[3];
//adc0832初始化函数,用途读入数据
uchar adc0832(uchar CH)
{ uchar i,test,adval;
adval=0x00;
test=0x00;
clk=0;
dati=1;
_nop_();cs=0; _nop_();clk=1;_nop_();
if(CH==0x00)
{ clk=0;
dati=1;
_nop_();
clk=1;
_nop_();
clk=0;
dati=0;
_nop_();
clk=1;
_nop_();
}
else {
clk=0;
dati=1;
_nop_();
clk=1;
_nop_();
clk=1;
_nop_();
clk=0;
dati=1;
_nop_();
clk=1;
_nop_();
}
clk=0;
dati=1;
for(i=0;i<8;i++)
{_nop_();
adval<<=1;
clk=1;
_nop_();
clk=0;
if(dato) adval|=0x01;
else adval|=0x00;
}
for(i=0;i<8;i++)
{test>>=1;
if(dato) test|=0x80;
else test|=0x00;
_nop_();
clk=1;
_nop_();
clk=0;
}
if(adval==test)
dat=test;_nop_();
cs=1;
dato=1;clk=1;return dat;}
void delay1(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
//写命令操作函数
void write_com(uchar com)
{
lcdrs =0;
P0=com;
delay1(5);
lcden=1;
delay1(5);
lcden=0;
}
//写数据操作函数
void write_data(uchar date)
{
lcdrs=1;
P0=date;
delay1(5);
lcden=1;
delay1(5);
lcden=0;
}
//对显示频进行初始化函数
void init()
{
dula=0;
wela =0;
lcden =0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}
void delay(void)//延时函数
{uint r;
for(r=10;r<500;r++)
;
}
//原取数字函数
void convdata(uchar i)
{ dis[0]=i/51;
dis[1]=(i%51)*10/51;
dis[2]=((i%51)*10%51)*10/51;
}
//显示函数
void display(void)
{
table[0]=tab[dis[0]];
delay();
table[1]='.';
table[2]=tab[dis[1]];
delay();
P2=0x08;
table[3]=tab[dis[2]];
delay();
write_com(80);
for(numu=0;numu<16;numu++)
{
if (numu==8||numu==11||numu==10||numu==9)
{
write_data(table[numu-8]);
delay1(5);
}
else write_data(' ');
}
}
//主函数
void main(void)
{ P2=0xff;
P0=0xff;
delay();
delay();
CH=0x00;
TMOD=0x01;
TH0=15535/256;
TL0=15536%256;
IE=0x82;
TR0=1;
init();
while(1)
{dat=adc0832(CH);
convdata(dat);
display();
}}
void timero(void) interrupt 1
{ TMOD=0x01;
TMOD=0x01;
TH0=15535/256;
TL0=15536%256;
IE=0x82;
TR0=1;
count++;
if(count==0x01)
{count=0x00;dat=adc0832(CH);}}
`
回帖
(2)
jinyi7016
2017-1-3 21:52:20
论坛里就有一个,可能参考下。
https://bbs.elecfans.com/jishu_401238_1_1.html
论坛里就有一个,可能参考下。
https://bbs.elecfans.com/jishu_401238_1_1.html
举报
hdjAction
2017-1-4 17:46:37
首先检查一下你的en,rs,clk引脚有没有接正确
接着看一下lcd有没有接滑动变阻器,有可能是对比度的问题导致的
程序没什么问题 ,应该是硬件的问题 试试看
首先检查一下你的en,rs,clk引脚有没有接正确
接着看一下lcd有没有接滑动变阻器,有可能是对比度的问题导致的
程序没什么问题 ,应该是硬件的问题 试试看
举报
更多回帖
rotate(-90deg);
回复
相关问答
电压表
为什么Allegro图中地
都没有
连接,但是DRC的时候
没有
报错
?
2019-08-22
2790
用
单频信息法来测轴的转速,转速的
显示
都没有
变化,请问
这是
怎么回事
呢。
2018-11-27
1614
求助大佬!!
用
AD转换,51单片机,
1602
液晶
做一个
数字
电压表
,量程可调
2018-04-26
3456
数字
电压表
怎样有这些功能的呢
2017-04-15
5336
minicom、secureCRT等与ARM串口连好后什么
都没有
,
怎么回事
哦
2015-05-10
5631
proteus为什么大部分肖特基二极管
都没有
仿真
模型?
2014-08-23
18576
16.6中我的SETUP中的user preference点击每
一个
都没有
效果
2018-04-01
4014
为什么
仿真没有
频率输出,其他的
都没有
错
2013-08-17
4021
求助帖,绘图的时候什么电子元件
都没有
怎么回事
?
2017-03-11
2875
LCD与ADC0808 做的数字
电压表
出现问题
2013-02-19
5157
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分