久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4482|回復: 9
打印 上一主題 下一主題
收起左側

紅綠燈設計求幫忙調試,調試很久數碼管顯示不出來

[復制鏈接]
跳轉到指定樓層
樓主
#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit wela =P2^3;
sbit dula =P2^4;
sbit  red = P1^4;
sbit  yellow = P1^3;
sbit  green=P1^2;
uchar shi,ge;
uchar code table[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f};
bit flag1s = 1;         
void Timer0_init();
void light_crol();
void delay(uint x);
void main()
{
         Timer0_init();
    while (1)
    {
        if (flag1s)  
        {
            flag1s = 0;
             light_crol();
        }
    }
}
void Timer0_init()
{
    TMOD = 0x01;  
    TH0 = (65536-50000)/256 ;   
    TL0 = (65536-50000)%256 ;
    EA = 1;  
    ET0 = 1;        
    TR0 = 1;        
}
void light_crol()
{uchar num=1;
    static unsigned char color = 2;  
    static unsigned char timer = 0;  
    if (timer == 0)
    {
        switch (color)  
        {
            case 0:
                 red=1;
                green=1;
                if(num%2)
                color = 1;
                else color = 2;
                timer = 2;
             yellow=0;
                if(num==11)
                 num=1;
                break;
            case 1:
                yellow=1;
                green=1;
                color = 0;
                timer = 29;
                red=0;
                num++;
                break;
            case 2:
                red=1;
                yellow=1;
                color = 0;
                timer = 39;
                green=0;
                num++;
                break;
                default:
                break;
        }
                       
    }
    else  
    {
        timer--;
    }
    ge =timer%10;  
    shi =timer/10;  
}
void LedScan()
{  

     dula=1;
           P0=table[shi];
           dula=0;
            P0 = 0xFF;
           wela=1;
           P0=0xfe;
           wela=0;
           delay(50);
           P0=0xff;      
     dula=1;
           P0=table[ge];
           dula=0;
            P0 = 0xFF;
           wela=1;
           P0=0xfd;
           wela=0;
           delay(50);
}
void InterruptTimer0() interrupt 1
{
static unsigned int tmr1s = 0;
    TH0 =(65536-50000)/256 ;
    TL0 = (65536-50000)/256 ;
    LedScan();   
    tmr1s++;     
    if (tmr1s >= 20)
    {
        tmr1s = 0;
        flag1s = 1;  
    }
}
void delay(uint x)
{uchar i,j;
        for(i=x;i>0;i--)
                for(j=110;j>0;j--);
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2014-12-20 12:53 | 只看該作者
電路圖呢  最好貼出來一下 方便調試
回復

使用道具 舉報

板凳
ID:70778 發表于 2014-12-20 13:14 | 只看該作者

回復

使用道具 舉報

地板
ID:70778 發表于 2014-12-20 15:28 | 只看該作者
admin 發表于 2014-12-20 12:53
電路圖呢  最好貼出來一下 方便調試

你好,能幫忙改下嗎?
回復

使用道具 舉報

5#
ID:66032 發表于 2014-12-20 17:07 | 只看該作者
改了三處: 1。 timer 改為全局變量,2。修改函數LedScan(uchar m) 放到while(1)內,放在中斷內每隔50ms 掃描一次太慢,3, 分離變量直接在LedScan()的形參內,無需在其它地方分離。
#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit wela =P2^3;
sbit dula =P2^4;
sbit  red = P1^4;
sbit  yellow = P1^3;
sbit  green=P1^2;
uchar shi,ge;
uchar code table[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f};
static unsigned char timer = 0;
bit flag1s = 1;         
void Timer0_init();
void light_crol();
void delay(uint x);
void main()
{
         Timer0_init();
    while (1)
    {
        LedScan(timer/10);
        LedScan(timer%10);
        if (flag1s)  
        {
            flag1s = 0;
             light_crol();
        }
    }
}
void Timer0_init()
{
    TMOD = 0x01;  
    TH0 = (65536-50000)/256 ;   
    TL0 = (65536-50000)%256 ;
    EA = 1;  
    ET0 = 1;        
    TR0 = 1;        
}
void light_crol()
{uchar num=1;
    static unsigned char color = 2;  
   // static unsigned char timer = 0;  
    if (timer == 0)
    {
        switch (color)  
        {
            case 0:
                 red=1;
                green=1;
                if(num%2)
                color = 1;
                else color = 2;
                timer = 2;
             yellow=0;
                if(num==11)
                 num=1;
                break;
            case 1:
                yellow=1;
                green=1;
                color = 0;
                timer = 29;
                red=0;
                num++;
                break;
            case 2:
                red=1;
                yellow=1;
                color = 0;
                timer = 39;
                green=0;
                num++;
                break;
                default:
                break;
        }
                        
    }
    else  
    {
        timer--;
    }
   // ge =timer%10;  
    //shi =timer/10;  
}
void LedScan(uchar m)
{
      Dula=1;
      P0=table[m];
      Dula=0;
      
      P0=0xff;
      P0=0xfe;
      wela=1;
      delay(1);
      wela=0;

      P0=0xfd;
      wela=1;
      delay(10);
      wela=0;

}

void InterruptTimer0() interrupt 1
{
static unsigned int tmr1s = 0;
    TH0 =(65536-50000)/256 ;
    TL0 = (65536-50000)/256 ;
  //  LedScan();   
    tmr1s++;     
    if (tmr1s >= 20)
    {
        tmr1s = 0;
        flag1s = 1;  
    }
}
回復

使用道具 舉報

6#
ID:66032 發表于 2014-12-20 17:15 | 只看該作者
筆誤, 要把Dula改成dula
回復

使用道具 舉報

7#
ID:70778 發表于 2014-12-20 21:00 | 只看該作者
mqwu 發表于 2014-12-20 17:15
筆誤, 要把Dula改成dula

您好,感謝您認真的修改和幫助,可是還是不正確。數碼管依然顯示不出來。而且修改后的二極管都不亮了。
回復

使用道具 舉報

8#
ID:67992 發表于 2014-12-20 22:28 | 只看該作者
#include <reg52.h>
#define uchar unsigned char
#define uint  unsigned int
sbit wela =P2^3;
sbit dula =P2^4;
sbit red = P1^4;
sbit yellow = P1^3;
sbit green=P1^2;
uchar shi,ge;
uchar code table[] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f};
bit flag1s = 1;         
void Timer0_init();
void light_crol();
void delay(uint x);
void LedScan();
void main()
{
    Timer0_init();
    while (1)
    {         LedScan();  
        if (flag1s)  
        {
            flag1s = 0;
             light_crol();
        }
    }
}
void Timer0_init()
{
    TMOD = 0x01;  
    TH0 = (65536-50000)/256 ;   
    TL0 = (65536-50000)%256 ;
    EA = 1;  
    ET0 = 1;        
    TR0 = 1;        
}
void light_crol()
{   uchar num=1;
    static unsigned char color = 2;  
    static unsigned char timer = 0;  
    if (timer == 0)
    {
        switch (color)  
        {
            case 0:
                red=1;
                green=1;
                if(num%2)
                color = 1;
                else
                                color = 2;
                timer = 2;
                yellow=0;
                if(num==11)
                 num=1;
                break;
            case 1:
                yellow=1;
                green=1;
                color = 0;
                timer = 29;
                red=0;
                num++;
                break;
            case 2:
                red=1;
                yellow=1;
                color = 0;
                timer = 39;
                green=0;
                num++;
                break;
                default:
                break;
        }
                        
    }
    else  
    {
        timer--;
    }
    ge =timer%10;  
    shi =timer/10;  
}
void LedScan()
{  
                   wela=1;
           P0=0xfe;
           wela=0;
           dula=1;
           P0=table[shi];
           dula=0;
           P0 = 0xff;
           delay(20);
                   wela=1;
           P0=0xfd;
           wela=0;      
           dula=1;
           P0=table[ge];
           dula=0;
           P0 = 0xff;
           delay(20);
}
void InterruptTimer0() interrupt 1
{
    static unsigned int tmr1s = 0;
    TH0 =(65536-50000)/256 ;
    TL0 = (65536-50000)/256 ;
   
    tmr1s++;     
    if (tmr1s >= 20)
    {
        tmr1s = 0;
        flag1s = 1;  
    }
}
void delay(uint x)
{
    uint i,j;
    for(i=x;i>0;i--)
      for(j=110;j>0;j--);
}
回復

