標題:
MAX7221 LED顯示驅動器單片機原理圖和程序
[打印本頁]
作者:
maomao12
時間:
2017-5-14 21:38
標題:
MAX7221 LED顯示驅動器單片機原理圖和程序
0.png
(110.2 KB, 下載次數(shù): 61)
下載附件
2017-5-15 01:05 上傳
//利用數(shù)碼管驅動芯片max7221實現(xiàn)8位數(shù)碼管顯示
#include <reg51.h>
#include <intrins.h>
sbit DIN = P2^0; //數(shù)據(jù)串出引腳
sbit CS = P2^1; //片選端
sbit CLK = P2^2; //移位時鐘端
unsigned char disp_buff[8] = {2,0,1,0,10,2,10,9}; //顯示的數(shù)字,數(shù)值為10的時候,顯示“-”
// 延時函數(shù)
void delayms(unsigned int x)
{
unsigned char i;
while(x--)
{
for(i = 0;i < 120;i++);
}
}
//寫數(shù)據(jù)函數(shù)
void write_data(unsigned char addr,unsigned char dat)
{
unsigned char i;
CS = 0; // 先寫地址,片選置低,串行數(shù)據(jù)加載到移位寄存器
for(i = 0;i < 8;i++) //
{
CLK = 0; //時鐘上升沿數(shù)據(jù)移入內部移位寄存器
addr <<= 1; //待發(fā)送的地址,每次左移一次,高位在前發(fā)送,
DIN = CY; //數(shù)據(jù)移位后,如果有溢出,則可以從進位位CY中獲得溢出的數(shù)據(jù)位
CLK = 1;
_nop_();
_nop_();
CLK = 0; //下降沿時數(shù)據(jù)從DOUT移出
}
for(i = 0;i < 8;i++)
{
CLK = 0; //
dat <<= 1; //發(fā)送數(shù)據(jù)
DIN = CY;
CLK = 1;
_nop_();
_nop_();
CLK = 0;
}
CS = 1; //CS上升沿,數(shù)據(jù)鎖存
}
//初始化函數(shù)
void init_max7221(void)
{
write_data(0x09,0xff); //編碼模式
write_data(0x0a,0x07); //亮度控制
write_data(0x0b,0x07); //掃描數(shù)碼管的位數(shù)
write_data(0x0c,0x01); //工作模式
}
void main(void)
{
unsigned char i;
init_max7221(); // 初始化
delayms(2);
for(i = 0;i < 8;i++)
{
write_data(i+1,disp_buff[i]); // 顯示8位
}
while(1);
}
復制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1