找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1508|回复: 0
打印 上一主题 下一主题
收起左侧

求助,哪位大神能帮我改改C程序,让MPX2能显示负数

[复制链接]
跳转到指定楼层
楼主
//设计要求:智能温控设?
//用ADC0809检测温度,如果大于设定温度则断开回路,小于
//则进行加热,等于设定温度则保持不变
//其中分别用数码管显示设定温度与实际温度
//用两个按键进行加减设定温度
//收获ADC0809高位应该与单片机低位连接
//在读取温度时必须先将P1口复位为1,不然会发生短路现象
#include<reg51.h>
#include<intrins.h>
#define Duan P0

sbit wei1=P2^0;//数码管选通
sbit wei2=P2^1;
sbit wei3=P2^2;
sbit wei4=P2^3;
sbit Relay=P2^4;//控制电路继电器闭合,使制冷
sbit Start=P2^5;//AD0809开始转化端口
sbit EOC=P2^6; //ADC0809转化标志口
void System_Init();          //系统初始化
unsigned char  M[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管段位
char shezhi=10;
int val;//转化值
char i=0;
void delay1ms(void)   //误差 0us
{
    unsigned char a,b,c;
    for(c=1;c>0;c--)
        for(b=142;b>0;b--)
            for(a=2;a>0;a--);
}

void main()
{
  System_Init();
  while(1)
  {
    P1=0xff;
    Start=0;
    Start=1;  //开始转化
    _nop_();
    Start=0;       
    _nop_();
    while(!EOC);   //转化结束
        val=(P1*100/256); //量程转化
        if(val<=shezhi)//是否继续制冷
        Relay=0;
        else
        Relay=1;
  }
}
void System_Init()
{
  TMOD=0x01;
  EA=1;
  ET0=1;
  TH0=(65535-5000)/256;
  TL0=(65535-5000)%256;
  TR0=1;
  EX0=1;
  EX1=1;
  IT0=1;
  IT1=1;
}
void Time() interrupt 1
{
  char i=0;
  TH0=(65535-5000)/256;
  TL0=(65535-5000)%256;
  if(i==0)
  {wei4=0;wei1=1;P0=M[val%10];i++;delay1ms();}
  if(i==1)
  {wei1=0;wei2=1;P0=M[val/10];i++;delay1ms();}
  if(i==2)
  {wei2=0;wei3=1;P0=M[shezhi%10];i++;delay1ms();}
  if(i==3)
  {wei3=0;wei4=1;P0=M[shezhi/10];i=0;delay1ms();}
}
void int0() interrupt 0
{
  shezhi++;
  if(shezhi==100)
  shezhi=0;
  return;
}
void int2() interrupt 2
{
  shezhi--;
  if(shezhi==0)
  shezhi=99;
  return;
}

_BA5%BOP`E]VTV@QSI873)X.png (4.56 KB, 下载次数: 55)

_BA5%BOP`E]VTV@QSI873)X.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表