仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
MAX7219理论上可无限级联,每多加一块MAX7219只需多加两个IO口,所有MAX7219共用一个时钟线。程序中需添加对应的初始化和写入函数。附件包含程序和仿真工程文件。
单片机源程序如下:
- #include <reg52.h>
- #include <intrins.h>
- //typedef unsigned char uchar8;
- //typedef unsigned short uint16;
- //typedef unsigned long uint32;
- sbit clk = P1 ^ 5;
- sbit load = P1 ^ 6;
- sbit din = P1 ^ 7;
- sbit a7 = ACC ^ 7;
- sbit a6 = ACC ^ 6;
- sbit a5 = ACC ^ 5;
- sbit a4 = ACC ^ 4;
- sbit a3 = ACC ^ 3;
- sbit a2 = ACC ^ 2;
- sbit a1 = ACC ^ 1;
- sbit a0 = ACC ^ 0;
- void MAX7219_Write(unsigned char ad, unsigned char v_data)
- {
- ACC = ad;
- clk = 0;
- din = 0;
- load = 0;
- din = a7;
- clk = 1;
- clk = 0;
- din = a6;
- clk = 1;
- clk = 0;
- din = a5;
- clk = 1;
- clk = 0;
- din = a4;
- clk = 1;
- clk = 0;
- din = a3;
- clk = 1;
- clk = 0;
- din = a2;
- clk = 1;
- clk = 0;
- din = a1;
- clk = 1;
- clk = 0;
- din = a0;
- clk = 1;
- ACC = v_data;
- clk = 0;
- din = a7;
- clk = 1;
- clk = 0;
- din = a6;
- clk = 1;
- clk = 0;
- din = a5;
- clk = 1;
- clk = 0;
- din = a4;
- clk = 1;
- clk = 0;
- din = a3;
- clk = 1;
- clk = 0;
- din = a2;
- clk = 1;
- clk = 0;
- din = a1;
- clk = 1;
- clk = 0;
- din = a0;
- clk = 1;
- clk = 0;
- load = 1;
- }
- void MAX7219_init( )
- {
- unsigned int i;
-
- MAX7219_Write(15, 1);
- for(i = 0; i < 3000; i ++);
- MAX7219_Write(15, 0);
- MAX7219_Write(12, 1);
- MAX7219_Write(11, 7);
- MAX7219_Write(9, 255);
- MAX7219_Write(10, 8);
- MAX7219_Write(1, 1);
- MAX7219_Write(2, 2);
- MAX7219_Write(3, 3);
- MAX7219_Write(4, 4);
- MAX7219_Write(5, 5);
- MAX7219_Write(6, 6);
-
- for(i = 0; i < 3000; i ++);
- }
- /*10: -, 11: E, 12: H, 13: L, 14: P, 15:¿Õ¸ñ, X + 128:D¡êyμã;*/
- void main( )
- {
- MAX7219_init( );
-
- while(1)
- {
- MAX7219_Write(1, 0);
- MAX7219_Write(2, 0 + 128);
- MAX7219_Write(3, 10);
- MAX7219_Write(4, 11);
- MAX7219_Write(5, 12);
- MAX7219_Write(6, 13);
- MAX7219_Write(7, 14);
- MAX7219_Write(8, 15 + 128);
- }
- }
复制代码
全部资料51hei下载地址:
MAX7219数码管.zip
(61.66 KB, 下载次数: 58)
|