2019-07-18 10:29发布
宝物沉海123 发表于 2015-4-15 12:22 DIG0~DIG7之间有电平变化,A~DP引脚电平没有变化。程序在开发板可以正常运行的。 ...
最多设置5个标签!
是这样的。仿真可以的,真是电路一定可以(无错误,无警告)。反之不一定行!
当然这话还要具体的理解。
比如哈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
记得,把这里的引脚改了哈!
一周热门 更多>