久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2462|回復: 0
收起左側

STC12C5A60S2單片機+MAX7219程序與詳細文本資料

[復制鏈接]
ID:553399 發表于 2020-4-29 16:00 | 顯示全部樓層 |閱讀模式

單片機的學習可以分為幾個階段:單片機的I/O口的學習、單片機內部的資源(定時器、中斷、串口驅動等等)的學習和常用外圍器件的驅動程序等等幾個步驟。之后你就可以用所學過的東西作些項目了。這里作者主要介紹單片機常用外圍器件的驅動以及簡單應用,并陸續介紹了幾種通用串行總線的驅動方法。

總結

1 MAX7219 簡介

MAX7219是MAXIM公司生產的串行輸入/輸出共陰極數碼管顯示驅動芯片,一片MAX7219可驅動8個7段(包括小數點共8段)數字LED、LED條線圖形顯示器、或64個分立的LED發光二級管。該芯片具有10MHz傳輸率的三線串行接口可與任何微處理器相連,只需一個外接電阻即可設置所有LED的段電流。。它的操作很簡單,MCU只需通過模擬SPI三線接口就可以將相關的指令寫入MAX7219的內部指令和數據寄存器,同時它還允許用戶選擇多種譯碼方式和譯碼位。此外它還支持多片7219串聯方式,這樣MCU就可以通過3根線(即串行數據線、串行時鐘線和芯片選通線)控制更多的數碼管顯示。MAX7219的外部引腳分配如1所示及內部結構如2所示

1 MAX7219的外部引腳分配

2 MAX7219的內部引腳分配

各引腳的功能為:

DIN:串行數據輸入端

DOUT:串行數據輸出端,用于級連擴展

LOAD:裝載數據輸入

CLK:串行時鐘輸入

DIG0~DIG7:8位LED位選線,從共陰極LED中吸入電流

SEG A~SEG G DP     7段驅動和小數點驅動

ISET:  通過一個10k電阻和Vcc相連,設置段電流

MAX7219有下列幾組寄存器:(如圖3)

MAX7219內部的寄存器如3,主要有:譯碼控制寄存器、亮度控制寄存器、掃描界限寄存器、關斷模式寄存器、測試控制寄存器。編程時只有正確操作這些寄存器,MAX7219才可工作。

3 MAX7219內部的相關寄存器

分別介紹如下:

(1)        譯碼控制寄存器(X9H)

4所示,MAX7219有兩種譯碼方式:B譯碼方式和不譯碼方式。當選擇不譯碼時,8個數據為分別一一對應7個段和小數點位;B譯碼方式是BCD譯碼,直接送數據就可以顯示。實際應用中可以按位設置選擇B譯碼或是不譯碼方式。

4 MAX7219的譯碼控制寄存器

(2)        掃描界限寄存器(XBH)

5所示,此寄存器用于設置顯示的LED的個數(1~8),比如當設置為0xX4時,LED 0~5顯示。

5 MAX7219的掃描界限控制寄存器

(3)        亮度控制寄存器(XAH)

共有16級可選擇,用于設置LED的顯示亮度,從0xX0~0xXF

(4)        關斷模式寄存器(XCH)

共有兩種模式選擇,一是關斷狀態,(最低位 D0=0)一是正常工作狀態(D0=1)。

(5)        顯示測試寄存器(XFH)

用于設置LED是測試狀態還是正常工作狀態,當測試狀態時(最低位 D0=1)各位顯示全亮,正常工作狀態(D0=0)。

各寄存器具體操作見驅動程序詳解。

2 讀寫時序說明

MAX7129是SPI總線驅動方式。它不僅要向寄存器寫入控制字,還需要讀取相應寄存器的數據。

       要想與MAX7129通信,首先要先了解MAX7129的控制字。MAX7129的控制字格式如6

6 控制字(即地址及命令字節)

如圖,工作時,MAX7219規定一次接收16位數據,在接收的16位數據中:D15~D12可以與操作無關,可以任意寫入,D11~D8決定所選通的內部寄存器地址,D7~D0為待顯示數據或是初始化控制字。在CLK脈沖作用下,DIN的數據以串行方式依次移入內部16位寄存器,然后在一個LOAD上升沿作用下,鎖存到內部的寄存器中。注意在接收時,先接收最高位D16,最后是D0,因此,在程序發送時必須先送高位數據,在循環移位。工作時序圖見7

由于51是8位單片機故需要分兩次來送數據。具體操作見驅動程序詳解。

圖7  數據讀寫時序

驅動程序
//管腳定義
sbit LOAD=P2^1;          //MAX7219片選           12腳
sbit DIN=P2^0;           //MAX7219串行數據       1腳
sbit CLK=P2^2;           //MAX7219串行時鐘        13腳
//寄存器宏定義
#define DECODE_MODE  0x09   //譯碼控制寄存器
#define INTENSITY    0x0A   //亮度控制寄存器
#define SCAN_LIMIT   0x0B   //掃描界限寄存器
#define SHUT_DOWN    0x0C   //關斷模式寄存器
#define DISPLAY_TEST 0x0F   //測試控制寄存器        
//函數聲明
void Write7219(unsigned char address,unsigned char dat);
void Initial(void);




