據RD8T37P48的芯片手冊介紹,RD8T37P48集成硬件數碼管的驅動,所以總想測試一下它的硬件數碼管驅動是怎樣的。
下面就分享一下本人在應用EasyCodeCube配置工程模板對RD8T37P48硬件數碼管的驅動功能進行測試的基本流程。
一、打開EasyCodeCube,選擇芯片。
二、將LED硬件數碼管功能導入用戶工程列表。
方法:右鍵點擊“LED數碼管_硬件”----左鍵點擊“導入用戶工程驅動列表”。
三、設置硬件數碼管端口。
方法:在左欄菜單“用戶工程驅動列表”中找到“LED數碼管_硬件”,并點開。再在右邊的界面上設置SEGA~SEGP(為了方便,我按順序選擇,這個是可以改變P1口順序 的),還有COM0~COM3(RD8T37P48支持8位數碼管)。
002設置硬件數碼管端口.jpg (255.78 KB, 下載次數: 49)
下載附件
2023-6-27 13:35 上傳
說明:本人測試用的是四位共陰數碼管,其他類型的數碼管可以參照此法進行配置。
四、BTM設置1秒中斷,用于變量sec累加
003BTM設置1秒中斷.jpg (121.89 KB, 下載次數: 67)
下載附件
2023-6-27 13:36 上傳
五、生成工程模板。
六、用keil打開剛才生成的工程,設置芯片及下載器。
下面是軟件生成的段碼編碼,與其他LED數碼管代碼生成工具一致。
004顯示編碼.jpg (241 KB, 下載次數: 59)
下載附件
2023-6-27 13:37 上傳
說明一下,最后的0x00是本人添加的,目的是為了關閉顯示。
數碼管的所有驅動集中在SCDriver_NixieTubeForHardware.c中,SCDriver_NixieTubeForHardware.h只提供了下面兩個顯示函數:
其中 void SCD_NT_HW_OneDisplay(unsigned char ComNumber,unsigned char ComData);是單個控制的顯示函數,
void SCD_NT_HW_ListDisplay(unsigned char * Com);是多個控制的顯示函數,本次實驗只測試了單個控制的顯示函數void SCD_NT_HW_OneDisplay,這個函數集成了數碼管驅動初始化程序,所以不用初始化也可以直接調用!
七、在main.c和SC_it.c中添加變量sec,用于秒數累加,作為數碼管的顯示數據。
006main.c添加變量sec.jpg (203.78 KB, 下載次數: 58)
下載附件
2023-6-27 13:37 上傳
007在SC_it.c添加變量sec.jpg (210 KB, 下載次數: 65)
下載附件
2023-6-27 13:37 上傳
八、在BTM秒中斷中添加秒變量sec累加代碼:
- sec++;
- if( sec>10 )sec=0;
復制代碼
九、在主程序中添加顯示代碼
- if(sec!=i)
- {
- SCD_NT_HW_OneDisplay(0,sec);
- SCD_NT_HW_OneDisplay(1,sec);
- SCD_NT_HW_OneDisplay(2,sec);
- SCD_NT_HW_OneDisplay(3,sec);
- i=sec;
- }
復制代碼
測試效果:https://www.bilibili.com/video/BV16u41187V2/
|