?? 7219.c
字號:
#include<reg52.h>
#define uchar unsigned char
sbit din=P2^0;
sbit clk=P2^2;
sbit load=P2^1;
/******************對7219的寫字節程序******************/
//功能:實現對控制寄存器的讀寫;
//時序要求:MAX7219采用串行數據傳輸方式,由16位數據包發送到DIN引腳的串行數據在每個CLK的上升沿被移入內部
//的16位移位寄存器中,然后在LOAD的上升沿將數據鎖存到數字或控制寄存器;LOAD信號必須在第十六個時鐘上升沿同
//時或之后,但在下一個時鐘上升沿變高,否則數據庫丟失。
void Write_Max7219_byte(uchar DATA) //LED寫數據函數
{
uchar i;
load=0;
for(i=8;i>=1;i--)
{
clk=0;
din=DATA&0x80;
DATA=DATA<<1;
clk=1;
}
}
/*****************7219寫數字程序************************/
//功能:先寫LED數字控制寄存器,再將要顯示的字符送到相應的數字寄存器顯示
void Write_Max7219(uchar address,uchar dat)
{
load=0;
Write_Max7219_byte(address);
Write_Max7219_byte(dat);
load=1;
}
/****************7219初始化程序**********************/
//功能:完成對各個內部寄存器的初始化
void Init_Max7219(void)
{
Write_Max7219(0x09, 0xff); //譯碼寄存器,寫入0ffH,對0至7位均譯碼
Write_Max7219(0x0a, 0x02); //亮度調節寄存器,寫入03H,實現一般的亮度顯示
Write_Max7219(0x0b, 0x03); //掃描界限寄存器,寫入03H,實現對0到3位數碼管的顯示
Write_Max7219(0x0c, 0x01); //停機寄存器,寫入01H,實現正常工作
Write_Max7219(0x0f, 0x00); //顯示測試寄存器,寫入00H,實現正常工作
}
/*****************主程序******************/
//實現四個數碼顯示0123
void main()
{
Init_Max7219();
Write_Max7219(0x01,0x00);
Write_Max7219(0x02,0x01);
Write_Max7219(0x03,0x02);
Write_Max7219(0x04,0x03);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -