濰坊工程職業學院山工機電工程學院 脫建智 謝宗華 于婷婷
自動控制系統高亮數碼管顯示器的設計與制作
濰坊工程職業學院山工機電工程學院 脫建智 謝宗華 于婷婷
面向應用環境較為復雜,顯示信息量較大的工業環境,選用通用型自動控制核心IAP15F2K61S2設計了具備5線接口的硬件電路,采用可移植性較好的頭文件格式封裝了核心控制功能,設計并制作了功能完備的自動控制系統高亮數碼管顯示器。
四聯高亮數碼管;控制核心;5線接口
強電磁干擾、粉塵、蒸汽等工業環境對控制系統的顯示器功能提出了較為苛刻的要求,本研究采用抗干擾能力極強的國產控制核心和四聯高亮數碼管設計并制作了適用范圍較為廣泛的高亮數碼管顯示器。
①控制核心
根據本項目控制系統的控制要求,選擇通用控制核心IAP-15F2K61S2系列芯片,該芯片內置1T高速CPU,2KB RAM,具有低速、空閑和掉電三模式低功耗設計,超強抗干擾,超低EMI,61KB Flash,強大的ISP/IAP編程和存儲功能。
②數碼管顯示器
為了綜合提高本顯示器的效率和功能,選擇4片四聯高亮數碼管搭建本顯示器,該元件采用14-DIP封裝,通過14根管腳可方便的實現溫度、時間、速度等信息的顯示,大幅節約控制核心的硬件資源。
③驅動芯片
綜合考慮產品的性價比等因素,采用較為通用的串行轉并行8bit移位寄存器74HC595D作為本顯示器的驅動芯片,芯片為SOP-16貼片式封裝,在保證性能的前提下,可大幅減小PCB電路板的體積,提高產品的性價比。
①主電路設計
本產品的主電路以單片機為核心設計,采用DC5V-1A通用開關電源或A型USB接口供電,電源開關采用小型船型開關,設計有LED電源指示燈,串行通信的發送和接收紅藍雙色指示燈,2條電源線和3條數據線的5線接口,4條備用線方便用戶實現自定義擴展功能,上位機經過USB接口給單片機串行下載程序。

②顯示電路設計
顯示電路以4片四聯數碼管和4片595驅動芯片為核心設計,驅動芯片之間通過串入串出的方式通信,驅動芯片和數碼管之間通過串入并出的方式通信,數碼管的顯示信息(段選)由U2傳遞,點亮數碼管的位置(位選)和表示時間的冒號控制信息由U3、U4和U5配合實現傳遞,一幀顯示數據為32bit。


控制軟件以3個數組和3個子函數為核心設計,被封裝成獨立的頭文件,便于其他控制系統引入本產品實現顯示功能,系統主函數中只需要包含該頭文件,將所需顯示的信息存放到顯示緩沖區數組,調用顯示子函數即可將信息高亮顯示到本顯示器。
設計了二維顯示代碼數組作為本顯示器的顯示代碼表,便于顯示較為復雜的信息,用戶所需特殊字符也自定義擴展到顯示代碼表,實現連續字符串的靜態或動態顯示。
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};
設計了代碼轉換子函數用于提取二維顯示代碼數組的數碼管段碼。
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;}}}
本研究經過電路設計,PCB打樣,產品制作,軟件設計,功能調試等步驟成功制作了自動控制系統高亮數碼管顯示器,在相關控制系統的應用中驗證了該產品的顯示功能。
[1]脫建智.基于IAP15F2K61S2單片機的數碼管動態顯示器的研究與設計[J].電子世界,2013,12:36-37.
[2]脫建智.基于自適應算法的圓柱狀旋轉顯示屏的研究與設計[J].電子世界,2013,7:155.
[3]脫建智.單片機外部中斷的教學和自學方法研究與設計[J].電子世界,2013,20:161-162.
脫建智(1981—),男,山東青州人,碩士,講師,現供職于濰坊工程職業學院山工機電工程學院,研究方向:機電一體化系統。