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

📄 四位数显温度计1.c

📁 51单片机 0831 四位数显温度计 呵呵
💻 C
字号:
#include <REG51.H> 
unsigned char code dispbitcode[]={0X01,0X02,0X04,0X08,};//选择显示位 
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 
                               0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};//led代码显示 
unsigned char dispbuf[]={0X01,0X02,0X04,0X08};//百位十位个位数据暂存 
unsigned char dispcount; //一位计数
unsigned char getdata; 	 //数据缓存
unsigned int temp; 
sbit ST=P3^0; 
sbit OE=P3^1; 
sbit EOC=P3^2; 
sbit CLK=P3^3;


void dis_make()//显示处理函数
{
	  int temp_data;
	  int temp1_data;
	  temp_data = 2*getdata;//温度算法V=(2.73+T/100)
	  temp1_data = temp_data - 273;//温度算法
	  if((temp1_data)>=0)
	  {
	    temp = temp_data - 273;//取温度值
        dispbuf[0]=10;	  //清一位显示
	  }
	  else
	  {
	    temp = 273-temp_data;//取温度值 
		dispbuf[0]=11; 	  //显示负号
	  }
	  if((temp1_data < 155)&(temp1_data>-55))//范围内
	  {
	   dispbuf[1]=temp/100;	 //取百位
       dispbuf[2]=(temp%100)/10;//取十位
       dispbuf[3]=(temp%100)%10;//取个位
	  }
	  else	//溢出 
	  {
	   dispbuf[0]=11;//显示“-”
	   dispbuf[1]=11;
       dispbuf[2]=11;
       dispbuf[3]=11;
	  }

}
 

void main(void) 
{
  TMOD=0x12; 
  TH0=0XF6;//0.01ms时间
  TL0=0XF6; 
  TR1=1;   //tr1开始计时
  TR0=1;   //tr0开始计时
  ET0=1;   //开定时器0中断
  ET1=1;   //开定时器1中断
  EA = 1;  //开总中断
  while(1) 
    { 
      ST=0;
      ST=1;		  //清空数据
      ST=0;		 //开始记转换
      while(!EOC);//等待数据转换完成
      OE=1;		  //使能数据输出
      getdata=P0;//获取数据
      OE=0;		 //禁止数据输出
	  dis_make(); //显示处理
	} 
}
void t0(void) interrupt 1 //100K方波
{ 
  CLK=~CLK; //位取反
} 
void t1(void) interrupt 3
{ 
  TH1=(65536-4000)/256; //4MS
  TL1=(65536-4000)%256; 

	 P2 = 0X00;	//消影
     P1=~dispcode[dispbuf[dispcount]];//显示字符
     P2=dispbitcode[dispcount];	//显示位
     dispcount++;  //移位计数
     if(dispcount>3)
      {
        dispcount=0;
      }
} 

⌨️ 快捷键说明

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