📄 max7219.lst
字号:
C51 COMPILER V8.02 MAX7219 05/25/2008 14:13:43 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE MAX7219
OBJECT MODULE PLACED IN max7219.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE max7219.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*
2 max7219 驱动程序 基于51单片机
3
4 zhaoliang_0801@dl.cn
5 07-3-27
6
7 */
8
9 #include <reg51.h>
10 /*****************************
11 宏定义声明
12 *****************************/
13 //common part
14 #define HIGH 1
15 #define LOW 0
16 #define TRUE 1
17 #define FALSE 0
18 #define ZERO 0
19 #define MSB 0x80
20 #define LSB 0x01
21 //max7219 part
22 #define DECODE_MODE 0x09
23 #define INTENSITY 0x0A
24 #define SCAN_LIMIT 0x0B
25 #define SHUT_DOWN 0x0C
26 #define DISPLAY_TEST 0x0F
27
28 /*************************************************************************
29 管脚定义:
30 不同的电路板上,改变这里的定义,
31 *************************************************************************/
32 sbit LOAD = P2^1; //MAX7219 Load-Data Input: rising edge pin 12
33 sbit DIN = P2^2; //MAX7219 Serial-Data Input: rising edge pin 1
34 sbit CLK = P2^0; //MAX7219 Serial-Clock Input: maximum 10MHz pin 13
35
36 /***********************************************************
37 函数声明
38 ***********************************************************/
39 void Write_Max7219_byte(unsigned char temp);
40 void Write_Max7219(unsigned char address,unsigned char dat);
41 void Init_Max7219(void);
42
43 /***************
44 测试程序,
45 显示1~8
46 ***************/
47 void main(void)
48 {
49 1 unsigned char i;
50 1 Init_Max7219();
51 1 while(TRUE)
52 1 {
53 2 for(i=1; i<9; i++)
54 2 {
55 3 Write_Max7219(i,i);
C51 COMPILER V8.02 MAX7219 05/25/2008 14:13:43 PAGE 2
56 3 }
57 2 }
58 1 }
59 /******************************************
60 发送一个字节的子程序:
61 上升沿发送数据,
62 MSB first
63 ******************************************/
64 void Write_Max7219_byte(unsigned char temp)
65 {
66 1 unsigned char i;
67 1 for (i=0; i<8; i++)
68 1 {
69 2 CLK = LOW;
70 2 DIN = (bit)(temp&MSB);
71 2 temp <<=1;
72 2 CLK = HIGH;
73 2 }
74 1 }
75 /**********************************************************
76 向寄存器中写入一个数据
77 先写地址,后写数据
78 load 上升沿锁存数据
79 **********************************************************/
80 void Write_Max7219(unsigned char address,unsigned char dat)
81 {
82 1 LOAD = LOW;
83 1 Write_Max7219_byte(address);
84 1 Write_Max7219_byte(dat);
85 1 LOAD = HIGH;
86 1 }
87 /**********************
88 初始化max7219 子函数
89 设置工作寄存器
90 需要查看芯片手册
91 **********************/
92 void Init_Max7219(void)
93 {
94 1 Write_Max7219(SHUT_DOWN, 0x01); //开启正常工作模式(0xX1)
95 1 Write_Max7219(DISPLAY_TEST, 0x00); //选择工作模式(0xX0)
96 1 Write_Max7219(DECODE_MODE, 0xff); //选用全译码模式
97 1 Write_Max7219(SCAN_LIMIT, 0x07); //8只LED全用
98 1 Write_Max7219(INTENSITY, 0x04); //设置初始亮度
99 1 }
100
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 90 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 1
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -