找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4735|回复: 1
收起左侧

单片机与Max7221数码管动态显示proteus仿真及源程序

[复制链接]
ID:137190 发表于 2016-10-8 23:15 | 显示全部楼层 |阅读模式
51单片机做的Max7221驱动数码管仿真原理图如下:
0.png
0.png

仿真工程文件及所有完整程序等资料下载地址:
http://www.51hei.com/bbs/dpj-56304-1.html


单片机源程序:
  1. /**************************************************************************
  2.   
  3.                                    THE MAX7221 LED DRIVER LIB
  4.   
  5.                              COPYRIGHT (c)   2005 BY JJJ.
  6.                                        --  ALL RIGHTS RESERVED  --
  7.   
  8.    File Name:       Max7221.h
  9.    Author:          Jiang Jian Jun
  10.    Created:         2005/9/19
  11.    Modified:                NO
  12.    Revision:                 1.0
  13.   
  14. ***************************************************************************/
  15. #ifndef _MAX7221_LED_DRIVER_2005_9_19_
  16. #define _MAX7221_LED_DRIVER_2005_9_19_

  17. #include <intrins.h>

  18. sbit Max7221CS  = P3^1;
  19. sbit Max7221DIN = P3^0;
  20. sbit Max7221CLK = P3^2;

  21. void WriteMax7221(unsigned char Address,unsigned char Data)
  22. {
  23.         unsigned char i;
  24.         Max7221CS = 0;
  25.         for (i=0;i<8;i++)
  26.         {
  27.                 Max7221CLK = 0;
  28.                 Max7221DIN = (Address&(0x80>>i)) ? 1:0;
  29.                 _nop_();
  30.                 _nop_();
  31.                 Max7221CLK = 1;
  32.                 _nop_();
  33.                 _nop_();
  34.         }
  35.         for (i=0;i<8;i++)
  36.         {
  37.                 Max7221CLK = 0;
  38.                 Max7221DIN = (Data&(0x80>>i)) ? 1:0;
  39.                 _nop_();
  40.                 _nop_();
  41.                 Max7221CLK = 1;
  42.                 _nop_();
  43.                 _nop_();
  44.         }
  45.         Max7221CS = 1;        
  46. }

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

  54. void Max7221Display(unsigned char *buffer)
  55. {
  56.         unsigned char i;
  57.         for(i=0;i<8;i++)
  58.         {
  59.                 WriteMax7221(i+1,*(buffer+i));
  60.         }
  61. }

  62. #endif
复制代码
回复

使用道具 举报

ID:679621 发表于 2020-1-2 14:01 | 显示全部楼层
有没有用汇编语言的?
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表