- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define unit unsigned int
-
- #include"1602.h"
- #include"DS18B20.h"
-
- //#include<485.h>
- sbit warning=P3^6;
- sbit yellowled=P3^7;//
- //uchar flag1; //sign of the result positive or negative
- uncharj;
- int temper[4];
- uchar code str4_sht11[]="max:min:";
- sbit k1=P2^5;//set
- sbit k2=P2^6;//+
- sbit k3=P2^7;//-
- sbit sound=P3^5;
- char max=35;
- char min=15;
- uchar change_flag;
- uchar flag;
- void delay1(unit count)//delay1
- {
- unit i;
- while (count)
- {i=200;
- while(i>0)
- i--;
- count--;
- }
- }
- void serial_int()
- {
- TMOD=0X01;//t1
- TH0=0xF0;//2400bit/s
- TL0=0x0F;
- TR0=1;
- ET0=0;
- }
- void timer_isr()interrupt 1
- {TH0=0xF0;
- TL0=0x0F;
- sound=~sound;
- }
- void key1()
- {
- if(k1==0)
- {
- change_flag++;
- if(change_flag>2)
- change_flag=0;
- }
- while(k1==0);
- }
- void key2()
- {
- if(k2==0)
- {
- if(change_flag==1)
- max++;
- if(change_flag==2)
- min++;
- }
- while(k2==0);
- }
- void key3()
- {if(k3==0)
- {
- if(change_flag==1)
- max--;
- if(change_flag==2)
- min--;
- }
- while(k3==0);
- }
- void key()
- {
- key1();
- key2();
- key3();
- }
- void main()
- {
- uchar i,a=1,b=1 ;
- warning=0;
- serial_int();
- yellowled=1;
- 1602_init();
- for(i=0;i<4;i++)
- {
- tmpchange(i);
- temper[i]=tmp(i);
- }
- dispay_1602();
- while(1)
- {if(change_flag==0)
- {if(a==1)
- {b=1;
- a=0;
- write_lcdcom(0*01);
- dispaly_1602();
- }
- tmpchange(j);
- for(i=0;i<100;i++)
- {
- key();
- temper[j]=tmp(j);
- lcd_printf(j,temper[j],0*cd);
- }
- j++;
- if(j>3)
- j=0;
- if(((temper[j]>max)||(temper[j]<min))&&(temper[j]<850))
- {
- warningyellowled=0;
- RST=1;}
- else
- {
- RST=0;
- waring=0;
- yellowled=1;
- }}
- else
- {
- key();
- if(b==1)
- {
- a=1;
- b=0;
- write_lcdcom(0*01);
- write_lcdcom(0*80);
- for(i=0;i<32;i++)
- {
- write_lcddate(str4_sht11[i]);
-
- }
- }
- else
- lcd_set(max,min);
- }
- }
- }
- 为啥1.c(97): error C141: syntax error near '_init', expected ';'30);
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define unit unsigned int
- sbit lcdrs=P2^0;
- sbit lcdrw=P2^1;
- sbit lcden=P2^2;
- uchar code str1[]={0x10,0x06,0x09,0x08,0x09,0x08,0x06,0x00};
- uchar code str6_sht11[]="The present temp is";
- //uchar code str4_sht11[]="max: min:";
- //uchar code str2_sht11[]="temp=";
- uchar code str7_shtll[]="NO. ";
- uchar change_flag;
- void delay_1602(unit delay_time)//
- {
- for (delay_time>0;delay_time--);
- }
- void write_lcdcom(uchar date)//
- {
- lcdrw=0;
- lcdrs=0;
- delay_4602(5);
- P0=date;
- lcden=1;
- delay_1602(5);
- lcden=0;
- }
- void write_lcddate(uchar lcddate)
- {
- lcdrw=0;
- lcdrs=1;
- delay_1602(5);
- P0=lcddate;
- lcden=1;
- delay_1602(5);
- lcden=0;
- }
- void lcd_init()
- {
- write_lcdcom(0x38);
- //write_lcdcom(0x38);
- //write_lcdcom(0x38);
- write_lcdcom(0x06);
- write_lcdcom(0x0c);
- write_lcdcom(0x01);
- }
- void display_1602()
- {
- uchar i;
- lcdrw=0;
- lcdrs=0;
- lcden=0;
- delay_1602(10);
- write_lcdcom(0x80);
- /**/for(i=0;i<32,i++)
- {
- write_lcddate(str6_shtll[i]);
- }
- delay_1602(10);
- write_lcdcom(0xc0);
- for(i=0;i<32;i++)
- {
- write_lcddate(str7_sht11[i]);
- }
- lcdrw=1;
- lcdrs=1;
- lcden=1;
- }
- void lcd_printf(uchar number,unit x,uchar add)
- {
- uchar x1,x2,x3,x4;
- x1=x/1000;
- x2=x%1000/100;
- x3=x%100/10;
- x4=x%10;
- write_lcdcom(0xc4);
- write_lcddate(number+0x30);
- write_lcdcom(0xca);
- if(flag==1)
- write_lcddate('-');
- else
- write_lcddate('');
- write_lcdcom(add);
- write_lcdcom(x1+0x30);
- write_lcddate(x2+0x30);
- write_lcddate('.');
- write_lcddate(x4+0x30);
- write_lcddate('');
- write-lcddate('C');
- }
- void lcd_set(char max,char min)
- {
- uchar x1,x2,x3,x4;
- uchar flag_max,flag_min;
- if(max<0)
- {
- flag_max=1;
- max=-max;
- }
- else
- flag_max=0;
- if(min<0)
- {
- flag_min=1;
- min=-min;
- }
- else
- flag_min=0;
- x1=max/10;
- x2=max%10;
- x3=min/10;
- x4=min%10;
- write_lcdcom(0xc4);
- if(flag_max==1)
- write_lcddate('-')
- write_lcddate(x1+0x30);
- write_lcddate(x2+0x30);
- write_lcdcom(0xD0);
- if(flag_min==1)
- write_lcddate('-');
- write_lcddate(x3+0x30);
- write_lcddate(x4+0x30);
- }
- lcd.c(16): error C141: syntax error near ')', expected ';'
- #include<reg52.h>
- #include<intrins.h>
- /*
- sbitDs1=P1^0;
- sbitDs2=P1^1;
- sbitDs3=P1^2;
- sbitDs4=P1^3;
- sbitDs5=P1^4;
- sbitDs6=P1^5;
- */
- #define BIT1(x)(1<<x)
- #define DS P1
- #define NBIT1(x)~BIT1(x)
- uchar flag;
- void delay (uint count) //delay
- {
- uint i;
- while(count)
- {i=200
- while(i>0)
- i--;
- count--;
- }
- }
- uchar NO_number;
- void dsreset(uchar m)
- {
- uint i;
- DS&=NBIT1(m);
- i=103;
- while(i>0)i--;//>480us,reset
- DS|=BIT1(m);//keep free
- i=4;
- while(i>0)i--;
- }
- bit tmpreadbit(uchar m) //read a bit
- {uint i;
- bit dat;
- DS&=NBIT(m);i++;
- DS|=BIT1(m);
- //a=DS;
- i++;i++;
- if(DS&BIT1(m))
- dat=1;
- else
- dat=0;
- i=8;while(i>0)i--;
- return(dat);
- }
- uchar tmpread(uchar m)
- {uchar i,j,dat;
- dat=0;
- for(i=1;i<=8;i++)
- {
- j=tmperadbit(m);
- dat=(j<<7)|(dat>>1);}
- return(dat);
- }
- void tmpwritebyte(uchar dat,uchar m)
- {uint i;
- uchar j;
- bit testb;
- for(j=1;j<=8;j++)
- {
- testb=dat&0x01;
- dat=dat>>1;
- if(testb)//
- {DS&=NBIT1(m);
- i++;i++
- }
- }
- }
- void tmpchange(uchar m)
- {
- dsreset(m);
- delay(1);
- tempwritebyte(0xcc,m);
- tempwritebyte(0x44,m);
- }
- uint; tmp(uchar m)
- {
- float tt;
- uchar a,b;
- int temp;
- dsreset(m);
- delay(1);
- tempwritebyte(0xcc,m);
- tempwritebyte(0xbe,m);
- a=tmpread(m);
- b=tmpread(m);
- temp=b;
- temp<<=8;
- temp=temp|a;
- if(b>0xf8)
- {flag=1;
- temp=~temp+1;
- }
- else
- flag=0;
- tt=temp*0.0625;
- temp=tt*10=+0.5;
- return temp;
- }
复制代码 |