?? pt6311.c
字號(hào):
/* 發(fā)送數(shù)據(jù)到PT6311進(jìn)行顯示 */
/* 參數(shù)0: PAR[0] 要寫的顯存地址(MSB: 1 1 B5,B4,B3,B2,B1,B0 :LSB)(B5-B0 MEM START ADDRESS) */
/* 參數(shù)1: PAR[1] 寫的低8位數(shù)據(jù)(先送出, 且從bit0位開始) */
/* 參數(shù)2: PAR[2] 寫的中8位數(shù)據(jù) */
/* 參數(shù)3: PAR[3] 寫的高1位數(shù)據(jù) */
/* 參數(shù) PAR_T; 位變量,可作為函參數(shù) */
/* VFD的使用,先用 */
/* 48 pt6311鍵總數(shù)(48個(gè)) */
/* 0x0C 顯示模式設(shè)置命令(0000,1100=0CH 13G,15P */
/* 0x40 數(shù)據(jù)設(shè)置命令,寫數(shù)據(jù)到顯示寄存器,數(shù)據(jù)寫入后地址增加,一般工作模式 */
/* 0x41 寫數(shù)據(jù)到LED命令*/
/* 0x42 PT6311讀鍵值命令符 */
/* 0x8f 顯示控制命令,Sets pulse width to 14/16. Display on */
/* 0xC0 地址設(shè)置命令 pt6311的Display RAM的起始地址00-2f */
/* 0x43 讀SW的值 */
void wvfd_6311()
{
bc_stb_6311=0; // pt6311 stb=0 (ENABLE)
some_nop();
par_t=0x40; /* 數(shù)據(jù)設(shè)置命令,寫數(shù)據(jù)到顯示寄存器,,數(shù)據(jù)寫入后地址增加,一般工作模式 */
disp_6311();
bc_stb_6311=1; /* pt6311 stb=0 (ENABLE) 先關(guān)掉STAB,然后再打開,這會(huì)會(huì)穩(wěn)定些 */
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] 作為參數(shù),否則顯示亂 */
void getkey_6311()
{
uchar i;
bc_stb_6311=1;
_nop_(); _nop_(); _nop_(); _nop_();
bc_stb_6311=0;
some_nop();
par_t=0x72; /* 向pt6311發(fā)送讀鍵值命令 */
disp_6311();
some_nop();
key_6311=0;
// par[0]=0; /* 不能用PAR[0] 作為參數(shù),否則顯示亂 */
// bc_data_6311=0;
for(i=48;i>0;i--) /* 6311 總48 個(gè)鍵 */
{
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; 時(shí)顯示亂 */
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 點(diǎn)亮顯示字符 */
some_nop();
par_t=0x8f; /* 顯示控制命令,Sets pulse width to 14/16. Display on */
disp_6311();
bc_stb_6311=1; //STD=1
}
/* 清屏 */
void clear_vfd()
{
uchar i;
bc_stb_6311=0;
par[0]=0xc0;
par[1]=0x00;
par[2]=0x00;
for(i=0;i<14;i++)
{
wvfd_6311(); /* 送入pt6311顯存 */
par[0]=0xc0+3*i; /* start address move to next digit 下一段,段地址 */
}
bc_stb_6311=1;
}
/* 送數(shù)據(jù)到6311的LED口 */
/* 參數(shù)PAR[0] PAR[0]--LED數(shù)據(jù) */
void wled_6311()
{
bc_stb_6311=0; /* PT6311 ENBLE */
par_t=0x41; // data set command--write data to LED PORT
disp_6311(); // sendn data to pt6311 here is data set command
par_t=led_6311; // pt6311 LED DATA to PAR[0]
disp_6311(); // send data to pt6311 here is address set command
bc_stb_6311=1; // pt6311 disable
}
/* 發(fā)一字節(jié)數(shù)據(jù)到6311 參數(shù) PAR_T */
void disp_6311()
{
uchar i;
for(i=0;i<8;i++)
{
bc_clk_6311=0;
bc_data_6311=par_t_0;
par_t=par_t>>1;
some_nop();
bc_clk_6311=1;
some_nop();
}
bc_data_6311=1;
bc_clk_6311=1;
}
void sw_6311()
{
uchar i;
bc_stb_6311=0; // ready to send data to pt6311 STB
some_nop();
par_t=0x43; // 0000,1100=0CH 13G,15P
disp_6311(); // send command to pt6311,here is set displayer mod,11dig/17seg
some_nop();
par[0]=0;
for(i=0;i<8;i++) /* 6311 讀SW值 */
{
bc_clk_6311=1;
bc_data_6311=1;
some_nop();
bc_clk_6311=0;
some_nop();
if(bc_data_6311==1) par[0]++;
}
bc_stb_6311=1;
}
void some_nop()
{
_nop_(); _nop_(); _nop_();
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -