?? udp6453gd101.c
字號:
for(zf_i=0;zf_i<=288;zf_i++)
{
uPD6453_16(0xCE,0xCF); /*顯示字符命令*/
}
}
/*延時信號*/
void delay(UCHAR delay_time)
{
count_timer1=0;
while(1)
{
if(count_timer1>delay_time) return;
DOG=!DOG;
}
}
/*START 起始*/
void eerom_star()
{
EEROM_SCL=1;
delay(0);
EEROM_SDA=0;
delay(0);
EEROM_SCL=0;
delay(0);
}
/*寫1個字節*/
void eerom_wr_byte(uchar eerom_data)
{
uchar i;
data_ls=eerom_data;
for(i=0;i<8;i++) /*ADDR 地址*/
{
EEROM_SDA=SDA7;
delay(0);
EEROM_SCL=1;
delay(0);
data_ls=data_ls<<1;
EEROM_SCL=0;
delay(0);
}
}
/*ACK by 應答*/
void eerom_ack()
{
EEROM_SDA=1;
delay(0);
EEROM_SCL=1;
delay(0);
EEROM_SCL=0;
delay(0);
}
/*STOP停止*/
void eerom_stop()
{
EEROM_SDA=0;
delay(0);
EEROM_SCL=1;
delay(0);
EEROM_SDA=1;
delay(0);
EEROM_SCL=0;
delay(0);
}
/*AT24C02 EEROM讀子程序*/
/*uchar eerom_rd(數據地址0-256)*/
uchar eerom_rd(uchar data_addr)
{
uchar i;
EEROM_WP=0; /*AT24C02使能*/
eerom_star(); /*START 起始*/
eerom_wr_byte(0xA0); /*"1,0,1,0,A2,A1,A0,R/W*/
eerom_ack(); /*ACK by 應答*/
eerom_wr_byte(data_addr); /*ADDR 地址*/
eerom_ack(); /*ACK by 應答*/
eerom_star(); /*START 起始*/
eerom_wr_byte(0xA1); /*"1,0,1,0,A2,A1,A0,R/W*/
eerom_ack(); /*ACK by 應答*/
data_ls=0;
for(i=0;i<8;i++) /*數據data*/
{
EEROM_SCL=1;
delay(0);
data_ls=data_ls<<1;
SDA0=EEROM_SDA;
EEROM_SCL=0;
delay(0);
}
// eerom_ack(); /*ACK by 應答*/
eerom_stop(); /*STOP停止*/
EEROM_WP=1; /*AT24C02使能*/
return(data_ls);
}
/*AT24C02 EEROM按字節寫子程序*/
/*uchar eerom_wr(數據地址0-256,數據)*/
uchar eerom_byte_wr(uchar data_addr,uchar wdata)
{
uchar i;
EEROM_WP=0; /*AT24C02使能*/
eerom_star(); /*START 起始*/
eerom_wr_byte(0xA0); /*"1,0,1,0,A2,A1,A0,R/W*/
eerom_ack(); /*ACK by 應答*/
eerom_wr_byte(data_addr); /*ADDR 地址*/
eerom_ack(); /*ACK by 應答*/
eerom_wr_byte(wdata); /*DATA 數據*/
eerom_ack(); /*ACK by 應答*/
eerom_stop(); /*STOP停止*/
delay(10); /*延時*/
EEROM_WP=1; /*AT24C02使能*/
}
/*設置中文數據整理子程序*/
/*void chinese_data_cl()*/
void chinese_data_cl(uchar ram_addr,UCHAR hz_addr)
{
UCHAR i;
uint hz_addr_ls;
UCHAR hz_data_ls0,hz_data_ls1;
if(ram_addr>7) ram_addr=0;
if(hz_addr>91) hz_addr=0;
hz_addr_ls=hz_addr*32;
hz_addr_ls=HZ_ADDR+hz_addr_ls;
ram_addr=ram_addr<<5;
uPD6453_16(0x86,ram_addr); /*顯示位置命令*/
uPD6453_16(0x90,0); /*顯示位置命令*/
for(i=0;i<32;i++)
{
DATA_P=hz_addr_ls+i;
hz_data_ls0=*DATA_P;
uPD6453_16(0x90,hz_data_ls0); /*顯示位置命令*/
i++;
}
uPD6453_16(0x90,0); /*顯示位置命令*/
uPD6453_16(0x87,ram_addr); /*顯示位置命令*/
uPD6453_16(0x90,0); /*顯示位置命令*/
for(i=0;i<32;i++)
{
i++;
DATA_P=hz_addr_ls+i;
hz_data_ls0=*DATA_P;
hz_data_ls1=hz_data_ls0>>4;
hz_data_ls1=hz_data_ls1+0x90;
hz_data_ls0=hz_data_ls0<<4;
uPD6453_16(hz_data_ls1,hz_data_ls0); /*顯示位置命令*/
}
uPD6453_16(0x90,0); /*顯示位置命令*/
}
/*******初始化CPU********/
void star_cpu()
{
UCHAR i;
UCHAR data_addr_ls0;
//ELC_ALC_CONT=0x3f;
ELC_ALC_CONT=0x7f;
P2=ELC_ALC_CONT & 0x7F;
BW=1;
MIRIS=0;
BLCOF=1;
MIRIS_SEL=0; /*0:DC;1:VIDEO*/
ALARM_OUT=1;
P2=0xFF;
//uPD6453_PCL=0;
uPD6453_CS=1;
EEROM_WP=1; /*AT24C02使能*/
TH2=0xFF; /*波特率為9600*/
TL2=0xBF;
RCAP2H=0xFF;
RCAP2L=0xBF;
T2CON=0x34; /*初始化定時器2*/
T2MOD=0x00;
/*TMOD=1 F5H=9600 20MHz*/
TH0=0xBE; /*設置定時器0為10ms晶振=20MHz*/
TL0=0xE5;
TH1=0xF9; /*設置定時器1為1ms晶振=20MHz*/
TL1=0x7D;
PCON=PCON | 0x80;
TMOD=0x11;
SCON=0x50; /*串口狀態設置方式1,8位數據*/
IP=0x01;
TCON=0x05; /*設外部中斷0,1為下降沿觸發*/
PSW=0x00;
DOG=!DOG;
IE=0x8A; /*外部中斷1關閉*/
TR0=0;
TR1=1;
//delay(100); /*延時*/
//uPD6453_PCL=1;
SYNC_DEC=1;
SYNC_INC=1;
uPD6453_DATA =1; /*uPD6453數據*/
uPD6453_CLK =1; /*uPD6453時鐘*/
/*******AT24C02控制***********/
EEROM_SCL=0; /*EEROM時鐘*/
EEROM_SDA=1; /*EEROM數據*/
EEROM_WP=0; /*AT24C02使能*/
/*STOP停止*/
EEROM_SDA=0;
delay(0);
EEROM_SCL=1;
delay(0);
EEROM_SDA=1;
delay(0);
EEROM_SCL=0;
delay(0);
EEROM_WP=1; /*AT24C02使能*/
data_addr_ls0=eerom_rd(DC_VIDEO_ADDR);
if(data_addr_ls0==0)
{
DC_VIDEO_OE=0;
MIRIS_SEL=1; /*0:DC;1:VIDEO*/
}
else {
DC_VIDEO_OE=1;
MIRIS_SEL=0; /*0:DC;1:VIDEO*/
}
data_addr_ls0=eerom_rd(ELC_ALC_CONT_ADDR);
if(data_addr_ls0>0x7f) ELC_ALC_CONT=2;
else ELC_ALC_CONT=data_addr_ls0;
P2=ELC_ALC_CONT & 0x7F;
/*******uPD6453GT初始化************/
uPD6453_8(0x34); /*復位*/
uPD6453_8(0x05); /*顯示控制命令(關)*/
uPD6453_8(0x30); /*放大倍數--正常*/
uPD6453_8(0x41); /*無背景勾邊*/
uPD6453_8(0x1E); /*黑背景勾黑邊*/
uPD6453_16(0x80,0xC7); /*顯示位置命令*/
clr_crt(); /*清屏*/
uPD6453_8(0x0D); /*顯示控制命令(開)*/
menu_esc_bz=0; /*菜單標志:1=菜單狀態;0=否*/
bitkey=0;
vactive=0;
dsbz=0;
keyval_ls=0xFF;
MENU_OE=0;
key_ud_bz=0;
key_lr_bz=0;
ley_lr_js=0;
menu_time_js=0;
}
void systme_csh()
{
UCHAR i;
eerom_byte_wr(COMP_55_ADDR1,0x55);
eerom_byte_wr(COMP_55_ADDR2,0x55);
eerom_byte_wr(COMP_AA_ADDR1,0xAA);
eerom_byte_wr(COMP_AA_ADDR2,0xAA);
eerom_byte_wr(CAM_ID_HZ_JS_ADDR,0);
cam_id_js=0;
for(i=0;i<16;i++)
{
eerom_byte_wr(i+BT_ADDR,'q');
bt_cam[i]='q';
}
bt_cam[16]=0;
bt_cam_x=3;
bt_cam_y=2;
eerom_byte_wr(BT_CAM_X_ADDR,bt_cam_x);
eerom_byte_wr(BT_CAM_Y_ADDR,bt_cam_y);
//bt_cam_xy_cl();
ALC_ELC_OE=1;
MIRIS=1;
eerom_byte_wr(ALC_ELC_ADDR,ALC_ELC_OE);
CAM_ID_OE=0;
eerom_byte_wr(CAM_ID_ADDR,CAM_ID_OE);
SHUTTER_OE=8;
eerom_byte_wr(SHUTTER_ADDR,SHUTTER_OE);
AGC_OE=1;
eerom_byte_wr(AGC_ADDR,AGC_OE);
AGCMAX=0;
SENS_UP_OE=0;
eerom_byte_wr(SENS_UP_ADDR,SENS_UP_OE);
LL_INT_OE=1;
eerom_byte_wr(LL_INT_ADDR,LL_INT_OE);
LL_INT=1;
ATW_AWC_OE=0;
eerom_byte_wr(ATW_AWC_ADDR,ATW_AWC_OE);
AWB2=1;
DET_OE=0;
eerom_byte_wr(DET_ADDR,DET_OE);
DC_VIDEO_OE=1;
eerom_byte_wr(DC_VIDEO_ADDR,DC_VIDEO_OE);
MIRIS_SEL=0; /*0:DC;1:VIDEO*/
BLCOF_OE=1;
eerom_byte_wr(BLCOF_ADDR,BLCOF_OE);
BLCOF=0;
//ELC_ALC_CONT=0x3f;
ELC_ALC_CONT=0x60;
P2=ELC_ALC_CONT & 0x7F;
eerom_byte_wr(ELC_ALC_CONT_ADDR,ELC_ALC_CONT);
COARSE_OE=0;
eerom_byte_wr(COARSE_ADDR,COARSE_OE);
FINE_OE=0;
eerom_byte_wr(FINE_ADDR,FINE_OE);
R_OE=4;
eerom_byte_wr(R_ADDR,R_OE);
B_OE=4;
eerom_byte_wr(B_ADDR,B_OE);
LEVEL_OE=8;
eerom_byte_wr(LEVEL_ADDR,LEVEL_OE);
ALARM_OE=0;
eerom_byte_wr(ALARM_ADDR,ALARM_OE);
BW_TIME_OE=1;
eerom_byte_wr(BW_TINE_ADDR,BW_TIME_OE);
BW_LEVEL_OE=0;
eerom_byte_wr(BW_LEVEL_ADDR,BW_LEVEL_OE);
UP_SIDE_DOWN_OE=0;
eerom_byte_wr(UP_SIDE_DOWN_ADDR,UP_SIDE_DOWN_OE);
CHROMA_GAIN_OE=4;
eerom_byte_wr(CHROMA_GAIN_ADDR,CHROMA_GAIN_OE);
AP_GAIN_OE=4;
eerom_byte_wr(AP_GAIN_ADDR,AP_GAIN_OE);
PEDESTAL_OE=1;
eerom_byte_wr(PEDESTAL_ADDR,PEDESTAL_OE);
BW_OE=0;
eerom_byte_wr(BW_ADDR,BW_OE);
BW=1;
BURST_OE=1;
eerom_byte_wr(BURST_ADDR,BURST_OE);
}
/*******初始化數據調出******/
void star_lcall()
{
UCHAR data_addr_ls0,data_addr_ls1,data_addr_ls2,data_addr_ls3;
data_addr_ls0=eerom_rd(COMP_55_ADDR1);
data_addr_ls1=eerom_rd(COMP_55_ADDR2);
data_addr_ls2=eerom_rd(COMP_AA_ADDR1);
data_addr_ls3=eerom_rd(COMP_AA_ADDR2);
/*判數據是否丟失*/
if((data_addr_ls0!=0x55)||(data_addr_ls1!=0x55)||(data_addr_ls2!=0xAA)||(data_addr_ls3!=0xAA))
{
systme_csh();
return;
}
data_addr_ls0=eerom_rd(CAM_ID_HZ_ADDR0);
chinese_data_cl(4,data_addr_ls0);
data_addr_ls0=eerom_rd(CAM_ID_HZ_ADDR1);
chinese_data_cl(5,data_addr_ls0);
data_addr_ls0=eerom_rd(CAM_ID_HZ_ADDR2);
chinese_data_cl(6,data_addr_ls0);
data_addr_ls0=eerom_rd(CAM_ID_HZ_ADDR3);
chinese_data_cl(7,data_addr_ls0);
data_addr_ls0=eerom_rd(CAM_ID_HZ_JS_ADDR);
cam_id_js=data_addr_ls0;
for(data_addr_ls0=0;data_addr_ls0<16;data_addr_ls0++)
{
data_addr_ls1=data_addr_ls0+BT_ADDR;
bt_cam[data_addr_ls0]=eerom_rd(data_addr_ls1);
if(bt_cam[data_addr_ls0]=='^') bt_cam[data_addr_ls0]='q';
}
bt_cam[16]=0;
bt_cam_x=eerom_rd(BT_CAM_X_ADDR);
bt_cam_y=eerom_rd(BT_CAM_Y_ADDR);
bt_cam_xy_cl();
data_addr_ls0=eerom_rd(CAM_ID_ADDR);
if(data_addr_ls0==0) CAM_ID_OE=0;
else CAM_ID_OE=1;
if(CAM_ID_OE==1) crtzf_ch(2,1,bt_cam,0);
else crtzf_ch(2,1,"qqqqqqqqqqqqqqqqqq",0);
data_addr_ls0=eerom_rd(SHUTTER_ADDR);
SHUTTER_OE=data_addr_ls0;
if(SHUTTER_OE>8) SHUTTER_OE=0;
data_addr_ls0=eerom_rd(ALC_ELC_ADDR);
if(data_addr_ls0==0)
{
ALC_ELC_OE=0;
MIRIS=0;
}
else {
ALC_ELC_OE=1;
SHUTTER_OE=8;
MIRIS=1;
}
data_addr_ls0=eerom_rd(AGC_ADDR);
if(data_addr_ls0>2) data_addr_ls0=0;
if(data_addr_ls0==0)
{
AGC_OE=0;
AGCMAX=1;
}
else {
AGC_OE=data_addr_ls0;
AGCMAX=0;
}
data_addr_ls0=eerom_rd(SENS_UP_ADDR);
SENS_UP_OE=data_addr_ls0;
if(SENS_UP_OE>11) SENS_UP_OE=0;
data_addr_ls0=eerom_rd(LL_INT_ADDR);
if(data_addr_ls0>3) data_addr_ls0=0;
if(data_addr_ls0==0)
{
LL_INT_OE=0;
LL_INT=0;
}
else
{
LL_INT=1;
}
data_addr_ls0=eerom_rd(ATW_AWC_ADDR);
ATW_AWC_OE=data_addr_ls0;
if(ATW_AWC_OE>2) ATW_AWC_OE=0;
if(ATW_AWC_OE==1) AWB2=0;
else AWB2=1;
data_addr_ls0=eerom_rd(DET_ADDR);
if(data_addr_ls0==0) DET_OE=0;
else DET_OE=1;
data_addr_ls0=eerom_rd(DC_VIDEO_ADDR);
if(data_addr_ls0==0)
{
DC_VIDEO_OE=0;
MIRIS_SEL=1; /*0:DC;1:VIDEO*/
}
else {
DC_VIDEO_OE=1;
MIRIS_SEL=0; /*0:DC;1:VIDEO*/
}
data_addr_ls0=eerom_rd(BLCOF_ADDR);
if(data_addr_ls0==0)
{
BLCOF_OE=0;
BLCOF=1;
}
else
{
BLCOF_OE=1;
BLCOF=0;
}
data_addr_ls0=eerom_rd(ELC_ALC_CONT_ADDR);
if(data_addr_ls0>0x7f) ELC_ALC_CONT=2;
else ELC_ALC_CONT=data_addr_ls0;
P2=ELC_ALC_CONT & 0x7F;
data_addr_ls0=eerom_rd(COARSE_ADDR);
if(data_addr_ls0>15) COARSE_OE=1;
else COARSE_OE=data_addr_ls0;
data_addr_ls0=eerom_rd(FINE_ADDR);
if(data_addr_ls0>8) FINE_OE=1;
else FINE_OE=data_addr_ls0;
data_addr_ls0=eerom_rd(R_ADDR);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -