|
据RD8T37P48的芯片手册介绍,RD8T37P48集成硬件数码管的驱动,所以总想测试一下它的硬件数码管驱动是怎样的。
下面就分享一下本人在应用EasyCodeCube配置工程模板对RD8T37P48硬件数码管的驱动功能进行测试的基本流程。
一、打开EasyCodeCube,选择芯片。
二、将LED硬件数码管功能导入用户工程列表。
方法:右键点击“LED数码管_硬件”----左键点击“导入用户工程驱动列表”。
三、设置硬件数码管端口。
方法:在左栏菜单“用户工程驱动列表”中找到“LED数码管_硬件”,并点开。再在右边的界面上设置SEGA~SEGP(为了方便,我按顺序选择,这个是可以改变P1口顺序 的),还有COM0~COM3(RD8T37P48支持8位数码管)。如下图:
说明:本人测试用的是四位共阴数码管,其他类型的数码管可以参照此法进行配置。
四、BTM设置1秒中断,用于变量sec累加。
五、生成工程模板。
六、用keil打开刚才生成的工程,设置芯片及下载器。
下面是软件生成的段码编码,与其他LED数码管代码生成工具一致。
说明一下,最后的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,用于秒数累加,作为数码管的显示数据。
八、在BTM秒中断中添加秒变量sec累加代码:
[url=]复制[/url]
sec++;
if( sec>10 )sec=0;
九、在主程序中添加显示代码
[url=]复制[/url]
unsigned char i=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; }
测试效果:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|