#include "iic.h"
#include "onewire.h"
#include "time.h"
#include "key.h"
#include "dis.h"
#include "main.h"
#include "stdio.h"
#include "stc15f2k60s2.h"
//数码管显示缓存
unsigned char dis_buf[10]={" "};
//显示模式
//1:数据界面
//2:参数界面
unsigned char dis_mode = 1;//数码管显示模式
//设置模式
//1:设置上限
//2:设置下限
unsigned char set_mode = 1;
//工作标志位定义
bit job1_flag;//数码管显示5ms
bit job2_flag;//按键扫描50ms
bit job3_flag;//数码管显示处理100ms
bit job4_flag;//电压测量200ms
bit job5_flag;//温度测量400ms
float wendu = 0.0;//温度
unsigned char tmax = 30,tmin = 20;//温度上下限
unsigned char tmax_old = 30,tmin_old = 20;//上一次温度上下限
//函数声明
void job1();//数码管显示5ms
void job2();//按键扫描50ms
void job3();//数码管显示处理100ms
void job4();//电压输出与LED指示灯函数
void job5();//温度测量400ms
void all_set(unsigned char dat);//外设控制
void led_set(unsigned char dat);//LED控制
//主函数
void main()
{
dis_init();
Timer1Init();
dis_init();
led_set(0xff);
all_set(0x00);
while(1)
{
//判断工作标志位
if(job1_flag)
{
job1_flag = 0;
job1();
}
if(job2_flag)
{
job2_flag = 0;
job2();
}
if(job3_flag)
{
job3_flag = 0;
job3();
}
if(job4_flag)
{
job4_flag = 0;
job4();
}
if(job5_flag)
{
job5_flag = 0;
job5();
}
}
}
void job1()//数码管显示5ms
{
display(dis_buf);
}
void job2()//按键扫描50ms
{
key_scan();
if(s7_flag)
{
s7_flag = 0;
if(dis_mode == 2)
{
if(set_mode == 1)
{
tmax-=1;
}
else if(set_mode == 2)
{
tmin-=1;
}
if(tmin == 255)
{
tmin = 0;
}
if(tmax == 255)
{
tmax = 0;
}
}
}
else if(s6_flag)
{
s6_flag = 0;
if(dis_mode == 2)
{
if(set_mode == 1)
{
tmax+=1;
}
else if(set_mode == 2)
{
tmin+=1;
}
if(tmin>99)
{
tmin = 99;
}
if(tmax>99)
{
tmax = 99;
}
}
}
else if(s5_flag)
{
s5_flag = 0;
if(set_mode == 1)
{
set_mode = 2;
}
else if(set_mode == 2)
{
set_mode = 1;
}
}
else if(s4_flag)
{
s4_flag = 0;
if(dis_mode == 1)
{
dis_mode = 2;
set_mode = 2;
tmax_old = tmax;
tmin_old = tmin;
}
else if(dis_mode == 2)
{
dis_mode = 1;
if(tmin>tmax)
{
tmax = tmax_old;
tmin = tmin_old;
}
}
}
}
void job3()//数码管显示处理100ms
{
switch(dis_mode)
{
case 1:sprintf(dis_buf,"C %2.0f",wendu);break;
case 2:sprintf(dis_buf,"P %2bu %2bu",tmax,tmin);break;
}
}
void job4()//电压输出200ms与LED指示灯函数
{
if(wendu>tmax)
{
pcf_dac((unsigned char)(4.0/5.0*255));
led_set(~0x01);
}
else if((wendu<=tmax) && (wendu >= tmin))
{
pcf_dac((unsigned char)(3.0/5.0*255));
led_set(~0x02);
}
else if(wendu < tmin)
{
pcf_dac((unsigned char)(2.0/5.0*255));
led_set(~0x04);
}
if(tmin>tmax)
{
led_set(~0x08);
}
}
void job5()//温度测量400ms
{
wendu = rd_temperature()*0.0625;
}
void all_set(unsigned char dat)
{
P2 = ((P2&0x1f)|0xA0);
P0 = dat;
P2 = (P2&0x1f);
}
void led_set(unsigned char dat)
{
P2 = ((P2&0x1f)|0x80);
P0 = dat;
P2 = (P2&0x1f);
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
11136028.rar (32个子文件)
11136028
11136028.uvproj 16KB
11136028.uvgui.CR7 89KB
11136028.uvopt 9KB
Objects
time.obj 6KB
11136028.build_log.htm 1KB
11136028.lnp 212B
iic.obj 5KB
main.obj 13KB
onewire.obj 4KB
dis.obj 6KB
11136028 40KB
key.obj 6KB
11136028.hex 12KB
code
dis.h 149B
key.h 152B
main.c 3KB
iic.h 257B
iic.c 1KB
onewire.h 123B
key.c 849B
dis.c 1KB
main.h 352B
time.c 737B
onewire.c 1KB
time.h 74B
Listings
key.lst 4KB
iic.lst 4KB
dis.lst 3KB
main.lst 10KB
onewire.lst 4KB
11136028.m51 37KB
time.lst 2KB
共 32 条
- 1
资源评论
- qq_433104582021-03-24代码有bug啊 数码管刷新闪烁
写代码没头发
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功