使用道具 舉報

9#
ID:67992 發表于 2014-12-20 22:29 | 只看該作者

回復

使用道具 舉報

10#
ID:70778 發表于 2014-12-21 00:28 | 只看該作者
非常感謝。可以用了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品久久久久久首妖 | 激情小说综合网 | 久久久性 | 男女一区二区三区 | 国产精品一区二区三区久久 | 91精品久久久久久综合五月天 | 国产精品视频播放 | 国产精品日韩欧美一区二区 | 久久久婷婷 | 国外成人在线视频网站 | 一级黄色夫妻生活 | 国产高清视频一区二区 | 日韩国产中文字幕 | 欧美一区二区三区在线视频 | 欧美日韩一区在线观看 | 国产7777 | 亚洲精品av在线 | 亚洲另类视频 | 最近日韩中文字幕 | 亚洲视频在线一区 | 成人国产精品久久 | 精品伊人久久 | 亚洲二区视频 | 日本黄色激情视频 | 免费观看一级特黄欧美大片 | 欧美一级大片 | 国产一级在线观看 | 日产精品久久久一区二区福利 | 成人亚洲精品久久久久软件 | 欧美一级黄带 | 精品国产91乱码一区二区三区 | 久久精品国产久精国产 | 久久99网站| 嫩草研究影院 | 国产视频一区在线 | 激情毛片 | 亚洲人的av | av大片在线 | 97精品一区二区 | 午夜一区二区三区在线观看 | 欧美亚洲日本 |