亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? max7219.c

?? MAX7219用于鍵盤控制和led控制的專用芯片
?? C
字號:
/*
*********************************************************************************************************
* Module     : MAX7219.C
* Author     : Randy Rasa
* Description: MAX7219 LED Display Driver Routines
*
*  The Maxim MAX7219 is an LED display driver thant can control up to 64 individual LEDs, or
*  eight 7-segment LED digits, or any combination of individual LEDs and digits.  It frees the
*  host from the chore of constantly multiplexing the 8 rows and 8 columns.  In addition, it
*  takes care of brightness control (16 steps), and implements display test and display blank
*  (shutdown) features.
*
*  The host communicates with the MAX7219 using three signals: DATA, CLK, and LOAD.  This
*  modules bit-bangs them, but Motorola's SPI interface (or similar interface from other
*  manufacturers) may also be used to simplify and speed up the data transfer.
*                   ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___ ___
*    DATA _________|D15|D14|D13|D12|D11|D10|D09|D08|D07|D06|D05|D04|D03|D02|D01|D00|______
*         ________    __    __    __    __    __    __    __    __    __    __    ________
*    CLK          |__|  |__|  |__|  |__|  |__|  |__|  |__|  |__|  |__|  |__|  |__|
*                __________________________________________________________________    ___
*    LOAD ______|                                                                  |__|
*
*
*  Implementation Notes:
*
*  1. This module was written and tested using an Atmel AT89C2051 microcontroller, with the
*     MAX7219 connected to I/O pins P3.3 (LOAD), P3.4 (CLK), and P3.3 (DATA).
*
*  2. Macros are provided to simplify control of the DATA, CLK, and LOAD signals.  You may also use
*     memory-mapped output ports such as a 74HC374, but you'll need to replace the macros with
*     functions, and use a shadow register to store the state of all the output bits.
*
*  3. This module was tested with the evaluation version of Hi-Tech C-51, using the small memory model.
*     It should be portable to most other compilers, with minor modifications.
*
*  4. The MAX7219 is configured for "no decode" mode, rather than "code B" decoding.  This
*     allows the program to display more than the 0-9,H,E,L,P that code B provides.  However,
*     the "no decode" method requires that each character to be displayed have a corresponding
*     entry in a lookup table, to convert the ascii character to the proper 7-segment code.
*     MAX7219_LookupCode() provides this function, using the MAX7219_Font[] array.  If you need
*     to display more than the characters I have provided, simply add them to the table ...
*
*********************************************************************************************************
*/


/*
*********************************************************************************************************
* Include Header Files
*********************************************************************************************************
*/
#include  <8051.h>                                    // microcontroller header file
#include "max7219.h"                                  // MAX7219 header file


/*
*********************************************************************************************************
* Constants
*********************************************************************************************************
*/
#define REG_DECODE        0x09                        // "decode mode" register
#define REG_INTENSITY     0x0a                        // "intensity" register
#define REG_SCAN_LIMIT    0x0b                        // "scan limit" register
#define REG_SHUTDOWN      0x0c                        // "shutdown" register
#define REG_DISPLAY_TEST  0x0f                        // "display test" register

#define INTENSITY_MIN     0x00                        // minimum display intensity
#define INTENSITY_MAX     0x0f                        // maximum display intensity


/*
*********************************************************************************************************
* Macros
*********************************************************************************************************
*/
#define DATA_PORT     P3                              // assume "DATA" is on P3.5
#define DATA_DDR      P3
#define DATA_BIT      0x20
#define DATA_0()      (DATA_PORT &= ~DATA_BIT)
#define DATA_1()      (DATA_PORT |=  DATA_BIT)
#define CLK_PORT      P3                              // assume "CLK" is on P3.4
#define CLK_DDR       P3
#define CLK_BIT       0x10
#define CLK_0()       (CLK_PORT &= ~CLK_BIT)
#define CLK_1()       (CLK_PORT |=  CLK_BIT)
#define LOAD_PORT     P3                              // assume "LOAD" is on P3.3
#define LOAD_DDR      P3
#define LOAD_BIT      0x08
#define LOAD_0()      (LOAD_PORT &= ~LOAD_BIT)
#define LOAD_1()      (LOAD_PORT |=  LOAD_BIT)


/*
*********************************************************************************************************
* Private Data
*********************************************************************************************************
*/
// ... none ...


/*
*********************************************************************************************************
* Private Function Prototypes
*********************************************************************************************************
*/
static void MAX7219_Write (unsigned char reg_number, unsigned char data);
static void MAX7219_SendByte (unsigned char data);
static unsigned char MAX7219_LookupCode (char character);


