新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 自制带有开机音乐的可显数字温度计

自制带有开机音乐的可显数字温度计

作者: 时间:2012-10-24 来源:网络 收藏
#include REG52.H>#include "SoundPlay.h"#define  uchar  unsigned  char #define  uint   unsigned  intsbit  DATA = P3^7; //DS18B20接入口uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};char  bai,shi,ge; //定义变量/*延时子函数*/void delay(uint num){while(num--) ;}void Delay1ms(unsigned int count){unsigned int i,j;for(i=0;icount;i++)for(j=0;j120;j++);}/*************DS18b20温度传感器函数*********************/Init_DS18B20(void)     //传感器初始化{uchar x=0;DATA = 1;    //DQ复位delay(10);  //稍做延时DATA = 0;    //单片机将DQ拉低delay(80); //精确延时 大于 480us    //450DATA = 1;    //拉高总线delay(20);x=DATA;      //稍做延时后 如果x=0则初始化成功 x=1则初始化失败delay(30);}//读一个字节ReadOneChar(void){uchar i=0;uchar dat = 0;for (i=8;i>0;i--){DATA = 0; // 给脉冲信号dat>>=1;DATA = 1; // 给脉冲信号if(DATA)dat|=0x80;delay(8);}return(dat);}//写一个字节WriteOneChar(unsigned char dat){uchar i=0;for (i=8; i>0; i--){DATA = 0;DATA = dat0x01;delay(10);DATA = 1;dat>>=1;}delay(8);}//读取温度int ReadTemperature(void){uchar a=0;uchar b=0;int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC); // 跳过读序号列号的操作WriteOneChar(0x44); // 启动温度转换Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度a=ReadOneChar();//低位b=ReadOneChar();//高位t=b;t=8;t=t|a;tt=t*0.0625;t= tt*10+0.5; return(t);}/*显示子函数*/void  display(int bai,int shi,int ge){P2=0XFB; //显示小数点P0=0X80; //显示小数点delay(50);//显示小数点P2=0xf7;P0=table[bai];//显示千位delay(50);//一小段延时动态显示P2=0xfb;P0=table[shi];//显示百位delay(50);P2=0xfd;P0=table[ge];//显示十位delay(100);}//*****************************Music********************************//挥着翅膀的女孩unsigned char code Music_Girl[]={ 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03,0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03,0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03,0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03,0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03,0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03,0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03,0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02,0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03,0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03,0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03,0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03,0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03,0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E,0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03,0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66,0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03,0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04,0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03,0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03,0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02,0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02,0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00};//***********************************************************************************main(){int  temp;InitialSound();Play(Music_Girl,0,3,360);Delay1ms(500);while(1){  temp=ReadTemperature();//读温度bai=temp%1000/100;//显示百位shi=temp%100/10;//显示十位ge=temp%10;//显示个位display(bai,shi,ge);//显示函数 }}/****************************

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