📄 t.c
字号:
#include"intrins.h"
#include<reg51.h>
#define uchar unsigned char
sbit dq=P1^5;
sbit key_clk=P3^2;
sbit key_data=P3^7;
uchar key=0;
uchar keycounter=0;
uchar counter1=0;
uchar xdata alarmflag[3][11]={0};
sbit D_I = P2^0;
sbit R_W = P2^1;
sbit E = P2^6;
sbit CS1 = P2^4;
sbit CS2 = P2^3;
sbit RST = P2^2;
uchar ROMnumber[3][8]={0};
uchar THL[2][3]={
25,50,60,
8, 30,25,};
uchar temper[2][3]={0};
uchar temper1[2][3]={0};
uchar rodcounter=0;
uchar flag[3]={1};
sbit t_clk=P2^5;
sbit t_io=P2^6;
sbit t_rst=P3^7;
sbit bit7=ACC^7;
sbit bit0=ACC^0;
uchar time[14];
uchar settime[7]={0x30,0x12,0x12,0x21,0x02,0x01,0x05};
uchar code number[10][16]={
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,//-----0
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,//------1
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,//------2
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,//------3
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,//------4
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,//-------5
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,//-------6
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,//-------7
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,//-------8
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,//-------9
};//-------------------------------------------0~9 10个数字
uchar code number2[10][16]={
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x80,0x8F,0x90,0xA0,0xA0,0x90,0x8F,0x80,
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x80,0xA0,0xA0,0xBF,0xA0,0xA0,0x80,0x80,
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x80,0xB0,0xA8,0xA4,0xA2,0xA1,0xB0,0x80,
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x80,0x98,0xA0,0xA0,0xA0,0x91,0x8E,0x80,
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x80,0x87,0x84,0xA4,0xA4,0xBF,0xA4,0x80,
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x80,0x99,0xA1,0xA0,0xA0,0x91,0x8E,0x80,
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x80,0x8F,0x91,0xA0,0xA0,0x91,0x8E,0x80,
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x80,0x80,0x80,0xBF,0x80,0x80,0x80,0x80,
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x80,0x9C,0xA2,0xA1,0xA1,0xA2,0x9C,0x80,
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x80,0x80,0xB1,0xA2,0xA2,0x91,0x8F,0x80,
};// 带下划线的0--9//
uchar code set[34][16]={
0x40,0x41,0xCE,0x04,0x00,0x80,0x40,0xBE,0x82,0x82,0x82,0xBE,0xC0,0x40,0x40,0x00,
0x00,0x00,0x7F,0x20,0x90,0x80,0x40,0x43,0x2C,0x10,0x10,0x2C,0x43,0xC0,0x40,0x00,//设
0x00,0x20,0x2F,0xA9,0xA9,0xAF,0xE9,0xB9,0xA9,0xAF,0xA9,0xA9,0x2F,0x20,0x00,0x00,
0x80,0x80,0x80,0xFF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,0x80,0x80,0x80,0x00,//置
0x00,0xFC,0x44,0x44,0x44,0xFC,0x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x10,0x00,
0x00,0x07,0x04,0x04,0x04,0x07,0x00,0x00,0x03,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,//时
0x00,0xF8,0x01,0x06,0x00,0xF0,0x92,0x92,0x92,0x92,0xF2,0x02,0x02,0xFE,0x00,0x00,
0x00,0xFF,0x00,0x00,0x00,0x07,0x04,0x04,0x04,0x04,0x07,0x40,0x80,0x7F,0x00,0x00,//间
0x00,0x00,0x00,0xBE,0x2A,0x2A,0x2A,0xEA,0x2A,0x2A,0x2A,0x2A,0x3E,0x00,0x00,0x00,
0x00,0x48,0x46,0x41,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x49,0x49,0x41,0x40,0x00,//星
0x00,0x04,0xFF,0x54,0x54,0x54,0xFF,0x04,0x00,0xFE,0x22,0x22,0x22,0xFE,0x00,0x00,
0x42,0x22,0x1B,0x02,0x02,0x0A,0x33,0x62,0x18,0x07,0x02,0x22,0x42,0x3F,0x00,0x00,//期
0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//一
0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x00,
0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x10,0x00,//二
0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x04,0x00,0x00,
0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,//三
0x00,0xFE,0x02,0x02,0x02,0xFE,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,
0x00,0x7F,0x28,0x24,0x23,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x22,0x7F,0x00,0x00,//四
0x00,0x02,0x82,0x82,0x82,0x82,0xFE,0x82,0x82,0x82,0xC2,0x82,0x02,0x00,0x00,0x00,
0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x30,0x20,0x00,//五
0x10,0x10,0x10,0x10,0x10,0x91,0x12,0x1E,0x94,0x10,0x10,0x10,0x10,0x10,0x10,0x00,
0x00,0x40,0x20,0x10,0x0C,0x03,0x01,0x00,0x00,0x01,0x02,0x0C,0x78,0x30,0x00,0x00,//六
0x00,0x00,0x00,0xFE,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x00,//日
0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,//T
0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,//H
0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,//L
0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,//?
0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,//+
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,//- ∴
0x08,0x14,0xC8,0x20,0x10,0x10,0x30,0x00,0x00,0x00,0x07,0x08,0x10,0x10,0x18,0x08,//℃
0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,//:
};
uchar code flag_HL[3][16]={
0x00,0x10,0x18,0xFC,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,//上
0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x04,0x0C,0x1F,0x0C,0x04,0x00,0x00,//下
0x00,0x00,0x00,0x00,0xC0,0x80,0x00,0x00,0x01,0x01,0x01,0x01,0x07,0x03,0x01,0x00,//左
};
uchar code NO[3][16]={
0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,
0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,
};
uchar code temperw[19][16]={
0x10,0x21,0x86,0x70,0x00,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,0x00,
0x02,0xFE,0x01,0x40,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x41,0x41,0x7F,0x40,0x00,//温
0x00,0x00,0xFC,0x04,0x24,0x24,0xFC,0xA5,0xA6,0xA4,0xFC,0x24,0x24,0x24,0x04,0x00,
0x80,0x60,0x1F,0x80,0x80,0x42,0x46,0x2A,0x12,0x12,0x2A,0x26,0x42,0xC0,0x40,0x00,//度
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x40,0x40,0x40,0x40,0x40,0x00,0x00,0x00,
0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x60,0x40,0x00,//上
0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x22,0x62,0xC2,0x82,0x02,0x03,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,//下
0xFE,0x02,0x32,0x4E,0x82,0x00,0xFE,0x4A,0xCA,0x4A,0x4A,0x4A,0x7E,0x00,0x00,0x00,
0xFF,0x00,0x02,0x04,0x03,0x00,0xFF,0x40,0x20,0x03,0x0C,0x12,0x21,0x60,0x20,0x00,//限
0x44,0xF4,0x4F,0xE4,0x44,0x64,0x90,0x98,0x94,0x93,0x14,0x98,0x08,0xD0,0x10,0x00,
0x04,0x04,0x04,0xFF,0x02,0x02,0xFF,0x4A,0x8A,0x7F,0x00,0x3F,0x80,0xFF,0x00,0x00,//输
0x00,0x00,0x00,0x00,0x01,0x83,0x76,0x18,0x60,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x40,0x20,0x10,0x08,0x06,0x01,0x00,0x00,0x00,0x00,0x03,0x04,0x18,0x30,0x10,0x00,//入
0x00,0x7E,0x22,0xE2,0x3E,0x20,0x10,0x08,0x0F,0xB4,0x44,0xA4,0x9C,0x04,0x00,0x00,
0x20,0x3F,0x20,0x1F,0x11,0x11,0x02,0x7F,0x23,0x22,0x22,0x22,0x7E,0x03,0x01,0x00,//路
0x10,0x92,0x54,0x38,0xFF,0x38,0x54,0x52,0x80,0xF0,0x1F,0x12,0x10,0xF0,0x10,0x00,
0x42,0x42,0x2A,0x2E,0x13,0x1A,0x26,0x02,0x40,0x20,0x13,0x0C,0x33,0x60,0x20,0x00,//数
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,//_
};
uchar code alarmw[][16]={
/*-- 文字: 无 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x00,0x40,0x42,0x42,0x42,0x42,0x42,0xFE,0xC2,0x42,0x42,0x42,0x42,0x42,0x40,0x00,
0x40,0x40,0x20,0x10,0x08,0x04,0x03,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x70,0x00,
/*-- 文字: 记 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x40,0x41,0x4E,0xC4,0x00,0x00,0x00,0xC2,0x42,0x42,0x42,0x42,0x42,0x7E,0x00,0x00,
0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x3F,0x40,0x40,0x40,0x40,0x40,0x78,0x20,0x00,
/*-- 文字: 录 --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/
0x20,0x20,0x22,0xAA,0x2A,0x2A,0x2A,0xEA,0x2A,0x2A,0xAA,0xFE,0x20,0x20,0x20,0x00,
0x00,0x10,0x30,0x10,0x09,0x4A,0x84,0x7F,0x02,0x05,0x08,0x18,0x30,0x10,0x00,0x00,
/*-- 文字: ! --*/
/*-- 宋体12; 此字体下对应的点阵为:宽x高=8x16 --*/
0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,
};
void delay(void)//延时函数
{unsigned char k=0x0f;unsigned char l=0x0f;
while(l>0)
{l--;while(k>0)k--;
}
}
void delay1(void)//延时函数
{unsigned char k=0xff;unsigned char l=0xff;
while(l>0)
{l--;while(k>0)k--;
}
k=0xff; l=0xff;
while(l>0)
{l--;while(k>0)k--;
}
}
void lcdwrite_cmd(unsigned char cmd)
{D_I=0;R_W=0;delay();P0=cmd;E=0;delay();E=1;delay();E=0;delay();}
void lcdwrite_dat(unsigned char dat)
{D_I=1;R_W=0;delay();P0=dat;E=0;delay();E=1;delay();E=0;delay();}
void lcddispon(void)
{delay();CS1=0;CS2=1;lcdwrite_cmd(0x3f);
delay();CS1=1;CS2=0;lcdwrite_cmd(0x3f);}
void lcdclrall(void) // 清屏 全
{unsigned char i,j;
for(i=0;i<8;i++)
{CS1=0;CS2=1;lcdwrite_cmd(0xb8+i);lcdwrite_cmd(0x40);for(j=64;j>0;j--)lcdwrite_dat(0x00);
CS1=1;CS2=0;lcdwrite_cmd(0xb8+i);lcdwrite_cmd(0x40);for(j=64;j>0;j--)lcdwrite_dat(0x00);
}}
void lcdclrlift(void) // 清屏 左
{uchar i,j;
for(i=0;i<8;i++)
{CS1=0;CS2=1;lcdwrite_cmd(0xb8+i);lcdwrite_cmd(0x40);for(j=64;j>0;j--)lcdwrite_dat(0x00);
}}
void lcdclrright(void) // 清屏 右
{uchar i,j;
for(i=0;i<8;i++)
{CS1=1;CS2=0;lcdwrite_cmd(0xb8+i);lcdwrite_cmd(0x40);for(j=64;j>0;j--)lcdwrite_dat(0x00);
}}
void lcdinit(void)
{
CS1=0;CS2=1;lcdwrite_cmd(0xc0);//从0行开始显示
CS1=1;CS2=0;lcdwrite_cmd(0xc0);
}
void display(uchar *p)
{uchar i;uchar ch;
for(i=0;i<8;i++)
{ch=*p;p++;lcdwrite_dat(ch);}
}
//*************************************************18b20程序***************************************************//
void delay750ms()
{
uchar i,j,k;
for(i=0;i<6;i++){
for(j=0;j<250;j++){
for(k=0;k<250;k++);
}}}
void delay100ms()
{
uchar i,j,k;
for(i=0;i<8;i++){
for(j=0;j<25;j++){
for(k=0;k<250;k++);
}}}
void delay15us()
{
uchar i;
for(i=0;i<8;i++){};
}
void delay60us()
{
uchar i;
for(i=0;i<30;i++){};
}
void reset() //复位//
{
uchar i;
dq=1;
dq=0;
for(i=0;i<9;i++)
delay60us();
dq=1;
while(dq){};
for(i=0;i<8;i++)
delay60us();
}
void write0()
{
dq=1;
dq=0;
delay60us();
dq=1;
}
void write1()
{
dq=1;
dq=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
dq=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
delay15us();
delay15us();
delay15us();
}
bit read()
{
bit b;
dq=1;
dq=0;
_nop_();
_nop_();
_nop_();
_nop_();
dq=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
b=dq;
delay15us();
delay15us();
delay15us();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
return(b);
}
void writeB(uchar byte)
{
uchar i;
for(i=0;i<8;i++)
{
if(byte&0x01)
write1();
else
write0();
byte=byte>>1;
}
}
uchar readB()
{
uchar i,j;
bit b;
j=0;
for(i=0;i<8;i++)
{
b=read();
if(b)
j+=1;
j=_cror_(j,1);
}
return j;
}
void searchROM() //search ROM
{
uchar i,k=0,h;
char j;
bit m,n;
for(counter1=0;counter1<3;counter1++ )
{
reset();
writeB(0xf0);
for(j=7;j>=0;j--)
{
for(i=8;i>0;i--)
{
m=read();
n=read();
if(m!=n)
{
ROMnumber[counter1][j]=ROMnumber[counter1][j]>>1;
if(m){ROMnumber[counter1][j]=ROMnumber[counter1][j]|0x80;write1();}
else write0();
}
else
{
ROMnumber[counter1][j]=ROMnumber[counter1][j]>>1;
if (k==0){write1();ROMnumber[counter1][j]=ROMnumber[counter1][j]|0x80;}
else if(k==1)write0();
else if(k==2)write0();
else if(k==3){if(h==1)write0();else {write1();ROMnumber[counter1][j]=ROMnumber[counter1][j]|0x80;}}
else if(k==4){write1();ROMnumber[counter1][j]=ROMnumber[counter1][j]|0x80;}
k++;
}
}
}
if(counter1==0)h=k;
}
}
void martchROM(uchar i)
{
char j;
writeB(0x55);
for( j=7;j>=0;j--)
writeB(ROMnumber[i][j]);
}
void init()//初始化//
{
uchar i;
for(i=0;i<3;i++)
{ reset();
martchROM(i);
//writeB(0xcc);
writeB(0x4e);
writeB(THL[0][i]);
writeB(THL[1][i]);
writeB(0x7f);
writeB(0x48);
}
}
void gettemper(uchar i) //读取温度//
{ key_clk=0;
reset();
martchROM(i);
//writeB(0xcc);
writeB(0x44);
delay750ms();
reset();
martchROM(i);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -