📄 7219.c
字号:
set_flag2 = True;
if (set_time2 >= 90) continue;
delay3(5);
sound(False,1);
set_time2++;
count = 0;
}
if (Time_subb == False)
{
Led_count = 0;
LED = True;
set_flag2 = True;
if (set_time2 == 0) continue;
delay3(5);
sound(False,1);
set_time2--;
count = 0;
}
}while (Precontract);
delay3(10);
do { Watch(); }
while (!Precontract);
Set_flag = 0;
Precontract_lamp = True;
Setup_lamp = True;
system_count = 0;
}
continue;
}
if ((set_time2>0) && !Set_flag) /* 预设时间 */
{
Hot_up = True;
Watch();
now_time = set_time2 - V_ml/60;
if (now_time == 0) { TR0 = False; V_ml = 0; set_time2 = 0; Precontract_lamp = True; sound(False,3); continue;}
TR0 = True;
Precontract_lamp = False;
temperature(CF);
disp(now_temper,1); disp(now_time,0);
continue;
}
if ((set_time>0) && !Set_flag) /* 加热时间 */
{
Watch();
now_time = set_time - V_ml/60;
if (now_time == 0) { Hot_up = True; TR0 =False; V_ml = 0; set_time = 0; sound(False,3);}
temperature(CF);
if (now_temper < set_temper)
{
Hot_up = False; TR0 = True; Over = False;
}
else
{
Hot_up = True;
TR0 = False;
if (!Over)
{
Over = True;
Over_count = 0;
}
if (Over_count >= 20)
{
_nop_();
}
else {Over_count++; sound(False,1);}
}
disp(now_temper,1); disp(now_time,0);
continue;
}
temperature(CF);
now_time = set_time - V_ml/60;
if (now_time == 0) {Hot_up = 1; TR0 = 0;}
disp(now_temper,1); disp(now_time,0);
}
}
/********定时1ms***********/
void delay3(uint Tm_count)
{
uint i;
while (Tm_count--)
{
Watch();
for (i=0; i<125; i++) {};
}
}
/******************/
/*产生输液量的定时*/
/******************/
void Time_0(void) interrupt 1
{
static uchar count;
TR0 = 0;
EA = 0;
TH0 = TH0_T;
TL0 = TL0_T;
if (count >= 13)
{
V_ml++;
count = 0;
_nop_();
_nop_();
}
else count++;
EA = 1;
TR0 = 1;
}
/****************************************/
/*************向计算机发数据*************/
/****************************************/
/*********************************************/
/*************Dalls(18B20)********************/
/*********************************************/
/* C_f=1 华氏,C_f=0 摄氏 */
void temperature(bit C_f)
{
tmstart();
delay3(100);
Max7219_int();
now_temper = read_temper(C_f);
}
/**************************/
bit tmreset(void)
{
uint i;
uchar j;
EA = 0;
TMDAT = 0;
i = 103; while (i>0) i--;
TMDAT =1;
i = 4; while (i>0) i--;
for (j=0xff; j>0; j--)
{
if (~TMDAT) break;
}
EA = 1;
if (j == 0) return(1); /* 无温度检测无件 */
return (0);
}
/***************************/
uchar readbyte(void)
{
uint i;
uchar k,j,dat = 0;
EA = 0;
for (k=1; k<=8; k++)
{
TMDAT = 0; i++;
TMDAT = 1; i++; i++;
j = TMDAT;
i = 8;while (i>0) i--;
dat = (j << 7)|(dat >> 1);
}
EA = 1;
return(dat);
}
/****************************/
void writebyte(uchar dat)
{
uint i;
uchar j;
bit testb;
EA = 0;
for (j=1; j<=8; j++)
{
testb = dat&0x01;
dat = dat >> 1;
if (testb)
{
TMDAT = 0;
i++; i++;
TMDAT = 1;
i = 8; while (i>0) i--;
}
else {
TMDAT = 0;
i = 8; while (i>0) i--;
TMDAT = 1;
i++; i++;
}
}
EA = 1;
}
/*******************************/
void tmstart (void)
{
bit flag_1;
do
{
flag_1 = tmreset();
if (flag_1) {sound(True,1);delay3(100);}
} while (flag_1);
delay3(1);
writebyte(0xcc);
writebyte(0x44);
}
uchar read_temper(bit C_F)
{
uchar a,b,y1,y2,y3;
uint i = 0;
tmreset();
delay3(1);
writebyte(0xcc);
writebyte(0xbe);
a = readbyte(); //LSB
b = readbyte(); //MSB
//*********************
if (C_F)
{
AD = a;
AD <<= 4;
if (AD_7) i = 50 ;
AD <<= 1;
if (AD_7) i= i + 25;
y1 = a >> 4;
y2 = b << 4;
y3 = y1 | y2;
y1 = (i * 9) / 100;
i = y3;
y3 = (i * 9 + y1)/5+32;
}
else
{
y1 = a >> 4;
y2 = b << 4;
y3 = y1 | y2;
}
disp(y3,1);
return (y3);
}
/***************************
id = True; 为温度
***************************/
void disp(uchar y3,bit id)
{
uchar a;
a = y3/100;
if (a == 0)
{
if (id) Max7219_send(2,0x0f);
a = y3%100;
}
else
{
if (id) Max7219_send(2, a);
a = y3%100;
}
if (id)
{
y3 = 4;
Max7219_send(4, a/0x0a);
Max7219_send(3, a%0x0a);
}
else
{
if (y3 > 99)
{
y3 = 1;
Max7219_send(5, 0x0a);
Max7219_send(1, 0x0a);
}
else
{
y3 = 1;
Max7219_send(5, a/0x0a);
Max7219_send(1, a%0x0a);
}
}
}
/************ Max7219 ************************/
void Max7219_send(uchar add, uchar dat)
{
uchar ADS,i,j;
M7219_cs = 0;
M7219_clock = 1;
i = 0;
while (i < 16)
{
if (i < 8)
{
ADS = add;
}
else ADS = dat;
for (j=8; j>=1; j--)
{
M7219_in = ADS & 0x80;
ADS = ADS << 1;
M7219_clock = 1;
_nop_(); _nop_();
M7219_clock = 0;
_nop_(); _nop_();
}
i = i + 8;
}
M7219_cs = 1;
}
void Max7219_int(void)
{
Max7219_send(0x0c, 0x01); /* 电源模式为正常方式 */
Max7219_send(0x0b, 0x07); /* 扫描界限设置 */
Max7219_send(0x0a, 0xfe); /* 亮度设置 */
Max7219_send(0x09, 0xff); /* 十进制模式 */
}
void sound(bit f,uchar i)
{
for (;i>0;i--)
{
Speak = False;
if (f) delay3(100); else delay3(50);
Speak = True;
if (i>0) delay3(50);
}
}
void Watch(void)
{
WDTRST = 0x1e;
WDTRST = 0xe1;
}
void delay(uchar i)
{
while (i > 0)
{
i--;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -