国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

 找回密碼
 注冊(cè)
搜索

stm32驅(qū)動(dòng)MAX7912 io口模擬spi驅(qū)動(dòng)8位數(shù)碼管程序源碼

[復(fù)制鏈接]
樓主
路漫漫 發(fā)表于 2020-5-18 18:19:54 | 只看該作者 |倒序?yàn)g覽 |閱讀模式
完整源碼 stm32_max7219code.zip (307.5 KB, 售價(jià): 2 E幣)
關(guān)于MAX7912驅(qū)動(dòng)數(shù)碼管的問(wèn)題,論壇上基本找到的都會(huì)51驅(qū)動(dòng)例程。
實(shí)際上我測(cè)試過(guò)根據(jù)資料也沒(méi)有什么問(wèn)題,但是如果一旦移植到32,確發(fā)現(xiàn)不行。檢查時(shí)序沒(méi)有問(wèn)題,百思不得其解,去網(wǎng)上找資料找到的都是硬件spi。
看到spi速率的問(wèn)題時(shí)突然想到8051和stm32單片機(jī)之間的區(qū)別,就是主頻問(wèn)題,f1主頻71M,基本8051只有1M,max7912是否也有反應(yīng)速率的問(wèn)題呢?于是將模擬IO口的工作頻率設(shè)置為10M,發(fā)現(xiàn)問(wèn)題解決。
部分源碼
  1. void Write7219(unsigned char address,unsigned char dat)
  2. {  
  3.     unsigned char i;
  4.     Max7219_CS(0);    //拉低片選線,選中器件
  5.     //發(fā)送地址
  6.     for (i=0;i<8;i++)        //移位循環(huán)8次            
  7.     {  
  8.        Max7219_CLK(0);       //清零時(shí)鐘總線
  9.                          if((address&0x80))
  10.                          {
  11.                                  Max7219_DIN(1);
  12.                          }
  13.                                 else
  14.                                 {
  15.                                         Max7219_DIN(0);
  16.                                 }                                       
  17.        address<<=1;             //左移一位
  18.        Max7219_CLK(1);        //時(shí)鐘上升沿,發(fā)送地址
  19.     }
  20.     //發(fā)送數(shù)據(jù)
  21.     for (i=0;i<8;i++)              
  22.     {  
  23.        Max7219_CLK(0);
  24.       if((dat&0x80))
  25.                          {
  26.                                  Max7219_DIN(1);
  27.                          }
  28.                                 else
  29.                                 {
  30.                                         Max7219_DIN(0);
  31.                                 }   
  32.        dat<<=1;
  33.        Max7219_CLK(1);         //時(shí)鐘上升沿,發(fā)送數(shù)據(jù)
  34.     }
  35.     Max7219_CS(1);    //發(fā)送結(jié)束,上升沿鎖存數(shù)據(jù)                     
  36. }
  37. //MAX7219初始化,設(shè)置MAX7219內(nèi)部的控制寄存器
  38. void Max7219Init(void)               
  39. {
  40.     MAX7912_GPIO_Config();
  41.     Write7219(SHUT_DOWN,0x01);         //開(kāi)啟正常工作模式(0xX1)
  42.     Write7219(DISPLAY_TEST,0x00);      //選擇工作模式(0xX0)
  43.     Write7219(DECODE_MODE,0xff);       //選用全譯碼模式
  44.     Write7219(SCAN_LIMIT,0x07);        //8只LED全用
  45.     Write7219(INTENSITY,0x04);          //設(shè)置初始亮度     
  46. }
復(fù)制代碼
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則

手機(jī)版|小黑屋|ELEOK |網(wǎng)站地圖

GMT+8, 2026-5-26 02:48

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回復(fù) 返回頂部 返回列表