打印

单片机的实时获取、显示

[复制链接]
1703|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wang_2003|  楼主 | 2011-4-21 08:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机获取P0口的数值,然后通过P2口控制数码管显示,P0口的数值通过外部控制,当P0口的值发生变化时,数码管显示的还是上一个值,只有复位以后才能发生变化,有没有什么方法可以实时的显示?
     谢谢!

相关帖子

沙发
rclong| | 2011-4-21 09:02 | 只看该作者
这个 是代码的问题吧
起码贴出来看看呐

使用特权

评论回复
板凳
aaron96031| | 2011-4-21 09:06 | 只看该作者
用E2存储就搞定了

使用特权

评论回复
地板
joyme| | 2011-4-21 11:31 | 只看该作者
也要看P0的变化频率啦,如果频率太高怎么可能实现实时显示。至少要在50Hz以下,否则人眼看不到数码管的变化

使用特权

评论回复
5
ayb_ice| | 2011-4-21 11:47 | 只看该作者
while(1)
{
    P2 = P0;
}

使用特权

评论回复
6
yjhon| | 2011-4-21 12:30 | 只看该作者
:lol,这个也太简洁了点吧

使用特权

评论回复
7
yjhon| | 2011-4-21 12:33 | 只看该作者
代码里没有去刷新显示吧

使用特权

评论回复
8
wang_2003|  楼主 | 2011-4-22 14:45 | 只看该作者
7# yjhon

代码里怎么刷新呢?谢谢

使用特权

评论回复
9
wang_2003|  楼主 | 2011-4-22 15:33 | 只看该作者

#include<reg51.h>

#define uchar unsigned char
#define uint  unsigned int
uchar code tab[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};
sbit one = P1^0;
sbit two = P1^1;
sbit three = P1^2;
sbit four = P1^3;
sbit five = P1^4;
sbit six = P1^5;
sbit seven = P1^6;
sbit eight = P1^7;

   uchar count;

void delay(int i)
{
    uint j;
        while(i--)
        {
         for(j=0;j<125;j++)                  {;}
         }
}

void display()
{
   P2 =  tab[count];
   delay(1000);

}
void getcount()
{
   if(one ==0)
      count = 0;
   else if(two ==0)
      count = 1;
   else if(three ==0)
      count = 2;
   else if(four ==0)
      count = 3;
   else if(five ==0)
      count = 4;
   else if(six ==0)
      count = 5;
   else if(seven ==0)
      count = 6;
   else if(eight ==0)
      count = 7;


}
void main()
{
     P2 = 0x00;
         while(1)
         {
                    getcount();
              display();
          }
}

使用特权

评论回复
10
wang_2003|  楼主 | 2011-4-22 16:00 | 只看该作者
我觉得单片机应该是实时获取的,不需要刷新或者复位的吧,但是没找到问题。

使用特权

评论回复
11
kaikai763| | 2011-4-22 17:36 | 只看该作者
本帖最后由 kaikai763 于 2011-4-22 17:38 编辑

获取完毕后    P1口重置一下在main()中的while前面加成这样吧:
while(1){
delay(30);
if(P1!=0xff)
{
     getount();
     display();
     P1=0xff;
}
}

使用特权

评论回复
12
wangyy608| | 2011-4-22 19:05 | 只看该作者
P0=0xff;
while(1)
{
    P2 = P0;
}

使用特权

评论回复
13
NE5532| | 2011-4-22 19:29 | 只看该作者
请先把“实时”定义清楚。

使用特权

评论回复
14
hanxue1130| | 2011-4-22 19:39 | 只看该作者
都是高手啊!

使用特权

评论回复
15
yjhon| | 2011-4-22 22:50 | 只看该作者
10# wang_2003

有刷新,我多虑了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

397

帖子

4

粉丝