3290|1

22

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

max7219 [复制链接]

#include
typedef unsigned char uchar;
#define DIGIT0 0x01
#define DIGIT1 0x02
#define DIGIT2 0x03
#define DECODE_MODE 0x09
#define INTENSITY 0x0a
#define SCAN_LIMIT 0x0b
#define SHUTDOWN 0x0c
#define DIS_TEST 0x0f
uchar bdata byte;
sbit byte_7=byte^7;
sbit DIN=P2^5;
sbit LD=P2^4;
sbit CLK=P2^3;
uchar code led_code[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x50,0x70,0x7f,0x7b,0x77,0x1f,0x4e,0x3d,0x4f,0x47};
void max7219_reset(void);
void write_reg(uchar,uchar);
void write_digit(uchar,uchar);
void send_data(uchar);

void main(void)
{
    max7219_reset();
    write_digit(DIGIT0,0);
    write_digit(DIGIT1,1);
    write_digit(DIGIT2,2);
    while(1)
    {}  
}


void max7219_reset(void)                //初始化MAX7219
{
   write_reg(DIS_TEST,0x0);             //正常操作,不进行显示测试
   write_reg(SHUTDOWN,0x01);            //正常显示
   write_reg(DECODE_MODE,0x0);          // 不用自动编码
   write_reg(SCAN_LIMIT,0x02);          //
   write_reg(INTENSITY,0x08);           //亮度为17/32
}

void write_reg(uchar reg,uchar sdata)   //写入命令
{
   LD=0;                                //拉低LOAD
   byte=reg;                            //将寄存器地址串行送入
   send_data(byte);
   byte=sdata;                          //将控制字节串行送入
   send_data(byte);
   LD=1;                                 //置高LOAD,输入的数据生效
}

void write_digit(uchar digit,uchar number)  //显示[url=https://bbs.eeworld.com.cn/viewthread.php?tid=59282&extra=&page=1]数字[/url]
{
   LD=0;                                 //拉低LOAD
   byte=digit;                           //将寄存器地址串行送入
   send_data(byte);
   byte=led_code[number];                //查表,取出对应的字型编码
   send_data(byte);                      //将字型编码送入MAX7219
   LD=1;                                 //置高LOAD,输入的数据生效
}

void send_data(uchar byte)              //MAX7219的[url=https://bbs.eeworld.com.cn/viewthread.php?tid=59282&extra=&page=1]驱动[/url]程序
{
   uchar i;
   CLK=0;                              //拉低CLK,为产生上升沿作准备
   for(i=0;i<=7;i++)                  //发送8bit的数据
    {
       DIN=byte_7;
       CLK=1;                          //产生CLK的上升沿将1bit数据送入
       byte<<=1;
       CLK=0;
     }
}


我用8051 来实现 MAX7219[url=https://bbs.eeworld.com.cn/viewthread.php?tid=59282]驱动[/url] 数码管显示0 1 2  三个数字
程序编译没有错但是MAX7219 引脚一直没有反应   数码管也不能亮的
请高手赐教啊,不甚感激
此帖出自单片机论坛

最新回复

Hello,兄弟,你先检查一下硬件电路设计是不是有错误,如果没有,就得查软件了,软件主要是时序问题,看看你得软件设计与MAX7219的时序匹配否?  详情 回复 发表于 2008-11-26 11:48
点赞 关注
 

回复
举报

97

帖子

0

TA的资源

纯净的硅(初级)

沙发
 

MAX7219

Hello,兄弟,你先检查一下硬件电路设计是不是有错误,如果没有,就得查软件了,软件主要是时序问题,看看你得软件设计与MAX7219的时序匹配否?
此帖出自单片机论坛
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表