// ...................................... Public Functions ..............................................


/*
*********************************************************************************************************
* MAX7219_Init()
*
* Description: Initialize MAX7219 module; must be called before any other MAX7219 functions.
* Arguments  : none
* Returns    : none
*********************************************************************************************************
*/
void MAX7219_Init (void)
{
  DATA_DDR |= DATA_BIT;                               // configure "DATA" as output
  CLK_DDR  |= CLK_BIT;                                // configure "CLK"  as output
  LOAD_DDR |= LOAD_BIT;                               // configure "LOAD" as output

  MAX7219_Write(REG_SCAN_LIMIT, 7);                   // set up to scan all eight digits
  MAX7219_Write(REG_DECODE, 0x00);                    // set to "no decode" for all digits
  MAX7219_ShutdownStop();                             // select normal operation (i.e. not shutdown)
  MAX7219_DisplayTestStop();                          // select normal operation (i.e. not test mode)
  MAX7219_Clear();                                    // clear all digits
  MAX7219_SetBrightness(INTENSITY_MAX);               // set to maximum intensity
}


/*
*********************************************************************************************************
* MAX7219_ShutdownStart()
*
* Description: Shut down the display.
* Arguments  : none
* Returns    : none
*********************************************************************************************************
*/
void MAX7219_ShutdownStart (void)
{
  MAX7219_Write(REG_SHUTDOWN, 0);                     // put MAX7219 into "shutdown" mode
}


/*
*********************************************************************************************************
* MAX7219_ShutdownStop()
*
* Description: Take the display out of shutdown mode.
* Arguments  : none
* Returns    : none
*********************************************************************************************************
*/
void MAX7219_ShutdownStop (void)
{
  MAX7219_Write(REG_SHUTDOWN, 1);                     // put MAX7219 into "normal" mode
}


/*
*********************************************************************************************************
* MAX7219_DisplayTestStart()
*
* Description: Start a display test.
* Arguments  : none
* Returns    : none
*********************************************************************************************************
*/
void MAX7219_DisplayTestStart (void)
{
  MAX7219_Write(REG_DISPLAY_TEST, 1);                 // put MAX7219 into "display test" mode
}


/*
*********************************************************************************************************
* MAX7219_DisplayTestStop()
*
* Description: Stop a display test.
* Arguments  : none
* Returns    : none
*********************************************************************************************************
*/
void MAX7219_DisplayTestStop (void)
{
  MAX7219_Write(REG_DISPLAY_TEST, 0);                 // put MAX7219 into "normal" mode
}


/*
*********************************************************************************************************
* MAX7219_SetBrightness()
*
* Description: Set the LED display brightness
* Arguments  : brightness (0-15)
* Returns    : none
*********************************************************************************************************
*/
void MAX7219_SetBrightness (char brightness)
{
  brightness &= 0x0f;                                 // mask off extra bits
  MAX7219_Write(REG_INTENSITY, brightness);           // set brightness
}


/*
*********************************************************************************************************
* MAX7219_Clear()
*
* Description: Clear the display (all digits blank)
* Arguments  : none
* Returns    : none
*********************************************************************************************************
*/
void MAX7219_Clear (void)
{
  char i;
  for (i=0; i < 8; i++)
    MAX7219_Write(i, 0x00);                           // turn all segments off
}


/*
*********************************************************************************************************
* MAX7219_DisplayChar()
*
* Description: Display a character on the specified digit.
* Arguments  : digit = digit number (0-7)
*              character = character to display (0-9, A-Z)
* Returns    : none
*********************************************************************************************************
*/
void MAX7219_DisplayChar (char digit, char character)
{
  MAX7219_Write(digit, MAX7219_LookupCode(character));
}


// ..................................... Private Functions ..............................................


/*
*********************************************************************************************************
* LED Segments:         a
*                     ----
*                   f|    |b
*                    |  g |
*                     ----
*                   e|    |c
*                    |    |
*                     ----  o dp
*                       d
*   Register bits:
*      bit:  7  6  5  4  3  2  1  0
*           dp  a  b  c  d  e  f  g
*********************************************************************************************************
*/
static const struct {
	char   ascii;
	char   segs;
} MAX7219_Font[] = {
  {' ', 0x00},
  {'0', 0x7e},
  {'1', 0x30},
  {'2', 0x6d},
  {'3', 0x79},
  {'4', 0x33},
  {'5', 0x5b},
  {'6', 0x5f},
  {'7', 0x70},
  {'8', 0x7f},
  {'9', 0x7b},
  {'A', 0x77},
  {'B', 0x1f},
  {'C', 0x4e},
  {'D', 0x3d},
  {'E', 0x4f},
  {'F', 0x47},
  {'\0', 0x00}
};

