|
电脑显示气温DIY
万里江山2010-04-02
用一个单总线集成温度传感器DS1820获取当前气温,通过串口打印出来,并附带时间,
呵呵,以后做一个温度采集器不错的啦。
原理图
电脑超级终端打印的效果,哈哈哈
附注:C脚本
#include <AT89X52.h>
#include<stdio.h>
#include"DS1820_tem_read.h"//DS1820驱动头文件
unsigned int hour=23 ,min=4,sec=0,clk=0;//时,分,秒,时基
main()
{
float temp; //存放温度
TMOD = 0x21; //T1工作方式1,用于设定波特率
TH1 = 0xFd; //波特率4800Bps,12MHz晶振
TL1 = 0xFd;
TL0= 0x4b;//定时初值
TL1=0xff;
PCON |= 0x00; //SMOD = 1,波特率加倍
SCON = 0x50; //允许发送接收
ES = 0; //禁止串口中断
ET0 =1;//允许T0中断
EA=1;
TI = 1;
TR0 = 1 ;
TR1 = 1;
while(1)
{
if((sec%2==0)&&(clk<20)&&(clk>18))
{
temp= tem_read ();
printf("\f\033[1;42;31m热爱电子,热爱机电\033[m\n"); // 清屏\附带彩色(高亮,背景绿,字体红),背景信息发送
printf("\033[1;40;37m当前的气温是:%.2f度\n" , temp ) ;//附带彩色(高亮,黑底白字),背景信息发送
printf("\033[m时间是:%d:%d:%d \n", hour, min, sec) ;
}
}
}
void time_sever(void) interrupt 1 using 1
{ TL0= 0x4b;
TL1=0xff;
clk++;
if(clk==20)
{
clk=0;
sec++;
P1_0 =! P1_0;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
hour++;
if(hour==24)
hour=0;
}
}
}
} |
|