当前位置: 首页 > news >正文

淮安汽车网站制作有专门做几口农机的网站

淮安汽车网站制作,有专门做几口农机的网站,网站优化设计方案怎么做,扬州建设机械网站设计要求 从DS18B20温度传感器上获取环境温度,并将其温度值显示到数码管上(保留两位小数)。 当“S4”定义为发送按键,按键S4按下时,串口向PC端发送当前采集的温度值; 串口发送格式: Temp:26.…

设计要求

从DS18B20温度传感器上获取环境温度,并将其温度值显示到数码管上(保留两位小数)。

当“S4”定义为发送按键,按键S4按下时,串口向PC端发送当前采集的温度值;

串口发送格式:

                         Temp:26.26C

数码管显示格式如下图所示:

         

         固定使用5位数码管显示数据,数码管最低位显示固定字符‘C’

备注:

单片机IRC振荡器频率设置为12MHz。

按键模式:BTN;扩展模式:IO模式。

温度值保留小数点后两位有效数字。

代码

sys.h

#ifndef __SYS_H__
#define __SYS_H__#include <STC15F2K60S2.H>
extern unsigned char Seg_Buff[8];
extern bit flag_send;
extern float temper;
//onewire.c
float getT();
//sys.c
void init74hc138(unsigned char n);
void init();
void Seg_Loop();
void Key_Loop();
void seg_temper();
#endif

main.c

#include "sys.h"
bit flag_seg=0;
bit flag_key=0;
bit flag_temper=0;
unsigned char *str="Temp:";
void Timer0_Init(void)		//100微秒@12.000MHz
{AUXR |= 0x80;			//定时器时钟1T模式TMOD &= 0xF0;			//设置定时器模式TL0 = 0x50;				//设置定时初始值TH0 = 0xFB;				//设置定时初始值TF0 = 0;				//清除TF0标志TR0 = 1;				//定时器0开始计时ET0 = 1;				//使能定时器0中断EA = 1;
}
void UartInit(void)		//9600bps@12.000MHz
{SCON = 0x50;		//8位数据,可变波特率AUXR |= 0x40;		//定时器时钟1T模式AUXR &= 0xFE;		//串口1选择定时器1为波特率发生器TMOD &= 0x0F;		//设置定时器模式TL1 = 0xC7;			//设置定时初始值TH1 = 0xFE;			//设置定时初始值ET1 = 0;			//禁止定时器中断TR1 = 1;			//定时器1开始计时ES = 1;EA = 1;
}
void uart_send_date(unsigned char date){SBUF=date;while(TI==0);TI=0;
}
void uart_send_str(unsigned char *str){while(*str!='\0'){uart_send_date(*str);str++;}
}
void uart_send(){uart_send_str(str);if(Seg_Buff[3]!=11)uart_send_date(Seg_Buff[3]+'0');uart_send_date(Seg_Buff[4]+'0');uart_send_date('.');uart_send_date(Seg_Buff[5]+'0');uart_send_date(Seg_Buff[6]+'0');uart_send_date('C');uart_send_str("\r\n");
}
void main(){init();Timer0_Init();while((int)getT()==85);UartInit();while(1){if(flag_seg){flag_seg=0;Seg_Loop();}if(flag_key){flag_key=0;Key_Loop();if(flag_send){flag_send=0;uart_send();}}if(flag_temper){flag_temper=0;temper=getT();seg_temper();}}
}
void uart() interrupt 4
{if(RI){RI=0;}
}
void Timer0_Isr(void) interrupt 1
{static unsigned char count1=0,count2=0;static unsigned int count3=0;count1++;count2++;count3++;if(count1==2){count1=0;flag_seg=1;}if(count2==50){count2=0;flag_key=1;}if(count3==1000){count3=0;flag_temper=1;}
}

sys.c

