手机网站设计与实现是什么摄影网站 蜂鸟

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

手机网站设计与实现是什么,摄影网站 蜂鸟,ocr是不是用于制作网页的软件,云开发和普通开发区别目录 一、设计背景 二、实现功能 三、总体硬件设计 四、仿真演示 四、源程序 一、设计背景 随着现代工农业技术的发展及人们对生活环境要求的提高#xff0c;人们也迫切需要检测与了解环境温度。特别地#xff0c;高温情况下极易造成火灾#xff0c;例如#xff0c;在…目录 一、设计背景 二、实现功能 三、总体硬件设计 四、仿真演示 四、源程序 一、设计背景 随着现代工农业技术的发展及人们对生活环境要求的提高人们也迫切需要检测与了解环境温度。特别地高温情况下极易造成火灾例如在机房中电脑等设备发热快若在短时间内机房温度升高超出了设备正常温度就会导致系统瘫痪或产生火灾。低温可能导致设备的处理器运行速度变慢RAM随机访问存储器响应时间增加以及设备的整体性能下降。特别是对于电子组件和机械设备低温会使其反应速度减缓。在这种情况下温度如果得到及时的控制与报警就可以在一定程度上避免上述情况的发生。   另一个方面单片机技术已经普及到各个领域已经成为一种比较成熟的技术。因此本文将利用51单片机芯片设计一种基于51单片机的温度报警控制系统。通过仿真实验证明本文设计的温度报警控制系统工作时液晶显示屏实时显示温度值并利用按键设定温度上下限范围当所测温度超过设定的温度范围时蜂鸣器发出报警信号启动风扇降温当所测温度低于设定的温度范围时蜂鸣器发出报警信号启动加热器进行加热。本设计实现的温控系统结构简单可操作性强具有一定的实用价值。 二、实现功能 本设计以51单片机为控制核心设计一种温度报警控制系统。可具体实现以下功能 1系统通过DS18B20采集当前温度环境温度并显示精确到0.1度 2系统包含三个按键可设定上下限温度的阈值 3若当前温度高于上限阈值温度时声光报警开启电机降温若当前温度低于下限阈值温度时声光报警启动加热装置。 三、总体硬件设计 本系统设计的基于51单片机的温度报警控制系统总体设计框图如图1所示主要包括单片机最小系统、温度采集电路、独立式按键电路、显示电路、报警电路、加热电路和散热电路其中主控芯片采用功耗低、性能高的单片机 STC89C52温度采集电路采用数字温度传感器DS18B20显示电路采用 LCD1602 液晶显示器报警电路采用蜂鸣器以及LED 指示灯设计实现声光报警独立式按键用来设置不同时间段温度报警的上下限阈值。当实测环境温度值大于的温度上限值时系统自动进入散热模式直流电机运转带动风扇工作同时蜂鸣器响、红色LED 指示灯点亮 若低于设定的温度下限阈值系统自动进入加热模式继电器控制加热设备工作同时蜂鸣器响、绿色LED 指示灯点亮 若当前温度处于设定的温度上下限阈值之间时关闭散热、加热及报警从而使温度控制在设定的范围内。 图1 系统总体设计框图 四、仿真演示 当实测环境温度值处于设定的温度上下限阈值之间时关闭散热、加热及报警。 当实测环境温度值大于设定的温度上限阈值时直流电机运转带动风扇工作系统进入散热模式同时蜂鸣器响、红色LED 指示灯点亮。 当实测环境温度值低于设定的温度下限阈值系统进入加热模式继电器控制加热设备工作同时蜂鸣器响、绿色LED 指示灯点亮 。 通过三个按键设定上下限温度阈值设置过程中LCD上会有光标提示。 四、源程序 #include reg51.h #define uint unsigned int #define uchar unsigned char //宏定义 #define LCD1602 P0sbit SETP3^1; //定义调整键 sbit DECP3^2; //定义减少键 sbit ADDP3^3; //定义增加键 sbit BUZZP3^6; //定义蜂鸣器 sbit ALAMP1^2; //定义灯光报警 sbit fengshanP1^0; //定义风扇降温 sbit jiareP1^1; //定义加热 sbit ALAM1P1^4; sbit DQP3^7; //定义DS18B20总线I/O sbit RS P2^7; sbit EN P2^6; bit shanshuo_st; //闪烁间隔标志 bit beep_st; //蜂鸣器间隔标志 uchar x0; //计数器uchar code tab1[]{ Temper: . C }; uchar code tab2[]{TH: C TL: C}; uint c; uchar Mode0; //状态标志 signed char TH30; //上限报警温度默认值为30 signed char TL20; //下限报警温度默认值为20 // //DS18B20 // /**延时子程序/ void Delay_DS18B20(int num) {while(num–) ; } void delay(uint xms)//延时函数有参函数 {uint x,y;for(xxms;x0;x–)for(y110;y0;y–); } /初始化DS18B20/ void Init_DS18B20(void) {unsigned char x0;DQ 1; //DQ复位Delay_DS18B20(8); //稍做延时DQ 0; //单片机将DQ拉低Delay_DS18B20(80); //精确延时大于480usDQ 1; //拉高总线Delay_DS18B20(14);x DQ; //稍做延时后如果x0则初始化成功x1则初始化失败Delay_DS18B20(20); } /读一个字节/ unsigned char ReadOneChar(void) {unsigned char i0;unsigned char dat 0;for (i8;i0;i–){DQ 0; // 给脉冲信号dat1;DQ 1; // 给脉冲信号if(DQ)dat|0x80;Delay_DS18B20(4);}return(dat); } /写一个字节/ void WriteOneChar(unsigned char dat) {unsigned char i0;for (i8; i0; i–){DQ 0;DQ dat0x01;Delay_DS18B20(5);DQ 1;dat1;} } /读取温度/ unsigned int ReadTemperature(void) {unsigned char a0;unsigned char b0;unsigned int t0;float tt0;Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0x44); //启动温度转换Init_DS18B20();WriteOneChar(0xCC); //跳过读序号列号的操作WriteOneChar(0xBE); //读取温度寄存器aReadOneChar(); //读低8位bReadOneChar(); //读高8位tb;t8;tt|a;ttt*0.0625;// t tt*100.5; //放大10倍输出并四舍五入t tt*105.5; return(t); }/读取温度/ void check_wendu(void) {cReadTemperature()-5; //获取温度值并减去DS18B20的温漂误差if(c1200)c1200; }/***液晶写入指令函数与写入数据函数以后可调用********/void write_1602com(uchar com)//*液晶写入指令函数**** {RS0;//数据/指令选择置为指令 // rw0; //读写选择置为写LCD1602com;//送入数据delay(1);EN1;//拉高使能端为制造有效的下降沿做准备delay(1);EN0;//en由高变低产生下降沿液晶执行命令 }void write_1602dat(uchar dat)//液晶写入数据函数* {RS1;//数据/指令选择置为数据 // rw0; //读写选择置为写LCD1602dat;//送入数据delay(1);EN1; //en置高电平为制造下降沿做准备delay(1);EN0; //en由高变低产生下降沿液晶执行命令 }void lcd_init()//液晶初始化函数* {uchar a;write_1602com(0x38);//设置液晶工作模式意思16*2行显示5*7点阵8位数据write_1602com(0x0c);//开显示不显示光标write_1602com(0x06);//整屏不移动光标自动右移write_1602com(0x01);//清显示write_1602com(0x80);//日历显示固定符号从第一行第1个位置之后开始显示for(a0;a16;a){write_1602dat(tab1[a]);//向液晶屏写日历显示的固定符号部分delay(3);}write_1602com(0x800x40);//时间显示固定符号写入位置从第2个位置后开始显示for(a0;a16;a){write_1602dat(tab2[a]);//写显示时间固定符号两个冒号delay(3);}}void display() {if(Mode0){write_1602com(0x808);write_1602dat(c/10000x30);write_1602dat((c%1000)/1000x30);write_1602dat(((c%1000)%100)/100x30);write_1602com(0x8012);write_1602dat(((c%1000)%100)%100x30);write_1602com(0x8013);write_1602dat(0xdf);write_1602com(0x800x403);write_1602dat(TH/100x30);write_1602dat(TH%100x30);write_1602dat(0xdf);write_1602com(0x800x4012);write_1602dat(TL/100x30);write_1602dat(TL%100x30);write_1602dat(0xdf); }
} ///**初始化定时器0/ void InitTimer(void) {TMOD0x1;TH00x3c;TL00xb0; //50ms晶振12MEA1; //全局中断开关TR01;ET01; //开启定时器0 }void KEY() {//功能键if(SET0){BUZZ0;delay(10);if(SET0){Mode;if(Mode3)Mode0;BUZZ1;}while(SET0){if(Mode0){// write_1602com(0x800x406);write_1602com(0x0c);} else if(Mode1){write_1602com(0x800x404);write_1602com(0x0f);} else{write_1602com(0x800x4013);write_1602com(0x0f);} }}//增加if(ADD0Mode1){BUZZ0;delay(10);if(ADD0) {TH;if(TH99) TH99;write_1602com(0x800x403);write_1602dat(TH/100x30);write_1602dat(TH%100x30);write_1602com(0x800x404); BUZZ1;}while(ADD0);}//减少if(DEC0Mode1){BUZZ0;delay(10);if(DEC0){TH–;if(THTL) THTL1;write_1602com(0x800x403);write_1602dat(TH/100x30);write_1602dat(TH%100x30);write_1602com(0x800x404); BUZZ1;}while(DEC0);}if(ADD0Mode2){BUZZ0;delay(10);if(ADD0) {TL;if(TLTH) TLTH-1;write_1602com(0x800x4012);write_1602dat(TL/100x30);write_1602dat(TL%100x30);write_1602com(0x800x4013); BUZZ1;}while(ADD0);}//减少if(DEC0Mode2){BUZZ0;delay(10);if(DEC0){TL–;if(TL0) TL0;write_1602com(0x800x4012);write_1602dat(TL/100x30);write_1602dat(TL%100x30);write_1602com(0x800x4013); BUZZ1;}while(DEC0); } }/报警子程序/ void Alarm() {if(x10){beep_st~beep_st;x0;}if(Mode0){if((c/10)TH){fengshan0;jiare1;ALAM0;ALAM11;if(beep_st1)BUZZ0;elseBUZZ1;}else if((c/10)TL){fengshan1;jiare0;ALAM10;ALAM1;if(beep_st1)BUZZ0;elseBUZZ1;}else{BUZZ1;ALAM1;ALAM11;fengshan1; jiare1; }}else{BUZZ1;ALAM1;ALAM11;fengshan1;jiare1;} }/主函数/ void main(void) {uint z;delay(1);lcd_init();delay(1);InitTimer(); //初始化定时器for(z0;z100;z){check_wendu();delay(1); } while(1){display();KEY();Alarm(); check_wendu();} }/定时器0中断服务程序**/ void timer0(void) interrupt 1 {TH00x3c;TL00xb0;x; } 仿真与程序源文件百度网盘链接https://pan.baidu.com/s/1KKbiyLIr71JHmF1Sj-sBpw  提取码eumg