仿真时,点阵屏不亮。

2019-07-18 10:29发布

怎么仿真不了的,调试时,点阵屏不亮。

360截图20150413131432342.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
武力戡乱
2019-07-19 07:45
宝物沉海123 发表于 2015-4-15 12:22
DIG0~DIG7之间有电平变化,A~DP引脚电平没有变化。程序在开发板可以正常运行的。
...

是这样的。仿真可以的,真是电路一定可以(无错误,无警告)。反之不一定行!
当然这话还要具体的理解。
比如哈ds1302。需要开启。仿真一般默认开启了。而真实的不一定。
但是大部分仿真逻辑都严格可靠的。

你试试这个。
#include "MAX7219.h"

void Max7221_Write(unsigned char Address,unsigned char Data)
{
        unsigned char i;
        Max7221_CS = 0;
        for (i=0;i<8;i++)
        {
                Max7221_CLK = 0;
                Max7221_DIN = (Address&(0x80>>i)) ? 1:0;
                _nop_();_nop_();
                Max7221_CLK = 1;
                _nop_();_nop_();
        }
        for (i=0;i<8;i++)
        {
                Max7221_CLK = 0;
                Max7221_DIN = (Data&(0x80>>i)) ? 1:0;
                _nop_();_nop_();
                Max7221_CLK = 1;
                _nop_();_nop_();
        }
        Max7221_CS = 1;       
}

void Max7221_Init(void)
{
        Max7221_Write(0x0A,0x07);        //亮度地址0AH,0x00~0x0F,0x0F最亮
        Max7221_Write(0x0B,0x07);        //扫描LED个数地址0BH,0x00~0x07,最多扫描8个数码管
        Max7221_Write(0x0C,0x01);        //工作模式地址0x0C. 0x00:ShutDown;0x01:Normal
        Max7221_Write(0x09,0xff);        //编码模式地址0x09. 0x00~0xFF:哪一位为1,哪一位就支持编码
}

void Max7221_Display(unsigned char *buffer)
{
        unsigned char i;
        for(i=0;i<8;i++)
        {
                Max7221_Write(i+1,*(buffer+i));
        }
}


#include <at89x52.h>
#include <intrins.h>

#ifndef _MAX7219_H_
#define _MAX7219_H_

sbit Max7221_DIN = P3^0;
sbit Max7221_CS  = P3^1;
sbit Max7221_CLK = P3^2;

#define SHUT_DOWN             0x0C // 关断
#define DISPLAY_TEST          0x0F // 测试
#define DECODE_MODE           0x09 // 译码器
#define SCAN_LIMIT            0x0B // 扫描界限
#define INTENSITY             0x0A // 亮度

void Max7221_Write(unsigned char Address,unsigned char Data);
void Max7221_Init(void);
void Max7221_Display(unsigned char *buffer);

#endif


记得,把这里的引脚改了哈!

一周热门 更多>