#include "sys.h"
code unsigned char Seg_Table[] = 
{
0xc0, //0
0xf9, //1
0xa4, //2
0xb0, //3
0x99, //4
0x92, //5
0x82, //6
0xf8, //7
0x80, //8
0x90, //9
0xc6, //C 10
0xff  //熄灭 11
};
unsigned char Seg_Buff[8]={11,11,11,11,11,11,11,11};
unsigned char keyval,keyold,keyup,keydown;
bit flag_send=0;
float temper=0;
void init74hc138(unsigned char n){P2=(P2&0x1f)|(n<<5);P2&=0x1f;
}
void init(){P0=0x00;init74hc138(5);P0=0xff;init74hc138(4);
}
void seg(unsigned char addr,num){P0=0xff;init74hc138(7);P0=0x01<<addr;init74hc138(6);P0=Seg_Table[num];if(addr==4)P0&=0x7f;init74hc138(7);
}
void Seg_Loop(){static unsigned char i=0;seg(i,Seg_Buff[i]);i++;if(i==8)i=0;
}
void Key_Loop(){keyval=0;if(P33==0)keyval=1;keydown=keyval&(keyold^keyval);keyup=~keyval&(keyold^keyval);if(keyval&&!keyold)flag_send=1;keyold=keyval;
}
void seg_temper(){Seg_Buff[0]=11;Seg_Buff[1]=11;Seg_Buff[2]=11;if((int)(temper*100)>=1000)Seg_Buff[3]=(int)temper/10;elseSeg_Buff[3]=11;Seg_Buff[4]=(int)(temper*100+0.5)/100%10;Seg_Buff[5]=(int)(temper*100+0.5)/10%10;Seg_Buff[6]=(int)(temper*100+0.5)%10;Seg_Buff[7]=10;
}

onewire.c

#include "sys.h"
sbit DQ=P1^4;void Delay_OneWire(unsigned int t)  
{unsigned char i;while(t--){for(i=0;i<12;i++);}
}
void Write_DS18B20(unsigned char dat)
{unsigned char i;for(i=0;i<8;i++){DQ = 0;DQ = dat&0x01;Delay_OneWire(5);DQ = 1;dat >>= 1;}Delay_OneWire(5);
}
unsigned char Read_DS18B20(void)
{unsigned char i;unsigned char dat;for(i=0;i<8;i++){DQ = 0;dat >>= 1;DQ = 1;if(DQ){dat |= 0x80;}	    Delay_OneWire(5);}return dat;
}
bit init_ds18b20(void)
{bit initflag = 0;DQ = 1;Delay_OneWire(12);DQ = 0;Delay_OneWire(80);DQ = 1;Delay_OneWire(10); initflag = DQ;     Delay_OneWire(5);return initflag;
}
float getT(){unsigned char tl,th;float temp;init_ds18b20();Write_DS18B20(0xcc);Write_DS18B20(0x44);init_ds18b20();Write_DS18B20(0xcc);Write_DS18B20(0xbe);tl=Read_DS18B20();th=Read_DS18B20();temp=(th<<8|tl)*0.0625;return temp;
}

http://www.dtcms.com/a/539723.html

相关文章:

  • 珠海市建设局网站きょこんきょうしゃ在线
  • 公司网站制作与推广青海汽车网站建设
  • 网站开发职业技能简历加油站网站大全
  • 龙华做网站哪家好的网站建设公司哪家好
  • 海外域名注册网站做网站为什么需要购买域名
  • 网站开发与设计实训报告总结舆情分析工具
  • 搜狗站长工具平台做直播网站用什么网上空间好
  • 绍兴企业免费建站宝塔wordpress安装
  • 湛江网站建设公司哪个好个人网站做淘宝客会怎样
  • 一级a做爰片免费网站冫如何做网站图标
  • 专门做本子的网站昆明做整站优化
  • 有什么搜图片的网站好帝国cms 做网站地图
  • 长沙营销型网站中国菲律宾引渡
  • 北京网站建设联系兴田德润百度竞价个人开户
  • 程序员会搭建非法网站吗中小微企业查询平台
  • 广州网站建设公司推荐网站建设及目标
  • 万网云服务器怎么上传网站吗网站 平均加载时间
  • 公司网站建设开发济南兴田德润优惠吗制作图片软件免费版
  • 易趣网网站建设与维护一键注册所有网站
  • 哪些网站适合推广公众号多少钱
  • 哪个网站做任务能赚钱网站安全制度体系的建设情况
  • 河北网诚网站建设陕西省建设资质是哪个网站
  • 永州本地网站建设网站开发后台指什么
  • 大兴安岭做网站双城网站建设哪家好
  • 西宁电商网站制作公司合肥网站建站公司
  • 网站建设教程吧青岛网站建设 熊掌号
  • 高端商务经纪网站建设加热器网站怎么做的
  • 临沂网站设计网站建设有哪些项目
  • 建站系统破解深装总建设集团股份有限公司
  • 建站一条龙设计制作网站监测怎么做