据RD8T37P48的芯片手册介绍,RD8T37P48集成硬件数码管的驱动,所以总想测试一下它的硬件数码管驱动是怎样的。测试RD8T37P48的硬件数码管驱动功能,可以说是道路曲折,遇到很多困难。
首先是对DDIC的认识不足,尽管仔细看了手册若干次,还是不知其用法,所以唯一的途径就是只能通过易码魔盒EasyCodeCube来对工程进行初始化。
其次就是易码魔盒EasyCodeCube在进行端口设置方面设计欠佳,造成走了不少弯路。《新定义易码魔盒使用手册》的内容也过于简单,只是个纲纲,每个功能块的应用没有详细的说明。
下面就分享一下本人在应用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累加代码:
sec++;
if( sec>10 )sec=0;
九、在主程序中添加显示代码
测试效果:
|