搜索
bottom↓
回复: 6

为什么数码管没有显示

[复制链接]

出0入0汤圆

发表于 2013-1-17 20:40:07 | 显示全部楼层 |阅读模式
源码如下:

#include "reg51.h"               

unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

unsigned char dat;                                //定义全局变量

//串行口初始化程序
void Init_Com(void)
{
     TMOD = 0x20;
     PCON = 0x00;
     SCON = 0x50;                       
     TH1 = 0xFd;
     TL1 = 0xFd;
     TR1 = 1;                               
}

//LED数码管延时程序
void delay(void)
{
        int k;
        for(k=0;k<600;k++);
}

//串行中断服务程序
serial()interrupt 4 using 1
{
        if(RI)
        RI=0;
        dat=SBUF;
}

//LED数码管显示程序
void display(int k)
{
        P2=0xfe;                                                                //位选                       
        P0=tab[k/1000];                                                        //显示千位数字
        delay();                                                                //延时
        P2=0xfd;                                                                //位选
        P0=tab[k%1000/100];                                                //显示百位数字
        delay();                                                                //延时
        P2=0xfb;                                                                //位选
        P0=tab[k%100/10];                                                //显示十位数字
        delay();                                                                //延时
        P2=0xf7;                                                                //位选
        P0=tab[k%10];                                                        //显示个位数字
        delay();                                                                //延时
//P2=0xff;                                                                //位选
}

//主程序
void main()
{   
           P2=0xff;
          P0=0xff;
        P1=0xff;
        EA=1;
        ES=1;
           Init_Com();
           while(1)
   {
      display(dat);                                                        //显示数据
   }
}

为什么数码管没有显示????附上电路图,请大家帮忙看下,谢谢!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2013-1-17 20:49:13 | 显示全部楼层
你把电路图截图片发上来吧,大家看着都方便

出0入0汤圆

 楼主| 发表于 2013-1-17 22:19:51 | 显示全部楼层
附上调试截图,请参照,谢谢!!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-1-20 09:22:46 | 显示全部楼层
本帖最后由 wangqh1983 于 2013-1-20 10:39 编辑


01  #include "reg51.h"               
02  
03   unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
04  
05   unsigned char dat;                                //定义全局变量
06  
07   //串行口初始化程序
08   void Init_Com(void)
09   {
10        TMOD = 0x20;
11        PCON = 0x00;
12        SCON = 0x50;                        
13        TH1 = 0xFd;
14        TL1 = 0xFd;
15        TR1 = 1;                                
16   }
17  
18   //LED数码管延时程序
19   void delay(void)
20   {
21           int k;
22           for (k=0;k<600;k++);
23   }
24  
25   //串行中断服务程序
26   serial()interrupt 4 using 1
27   {
28           if (RI)
29           RI = 0;
30           dat = SBUF;
31   }
32  
33   //LED数码管显示程序
34   void display(int k)
35   {
36      P2 = 0x01;                //位选                        
37      P0 = tab[k/1000];        //显示千位数字
38      delay();                //延时
39      P0=0xff;                //消隐
40      P2=0x02;                //位选
41      P0 = tab[k%1000/100];    //显示百位数字
42      delay();                //延时
43      P0=0xff;
44      P2 = 0x04;                //位选
45      P0 = tab[k%100/10];        //显示十位数字
46      delay();                //延时
47      P0=0xff;
48      P2 = 0x08;                //位选
49      P0 = tab[k%10];            //显示个位数字
50      delay();                //延时
51      P0=0xff;
52   }
53  
54   //主程序
55   void main(void)
56   {   
57      P2=0xff;
58      P0=0xff;
59      P1=0xff;
60      EA=1;
61      ES=1;
62      Init_Com();
63      while (1)
64      {
65          display(dat);    //显示数据
66      }
67   }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-1-20 15:07:58 | 显示全部楼层
盲扫了一下了,估计问题在这个:
//串行中断服务程序
serial()interrupt 4 using 1
{
        if(RI)
        RI=0;
        dat=SBUF;
}

出0入0汤圆

 楼主| 发表于 2013-1-20 20:13:45 | 显示全部楼层
就是要MAX232呀,不要我也知道行,谢谢大家帮忙顶

出0入0汤圆

发表于 2013-12-13 15:00:56 | 显示全部楼层
看看呢........................
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-28 20:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表