完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
VFD驱动程序源代码(芯片uPD16311)/*************************************************************************** uPD16311 drving routines, VER 1.0** COPYRIGHT (C) 2000, Enbia Technology Inc.* Target: 8031* AUTHOR: STEVEN LUO** Revision History:* 2001/1/5 - Original Version***************************************************************************/#include #include #include #include "16311_int.h"//--------------------------------------------------------------------------// Name: Write_16311_PWM(BYTE pwm)// Return value: none//--------------------------------------------------------------------------void Write_16311_PWM(BYTE pwm){m_PWM = pwm & 0x07 | 0x80;}//--------------------------------------------------------------------------// Name: void TurnOn_1631// Return value: none//--------------------------------------------------------------------------void TurnOn_16311(BOOL binp){bOnoff = binp;}//--------------------------------------------------------------------------// Name: Write_16311_RAM// Return value: none//--------------------------------------------------------------------------void Write_16311_RAM(BYTE addr, BYTE idata *buf, BYTE size){BYTE j;// set display mode --------------------------//PIN_16311_STB=0;Write_16311_Byte(DISPLAY_MODE);PIN_16311_STB=1;_nop_(); _nop_(); _nop_(); _nop_();// set data cmd----------------------//PIN_16311_STB=0;Write_16311_Byte(WRITE_BUF_INC); // Write display buffer commandPIN_16311_STB=1;_nop_(); _nop_(); _nop_(); _nop_();// set data addr----------------------//PIN_16311_STB=0;Write_16311_Byte(0xc0 | addr); // Write address command, start from addr 0// write data successive----------------------//for (j = 0; j < size; j++){Write_16311_Byte(*buf); // Write 1st bytebuf ++;} // let the IR detectPIN_16311_STB=1;_nop_(); _nop_(); _nop_(); _nop_();// write display control----------------------//PIN_16311_STB=0;if (bOnoff)Write_16311_Byte(VFD_ON | m_PWM); //Set pulse width and turn on displayelseWrite_16311_Byte(VFD_OFF | m_PWM);PIN_16311_STB=1;_nop_(); _nop_(); _nop_(); _nop_();}//--------------------------------------------------------------------------// Name: Read_16311_Key// Description: This function Read 6 key status byte from 16311// Arguments: none// Return value: -1, no key, else: key value//--------------------------------------------------------------------------char Read_16311_Key(void){register BYTE i;char temp;PIN_16311_STB=0;Write_16311_Byte(READ_KEY); // Reads KEY data command_nop_(); _nop_(); _nop_(); _nop_();for (i=0; i<6; i++){temp = Read_16311_Byte();if (temp != -1) {temp += i*8; break;}}PIN_16311_STB=1;return temp;}//--------------------------------------------------------------------------// Name: Write_16311_Byte// Description: This function Write 1 byte to 16311// Arguments:// Return value: the Switch status byte//--------------------------------------------------------------------------void Write_16311_Byte(BYTE mybyte){register BYTE i;for (i=8; i>0; --i){PIN_16311_CLK=0;_nop_(); _nop_(); _nop_(); _nop_();if(mybyte&0x01)PIN_16311_DI=1; // LSB firstelse PIN_16311_DI=0;mybyte >>= 1; // Rotate RightPIN_16311_CLK=1;_nop_(); _nop_(); _nop_(); _nop_();}}//--------------------------------------------------------------------------// Name: Read_16311_Byte// Description: This function Read 1 byte from 16311// Arguments: none// Return value: -1, no key, else the key value//--------------------------------------------------------------------------char Read_16311_Byte(void){register BYTE i;char keyvalue = -1;PIN_16311_DO = 1; // set pin to input modefor (i=0; i<8; i++){PIN_16311_CLK=0;_nop_(); _nop_(); _nop_(); _nop_();if(PIN_16311_DO) {keyvalue = i;}PIN_16311_CLK=1;_nop_(); _nop_(); _nop_(); _nop_();}return keyvalue;}
发布
电子发烧友网
电子发烧友论坛
查看 »
小黑屋| 手机版| Archiver| 电子发烧友 ( 粤ICP备14022951号 )
GMT+8, 2023-2-7 06:12 , Processed in 0.838207 second(s), Total 75, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com