请教大家:<br /> #include <reg51.h> <br />//max7219 part<br />#define DECODE_MODE 0x09 <br />#define INTENSITY 0x0A <br />#define SCAN_LIMIT 0x0B <br />#define SHUT_DOWN 0x0C <br />#define DISPLAY_TEST 0x0F <br /><br />sbit LOAD = P0^1; //MAX7219 Load-Data Input: rising edge pin 12 <br />sbit DIN = P0^0; //MAX7219 Serial-Data Input: rising edge pin 1<br />sbit CLK = P0^2; //MAX7219 Serial-Clock Input: maximum 10MHz pin 13<br /><br />/***********************************************************<br />函数声明<br />***********************************************************/<br />void Write_Max7219_byte(unsigned char temp);<br />void Write_Max7219(unsigned char address,unsigned char dat);<br /><br />void main(void)<br />{ <br /> Write_Max7219(SHUT_DOWN, 0x01); //Normal Operation XXXXXXX1 Shutdown Mode XXXXXXXX0<br /> Write_Max7219(DISPLAY_TEST, 0x00); //Normal Operation XXXXXXX0 Display Test Mode XXXXXXXX1<br /> Write_Max7219(DECODE_MODE, 0xFF); //Decode Mode Select D7~D0 1 B decode 0 No decode <br /> Write_Max7219(SCAN_LIMIT, 0x02); //SCAN LIMIT 0~7 0xX0~0xX7<br /> Write_Max7219(INTENSITY, 0x0F); //Set Intensity 0xX0~0xXf<br /> while(1)<br /> {Write_Max7219(0x01,1);}<br /><br />}<br />/******************************************<br />发送一个字节的子程序:<br />上升沿发送数据,<br />MSB first<br />******************************************/<br />void Write_Max7219_byte(unsigned char temp)<br />{<br /> unsigned char i;<br /> for (i=0; i<8; i++) <br /> { <br /> CLK = 0;<br /> DIN = (bit)(temp&0x80); <br /> temp <<=1; <br /> CLK = 1;<br /> }<br />}<br />/**********************************************************<br />向寄存器中写入一个数据<br />先写地址,后写数据<br />load 上升沿锁存数据<br />**********************************************************/<br />void Write_Max7219(unsigned char address,unsigned char dat)<br />{ <br /> LOAD = 0;<br /> Write_Max7219_byte(address); <br /> Write_Max7219_byte(dat);<br /> LOAD = 1;<br /> CLK = 1; <br />}<br />数码管随意闪烁,就是数字不固定,不能准确显示,求教一下,这是哪里的问题,谢谢各位高手了!!! |
|