- #include <reg52.h>
- #include <intrins.h>
- #define u8 unsigned char
- #define u16 unsigned int
- #define DECODE_MODE 0x09
- #define INTENSITY 0x0A
- #define SCAN_LIMIT 0x0B
- #define SHUT_DOWN 0x0C
- #define DISPLAY_TEST 0x0F
- #define BLOCKS 8
- sbit MAX7219_CLK = P1^2;
- sbit MAX7219_CS = P1^1;
- sbit MAX7219_DIN = P1^0;
- u8 code bytes[] = {
-
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- /* 熱[0xC8C8] 16x16 */
- 0x08,0x40,0x08,0x40,0x08,0x48,0x7F,0xFC,0x08,0x48,0x0A,0x48,0x1C,0xC8,0x68,0x48,
- 0x08,0xA8,0x08,0x8A,0x29,0x0A,0x12,0x04,0x00,0x00,0x48,0x88,0x44,0x46,0x84,0x42,
- /* GB2312 16x16點陣字庫*/
- /* 烈[0xC1D2] 16x16 */
- 0x01,0x04,0x7F,0x84,0x10,0x24,0x10,0x24,0x1F,0x24,0x21,0x24,0x21,0x24,0x52,0x24,
- 0x0C,0x24,0x08,0x04,0x30,0x0C,0x40,0x00,0x28,0x90,0x24,0x4C,0x44,0x46,0x80,0x02,
- /* GB2312 16x16點陣字庫*/
- /* 祝[0xD7A3] 16x16 */
- 0x20,0x08,0x13,0xFC,0x12,0x08,0x02,0x08,0xFE,0x08,0x0A,0x08,0x12,0x08,0x3B,0xF8,
- 0x56,0xA8,0x90,0xA0,0x10,0xA0,0x11,0x20,0x11,0x22,0x12,0x22,0x14,0x1E,0x18,0x00,
- /* GB2312 16x16點陣字庫*/
- /* 賀[0xBAD8] 16x16 */
- 0x10,0x00,0x10,0x04,0x7F,0x7E,0x11,0x44,0x11,0x44,0x25,0x7C,0x42,0x10,0x9F,0xF8,
- 0x10,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x11,0x10,0x02,0xC0,0x0C,0x30,0x30,0x08,
- /* GB2312 16x16點陣字庫*/
- /* 中[0xD6D0] 16x16 */
- 0x01,0x00,0x01,0x00,0x01,0x04,0x7F,0xFE,0x41,0x04,0x41,0x04,0x41,0x04,0x41,0x04,
- 0x7F,0xFC,0x41,0x04,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,
- /* GB2312 16x16點陣字庫*/
- /* 南[0xC4CF] 16x16 */
- 0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,0x01,0x04,0x7F,0xFE,0x48,0x24,0x44,0x44,
- 0x5F,0xF4,0x41,0x04,0x41,0x04,0x5F,0xF4,0x41,0x04,0x41,0x04,0x41,0x14,0x40,0x08,
- /* GB2312 16x16點陣字庫*/
- /* 大[0xB4F3] 16x16 */
- 0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x04,0xFF,0xFE,0x01,0x00,0x02,0x80,
- 0x02,0x80,0x02,0x40,0x04,0x40,0x04,0x20,0x08,0x10,0x10,0x0E,0x60,0x04,0x00,0x00,
- /* GB2312 16x16點陣字庫*/
- /* 學[0xD1A7] 16x16 */
- 0x22,0x08,0x11,0x08,0x11,0x10,0x00,0x20,0x7F,0xFE,0x40,0x02,0x80,0x04,0x1F,0xE0,
- 0x00,0x40,0x01,0x84,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,
- /* GB2312 16x16點陣字庫*/
- /* 物[0xCEEF] 16x16 */
- 0x11,0x00,0x11,0x00,0x51,0x00,0x51,0x04,0x7B,0xFE,0x54,0xA4,0x90,0xA4,0x1C,0xA4,
- 0x31,0x24,0xD1,0x44,0x12,0x44,0x12,0x44,0x14,0x84,0x10,0x84,0x11,0x28,0x10,0x10,
- /* GB2312 16x16點陣字庫*/
- /* 理[0xC0ED] 16x16 */
- 0x00,0x08,0x13,0xFC,0xFA,0x48,0x22,0x48,0x23,0xF8,0x22,0x48,0xFA,0x48,0x23,0xF8,
- 0x20,0x40,0x20,0x50,0x23,0xF8,0x3C,0x40,0xE0,0x40,0x40,0x44,0x0F,0xFE,0x00,0x00,
- /* GB2312 16x16點陣字庫*/
- /* 與[0xD3EB] 16x16 */
- 0x10,0x00,0x10,0x00,0x10,0x08,0x1F,0xFC,0x10,0x00,0x10,0x00,0x10,0x08,0x1F,0xFC,
- 0x00,0x08,0x00,0x08,0x00,0x48,0xFF,0xE8,0x00,0x08,0x00,0x08,0x00,0x50,0x00,0x20,
- /* GB2312 16x16點陣字庫*/
- /* 電[0xB5E7] 16x16 */
- 0x02,0x00,0x02,0x00,0x02,0x10,0x7F,0xF8,0x42,0x10,0x42,0x10,0x7F,0xF0,0x42,0x10,
- 0x42,0x10,0x7F,0xF0,0x42,0x10,0x02,0x00,0x02,0x04,0x02,0x04,0x01,0xFC,0x00,0x00,
- /* GB2312 16x16點陣字庫*/
- /* 子[0xD7D3] 16x16 */
- 0x00,0x00,0x3F,0xF0,0x00,0x10,0x00,0x20,0x00,0x40,0x01,0x80,0x01,0x04,0xFF,0xFE,
- 0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,
- /* GB2312 16x16點陣字庫*/
- /* 學[0xD1A7] 16x16 */
- 0x22,0x08,0x11,0x08,0x11,0x10,0x00,0x20,0x7F,0xFE,0x40,0x02,0x80,0x04,0x1F,0xE0,
- 0x00,0x40,0x01,0x84,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,
- /* 院[0xD4BA] 16x16 */
- 0x00,0x80,0x78,0x40,0x4F,0xFE,0x54,0x02,0x58,0x14,0x63,0xF8,0x50,0x00,0x48,0x08,
- 0x4F,0xFC,0x48,0xA0,0x68,0xA0,0x50,0xA0,0x41,0x22,0x41,0x22,0x42,0x1E,0x4C,0x00,
- /* GB2312 16x16點陣字庫*/
- /* 成[0xB3C9] 16x16 */
- 0x00,0x80,0x00,0xA0,0x00,0x90,0x3F,0xFC,0x20,0x80,0x20,0x80,0x20,0x84,0x3E,0x44,
- 0x22,0x48,0x22,0x48,0x22,0x30,0x2A,0x20,0x24,0x62,0x40,0x92,0x81,0x0A,0x00,0x06,
- /* GB2312 16x16點陣字庫*/
- /* 立[0xC1A2] 16x16 */
- 0x02,0x00,0x01,0x00,0x01,0x00,0x00,0x08,0x7F,0xFC,0x00,0x00,0x00,0x10,0x10,0x10,
- 0x08,0x20,0x08,0x20,0x04,0x40,0x04,0x40,0x04,0x80,0x00,0x04,0xFF,0xFE,0x00,0x00,
- /* 字串 20 16x16 */
- 0x00,0x00,0x00,0x00,0x7C,0x7C,0xC6,0xC6,0x06,0xC6,0x0C,0xCE,0x18,0xD6,0x30,0xD6,
- 0x60,0xE6,0xC0,0xC6,0xC6,0xC6,0xFE,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- /* GB2312 16x16點陣字庫*/
- /* 周[0xD6DC] 16x16 */
- 0x00,0x08,0x3F,0xFC,0x21,0x08,0x21,0x48,0x2F,0xE8,0x21,0x08,0x21,0x28,0x3F,0xF8,
- 0x20,0x48,0x27,0xE8,0x24,0x48,0x24,0x48,0x24,0x48,0x47,0xC8,0x84,0x28,0x00,0x10,
- /* GB2312 16x16點陣字庫*/
- /* 年[0xC4EA] 16x16 */
- 0x08,0x00,0x08,0x08,0x1F,0xFC,0x11,0x00,0x21,0x00,0x41,0x10,0x1F,0xF8,0x11,0x00,
- 0x11,0x00,0x11,0x04,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00
- };
- u8 val[8];
- u8 character_len = sizeof(bytes) / 8;
- void delay(u16 x)
- {
- u16 i,j;
- for(i = 0; i < x; i++)
- for(j = 0;j < 112; j++);
- }
- void Max7219_writeByte(u8 dat)
- {
- u8 i;
- MAX7219_CS = 0;
- for(i = 8; i >= 1; i--)
- {
- MAX7219_CLK = 0;
- MAX7219_DIN = dat & 0x80; // &10000000, 取最高位
- dat = dat << 1;
- MAX7219_CLK = 1;
- }
- }
- void Max7219_singeWrite(u8 index, u8 addr, u8 dat)
- {
- MAX7219_CS = 0;
- Max7219_writeByte(addr);
- Max7219_writeByte(dat);
- while(index--)
- {
- Max7219_writeByte(0x00);
- Max7219_writeByte(0x00);
- }
- MAX7219_CS = 1;
- }
- void Max7219_multiWrite1(u8 addr, u8* dat)
- {
- u16 t=8;
- MAX7219_CS = 0;
- while(t--)
- {
-
- Max7219_writeByte(addr);
- Max7219_writeByte (*dat++);
-
- }
- MAX7219_CS = 1;
- }
- void Max7219_init(void)
- {
- u8 i;
- for (i = 0; i < BLOCKS; i++)
- {
- Max7219_singeWrite(i, SHUT_DOWN, 0x01); // 0x00:shutdown, 0x01:normal
- Max7219_singeWrite(i, DECODE_MODE, 0x00); // No decode
- Max7219_singeWrite(i, INTENSITY, 0x03); // 0x00:min, 0x0F:max
- Max7219_singeWrite(i, SCAN_LIMIT, 0x07); // Display 8 digits
- Max7219_singeWrite(i, DISPLAY_TEST, 0x00); // 0x00:normal, 0x01:test mode
- }
- }
- void main(void)
- {
- u16 i=0,j=0,t=0,n=0,m=0,f;
- Max7219_init();
- while(1)
- {
- f=0;
- n = t / 8; // 第幾個字
- m=t%8;
- for(j=0;j<8;j++)
- {
- for(i=0;i<4;i++)
- {
- f=(n+i)%(character_len/2);
- val[i]=bytes[2*j+f/2*32+f%2]<<m;
- val[i+4]=bytes[2*j+f/2*32+f%2+16]<<m;
- f=(n+i+1)%(character_len/2);
- val[i]|=bytes[2*j+f/2*32+f%2]>>8-m;
- val[i+4]|=bytes[2*j+f/2*32+f%2+16]>>8-m;
- }
- Max7219_multiWrite1(j+1, val);
- }
- t=(t+1)%(sizeof(bytes)/2);
-
- delay(150);
- }
-
-
- }
復制代碼 |