国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標(biāo)題:
stm32驅(qū)動(dòng)MAX7912 io口模擬spi驅(qū)動(dòng)8位數(shù)碼管程序源碼
[打印本頁]
作者:
路漫漫
時(shí)間:
2020-5-18 18:19
標(biāo)題:
stm32驅(qū)動(dòng)MAX7912 io口模擬spi驅(qū)動(dòng)8位數(shù)碼管程序源碼
完整源碼
stm32_max7219code.zip
(307.5 KB, 售價(jià): 2 E幣)
2020-5-18 18:19 上傳
點(diǎn)擊文件名下載附件
售價(jià): 2 E幣
[記錄]
[
購買
]
關(guān)于MAX7912驅(qū)動(dòng)數(shù)碼管的問題,論壇上基本找到的都會(huì)51驅(qū)動(dòng)例程。
實(shí)際上我測試過根據(jù)資料也沒有什么問題,但是如果一旦移植到32,確發(fā)現(xiàn)不行。檢查時(shí)序沒有問題,百思不得其解,去網(wǎng)上找資料找到的都是硬件spi。
看到spi速率的問題時(shí)突然想到8051和stm32單片機(jī)之間的區(qū)別,就是主頻問題,f1主頻71M,基本8051只有1M,max7912是否也有反應(yīng)速率的問題呢?于是將模擬IO口的工作頻率設(shè)置為10M,發(fā)現(xiàn)問題解決。
部分源碼
void Write7219(unsigned char address,unsigned char dat)
{
unsigned char i;
Max7219_CS(0); //拉低片選線,選中器件
//發(fā)送地址
for (i=0;i<8;i++) //移位循環(huán)8次
{
Max7219_CLK(0); //清零時(shí)鐘總線
if((address&0x80))
{
Max7219_DIN(1);
}
else
{
Max7219_DIN(0);
}
address<<=1; //左移一位
Max7219_CLK(1); //時(shí)鐘上升沿,發(fā)送地址
}
//發(fā)送數(shù)據(jù)
for (i=0;i<8;i++)
{
Max7219_CLK(0);
if((dat&0x80))
{
Max7219_DIN(1);
}
else
{
Max7219_DIN(0);
}
dat<<=1;
Max7219_CLK(1); //時(shí)鐘上升沿,發(fā)送數(shù)據(jù)
}
Max7219_CS(1); //發(fā)送結(jié)束,上升沿鎖存數(shù)據(jù)
}
//MAX7219初始化,設(shè)置MAX7219內(nèi)部的控制寄存器
void Max7219Init(void)
{
MAX7912_GPIO_Config();
Write7219(SHUT_DOWN,0x01); //開啟正常工作模式(0xX1)
Write7219(DISPLAY_TEST,0x00); //選擇工作模式(0xX0)
Write7219(DECODE_MODE,0xff); //選用全譯碼模式
Write7219(SCAN_LIMIT,0x07); //8只LED全用
Write7219(INTENSITY,0x04); //設(shè)置初始亮度
}
復(fù)制代碼
歡迎光臨 ELEOK (http://www.afoofa.cn/)
Powered by Discuz! X5.0