//地址、數據發送子程序
void Write7219(unsigned char address,unsigned char dat)
{  
unsigned char i;
ACC=address;
    LOAD=0;    //拉低片選線,選中器件
    //發送地址
    for (i=0;i<8;i++)        //移位循環8次            
    {  
       CLK=0;        //清零時鐘總線
       DIN=A7;   //每次取最高位 送max7219  
CLK=1;        //時鐘上升沿,發送地址  
       address<<=1;             //左移一位
      
    }
//發送數據
ACC=dat;
    for (i=0;i<8;i++)              
    {  
       CLK=0;
       DIN=A7;
       dat<<=1;
       CLK=1;        //時鐘上升沿,發送數據
    }
    LOAD=1;    //發送結束,上升沿鎖存數據                     
}

//MAX7219初始化,設置MAX7219內部的控制寄存器
void Initial(void)               
{
    Write7219(SHUT_DOWN,0x01);         //開啟正常工作模式(0xX1)
    Write7219(DISPLAY_TEST,0x00);      //選擇工作模式(0xX0)
    Write7219(DECODE_MODE,0x00);       //選用不譯碼模式
    Write7219(SCAN_LIMIT,0x07);         //8只LED全用
    Write7219(INTENSITY,0x04);          //設置初始亮度     
}


單片機源程序如下:
  1. #include<reg52.h>
  2. #include<max7219.h>


  3. /*-------------------------------------------------
  4.         此函數是向MAX7219寫數據(操作字或者顯示數據)
  5.                 address是內部寄存器的地址;
  6.                 dat是操作字或者顯示的數據
  7. -------------------------------------------------*/
  8. void Write_7219(uchar address,uchar dat)
  9. {    uchar i;
  10.         ACC=address;
  11.     LOAD=0;                                    //拉低片選線,選中器件
  12.                                                     //發送地址
  13.     for (i=0;i<8;i++)           //移位循環8次              
  14.             {   
  15.               CLK=0;                        //清零時鐘總線
  16.                DIN=A7;                           //每次取最高位 送max7219  
  17.                     CLK=1;                        //時鐘上升沿,發送地址   
  18.                address<<=1;             //左移一位      
  19.             }
  20.                                                         //發送數據
  21.         ACC=dat;
  22.     for (i=0;i<8;i++)               
  23.             {   
  24.                CLK=0;
  25.                DIN=A7;  
  26.                CLK=1;                        //時鐘上升沿,發送數據
  27.                    dat<<=1;
  28.                     }
  29.     LOAD=1;                                    //發送結束,上升沿鎖存數據                       
  30. }
  31. /*-------------------------------------------------
  32.         這個是MAX7219的初始化程序
  33.         DECODE_MODE  0x09   //譯碼控制寄存器
  34.         INTENSITY    0x0A   //亮度控制寄存器
  35.         SCAN_LIMIT   0x0B   //掃描界限寄存器
  36.         SHUT_DOWN    0x0C   //關斷模式寄存器
  37.         DISPLAY_TEST 0x0F   //測試控制寄存器
  38. -------------------------------------------------*/
  39. void Init_7219(void)                 
  40. {
  41.     Write_7219(SHUT_DOWN,0x01);                 //開啟正常工作模式(0xX1)
  42.     Write_7219(DISPLAY_TEST,0x00);              //選擇工作模式(0xX0)
  43.     Write_7219(DECODE_MODE,0x00);               //選用不譯碼模式
  44.     Write_7219(SCAN_LIMIT,0x07);                //8只LED全用
  45.     Write_7219(INTENSITY,0x04);                 //設置初始亮度      
  46. }

  47. /*
  48. void mul_write_7219( uchar *point)                        //寫多個數據
  49. {
  50. uchar i;


  51. for (i=0;i<8;i++)
  52. {
  53.   Write_7219(i+1,*point);
  54.   point++;                  
  55.   }
  56.   
  57.   }
  58. */
復制代碼

全部資料51hei下載地址:
MAX7219、STC12C5A60S2 資料.7z (165.28 KB, 下載次數: 30)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 免费视频中文字幕 | 欧美日韩国产不卡 | 成人在线播放 | 国产精彩视频在线观看 | 国产乱性| 国产视频二区 | 亚洲精品视频在线看 | 国精日本亚洲欧州国产中文久久 | 日韩成人在线视频 | 精品无码久久久久久国产 | 国产精品99久久久久久动医院 | 成人精品视频在线 | 日本一区二区三区精品视频 | 日韩成人在线视频 | 亚洲人成人一区二区在线观看 | 欧美成人精品激情在线观看 | 热99视频| 国产成人av在线 | 久久精品国产免费 | 在线观看黄色电影 | 毛片一区二区 | 婷婷色在线 | 成人激情视频免费观看 | 国产精品99久久久久久www | 免费视频一区二区 | 天天综合久久 | 久久国产精品无码网站 | 久久在线看 | 欧美中国少妇xxx性高请视频 | 99pao成人国产永久免费视频 | 国产91丝袜在线熟 | 国产精品视频一区二区三区 | 午夜小视频在线播放 | 日韩男人天堂 | 日操夜操 | 国产亚洲精品一区二区三区 | 天天天天天天操 | 成人中文字幕av | 91资源在线观看 | 久久99久久99久久 | 国产女人与拘做受视频 |