找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1823|回复: 1
打印 上一主题 下一主题
收起左侧

新人求助 ,求各位帮忙了

[复制链接]
跳转到指定楼层
楼主
ID:64081 发表于 2014-7-17 11:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用数码管显示交通灯实验,数码管显示的时候只有一部分显示正常其他的显示不正常
//交通灯用数码管显示实验

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code shuma_w[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//定义前进路红绿灯
sbit Q_Red = P1^0;
sbit Q_Yellow = P1^1;
sbit Q_Green = P1^2;
sbit Q_P_Red = P1^3;
sbit Q_P_Green = P1^4;
//定义宝田路红绿灯
sbit B_Red = P3^0;
sbit B_Yellow = P3^1;
sbit B_Green = P3^2;
sbit B_P_Red = P3^3;
sbit B_P_Green = P3^4;

uchar Count = 0;
uchar Sec = 0;
void Delay(uint del)//10ms的延时函数
{
        uint i,j;
        for(i=0;i<del;i++)
        for(j=0;j<1827;j++)
        {

        }
}
void Delay_1ms(uint i)//1ms的延时函数
{
        uint x,j;
        for(j=0;j<i;j++)
        for(x=0;x<148;x++)
        {

        }
}
void LED(uchar dic,uchar re,uchar yel,uchar gre,uchar p_re,uchar p_gre)
{
        if(dic == 1)
        {
                Q_Red = re;
                Q_Yellow = yel;
                Q_Green = gre;
                Q_P_Red = p_re;
                Q_P_Green = p_gre;
        }
        if(dic == 2)
        {
                B_Red = re;
                B_Yellow = yel;
                B_Green = gre;
                B_P_Red = p_re;
                B_P_Green = p_gre;
        }
}
void Time0_in(void)//时间50ms
{
        TMOD = 0x01;
        TH0 = 0x4c;
        TL0 = 0x00;
        IE = 0x82;
        TR0 = 1;
}
void Time0_int(void) interrupt 1  //50ms*20=1s
{
        TH0 = 0x4c;
        TL0 = 0x00;
        Count++;
        if(Count == 20)
        {
                Count = 0;
                Sec--;
        }
}       

void LEDreg(void)
{
        P0 = 0;
        P2 = shuma_w[3];
        P0 = table[Sec/10];
        Delay_1ms(2);
       
        P0 = 0;
        P2 = shuma_w[2];
        P0 = table[Sec%10];
        Delay_1ms(2);
        P2 = 0xff;//数码管不会被点亮

}
void main(void)
{
        uchar i;
        Time0_in();
        while(1)
        {
               
                //前进路绿灯亮,宝田路红灯亮持续时间10秒
                Sec = 10;
                while(Sec != 0)
                {
                        LED(1,1,1,0,1,0);
                        LED(2,0,1,1,0,1);
                        LEDreg();
                }
                //前进路黄灯亮,宝田路红灯亮持续时间5秒
                Sec = 5;
                while(Sec != 0)
                {
                        for(i=0;i<100;i++)
                        {
                                LED(1,1,0,1,1,1);
                                LED(2,0,1,1,0,1);
                                LEDreg();
                        }
                        LED(1,1,1,1,1,1);
                        LED(2,1,1,1,1,1);
                        Delay(50);
                }
                //前进路红灯亮,宝田路绿灯亮持续时间10秒
                Sec = 10;
                while(Sec != 0)
                {
                        LED(1,0,1,1,0,1);
                        LED(2,1,1,0,1,0);
                        LEDreg();
                }
                //前进路红灯亮,宝田路黄灯亮5秒
                Sec = 5;
                while(Sec !=0)
                {
                        for(i=0;i<100;i++)
                        {
                                LED(1,0,1,1,0,1);
                                LED(2,1,0,1,1,1);
                                LEDreg();
                        }
                        LED(1,1,1,1,1,1);
                        LED(2,1,1,1,1,1);
                        Delay(50);
                }


        }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:64081 发表于 2014-7-17 11:43 | 只看该作者
希望哪位懂的能够帮我解决一下  在此谢过了
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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