蓝桥杯单片机学习过程记录(十三)第五届温度采集控制

本文记录了作者参加蓝桥杯比赛时,针对第五届温度采集控制项目的单片机学习过程。主要涉及锁存器的使用,以及如何调整官方底层驱动程序,包括修改onewire.c中的Delay函数以适应不同振荡频率,并将onewire.h头文件中的函数加入到.c文件中解决报错问题。此外,还提到了主函数及矩阵按键在项目中的应用。
摘要由CSDN通过智能技术生成

蓝桥杯单片机学习过程记录(十三)第五届温度采集控制

一是锁存器的使用
P2=(P2&0X1F)
二是使用了官方提供的底层驱动程序,
有两点改动:一是onewire.c中的Delay函数要改成12个循环,因为52跟15的振荡不一样
二是onewire.h中的头文件把.c中的函数加进去,要不然报错,官方提供中没有。
三是把.c文件加到main里。

主函数

//第五届温度采集及控制
#include <STC15F2K60S2.H>
#include <intrins.h>
#include "onewire.h"
unsigned char num;
unsigned char max_1,max_2,min_1,min_2,temp_set,num_set;
unsigned char flag_jiemian,flag_led,flag_false;
unsigned char t;
unsigned char wendu,wendu_min,wendu_max;
unsigned char yi,er,san,si,wu,liu,qi,ba;
unsigned char seg[]={
   0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff};
void allinit();
void display_12(yi,er);
void display_34(san,si);
void display_56(wu,liu);
void display_78(qi,ba);
void Delay500us();
void delayms(int ms);
void time0_init();
void key_scan();
unsigned char ds18_get(void);
void main(){
   
 //初始化参数
 allinit();
 wendu_min=20;
 wendu_max=30;
 //定时器初始化
 time0_init();
 EA=1;ET0=1;
 yi=10;er=11;san=10;si=11;wu=11;liu=11;qi=11;ba=11;
 while(1){
   
  //温度获取
  wendu=ds18_get();
  //进入界面功能判断
  //温度显示页面
  if(flag_jiemian==0){
   
   //进行温度判断
   //小于温度设定最低
   if(wendu<wendu_min){
   
    //0模式,继电器关闭,小灯0.8闪
    er=0;
    flag_led=0;
    P2=(P2&0x1f)|0XA0;P0=0X00;
    P2=P2&0x1f;
   }
   //大于温度设定最高
   else if(wendu>wendu_max){
   
    //2模式,小灯0.2闪,继电器开
    er=2;    
    P2=(P2&0x1f)|0XA0;P0=0X10;
    P2=P2&0x1f;
    flag_led=2;
   }
   //中间值
   else{
   
    //1模式,小灯0.4闪,继电器关闭
    er=1;
    P2=(P2&0x1f)|0XA0;P0=0X00;
    P2=P2&0x1f;
    flag_led
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值