/*
*********************************************************************************************************
* MAX7219_LookupCode()
*
* Description: Convert an alphanumeric character to the corresponding 7-segment code.
* Arguments  : character to display
* Returns    : segment code
*********************************************************************************************************
*/
static unsigned char MAX7219_LookupCode (char character)
{
  char i;
  for (i = 0; MAX7219_Font[i].ascii; i++)             // scan font table for ascii code
    if (character == MAX7219_Font[i].ascii)
      return MAX7219_Font[i].segs;                    // return segments code
  return 0;                                           // code not found, return null (blank)
}


/*
*********************************************************************************************************
* MAX7219_Write()
*
* Description: Write to MAX7219
* Arguments  : reg_number = register to write to
*              dataout = data to write to MAX7219
* Returns    : none
*********************************************************************************************************
*/
static void MAX7219_Write (unsigned char reg_number, unsigned char dataout)
{
  LOAD_1();                                           // take LOAD high to begin
  MAX7219_SendByte(reg_number);                       // write register number to MAX7219
  MAX7219_SendByte(dataout);                          // write data to MAX7219
  LOAD_0();                                           // take LOAD low to latch in data
  LOAD_1();                                           // take LOAD high to end
}


/*
*********************************************************************************************************
* MAX7219_SendByte()
*
* Description: Send one byte to the MAX7219
* Arguments  : dataout = data to send
* Returns    : none
*********************************************************************************************************
*/
static void MAX7219_SendByte (unsigned char dataout)
{
  char i;
  for (i=8; i>0; i--) {
    unsigned char mask = 1 << (i - 1);                // calculate bitmask
    CLK_0();                                          // bring CLK low
    if (dataout & mask)                               // output one data bit
      DATA_1();                                       //  "1"
    else                                              //  or
      DATA_0();                                       //  "0"
    CLK_1();                                          // bring CLK high
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看中文字幕不卡| 91麻豆蜜桃一区二区三区| 2017欧美狠狠色| 91亚洲精品一区二区乱码| 蜜桃视频一区二区三区在线观看| 国产欧美一区二区三区鸳鸯浴| 精品视频一区三区九区| 国产成人超碰人人澡人人澡| 亚洲风情在线资源站| 国产精品美女视频| 精品国产91乱码一区二区三区| 日本道免费精品一区二区三区| 国产一区欧美一区| 日韩福利电影在线观看| 亚洲色图在线视频| 久久久99精品免费观看不卡| 欧美日韩国产高清一区| 日韩欧美国产高清| 亚洲制服丝袜av| 久久久亚洲精品石原莉奈| 欧美中文一区二区三区| 懂色av中文字幕一区二区三区| 免费人成精品欧美精品| 亚洲综合色婷婷| 中文字幕一区日韩精品欧美| 久久久久久久综合日本| 精品国产乱码久久久久久影片| 欧美日韩国产综合一区二区| 91猫先生在线| 91在线精品秘密一区二区| 国产999精品久久久久久 | 亚洲国产日韩av| 亚洲三级小视频| 成人欧美一区二区三区小说 | 国产成人aaa| 狠狠色丁香婷综合久久| 麻豆精品在线观看| 奇米综合一区二区三区精品视频| 亚洲h在线观看| 亚洲高清视频中文字幕| 亚洲一区二区精品视频| 亚洲最大的成人av| 一区二区三区.www| 亚洲国产综合人成综合网站| 亚洲一区二区四区蜜桃| 亚洲综合丝袜美腿| 亚洲国产婷婷综合在线精品| 亚洲成a人片综合在线| 亚洲第一二三四区| 日韩av中文字幕一区二区| 日韩二区三区四区| 久久精品国产一区二区三区免费看| 青娱乐精品视频在线| 麻豆成人久久精品二区三区红 | 国产色产综合色产在线视频| 久久久久国产免费免费| 久久精品人人爽人人爽| 欧美高清一级片在线观看| 国产精品久久久久久久久晋中 | 久久先锋资源网| 国产欧美精品一区| 亚洲视频在线观看三级| 亚洲第一综合色| 久久99精品久久久久久| 国产成人精品三级| 一本大道久久a久久精品综合| 亚洲国产精品激情在线观看| 国产精品久久综合| 国产精品久久久久久久岛一牛影视| 国产精品欧美久久久久一区二区 | 中文字幕在线视频一区| 亚洲日本va在线观看| 亚洲第一狼人社区| 国产美女精品在线| 91毛片在线观看| 欧美一区二区三区免费观看视频| 久久看人人爽人人| 亚洲欧美电影院| 免费xxxx性欧美18vr| 成人免费毛片app| 欧美在线你懂的| 日韩免费在线观看| 国产精品超碰97尤物18| 亚洲成人激情av| 国产精品一区免费在线观看| 91免费国产视频网站| 日韩视频中午一区| 亚洲欧洲日韩在线| 久久er99精品| 色综合久久久久久久| 精品国产露脸精彩对白 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产综合久久久久久久久久久久| 国产91精品一区二区麻豆亚洲| 在线看国产日韩| 精品1区2区在线观看| 伊人一区二区三区| 狠狠v欧美v日韩v亚洲ⅴ| 色婷婷av一区二区三区软件| 欧美va亚洲va国产综合| 一区二区三区丝袜| 国产在线精品国自产拍免费| 欧美视频在线不卡| 国产欧美1区2区3区| 蜜臀av性久久久久av蜜臀妖精 | 一级做a爱片久久| 国产麻豆欧美日韩一区| 欧美日韩国产综合一区二区三区| 国产精品美女久久久久aⅴ国产馆| 日韩电影一区二区三区四区| eeuss鲁一区二区三区| 日韩精品一区二区三区四区| 一区二区三区四区国产精品| 国产乱淫av一区二区三区| 这里只有精品电影| 亚洲主播在线播放| 91免费在线看| 国产欧美久久久精品影院| 久久av老司机精品网站导航| 欧美剧在线免费观看网站| 亚洲精品一卡二卡| 成人黄色在线看| 国产日韩精品一区| 久久99国产精品尤物| 一本色道综合亚洲| 欧美亚洲综合另类| 欧美国产禁国产网站cc| 寂寞少妇一区二区三区| 91精品国产丝袜白色高跟鞋| 亚洲精品欧美在线| 91麻豆国产精品久久| 国产精品白丝在线| 国产电影精品久久禁18| 久久久精品黄色| 国产美女视频一区| 久久精品在线观看| 国产精品白丝jk白祙喷水网站| 欧美α欧美αv大片| 美女诱惑一区二区| 欧美偷拍一区二区| 一区2区3区在线看| 精品视频在线免费看| 亚洲国产精品欧美一二99 | 成人av电影在线| 国产精品美女www爽爽爽| 国产精品一区二区黑丝| 国产亚洲欧美激情| 国产99久久久精品| 国产精品网站在线观看| 欧美一区二区三区白人| 日韩电影免费在线| 欧美不卡一区二区三区四区| 激情综合色综合久久综合| 久久日韩精品一区二区五区| 国产夫妻精品视频| 最新日韩av在线| 在线亚洲免费视频| 日本成人在线看| 欧美精品一区二区蜜臀亚洲| 国产精品66部| 亚洲精品视频观看| 在线观看视频欧美| 欧美aaa在线| 久久精品亚洲一区二区三区浴池| 成人综合在线观看| 伊人色综合久久天天人手人婷| 欧美日韩日日骚| 美美哒免费高清在线观看视频一区二区 | 亚洲精品ww久久久久久p站| 欧美三级韩国三级日本三斤| 美女精品自拍一二三四| 国产片一区二区三区| 97精品国产97久久久久久久久久久久| 一区二区三区在线观看动漫 | 99精品久久99久久久久| 亚洲一区在线电影| 欧美tk丨vk视频| 91论坛在线播放| 日本免费新一区视频| 日本一区二区三区视频视频| 欧美综合色免费| 久草热8精品视频在线观看| 国产精品二区一区二区aⅴ污介绍| 欧美少妇一区二区| 国产高清亚洲一区| 亚洲第四色夜色| 久久综合成人精品亚洲另类欧美| 国产一区二区三区免费播放| 亚洲婷婷综合色高清在线| 91精品国产色综合久久不卡蜜臀| 国内精品国产成人国产三级粉色| 亚洲欧洲另类国产综合| 欧美一级艳片视频免费观看| 日韩欧美一级特黄在线播放| av日韩在线网站| 蜜桃久久av一区| 亚洲精品综合在线| 国产丝袜欧美中文另类| 777精品伊人久久久久大香线蕉| 波波电影院一区二区三区|