日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

max7219c语言,(转)MAX7219 C语言版驱动程序

發布時間:2024/4/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 max7219c语言,(转)MAX7219 C语言版驱动程序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MAX7219 C語言版驅動程序

徐麗紅? 王佰營

該程序已使用過,免調試。

#define?????????? byte? ?unsigned char

//#define???N_NOP?_nop_();//_nop_();_nop_();

///

//MAX7219

//管腳,變量和常數定義;DEFINE

#define??Model_addr??0x09???// X9 H

#define??Bright_addr??0x0a???// XA H

#define??Limit_addr??0x0b???// XB H

#define??Shutd_addr??0x0c???// XC H

#define??Test_addr??0x0f???// Xf H

#define??Set_Normal??0x00?//進入正常而非測試工作方式

#define??Set_Halt??0x00?//進入停機工作方式?

#define??Set_Model??0xff?//將BCD碼譯成B碼;

#define??Set_Bright??0x04?//占空比為15/32;

#define??Set_Limit??0x07?//8位顯示方式;

#define??Set_Shutd??0x01?//進入正常而非停機工作方式?

sbit??DIN? ? ?=P1^0;

sbit??LOAD? ??=P1^1;

sbit??CLK? ? ?=P1^2;

bit??bdata???bonceinit7219;

//

//函數聲明;PROPERTY

void?Init_7219_begin(void);

void?Init_7219(void);

void?write_one_8279(byte addr,byte mydate);

//

//函數定義;FOUNCTION

void?Init_7219_begin(void)

{//MAX7219顯示型號時的初始化;

write_one_8279(Model_addr,0x00);? ?//將BCD碼譯成B碼?

write_one_8279(Bright_addr,Set_Bright);?//占空比為15/32?

write_one_8279(Limit_addr,Set_Limit);? ?//8位顯示方式;

write_one_8279(Shutd_addr,Set_Shutd);? ?//進入正常工作方式

}

void?Init_7219(void)

{//MAX7219正常工作時的初始化;

write_one_8279(Shutd_addr,Set_Halt);?//進入停機工作方式

write_one_8279(Model_addr,Set_Model);? ?//將BCD碼譯成B碼?

write_one_8279(Bright_addr,Set_Bright);?//占空比為15/32?

write_one_8279(Limit_addr,Set_Limit);? ?//8位顯示方式;

write_one_8279(Shutd_addr,Set_Shutd);? ?//進入正常而非停機工作方式

write_one_8279(Test_addr,Set_Normal);? ?//進入正常而非測試工作方式

}

void?write_one_8279(?byte addr,?//要寫入的位置;

byte mydate)?//要寫入的數據;

{//寫數據給MAX7219函數;display data

register byte i;

LOAD=0; ????//-\_

for(i=0;i<8;i++)

{

_nop_();

CLK=0;????//-\_

if(addr & 0x80)

DIN=1;

else

DIN=0;

_nop_();

CLK=1;????//_/-

addr=addr<<1;

}

for(i=0;i<8;i++)

{

_nop_();

CLK=0;????//-\_

if(mydate & 0x80)

DIN=1;

else

DIN=0;

_nop_();

CLK=1;????//_/-

mydate=mydate<<1;

}

LOAD=1;?????//_/-

}

//max7219 led drive program

//for 51 mcu

//designed by zhaoliang

//2005-6-12 13:52

#i nclude

/***********************************************************************/

//common part

#define? HIGH???? 1

#define? LOW????? 0

#define? TRUE????? 1

#define? FALSE????? 0

#define? ZERO????? 0

#define? MSB?????? 0x80

#define? LSB?????? 0x01

//max7219 part

#define? DECODE_MODE?? 0x09

#define? INTENSITY???? 0x0A

#define? SCAN_LIMIT??? 0x0B

#define? SHUT_DOWN???? 0x0C

#define? DISPLAY_TEST? 0x0F

//pin defined

/***********************************************************************/

//change this part at different board

sbit LOAD=P1^2; //MAX7219??? Load-Data Input:??? rising edge? pin 12

sbit DIN=P1^1; //MAX7219??? Serial-Data Input:?? rising edge? pin 1

sbit CLK=P1^0; //MAX7219?? Serial-Clock Input:? maximum 10MHz? pin 13

//function define

/***********************************************************************/

void Write_Max7219_byte(unsigned char temp);//write max7219 a byte

void Write_Max7219(unsigned char address,unsigned char dat);//write max7219 command and data

void Init_Max7219(void);//Initize max7219

//test program display from 1~8

/***********************************************************************/

void main(void)

{

unsigned char i;

Init_Max7219();

while(TRUE)

{

for(i=1;i<9;i++)

{

Write_Max7219(i,i);

}

}

}

/***********************************************************************/

void Write_Max7219_byte(unsigned char temp)

{

unsigned char i;

for (i=0;i<8;i++)

{

CLK=LOW;

DIN=(bit)(temp&MSB);

temp<<=1;

CLK=HIGH;

}

}

/***********************************************************************/

void Write_Max7219(unsigned char address,unsigned char dat)

{

LOAD=LOW;

Write_Max7219_byte(address);

Write_Max7219_byte(dat);

LOAD=HIGH;

}

/***********************************************************************/

void Init_Max7219(void)

{

Write_Max7219(SHUT_DOWN, 0x01);?? //Normal Operation XXXXXXX1 Shutdown Mode?? XXXXXXXX0

Write_Max7219(DISPLAY_TEST, 0x00);?? //Normal Operation XXXXXXX0 Display Test Mode XXXXXXXX1

Write_Max7219(DECODE_MODE, 0xff);?? //Decode Mode Select D7~D0 1 B decode 0 No decode

Write_Max7219(SCAN_LIMIT, 0x07);?? //SCAN LIMIT 0~7 0xX0~0xX7

Write_Max7219(INTENSITY, 0x04);?? //Set Intensity?? 0xX0~0xXf

}

總結

以上是生活随笔為你收集整理的max7219c语言,(转)MAX7219 C语言版驱动程序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。