pt6311驱动程序C语言的
pt6311驱动程序 C语言的
/* 发送数据到PT6311进行显示 */ /* 参数0: PAR[0] 要写的显存地址(MSB: 1 1 B5,B4,B3,B2,B1,B0 :LSB)(B5-B0 MEM START ADDRESS) */ /* 参数1: PAR[1] 写的低8位数据(先送出, 且从bit0位开始) */ /* 参数2: PAR[2] 写的中8位数据 */ /* 参数3: PAR[3] 写的高1位数据 */ /* 参数 PAR_T; 位变量,可作为函参数 */ /* VFD的使用,先用 */ /* 48 pt6311键总数(48个) */ /* 0x0C 显示模式设置命令(0000,1100=0CH 13G,15P */ /* 0x40 数据设置命令,写数据到显示寄存器,数据写入后地址增加,一般工作模式 */ /* 0x41 写数据到LED命令*/ /* 0x42 PT6311读键值命令符 */ /* 0x8f 显示控制命令,Sets pulse width to 14/16. Display on */ /* 0xC0 地址设置命令 pt6311的Display RAM的起始地址00-2f */ /* 0x43 读SW的值 */ void wvfd_6311() { bc_stb_6311=0; // pt6311 stb="0" (ENABLE) some_nop(); par_t=0x40; /* 数据设置命令,写数据到显示寄存器,,数据写入后地址增加,一般工作模式 */ disp_6311(); bc_stb_6311=1; /* pt6311 stb="0" (ENABLE) 先关掉STAB,然后再打开,这会会稳定些 */ some_nop(); bc_stb_6311=0; // pt6311 stb="0" (ENABLE) some_nop(); par_t=par[0]; disp_6311(); some_nop(); par_t=par[1]; disp_6311(); some_nop(); par_t=par[2]; disp_6311(); bc_stb_6311=1; // PT6311 DISABLE } /* 读键盘按键子程序 */ /* 返回: key_6311 返回键值, 0=无按键 ,不可用PAR[0] 作为参数,否则显示乱 */ void getkey_6311() { uchar i; bc_stb_6311=1; _nop_(); _nop_(); _nop_(); _nop_(); bc_stb_6311=0; some_nop(); par_t=0x72; /* 向pt6311发送读键值命令 */ disp_6311(); some_nop(); key_6311=0; // par[0]=0; /* 不能用PAR[0] 作为参数,否则显示乱 */ // bc_data_6311=0; for(i=48;i>0;i--) /* 6311 总48 个键 */ { bc_clk_6311=1; bc_data_6311=1; some_nop(); bc_clk_6311=0; some_nop(); if(bc_data_6311==1) { key_6311=i; /* 原为 par[0]=i; 时显示乱 */ break; } } bc_stb_6311=1; some_nop(); } /* 显示模式命令 分G,P */ void setup_6311() { bc_stb_6311=0; // ready to send data to pt6311 STB some_nop(); par_t=0x0c; // 0000,1100=0CH 13G,15P disp_6311(); // send command to pt6311,here is set displayer mod,11dig/17seg some_nop(); bc_stb_6311=1; } /* ------- 打开荧光显示 显示控制命令 -------- */ void dim_vfd() { bc_stb_6311=0; /* STD="0" 点亮显示字符 */ some_nop(); par_t=0x8f; /* 显示控制命令,Sets pulse width to 14/16. Display on */ disp_6311(); bc_stb_6311=1; //STD=1 } /* 清屏