//头文件
#include <STC12C5A60S2.h> //包含单片机寄存器的头文件
#include <ADC.h>
#include <intrins.h>
#include <key.h>
#include <LCD1602.h>
#include <DS18B20.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag=0;
uchar counter1=0;
int H0=20;
int H1=20;
int H2=40;
int H3=80;
void key()
{
if(K1==0) //K1 menu
{
counter1++;
if(counter1>3) counter1=0;
while(K1==0);
}
if(counter1==0) //设置H0值
{ lcd_xy_puts(4 ,0,"<");
lcd_xy_puts(14,0," ");
lcd_xy_puts(4 ,1," ");
lcd_xy_puts(14,1," ");
if(K2==0) //K2 +
{
H0=H0+1;
if(H0>99) H0=99;
while(K2==0);
}
if(K3==0) //K3 -
{
H0=H0-1;
if(H0<0) H0=0;
while(K3==0);
}
}
if(counter1==1) //设置H1值
{ lcd_xy_puts(4 ,0,">");
lcd_xy_puts(14,0," ");
lcd_xy_puts(4 ,1," ");
lcd_xy_puts(14,1," ");
if(K2==0) //K2 +
{
H1=H1+1;
if(H1>99) H1=99;
while(K2==0);
}
if(K3==0) //K3 -
{
H1=H1-1;
if(H1<0) H1=0;
while(K3==0);
}
}
if(counter1==2) //设置H2值
{ lcd_xy_puts(4 ,0," ");
lcd_xy_puts(14,0,"<");
lcd_xy_puts(4 ,1," ");
lcd_xy_puts(14,1," ");
if(K2==0) //K2 +
{
H2=H2+1;
if(H2>99) H2=99;
while(K2==0);
}
if(K3==0) //K3 -
{
H2=H2-1;
if(H2<0) H2=0;
while(K3==0);
}
}
if(counter1==3) //设置H2值
{ lcd_xy_puts(4 ,0," ");
lcd_xy_puts(14,0," ");
lcd_xy_puts(4 ,1,"<");
lcd_xy_puts(14,1," ");
if(K2==0) //K2 +
{
H3=H3+1;
if(H3>99) H3=99;
while(K2==0);
}
if(K3==0) //K3 -
{
H3=H3-1;
if(H3<0) H3=0;
while(K3==0);
}
}
// if(counter1==4) //设置H2值
// { lcd_xy_puts(4 ,0," ");
// lcd_xy_puts(14,0," ");
// lcd_xy_puts(4 ,1,">");
// lcd_xy_puts(14,1," ");
// if(K2==0) //K2 +
// {
// H4=H4+1;
// if(H4>99) H4=99;
// while(K2==0);
// }
// if(K3==0) //K3 -
// {
// H4=H4-1;
// if(H4<0) H4=0;
// while(K3==0);
// }
// }
// if(counter1==5) //设置H2值
// { lcd_xy_puts(4 ,0," ");
// lcd_xy_puts(14,0," ");
// lcd_xy_puts(4 ,1," ");
// lcd_xy_puts(14,1,"<");
// if(K2==0) //K2 +
// {
// H5=H5+1;
// if(H5>99) H5=99;
// while(K2==0);
// }
// if(K3==0) //K3 -
// {
// H5=H5-1;
// if(H5<0) H5=0;
// while(K3==0);
// }
// }
}
/******************************************************************
- 函数名称:delay_uart
- 隶属模块:uart.h
- 函数属性:内部
- 参数说明:无返回值,无带入参数
- 返回说明:无
- 功能描述:串口模块延时函数,对串口进行微量延时
*****************************************************************/
void delay_uart(void) //串口延时程序
{
unsigned char i,j;
for(i=50;i>0;i--)
for(j=248;j>0;j--);
}
/******************************************************************
- 函数名称:send_tx_char
- 隶属模块:uart.h
- 函数属性:内部
- 参数说明:有带入参数,类型为char型
- 返回说明:无
- 功能描述:串口"发送1个字符"函数
*****************************************************************/
void send_tx_char(uchar byte)//数据发送函数:先送数据给SBUF,再利用标志位判断数据是否发送完毕
{
SBUF = byte;//将要发送的字符赋值给串口缓冲存储器(SBUF)
while(!TI)//等特数据传送完毕(数据发送完毕后TI标志位会置1)。如果TI标志位置1,表示发送完毕
TI = 0;//一定要将TI标志位清零。以便下一次接收数据时再置1判断。
delay_uart();//微量延时,保证数据发送正确。
}
void send_rx_string(uchar *string)//串口发送字符串
{
while(*string)//取字符串首地址,从定义的字符串的首地址开始
{SBUF=*string++;//让字符串从首地址开始自加
while(!TI);//等待发送标志置1
TI=0;//一定要将TI标志位清零。以便下一次接收数据时再置1判断。
delay_uart();//微量延时,保证数据发送正确。
}
}
sbit JDQ1=P3^2;
sbit JDQ2=P3^3;
sbit YD=P1^6;
uint XX=0;
void main(void)
{
lcd_init();
K1=K2=K3=K0=1;
//串口初始化
TMOD=0X20|TMOD;
TH1=TL1=0XFD;
SCON=0X50;
PCON=0X00;
TI=RI=0;
//ES=1;
EA=1;TR1=1;JDQ1=JDQ2=1;
while(1)
{
// if ( RI )
// {
// num = SBUF;
// RI=0;
// }
lcd_xy_puts(0,0,"CO:");
Read_init (0);
dianya1=ADC_chuli();
dianya1=dianya1-700;
if(dianya1<0) dianya1=0;
dianya1=dianya1/10;
lcd_goto_xy(3,0); lcd_number(dianya1%100/10);lcd_number(dianya1%10);
lcd_xy_puts(9,0,"YW:");
Read_init (1);
dianya2=ADC_chuli();
dianya2=dianya2-450;
if(dianya2<0) dianya2=0;
dianya2=dianya2/10;
lcd_goto_xy(12,0);lcd_number(dianya2%100/10);lcd_number(dianya2%10);
disp_temper();
lcd_goto_xy(0,1);
lcd_puts("WD:");
lcd_number(temper/100);
lcd_number(temper%100/10);lcd_puts("."); lcd_number(temper%10);
lcd_xy_puts(9,1,"HY:");
Read_init (2);
dianya3=ADC_chuli();
// dianya3=dianya3-150;
// if(dianya3<0) dianya3=0;
dianya3=dianya3;
dianya3=100-dianya3/10;
lcd_goto_xy(12,1);lcd_number(dianya3%100/10);lcd_number(dianya2%10);
if(YD==0)
{
lcd_xy_puts(15,0,"Y");
}
else lcd_xy_puts(15,0," ");
//以下为主函数中写入
if(K0==0)
{
flag=1;
while(K0==0);
}
if(flag==1)
{ lcd_init();
while(flag==1)
{ //参数显示
lcd_xy_puts(0,0,"CH"); lcd_number(H0%100/10);lcd_number(H0%10);
lcd_xy_puts(5,0,"YH"); lcd_number(H1%100/10);lcd_number(H1%10);
lcd_xy_puts(10,0,"WH"); lcd_number(H2%100/10);lcd_number(H2%10);
lcd_xy_puts(0,1,"HH"); lcd_number(H3%100/10);lcd_number(H3%10);
key();
if(K0==0)//退出界面
{ lcd_init();flag=0;
while(K0==0);
}
}
}
if(dianya1>H0||dianya2>H1||temper/10>H2||dianya3>H3)
{
JDQ1=0;BeepIO=LED=0;DELAY_MS1(100); BeepIO=LED=1;DELAY_MS1(100);
}
else JDQ1=1;
if(YD==0)
{
JDQ2=0;BeepIO=LED=0;DELAY_MS1(100); BeepIO=LED=1;DELAY_MS1(100);
}
else JDQ2=1;
//
}
}
lantiandianzi
- 粉丝: 319
- 资源: 229
最新资源
- 西门子S7-1200流水线贴膜机项目程序,有KTP700触摸屏组态操作界面 程序包含.上下气缸控制,夹紧气缸控制,输送带电机控制,贴膜伺服控制旋转电机控制等类容 适合简单控制工艺及运动控制初学
- comsol电力变压器电磁场计算模型,通过简化高低压绕组,铁心,结构件和绝缘油的几何模型,得到变压器内部电磁场分布
- 西门子PLC1500大型程序 西门子PLC1500大型程序fanuc机器人焊装 包括1台西门子1500PLC程序,2台触摸屏TP1500程序 9个智能远程终端ET200SP Profinet连接 15
- Task-113-出租车计价
- HttpUrlConnectionUtilDemo-大炮打蚊子
- fishing-game-大炮打蚊子
- 有限信息,多智能体系统,鲁棒无碰撞编队控制,有文献参考 符合要求请放心联系,MATLAB,保证能够运行 simulink,复现
- MATLAB全桥或者半桥LLC谐振DC DC变器的设计与仿真 内含开环仿真、电压闭环仿真两个仿真文件 并含有电路参数仿真计算过程 支持最高版本2018b
- 基于模型参考自适应的永磁同步电机无感FOC 1.采用模型参考自适应MRAS来估计转速和转子位置,实现中高速下PMSM的无感运行,估计精度较高; 2.提供算法对应的参考文献和仿真模型,支持技术解答;拿后
- hustoj-重庆大学python题库答案
- 基于阻抗的微电网功率分配策略研究(文章复现),关键词:下垂控制,并联逆变器,阻抗
- Util-大炮打蚊子c++
- 一种微电网分布式电源的下垂控制策略(文章复现),关键词:下垂控制,并联逆变器,对等控制
- 汽车手动变速器sw18可编辑全套设计资料100%好用.zip
- 基于PreScan与Carsim的车道保持联合仿真 其中车道线识别算法通过采集单目摄像头数据,Ransac算法提取车道线;采用MPC控制器实现车道保持与循迹控制 内附
- 西门子1200博图程序冷却油泵PID控制系统,和多台油泵及水泵G120西门子变频器Modbud RTU通讯,画面采用西门子KTP700触摸屏,内有变频器参数 Modbus通讯报文详细讲解,PID带手动
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