⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 q.c

📁 设计的温度采集模块是应用一个滑动变阻器通过改变电阻值进行模拟的温度值改变情况;模数转换模块是运用ADC0809芯片进行模数的转换
💻 C
字号:
#include <reg52.H>
#include<absacc.h>

unsigned char code dispbitcode[]={ 
        0x3F,/*0*/
        0x06,/*1*/
        0x5B,/*2*/
        0x4F,/*3*/
        0x66,/*4*/
        0x6D,/*5*/
        0x7D,/*6*/
        0x07,/*7*/
        0x7F,/*8*/
        0x6F,/*9*/
};
unsigned char code dispcode[]={0xfe,0xfd,0xfb,0xf7 };//,0x99,0x92,0x82,0xF8,0x80,0x90,0x00};
unsigned char dispbuf[4]={0,0,0,0};//八通道数据待存数组
unsigned char dispcount;
unsigned char getdata;
unsigned int temp;
unsigned char i;

sbit ST=P3^0;
sbit OE=P3^1;
sbit EOC=P3^2;
sbit CLK=P3^3;
sbit LED1=P3^6;
sbit LED2=P3^7;
sbit SPK=P3^5;
bit lowflag;
bit highflag;
unsigned int cnta;
unsigned int cntb;
bit alarmflag;

/***************
主程序
***************/
void main(void)
{
  ST=0;//转换信号启动
  OE=0;//输出允许信号
  TMOD=0x12;//
  TH0=216;//
  TL0=216;//
  TH1=(65536-4000)/256;//
  TL1=(65536-4000)%256;
  TR1=1;//
  TR0=1;
  ET0=1;
  ET1=1;
  EA=1;
  ST=1;
  ST=0;
/****************************************************
LED灯的指示,低的时候,LED2亮;高的时候LED1灭
否则LED1亮,LED2灭;
否则都亮
****************************************************/
  while(1)
    {
      if((lowflag==1) &&(highflag==0))
        {
          LED1=0;
          LED2=1;
        }
        else if((highflag==1) && (lowflag==0))
          {
            LED1=1;
            LED2=0;
          }
          else
            {
              LED1=1;
              LED2=1;
            }
    }
}

void t0(void) interrupt 1 using 0
{
  CLK=~CLK;
}

void t1(void) interrupt 3 using 0
{ 

  TH1=(65536-4000)/256;
  TL1=(65536-4000)%256;

       if(EOC==1)
         {
           OE=1;
           getdata=P1;//从P0口得到数据
           OE=0;
           temp=getdata*25;
		   //temp=getdata*225;
           temp=temp/64;
           //i=6;
	    dispbuf[3]=temp/100;
        dispbuf[2]=(temp%100)/10;
        dispbuf[1]=(temp%10)/1;
        dispbuf[0]=temp%1;
          /* dispbuf[0]=0;
           dispbuf[1]=0;
           dispbuf[2]=0;
           dispbuf[3]=0;
           
          while(temp/10)
            {
              dispbuf[i]=temp%10;
              temp=temp/10;
              i++;
            }
          dispbuf[i]=temp; */         
           if(getdata<77)
             {
               lowflag=1;
               highflag=0;
             }
             else if(getdata>153)
               {
                 lowflag=0;
                 highflag=1;
               }
                 else
                   {
                   lowflag=0;
                   highflag=0;
                   }
           ST=1;
           ST=0;
         }

  P0=dispbitcode[dispbuf[dispcount]];
  P2=dispcode[dispcount];
  dispcount++;
  if(dispcount==4)
    {

      dispcount=0;
    }
  
  if((lowflag==1) && (highflag==0))
    {
      cnta++;
      if(cnta==800)
        {
          cnta=0;
          alarmflag=~alarmflag;
        }
      if(alarmflag==1)
        {
          SPK=~SPK;
        }
    }
    else if((lowflag==0) && (highflag==1))
      {
      cntb++;
      if(cntb==400)
        {
          cntb=0;
          alarmflag=~alarmflag;
        }
      if(alarmflag==1)
        {
          SPK=~SPK;
        }        
      }
      else
        {
          alarmflag=0;
          cnta=0;
          cntb=0;
        }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -