#include "main.h"
uchar LED[] = {0,0,0,0,0,0,0,0};
uchar SMG[] = {16,16,16,16,16,16,16,16};
uchar dot[] = {0,0,0,0,0,0,0,0};
uchar key;
uint temp = 0;
uchar da_num = 0;
uchar temp_set = 25;
uint V_dac = 0;
uchar display_state;
uchar mode = 0;
void da_read()
{
da_num = pcf8591_read(0x40);
SMG[1] = da_num%1000/100;
SMG[2] = da_num%100/10;
SMG[3] = da_num%10;
}
void data_pro()
{
if(display_state != 1)
{
if(mode == 0)
{
if(temp*0.01 < temp_set)
{
pcf8591_write(0x40,0x00);
V_dac = 0;
}
else
{
pcf8591_write(0x40,0xff);
V_dac = 500;
}
}
else
{
if(temp*0.01 < 20)
{
pcf8591_write(0x40,0x33);
V_dac = 100;
}
else if(temp*0.01 > 40)
{
pcf8591_write(0x40,0xcc);
V_dac = 400;
}
else
{
V_dac = (int)((3/20.0*temp*0.01 - 2.0)*100);
pcf8591_write(0x40,V_dac*0.01*51);
}
}
}
}
void temp_display()
{
temp = ds18b20_read(2);
SMG[0] = 12;
SMG[1] = 16;
SMG[2] = 16;
SMG[3] = 16;
SMG[4] = temp/1000;
SMG[5] = temp%1000/100;
SMG[6] = temp%100/10;
SMG[7] = temp%10;
dot[5] = 1;
da_read();
}
void parameter_display()
{
SMG[0] = 18;
SMG[1] = 16;
SMG[2] = 16;
SMG[3] = 16;
SMG[4] = 16;
SMG[5] = 16;
SMG[6] = temp_set/10;
SMG[7] = temp_set%10;
dot[5] = 0;
da_read();
}
void dac_display()
{
SMG[0] = 10;
SMG[1] = 16;
SMG[2] = 16;
SMG[3] = 16;
SMG[4] = 16;
SMG[5] = V_dac/100;
SMG[6] = V_dac%100/10;
SMG[7] = V_dac%10;
dot[5] = 1;
da_read();
}
void led_pro()
{
(mode == 0)?(LED[0] = 1):(LED[0] = 0);
(display_state == 0)?(LED[1] = 1):(LED[1] = 0);
(display_state == 1)?(LED[2] = 1):(LED[2] = 0);
(display_state == 2)?(LED[3] = 1):(LED[3] = 0);
led(LED);
}
void smg_pro()
{
switch(display_state)
{
case 0:temp_display();
break;
case 1:parameter_display();
break;
case 2:dac_display();
break;
}
display(SMG,dot);
}
void key_pro()
{
key = key_scan();
switch(key)
{
case 1:mode = (++mode)%2;
break;
case 2:
{
if(display_state == 1)
{
temp_set++;
if(temp_set == 100)
temp_set = 0;
}
}
break;
case 3:display_state = (++display_state)%3;
break;
case 4:
{
if(display_state == 1)
{
temp_set--;
if(temp_set == 255)
temp_set = 99;
}
}
break;
}
}
void main()
{
init_all();
temp = ds18b20_read(2);
delayus(750);
temp = 0;
while(1)
{
led_pro();
smg_pro();
key_pro();
data_pro();
}
}
第十二届蓝桥杯单片机程序(完整工程文件)
需积分: 5 97 浏览量
2024-03-17
19:24:48
上传
评论
收藏 77KB ZIP 举报
symzap
- 粉丝: 0
- 资源: 6
最新资源
- career.it.signals-systems信号与系统
- 面向计算机视觉的基础库,支持Linux、Windows及MacOS平台 提供了众多功能,包括基于PyTorch的通用训练框架等
- 基于LQR实现的车辆轨迹跟踪matlab源码+项目说明+超详细注释(高分项目)
- 视2.css
- Android图片处理工具类,包括: 图片查看、照片墙、bitmap转存、圆角、剪切、图片加载缓存、图片压缩等
- 甘豆影评React Native版
- 百度地图,显示闸站分布,以及切换闸站位置,上传闸站图片信息的cordova插件,包含百度地图和百度定位库文件
- 基于合泰单片机的智能夹球小车(esp8266代码+k210代码+合泰单片机代码)
- 一个天气查询的安卓APP
- 基于CC2530+DHT11温湿度传感器实现物联网多传感器火灾报警系统
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