|
50黑币
先上程序
#include<reg52.h>
#include <intrins.h>
#include "LCD1602.h"
sbit RX = P3^3;
sbit TX = P3^2;
sbit LED = P1^3;
sbit SPEAK = P1^0;
sbit Motor = P1^7;
unsigned int time=0;
unsigned int timer=0;
unsigned int S=0;
unsigned int SET_H=2000,SET_L=100;
bit flag =0;
unsigned char Table[5],Table1[5];
unsigned char KEY_flag=0;
//?????
void Delay_ms(int jj)
{
int ii;
while(jj--)
for(ii=0;ii<116;ii++);
}
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.87)/10;
if((S>=7000)||flag==1)
{
flag=0;
}
else
{
Table1[0]= S/1000+0X30;
Table1[1]= S/100%10+0X30;
Table1[2]= S/10%10+0X30;
Table1[3]= '.';
Table1[4]= S%10+0X30;
LCD1602_Disp_ZF(0x88,Table1,5);
}
}
void main(void)
{
LCD1602_init();
////////////////
LCD1602_Disp_ZF(0x80," Now S: CM ",16);
LCD1602_Disp_ZF(0x80+0X40,"Set H L ",16);
TMOD=0x11;
TH0=0;
TL0=0;
TH1=0xf8;
TL1=0x30;
ET0=1;
ET1=1;
TR1=1;
EA=1;
EA=0;
EA=1;
while(1)
{
while(!RX);
TR0=1;
while(RX);
TR0=0;
Conut();
/////////////////////////////////////
if((S>SET_H)||(S<SET_L))
{
LED=0;SPEAK=0;
}
else
{
LED=1;SPEAK=1;
}
////////////////////////////////
if((S>SET_H))
{
Motor=0;
}
else
{
Motor=1;
}
Table[0]= SET_H/1000+0X30;
Table[1]= SET_H/100%10+0X30;
Table[2]= SET_H/10%10+0X30;
Table[3]= '.';
Table[4]= SET_H%10+0X30;
LCD1602_Disp_ZF(0x85+0x40,Table,5);
Table[0]= SET_L/1000+0X30;
Table[1]= SET_L/100%10+0X30;
Table[2]= SET_L/10%10+0X30;
Table[3]= '.';
Table[4]= SET_L%10+0X30;
LCD1602_Disp_ZF(0x8b+0x40,Table,5);
}
}
#include "LCD1602.h"
void delay_50us_1602(unsigned int t)
{
unsigned char j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
void LCD1602_write_com(unsigned char com)
{
LCD1602_E = 0;
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_Data= com;
delay_50us_1602(10);
LCD1602_E = 1;
delay_50us_1602(20);
LCD1602_E = 0;
}
void LCD1602_write_data(unsigned int dat)
{
LCD1602_E = 0;
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_Data = dat;
delay_50us_1602(10);
LCD1602_E = 1;
delay_50us_1602(20);
LCD1602_E = 0;
}
void LCD1602_init(void)
{
delay_50us_1602(300);
LCD1602_write_com(0X38);
delay_50us_1602(100);
LCD1602_write_com(0X38);
delay_50us_1602(100);
LCD1602_write_com(0X38);
LCD1602_write_com(0X38);
LCD1602_write_com(0X08);
LCD1602_write_com(0X01);
LCD1602_write_com(0X06);
LCD1602_write_com(0X0C);
}
void LCD1602_Disp_ZF(unsigned char addr,const unsigned char * pt,unsigned char num)
{
unsigned char i;
LCD1602_write_com(addr);
for(i = 0;i < (num*1);i++)
LCD1602_write_data(*(pt++));
}
|
|