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语言版驱动程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言实验11答案,c语言实验9-11参
- 下一篇: c语言中二维数组怎么,c语言中什么是二维