自动控制系统高亮数码管显示器的设计与制作

2017-09-30 02:58潍坊工程职业学院山工机电工程学院脱建智谢宗华于婷婷
电子世界 2017年18期
关键词:高亮数码管数组

潍坊工程职业学院山工机电工程学院 脱建智 谢宗华 于婷婷

自动控制系统高亮数码管显示器的设计与制作

潍坊工程职业学院山工机电工程学院 脱建智 谢宗华 于婷婷

面向应用环境较为复杂,显示信息量较大的工业环境,选用通用型自动控制核心IAP15F2K61S2设计了具备5线接口的硬件电路,采用可移植性较好的头文件格式封装了核心控制功能,设计并制作了功能完备的自动控制系统高亮数码管显示器。

四联高亮数码管;控制核心;5线接口

1 引言

强电磁干扰、粉尘、蒸汽等工业环境对控制系统的显示器功能提出了较为苛刻的要求,本研究采用抗干扰能力极强的国产控制核心和四联高亮数码管设计并制作了适用范围较为广泛的高亮数码管显示器。

2 电路设计

2.1 元器件选型

①控制核心

根据本项目控制系统的控制要求,选择通用控制核心IAP-15F2K61S2系列芯片,该芯片内置1T高速CPU,2KB RAM,具有低速、空闲和掉电三模式低功耗设计,超强抗干扰,超低EMI,61KB Flash,强大的ISP/IAP编程和存储功能。

②数码管显示器

为了综合提高本显示器的效率和功能,选择4片四联高亮数码管搭建本显示器,该元件采用14-DIP封装,通过14根管脚可方便的实现温度、时间、速度等信息的显示,大幅节约控制核心的硬件资源。

③驱动芯片

综合考虑产品的性价比等因素,采用较为通用的串行转并行8bit移位寄存器74HC595D作为本显示器的驱动芯片,芯片为SOP-16贴片式封装,在保证性能的前提下,可大幅减小PCB电路板的体积,提高产品的性价比。

2.2 电路设计与制作

①主电路设计

本产品的主电路以单片机为核心设计,采用DC5V-1A通用开关电源或A型USB接口供电,电源开关采用小型船型开关,设计有LED电源指示灯,串行通信的发送和接收红蓝双色指示灯,2条电源线和3条数据线的5线接口,4条备用线方便用户实现自定义扩展功能,上位机经过USB接口给单片机串行下载程序。

②显示电路设计

显示电路以4片四联数码管和4片595驱动芯片为核心设计,驱动芯片之间通过串入串出的方式通信,驱动芯片和数码管之间通过串入并出的方式通信,数码管的显示信息(段选)由U2传递,点亮数码管的位置(位选)和表示时间的冒号控制信息由U3、U4和U5配合实现传递,一帧显示数据为32bit。

3 软件设计

控制软件以3个数组和3个子函数为核心设计,被封装成独立的头文件,便于其他控制系统引入本产品实现显示功能,系统主函数中只需要包含该头文件,将所需显示的信息存放到显示缓冲区数组,调用显示子函数即可将信息高亮显示到本显示器。

3.1 显示数组

设计了二维显示代码数组作为本显示器的显示代码表,便于显示较为复杂的信息,用户所需特殊字符也自定义扩展到显示代码表,实现连续字符串的静态或动态显示。

unsigned char TAB[CodeNO][2]={0,0x3F,1,0x06,2,0x5B,3,0x4F,4,0x66,5,0x6D,6,0x7D,7,0x07,8,0x7F,9,0x6F,0X0A,0x77,0x0B,0x7C,0x0C,0x39,0x0D,0x5E,0x0E,0x79,0x0F,0x71};

设计了2个一维数组作为段选和位选的显示缓冲区,用于存放待显示数据。

unsigned char DSBu[16]={此处存放待显示数据},DSInD[3]={0x7F,0xFF,0xFF};

3.2 子函数

设计了代码转换子函数用于提取二维显示代码数组的数码管段码。

unsigned char CodCvt(unsigned char InData){unsigned char i;for(i=0;i<CodeNO;i++){if(InData==TAB[i][0])return TAB[i][1];}return 0;}

设计了数码管驱动芯片驱动子函数用于通过595传递数码管段选和位选数据,代码如下:

void SendByte_595(unsigned char dat)

{unsigned char i;for(i=0;i<8;i++){HC595_SHCP=0;if(dat&0x80)HC595_DS=1;else HC595_DS=0; dat<<=1;HC595_SHCP=1;}}

设计了显示驱动子函数用于统筹数组和子函数实现本产品的显示功能。本驱动函数连续执行4次SendByte函数发送一帧显示数据,点亮1位数码管,连续发送16帧数据,实现本显示器的整屏信息显示。将四联数码管的时间显示冒号控制位用位选数组的4个bit来控制亮灭,设置时间显示冒号控制标志位,当需要时间显示的时候控制相应的位选控制位点亮时间显示冒号。

void DScan(unsigned char *DSBufP,unsigned char DSInfor)

{unsigned char i,j,c,k,SecLED=0xBD,TempDot=0x00;

DSInD[2]=0xFF;DSInD[1]=0xFF;DSInD[0]=0xFE;if(DSInfor==0x01){k++;if(k<22) SecLED=0xFD;else if(k<44)SecLED=0xBD;else k=0;}

if(DSInfor==0x80)SecLED=0xBD;for(i=0,j=0;i<=15;i++){if(DSInfor==0x80&&(i==0x06||i==0x0E))TempDot=0x80;else TempDot=0x00;

for(c=0;c<=6;c++){HC595_STCP=0;SendByte_595(DSInD[2]&0xF7);SendByte_59 5(DSInD[1]&SecLED);SendByte_595(DSInD[0]&0xEF);SendByte_595(CodCvt(*DSBufP)|TempDot);HC595_STCP=1;}

DSBufP ++;DSInD[j]=_crol_(DSInD[j],1);

if(i==0x03||i==0x07||i==0x0B||i==0x0F)DSInD[j]=_crol_(DSInD[j],1);

if(i==0x06||i==0x0C){DSInD[j]=0xFF;j++;DSInD[j]=0xFE;}}}

4 总结

本研究经过电路设计,PCB打样,产品制作,软件设计,功能调试等步骤成功制作了自动控制系统高亮数码管显示器,在相关控制系统的应用中验证了该产品的显示功能。

[1]脱建智.基于IAP15F2K61S2单片机的数码管动态显示器的研究与设计[J].电子世界,2013,12:36-37.

[2]脱建智.基于自适应算法的圆柱状旋转显示屏的研究与设计[J].电子世界,2013,7:155.

[3]脱建智.单片机外部中断的教学和自学方法研究与设计[J].电子世界,2013,20:161-162.

脱建智(1981—),男,山东青州人,硕士,讲师,现供职于潍坊工程职业学院山工机电工程学院,研究方向:机电一体化系统。

猜你喜欢
高亮数码管数组
JAVA稀疏矩阵算法
微课教学设计之“数码管动态显示”
JAVA玩转数学之二维数组排序
高亮燃橙
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
中央高亮企业家精神
高亮国画作品
Excel数组公式在林业多条件求和中的应用