![]() |
發(fā)布時間: 2018-4-11 23:58
正文摘要:單片機(jī)小白求組大神 我的VCC連接5V; GND連接GND; DIN連接P22;CS連接P21;CLk連接P20 我用下面的程序考入到板子中 ,燈就是單純的全量,而不是按照我的程序變換; 有我的連接圖片 想知道我出錯出在了哪里, 程序的 ... |
/-------------------------------------------- //功能:向MAX7219(U3)寫入字節(jié) //入口參數(shù):DATA //出口參數(shù):無 //說明: void Write_Max7219_byte(uchar DATA) { uchar i,temp; for(i=8;i>=1;i--) { temp=DATA&0x80; DATA=DATA<<1; if(temp) DIN_1; if(!temp) DIN_0; CLK_0; delay_ms(500); CLK_1; } } //------------------------------------------- //功能:向MAX7219寫入數(shù)據(jù) //入口參數(shù):address、dat //出口參數(shù):無 //說明: void Write_Max7219(uchar address,uchar dat) { CS_0; delay_ms(500); Write_Max7219_byte(address); //寫入地址,即數(shù)碼管編號 delay_ms(500); Write_Max7219_byte(dat); //寫入數(shù)據(jù),即數(shù)碼管顯示數(shù)字 delay_ms(500); CS_1; } void Init_MAX7219(void) { Write_Max7219(0x09, 0x00); //譯碼方式:BCD碼 Write_Max7219(0x0a, 0x03); //亮度 Write_Max7219(0x0b, 0x07); //掃描界限;8個數(shù)碼管顯示 Write_Max7219(0x0c, 0x01); //掉電模式:0,普通模式:1 Write_Max7219(0x0f, 0x00); //顯示測試:1;測試結(jié)束,正常顯示:0 } void main(void) { close_dog(); P2SEL&=~(BIT0+BIT1+BIT2); P2DIR |=BIT0+BIT1+BIT2; uchar i,j; delay_ms(50); Init_MAX7219(); while(1) { for(j=0;j<38;j++) { for(i=1;i<9;i++) Write_Max7219(i,disp1[j][i-1]); delay_ms(1000); } } } |
#include "io430.h" //定義Max7219端口 #define CLK_0 P2OUT |= BIT0; #define CLK_1 P2OUT &= ~BIT0; #define CS_0 P2OUT |= BIT1; #define CS_1 P2OUT &= ~BIT1; #define DIN_0 P2OUT |= BIT2; #define DIN_1 P2OUT &= ~BIT2; #define CPU_F ((double)8000000) //外部高頻晶振8MHZ #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) //自定義數(shù)據(jù)結(jié)構(gòu),方便使用 #define uchar unsigned char #define uint unsigned int #define ulong unsigned long void close_dog() { WDTCTL = WDTPW + WDTHOLD; //關(guān)閉看門狗 } uchar const disp1[38][8]={ {0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//0 {0x10,0x18,0x14,0x10,0x10,0x10,0x10,0x10},//1 {0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E},//2 {0x3E,0x2,0x2,0x3E,0x2,0x2,0x3E,0x0},//3 {0x8,0x18,0x28,0x48,0xFE,0x8,0x8,0x8},//4 {0x3C,0x20,0x20,0x3C,0x4,0x4,0x3C,0x0},//5 {0x3C,0x20,0x20,0x3C,0x24,0x24,0x3C,0x0},//6 {0x3E,0x22,0x4,0x8,0x8,0x8,0x8,0x8},//7 {0x0,0x3E,0x22,0x22,0x3E,0x22,0x22,0x3E},//8 {0x3E,0x22,0x22,0x3E,0x2,0x2,0x2,0x3E},//9 {0x8,0x14,0x22,0x3E,0x22,0x22,0x22,0x22},//A {0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,0x0},//B {0x3C,0x40,0x40,0x40,0x40,0x40,0x3C,0x0},//C {0x7C,0x42,0x42,0x42,0x42,0x42,0x7C,0x0},//D {0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x7C},//E {0x7C,0x40,0x40,0x7C,0x40,0x40,0x40,0x40},//F {0x3C,0x40,0x40,0x40,0x40,0x44,0x44,0x3C},//G {0x44,0x44,0x44,0x7C,0x44,0x44,0x44,0x44},//H {0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x7C},//I {0x3C,0x8,0x8,0x8,0x8,0x8,0x48,0x30},//J {0x0,0x24,0x28,0x30,0x20,0x30,0x28,0x24},//K {0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7C},//L {0x81,0xC3,0xA5,0x99,0x81,0x81,0x81,0x81},//M {0x0,0x42,0x62,0x52,0x4A,0x46,0x42,0x0},//N {0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//O {0x3C,0x22,0x22,0x22,0x3C,0x20,0x20,0x20},//P {0x1C,0x22,0x22,0x22,0x22,0x26,0x22,0x1D},//Q {0x3C,0x22,0x22,0x22,0x3C,0x24,0x22,0x21},//R {0x0,0x1E,0x20,0x20,0x3E,0x2,0x2,0x3C},//S {0x0,0x3E,0x8,0x8,0x8,0x8,0x8,0x8},//T {0x42,0x42,0x42,0x42,0x42,0x42,0x22,0x1C},//U {0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x18},//V {0x0,0x49,0x49,0x49,0x49,0x2A,0x1C,0x0},//W {0x0,0x41,0x22,0x14,0x8,0x14,0x22,0x41},//X {0x41,0x22,0x14,0x8,0x8,0x8,0x8,0x8},//Y {0x0,0x7F,0x2,0x4,0x8,0x10,0x20,0x7F},//Z {0x8,0x7F,0x49,0x49,0x7F,0x8,0x8,0x8},//中 {0xFE,0xBA,0x92,0xBA,0x92,0x9A,0xBA,0xFE},//國 }; //-------------------------------------------- //功能:向MAX7219(U3)寫入字節(jié) //入口參數(shù):DATA //出口參數(shù):無 //說明: void Write_Max7219_byte(uchar DATA) { uchar i,temp; for(i=8;i>=1;i--) { temp=DATA&0x80; DATA=DATA<<1; if(temp) DIN_1; if(!temp) DIN_0; CLK_0; delay_ms(500); CLK_1; } } //------------------------------------------- //功能:向MAX7219寫入數(shù)據(jù) //入口參數(shù):address、dat //出口參數(shù):無 //說明: void Write_Max7219(uchar address,uchar dat) { CS_0; delay_ms(500); Write_Max7219_byte(address); //寫入地址,即數(shù)碼管編號 delay_ms(500); Write_Max7219_byte(dat); //寫入數(shù)據(jù),即數(shù)碼管顯示數(shù)字 delay_ms(500); CS_1; } void Init_MAX7219(void) { Write_Max7219(0x09, 0x00); //譯碼方式:BCD碼 Write_Max7219(0x0a, 0x03); //亮度 Write_Max7219(0x0b, 0x07); //掃描界限;8個數(shù)碼管顯示 Write_Max7219(0x0c, 0x01); //掉電模式:0,普通模式:1 Write_Max7219(0x0f, 0x00); //顯示測試:1;測試結(jié)束,正常顯示:0 } void main(void) { close_dog(); P2SEL&=~(BIT0+BIT1+BIT2); P2DIR |=BIT0+BIT1+BIT2; uchar i,j; delay_ms(50); Init_MAX7219(); while(1) { for(j=0;j<38;j++) { for(i=1;i<9;i++) Write_Max7219(i,disp1[j][i-1]); delay_ms(1000); } } } |
Powered by 單片機(jī)教程網(wǎng)