午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

[筆記].使用Protues仿真Max7129

 戴維圖書館 2013-10-25

[筆記].使用Protues仿真Max7129

引子

在Nios II上調(diào)了好幾天的I2C,PCF8563都沒有被正常驅(qū)動,很是傷感。干脆先用51驅(qū)動試試。首先要解決的便是顯示問題,用Max7129來驅(qū)動七段數(shù)碼管。

仿真環(huán)境

硬件部分:Proteus 7.5 SP3

軟件部分:Keil uVision4

Proteus仿真圖

圖1 Proteus仿真圖

圖1 Proteus仿真圖

Keil工程

圖2 Keil工程

源代碼

main.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "max7219.h"
  
int main(void)
{
    Max7219_Init();  
    while(1)
    {  
        Max7219_WriteData(1, 2);
        Max7219_WriteData(2, 0);
        Max7219_WriteData(3, 4);
        Max7219_WriteData(4, 0);
        Max7219_WriteData(5, 2);
        Max7219_WriteData(6, 0);
        Max7219_WriteData(7, 4);
        Max7219_WriteData(8, 0);
    }
    return 0; 
}

max7129.h

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#ifndef _MAX7219_H_
#define _MAX7219_H_
  
#include <reg51.h>
sbit Max7129_DIN  = P1^0;     // Serial-Data Input: rising edge
sbit Max7129_LOAD = P1^1;     // Load-Data Input: rising edge
sbit Max7129_CLK  = P1^2;     // Serial-Clock Input: maximum 10MHz
  
// commone part
#define HIGH    1
#define LOW     0
#define TRUE    1
#define FALSE   0
#define ZERO    0 
#define MSB     0x80
#define LSB     0x01
  
// max7129 part
#define DECODE_MODE     0x09    // 譯碼方式 
#define INTENSITY       0x0A    // 顯示亮度 
#define SCAN_LIMIT      0x0B    // 掃描限制
#define SHUT_DOWN       0x0C    // 關(guān)斷方式
#define DISPLAY_TEST    0x0F    // 顯示測試  
  
//
void Max7219_WriteByte(unsigned char byte);
void Max7219_WriteData(unsigned char addr, unsigned char dat);
void Max7219_Init(void);
  
#endif /* _MAX7219_H_ */

max7129.c

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "max7219.h"
  
/*
 * 發(fā)送一個字節(jié)的子程序:
 * 上升沿發(fā)送數(shù)據(jù),
 * MSB first
 */
void Max7219_WriteByte(unsigned char byte)
{
    unsigned char i;
    for (i=0; i<8; i++)     
    
        Max7129_CLK = LOW;
        Max7129_DIN = (bit)(byte & MSB);      
        byte <<= 1;  
        Max7129_CLK = HIGH;
    }
}
  
/*
 * 向寄存器中寫入一個數(shù)據(jù)
 * 先寫地址,后寫數(shù)據(jù)
 */
void Max7219_WriteData(unsigned char addr, unsigned char dat)
    Max7129_LOAD = HIGH;                // 使Max7129_LOAD變高,啟動串行數(shù)據(jù)發(fā)送 
    Max7219_WriteByte(addr); 
    Max7219_WriteByte(dat);
    Max7129_LOAD = LOW;                 // 使Max7129_LOAD變低,鎖存數(shù)據(jù)
    Max7129_LOAD = HIGH;                // 使Max7129_LOAD變高,串行數(shù)據(jù)結(jié)束                 
}
  
/*
 *
 */
void Max7219_Init(void)      
    Max7219_WriteData(SHUT_DOWN,    0x01);   // 掉電模式: 1, 正常操作; 0, 睡眠模式
    Max7219_WriteData(DISPLAY_TEST, 0x00);   // 顯示測試: 0, 正常模式; 1, 測試模式
    Max7219_WriteData(DECODE_MODE,  0xff);   // 譯碼模式:0, 不譯碼; 1, BCD譯碼
    Max7219_WriteData(SCAN_LIMIT,   0x07);   // 掃描限制: 0 ~ 7
    Max7219_WriteData(INTENSITY,    0x07);   // 顯示亮度: 0 ~ F
}

原理 

表1 主要管腳說明

DIN 串型數(shù)據(jù)輸入。在時鐘的上升沿,數(shù)據(jù)被載入內(nèi)置的16位移位寄存器。
LOAD 載入數(shù)據(jù)輸入。在LOAD的上升沿,串型數(shù)據(jù)的后16位被鎖存。
CLK 串型時鐘輸入。最大速率10MHz。在時鐘的上升沿,數(shù)據(jù)被移入內(nèi)置的以為寄存器;在時鐘的下降沿,數(shù)據(jù)從DOUT輸出。
DOUT 串型數(shù)據(jù)輸出。從DIN輸入的數(shù)據(jù),于16.5個時鐘周期后,在DOUT有效。該引腳用于級聯(lián)7219,且從不呈現(xiàn)高阻抗?fàn)顟B(tài)。

表2 串型數(shù)據(jù)格式(16 位)

表2 串型數(shù)據(jù)格式 

表3 寄存器地址映射 

表3 寄存器地址映射

表4 掉電寄存器格式(Address (Hex) = 0xXC)

表4 掉電寄存器格式

表5 譯碼模式寄存器格式(Address (Hex) = 0xX9)

表5 譯碼模式寄存器格式

表6 Code B 字體

表6 Code B 字體

* 小數(shù)點位由 D7 = 1 設(shè)定

表7 非譯碼模式對應(yīng)段碼

表7 非譯碼模式對應(yīng)段碼

圖8 亮度調(diào)整寄存器格式(Address (Hex) = 0xXA)

圖8 亮度調(diào)整寄存器格式

圖9 掃描閑置寄存器格式(Address (Hex) = 0xXB)

圖9 掃描閑置寄存器格式

圖10 顯示測試寄存器格式(Address (Hex) = 0xXF)

圖10 顯示測試寄存器格式

參考

1. Maxim. MAX7219/MAX7221 datasheet

2. max7219數(shù)碼管驅(qū)動模塊

http://www./bbs/viewthread.php?tid=923

3. 共享我做的串行8位數(shù)碼管控制芯片MAX7219的實例,顯示0到7,附源文件!

http://www./bbs/bbs_content.jsp?bbs_sn=656961

 .COM 缺氧? / CC BY 2.5     

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多