打印
[51单片机]

大神过来看一下我的仿真电路有问题吗?

[复制链接]
965|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我数码管显示,暂停看可以显示数字,但是A段好像都显示不出来,而且我怎么增加延时都没法实现消残影。但是我在开发板上可以实现啊。为什么到仿真上就没法使用。

代码如下
#include <REG52.h>
#include "intrins.h"
#define KEY P3
sbit LED1=P0^1;
sbit K1=P3^0;

typedef unsigned long u32;
typedef unsigned short u16;
typedef unsigned char u8;

code u8 led_buff[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0XFF,0x8e,0xc1};
u8 cnt=0;
u8 yi=1,er=2,san=3,si=4,wu=5,liu=6,qi=7,ba=8;

void Init_HC573(u8 num)
{
    switch(num)
    {   
        case 6:P2=(P2&0X0F)|0XC0;break;
        case 7:P2=(P2&0X0F)|0Xe0;break;
    }
}

void Delay2ms()                //@11.0592MHz
{
        unsigned char i, j;

        _nop_();
        _nop_();
        i = 22;
        j = 128;
        do
        {
                while (--j);
        } while (--i);
}







void Delay10ms()                //@11.0592MHz
{
        unsigned char i, j;

        i = 108;
        j = 145;
        do
        {
                while (--j);
        } while (--i);
}


void key_on()
{
    static u8 flag=0;
    KEY=0x0f;
    if((KEY!=0X0F)&&(flag==0))
    {
        Delay10ms();
        flag=1;
        if(K1==0)
        {
            cnt=1;
        }
    }
    else if(KEY==0x0f)
    {
        flag=0;
    }
}

void led_on(void)
{
    Init_led(led_buff[yi],0);

    Init_led(led_buff[er],1);

    Init_led(led_buff[san],2);

    Init_led(led_buff[si],3);

    Init_led(led_buff[wu],4);

    Init_led(led_buff[liu],5);

    Init_led(led_buff[qi],6);

    Init_led(led_buff[ba],7);


}

void main()
{
    //Timer1Init();
    while(1)
    {
        key_on();
        led_on();

    }
}

使用特权

评论回复

相关帖子

沙发
小调调哟|  楼主 | 2020-5-31 16:47 | 只看该作者
void Init_led(u8 number,u8 cs)
{
    Init_HC573(7);
    P0=number;
    Init_HC573(6);
    P0=0x01<<cs;
    Delay2ms();
}
少了一端程序

使用特权

评论回复
板凳
小调调哟|  楼主 | 2020-5-31 17:54 | 只看该作者
有没有大佬知道的

使用特权

评论回复
地板
畅想天子| | 2020-5-31 20:09 | 只看该作者
if((KEY!=0X0F)&&(flag==0))这个判断语句对吗?

使用特权

评论回复
5
小调调哟|  楼主 | 2020-5-31 23:41 | 只看该作者
畅想天子 发表于 2020-5-31 20:09
if((KEY!=0X0F)&&(flag==0))这个判断语句对吗?

这个没问题这是我的键位扫描这是一个标志位。我主要是数码管的问题

使用特权

评论回复
6
2608666256| | 2020-5-31 23:49 | 只看该作者
仿真有黄点,短路了

使用特权

评论回复
7
畅想天子| | 2020-6-1 12:54 | 只看该作者
主函数里没有数码管显示的部分。程序写得很乱,建议你先理顺一下思路,先画一个流程图,再去编写

使用特权

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

本版积分规则

4

主题

19

帖子

0

粉丝