吐个泡泡o398 2022-05-16 21:54 采纳率: 0%
浏览 23

51单片机,利用Keil及proteus

#include <reg52.h>
#include<appdemo.h>
#include<lcd1602.h>
#include<key.h>
#include<beep.h>
#include<pcf8591.h>
#include<ds18b20.h>
#include<exti.h>

_sys_ctrl sys_ctrl;
void exti0(void) interrupt 0
{
delay_10us(1000);
if(KEY3=0)
{
sys_ctrl.mode++;
if(sys_ctrl.mode==8)sys_ctrl=1;
lcd1602_clear();
delay_ms(10);
switch(sys_ctrl.mode)
{
case 1 lcd1602_show_string(0,0,"TempH Set:");break;
case 2 lcd1602_show_string(0,0,"TempL Set:");break;
case 3 lcd1602_show_string(0,0,"SoilH Set:");break;
case 4 lcd1602_show_string(0,0,"SoilL Set:");break;
case 5 lcd1602_show_string(0,0,"BeamH Set:");break;
case 6 lcd1602_show_string(0,0,"BeamL Set:");break;
}
}
}
void exti1(void) interrupt 2
{
delay_10us(1000);
if(KEY4==0)
{
sys_ctrl.mode=0;
lcd1602_show_string(0,0,"Tp: C");
lcd1602_show_string(9,0,"So: ");
lcd1602_show_string(0,1,"Bm: ");
}
}
void key_set_threshold(void)
{
u8 key=0;

while(sys_ctrl.mode==1)
{
key=key_scan(0);
if(key==KEY1_PRESS)
{
sys_ctrl.temph+=THRESHOLD_STEP;
if(sys_ctrl.temph>=80)sys_ctrl.temph=0;
}
else if(key==KEY2_PRESS)
{
sys_ctrl.temph+=THRESHOLD_STEP;
if(sys_ctrl.temph<=0)sys_ctrl.temph=80;
}
lcd1602_show_nums(10,0,sys_ctrl.temph,2,0);
}
while(sys_ctrl.mode==2)
{
key=key_scan(0);
if(key==KEY1_PRESS)
{
sys_ctrl.templ+=THRESHOLD_STEP;
if(sys_ctrl.templ>=40)sys_ctrl.templ=0;
}
else if(key==KEY2_PRESS)
{
sys_ctrl.templ+=THRESHOLD_STEP;
if(sys_ctrl.templ<=0)sys_ctrl.templ=40;
}
lcd1602_show_nums(10,0,sys_ctrl.templ,2,0);
}
while(sys_ctrl.mode==3)
{
key=key_scan(0);
if(key==KEY1_PRESS)
{
sys_ctrl.soilh+=THRESHOLD_STEP10;
if(sys_ctrl.soilh>=250)sys_ctrl.soilh=0;
}
else if(key==KEY2_PRESS)
{
sys_ctrl.soilh+=THRESHOLD_STEP
10;
if(sys_ctrl.soilh<=0)sys_ctrl.soilh=250;
}
lcd1602_show_nums(10,0,sys_ctrl.soilh,4,0);
}
while(sys_ctrl.mode==4)
{
key=key_scan(0);
if(key==KEY1_PRESS)
{
sys_ctrl.soill+=THRESHOLD_STEP10;
if(sys_ctrl.soill>=250)sys_ctrl.soill=0;
}
else if(key==KEY2_PRESS)
{
sys_ctrl.soill+=THRESHOLD_STEP
10;
if(sys_ctrl.soill<=0)sys_ctrl.soill=250;
}
lcd1602_show_nums(10,0,sys_ctrl.soill,4,0);
}
while(sys_ctrl.mode==5)
{
key=key_scan(0);
if(key==KEY1_PRESS)
{
sys_ctrl.beamh+=THRESHOLD_STEP10;
if(sys_ctrl.beamh>=250)sys_ctrl.beamh=0;
}
else if(key==KEY2_PRESS)
{
sys_ctrl.beamh+=THRESHOLD_STEP
10;
if(sys_ctrl.beamh<=0)sys_ctrl.beamh=250;
}
lcd1602_show_nums(10,0,sys_ctrl.beamh,4,0);
}
while(sys_ctrl.mode==6)
{
key=key_scan(0);
if(key==KEY1_PRESS)
{
sys_ctrl.beaml+=THRESHOLD_STEP10;
if(sys_ctrl.beaml>=250)sys_ctrl.beaml=0;
}
else if(key==KEY2_PRESS)
{
sys_ctrl.beaml+=THRESHOLD_STEP
10;
if(sys_ctrl.beaml<=0)sys_ctrl.beaml=250;
}
lcd1602_show_nums(10,0,sys_ctrl.beaml,4,0);
}
}
void sys_para_init(void)
{
sys_ctrl.mode=0;
sys_ctrl.temph=30;
sys_ctrl.templ=20;
sys_ctrl.soilh=200;
sys_ctrl.soill=100;
sys_ctrl.beamh=200;
sys_ctrl.beaml=100;
}
void sys_get_data(void)
{
u8 i=0;
while(sys_ctrl.mode==0)
{
i++;
if(i%200==0)
{
sys_ctrl.temp=ds18b20_read_temperture();
sys_ctrl.beam=pcf8591_read_adcvalue(1);
sys_ctrl.soil=ds18b20_read_adcvalue(2);
break;
}
delay_ms(1);
}
}
void sys_data_show(void)
{
while (sys_ctrl.mode==0)
{
lcd1602_show_nums(3,0,sys_ctrl.temp,2,0);
lcd1602_show_nums(12,0,sys_ctrl.soil,4,0);
lcd1602_show_nums(3,0,sys_ctrl.beam,4,0);
break;
}
}
void auto_control(void)
{
while (sys_ctrl.mode==0)
{
if(sys_ctrl.soil<sys_ctrl.soill)
{
beep_alarm(100,20);
}
else if(sys_ctrl.soil>=sys_ctrl.soilh)
{
beep_alarm(100,20);
}
if(sys_ctrl.temp<sys_ctrl.temph)
{
beep_alarm(100,20);
}
else if(sys_ctrl.soil<sys_ctrl.temph)
{
beep_alarm(100,20)
}
break;
}
}
void appdemo_show(void)
{
lcd1602_init()
ds18b20_init()
sys_ctrl.temp=ds18b20_read_temperture();
delay_ms(1000);
exti0_init();
exti1_init();

lcd1602_show_string(0,0,"Tp: C");
lcd1602_show_string(9,0,"So: ");
lcd1602_show_string(0,1,"Bm: ");

sys_para_init();

while(1)
{

  key_set_threshold();
  sys_get_data();
  sys_data_show();
  auto_control();
 }

}

MAIN.C(10): error C129: missing ';' before 'sys_ctrl'第十行(代码:_sys_ctrl sys_ctrl;)

  • 写回答

1条回答 默认 最新

  • qllaoda 2022-05-17 09:58
    关注

    这句,if(sys_ctrl.mode==8)sys_ctrl=1;
    sys_ctrl明显是结构体或联合,你怎么能有sys_ctrl=1;这种写法呢。

    评论

报告相同问题?

问题事件

  • 创建了问题 5月16日

悬赏问题

  • ¥15 Matlab问题解答有两个问题
  • ¥50 Oracle Kubernetes服务器集群主节点无法访问,工作节点可以访问
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架
  • ¥15 有关sql server business intellige安装,包括SSDT、SSMS。
  • ¥15 stm32的can接口不能收发数据
  • ¥15 目标检测算法移植到arm开发板
  • ¥15 利用JD51设计温度报警系统
  • ¥15 快手联盟怎么快速的跑出建立模型