求助:单片机数码管显示问题

[复制链接]
2180|5
 楼主| lanse海洋 发表于 2008-5-3 20:20 | 显示全部楼层 |阅读模式
程序如下:<br />#include&nbsp;&ltreg52.h&gt<br />#define&nbsp;uchar&nbsp;unsigned&nbsp;char<br />#define&nbsp;uint&nbsp;unsigned&nbsp;int<br />sbit&nbsp;duan=P2^6;<br />sbit&nbsp;wei=P2^7;<br />uchar&nbsp;a,shu,bai,shi,ge;<br />uchar&nbsp;code&nbsp;table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};<br />void&nbsp;display(uchar&nbsp;bai,uchar&nbsp;shi,uchar&nbsp;ge);<br />void&nbsp;init();<br />void&nbsp;delay(uchar&nbsp;z);<br />void&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;init();<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(a==20)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shu++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(shu==101)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shu=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bai=shu/100;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shi=shu%100/10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ge=shu%10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display(bai,shi,ge);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />void&nbsp;init()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;shu=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;TMOD=0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;TH0=(65536-50000)/256;<br />&nbsp;&nbsp;&nbsp;&nbsp;TL0=(65536-50000)%256;<br />&nbsp;&nbsp;&nbsp;&nbsp;EA=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;ET0=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;TR0=1;<br />}<br />void&nbsp;timer()&nbsp;interrupt&nbsp;1<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;TH0=(65536-50000)/256;<br />&nbsp;&nbsp;&nbsp;&nbsp;TL0=(65536-50000)%256;<br />&nbsp;&nbsp;&nbsp;&nbsp;a++;<br />}<br />void&nbsp;display(uchar&nbsp;bai,uchar&nbsp;shi,uchar&nbsp;ge)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;duan=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;P0=table[bai];<br />&nbsp;&nbsp;&nbsp;&nbsp;duan=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;P0=0xff;//消隐<br />&nbsp;&nbsp;&nbsp;&nbsp;wei=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;P0=0xfe;<br />&nbsp;&nbsp;&nbsp;&nbsp;wei=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(5);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;duan=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;P0=table[shi];<br />&nbsp;&nbsp;&nbsp;&nbsp;duan=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;P0=0xff;//消隐<br />&nbsp;&nbsp;&nbsp;&nbsp;wei=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;P0=0xfd;<br />&nbsp;&nbsp;&nbsp;&nbsp;wei=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(5);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;duan=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;P0=table[ge];<br />&nbsp;&nbsp;&nbsp;&nbsp;duan=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;P0=0xff;//消隐<br />&nbsp;&nbsp;&nbsp;&nbsp;wei=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;P0=0xfb;<br />&nbsp;&nbsp;&nbsp;&nbsp;wei=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;delay(5);<br />}<br />void&nbsp;delay(uchar&nbsp;z)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;x,y;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(x=z;x&gt0;x--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(y=110;y&gt0;y--);<br />}<br />我认为它应该每隔一秒动态显示1-100之间的数,可不知道它显示是从0-100.
stycx 发表于 2008-5-3 22:46 | 显示全部楼层

是你叫它显示从0-100的

if(shu==101)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shu=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bai=shu/100;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shi=shu%100/10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ge=shu%10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display(bai,shi,ge);<br />....<br /><br />void&nbsp;init()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;shu=0;<br />.....
 楼主| lanse海洋 发表于 2008-5-4 10:04 | 显示全部楼层

在if(shu=101)语句前已经shu++了

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shu++;&nbsp;&nbsp;//shu自加1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(shu==101)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shu=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bai=shu/100;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shi=shu%100/10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ge=shu%10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这时已经是1了呀.然后调用<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display(bai,shi,ge);再然后<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P0=table[ge];再再然后<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;code&nbsp;table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};<br /><br />P0口应是table[1],0x06数码管显示1,不知道为何显示是0<br />
dld2 发表于 2008-5-4 10:12 | 显示全部楼层

呵呵

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(a==20)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shu++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(shu==101)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shu=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bai=shu/100;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;shi=shu%100/10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ge=shu%10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display(bai,shi,ge);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />把display放在if的括号里面
 楼主| lanse海洋 发表于 2008-5-4 10:46 | 显示全部楼层

正如dld2所说问题解决了.非常感谢!

  
t.jm 发表于 2008-5-4 17:08 | 显示全部楼层

解决了?有等到101S吗?

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部