您的位置:控制工程论坛网论坛 » 教程与手册 » 单片机笔记

xilinxue

xilinxue   |   当前状态:在线

总积分:16186  2024年可用积分:0

注册时间: 2008-06-26

最后登录时间: 2020-03-22

空间 发短消息加为好友

单片机笔记

xilinxue  发表于 2008/9/20 13:12:01      591 查看 1 回复  [上一主题]  [下一主题]

手机阅读

单片机笔记
1楼 0 0 回复
  • xilinxue

    xilinxue   |   当前状态:在线

    总积分:16186  2024年可用积分:0

    注册时间: 2008-06-26

    最后登录时间: 2020-03-22

    空间 发短消息加为好友

    xilinxue   发表于 2008/9/20 13:12:01

    #include <reg52.H>
    #include "Max7221.h"


    unsigned char DisplayBuffer[8]={0,1,2,3,4,5,6,7};//显示缓冲区


    main()
    {
     InitialMax7221();
     Max7221Display(&DisplayBuffer[0]);
     while(1); 
    }


     


    /**************************************************************************
     
                         THE MAX7221 LED DRIVER LIB
     
                   COPYRIGHT (c)   2005 BY JJJ.
                             --  ALL RIGHTS RESERVED  --
     
       File Name:       Max7221.h
       Author:          Jiang Jian Jun
       Created:         2005/9/19
       Modified:  NO
       Revision:   1.0
     
    ***************************************************************************/
    #ifndef _MAX7221_LED_DRIVER_2005_9_19_
    #define _MAX7221_LED_DRIVER_2005_9_19_


    #include <intrins.h>


    sbit Max7221CS  = P3^1;
    sbit Max7221DIN = P3^0;
    sbit Max7221CLK = P3^2;


    void WriteMax7221(unsigned char Address,unsigned char Data)
    {
     unsigned char i;
     Max7221CS = 0;
     for (i=0;i<8;i++)
     {
      Max7221CLK = 0;
      Max7221DIN = (Address&(0x80>>i)) ? 1:0;
      _nop_();
      _nop_();
      Max7221CLK = 1;
      _nop_();
      _nop_();
     }
     for (i=0;i<8;i++)
     {
      Max7221CLK = 0;
      Max7221DIN = (Data&(0x80>>i)) ? 1:0;
      _nop_();
      _nop_();
      Max7221CLK = 1;
      _nop_();
      _nop_();
     }
     Max7221CS = 1; 
    }


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


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


    #endif

    2楼 回复本楼

    引用 xilinxue 2008/9/20 13:12:01 发表于2楼的内容

总共 , 当前 /