📄 sh.c
字号:
#include <AT89X52.H>
#include <intrins.h>
sbit RS = P3^5;
sbit RW = P3^7;
sbit E = P3^6;
#define Lcd_Bus P2
unsigned char t_change=0;
unsigned char set_time[10][2],g_i,g_j;
unsigned char str4[4]="123",str3[3]="12";
unsigned char disp_buf[8],buf[8],show_i,tbuf1,tbuf2,tbuf3;
unsigned char keybyte,Ckey,Pkey,g_order,i_i,i_j;
unsigned int counter,Pkeytime;
bit show_time,run_time,Key_ok,Presskey_long,Pkey_long;
sbit T_CLK = P1^1; /*实时时钟时钟线引脚 */
sbit T_IO = P1^2; /*实时时钟数据线引脚 */
sbit T_RST = P1^3;
sbit ACC0 = ACC^0;
sbit ACC7 = ACC^7;
void int1(void) interrupt 0
{}
void int2(void) interrupt 2
{}
void int3(void) interrupt 3
{}
void int4(void) interrupt 4
{}
void v_RTInputByte(unsigned char ucDa) /* 发命令,数据 */
{
unsigned char i;
ACC = ucDa;
for(i=8; i>0; i--)
{
T_IO = ACC0;
T_CLK = 1;
T_CLK = 0;
ACC = ACC >> 1;
}
}
unsigned char uc_RTOutputByte(void) /* 收数据 */
{
unsigned char i;
for(i=8; i>0; i--)
{
ACC = ACC >>1;
ACC7 = T_IO;
T_CLK = 1;
T_CLK = 0;
}
return(ACC);
}
void v_W1302(unsigned char ucAddr,unsigned char ucDa)
{
T_RST = 0;
T_CLK = 0;
T_RST = 1;
v_RTInputByte(ucAddr); /* 地址,命令 */
v_RTInputByte(ucDa); /* 写1Byte数据*/
T_CLK = 1;
T_RST =0;
}
unsigned char uc_R1302(unsigned char ucAddr)
{
unsigned char ucDa;
T_RST = 0;
T_CLK = 0;
T_RST = 1;
v_RTInputByte(ucAddr); /* 地址,命令 */
ucDa = uc_RTOutputByte(); /* 读1Byte数据 */
T_CLK = 1;
T_RST =0;
return(ucDa);
}
void scan_disp_int(void) interrupt 1 using 0
{
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
/*===========键盘处理==============*/
P1=0xf0;
keybyte=P1;
keybyte=~keybyte;
keybyte=keybyte&0xf0;
if(keybyte){Pkeytime++;
Ckey=keybyte;
if(Pkeytime>10) { Key_ok=1; }
}
/*============计时处理=============
if(run_time)
{
tbuf3=uc_R1302(0x81);
tbuf2=uc_R1302(0x83);
tbuf1=uc_R1302(0x85);
} */
}
void delay(unsigned int t)
{ unsigned int i,j;
for (i=0;i<t;i++)
for(j=0;j<10;j++);
}
void write_data(unsigned char dispdata)
{ RS=1;
RW=0;
E=1;
Lcd_Bus=dispdata;
E=0;
delay(5);
}
void write_cmd(unsigned char cmdcode)
{ RS=0;
RW=0;
E =1;
Lcd_Bus=cmdcode;
E=0;
delay(5);
}
void lcdinit()
{ delay(2000);
write_cmd(0x30);
delay(10);
write_cmd(0x30);
delay(5);
write_cmd(0x0c);
delay(10);
write_cmd(0x01);
delay(500);
write_cmd(0x06);
delay(0);
}
void dispHZ(unsigned char * s)
{ while(*s>0)
{ write_data(*s);
s++;
delay(50);
}
}
unsigned char bit4_hex(unsigned bit4)
{
switch (bit4)
{ case 0: return(0x30);
case 1: return(0x31);
case 2: return(0x32);
case 3: return(0x33);
case 4: return(0x34);
case 5: return(0x35);
case 6: return(0x36);
case 7: return(0x37);
case 8: return(0x38);
case 9: return(0x39);
case 10: return(0x41);
case 11: return(0x42);
case 12: return(0x43);
case 13: return(0x44);
case 14: return(0x45);
case 15: return(0x46);
default : return(0x1);
}
}
void byte_hex2(unsigned char aa)
{
str3[0]=bit4_hex((aa>>4)&0x0F);
str3[1]=bit4_hex(aa&0x0F);
str3[2]=0;
}
void byte_bcd3(unsigned char bb)
{
str4[0]=bit4_hex(bb/100);
str4[1]=bit4_hex(((bb%100)/10));
str4[2]=bit4_hex(((bb%100)%10));
str4[3]=0;
}
void dispTest()
{ write_cmd(0x01);
delay(5);
write_cmd(0x81);
dispHZ("FXB co.,LTD.");
write_cmd(0x92);
dispHZ("风向标>>");
write_cmd(0x88);
dispHZ("科技有限公司研制");
write_cmd(0x98);
dispHZ("---- 2006.12.25");
Pkey=0;
while(Pkey==0){} Pkey=0;
// delay(30000);
// ==============================
write_cmd(0x01);
delay(5);
write_cmd(0x81);
dispHZ("大众安全气囊");
write_cmd(0x92);
dispHZ("复位仪");
write_cmd(0x89);
dispHZ("VW SRS TOOL");
write_cmd(0x98);
dispHZ("================");
Pkey=0;
while(Pkey==0){} Pkey=0;
//===============================
// delay(30000);
write_cmd(0x01);
delay(5);
write_cmd(0x81);
dispHZ("请选择功能:");
write_cmd(0x90);
dispHZ("1- 碰撞电脑复位");
write_cmd(0x88);
dispHZ("2- 清除故障代码");
write_cmd(0x98);
dispHZ("3- 扩展功能");
}
main()
{
show_i=1;
counter=0;
Pkey_long=0;
Pkey=0;
Key_ok=0;
show_time=1;
run_time=1;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
TMOD=1;
TR0=1;
ET0=1;
EA=1;
/*=====DS1302初始化=====2005-05-10==*/
tbuf1=uc_R1302(0x81);
tbuf1=tbuf1&0x7f;
v_W1302(0x8e,0);
v_W1302(0x80,tbuf1);
v_W1302(0x8e,0x80);
lcdinit();
delay(10);
if (Pkey!=0){ Pkey=0;
write_cmd(0x01);
delay(5);
write_cmd(0x80);
dispHZ(" SRS 复位仪 ");
write_cmd(0x90);
dispHZ("软件版本 Ver0.8 ");
write_cmd(0x88);
dispHZ("软件编写: 许曦 ");
write_cmd(0x98);
dispHZ("2006年12月风向标");
delay(60000);
}
//write_cmd(0x30);
dispTest();
/* while(Pkey==0)
{
P0_6=0;
delay(1000);
P0_6=1;
delay(1000);
}
Pkey=0; */
//write_cmd(0x34);
i_i=0;
i_j=0;
P1_0=1;
while(1)
{ if(Pkey!=0){ Pkey=0;
//write_cmd(0x04);
ACC=(i_j<<6)+(i_i);
P0=ACC;
t_change=ACC;
//P0=0x85;
byte_hex2(t_change);
write_cmd(0x90);
dispHZ(str3);
byte_bcd3(i_i);
write_cmd(0x88);
dispHZ(str4);
byte_bcd3(i_j);
write_cmd(0x98);
dispHZ(str4);
P1_0=0;
i_j++;
if(i_j>3)i_j=0;
if (i_i>21){i_i=0; P1_0=0;}
if (i_j==0)i_i++;
}
/* if(Pkey==2){ Pkey=0;
P0_6=0;
delay(1000);
P0_6=1;
write_cmd(0x05);
}
if(Pkey==3){ Pkey=0;
P0_6=0;
delay(1000);
P0_6=1;
write_cmd(0x06);
}
if(Pkey==4){ Pkey=0;
P0_6=0;
delay(1000);
P0_6=1;
write_cmd(0x07);
} */
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -