历史上的今天
今天是:2024年09月04日(星期三)
2020年09月04日 | 51单片机温度+pwm控制风扇转速,且温度在LCD1602上显示
2020-09-04 来源:51hei
原理图如下:

源代码如下:
#include #include #include"define.h" #include"delay.h" #include"LCD1602.h" #include"DS18B20.h" #include"HL_alarm.h" sbit KEY3 = P3^5; //定义开始/停止 void zhuan(); unsigned char timer1; //***********************************************************************/ void main() { if(KEY3==0) //第一次检测是否有键按下 { PWM=0;MA=~MA;MB=~MB; delay(1); return; } else {LCD_init(); set_alarm_HL(); DS_read_temperature(); TMOD=0x01; TH0=-50000/256; TL0=-50000%256; EA=1; ET0=1; TR0=1; while(1) {} } } void timer0() interrupt 1 { if(KEY3==0) //第一次检测是否有键按下 { TH0=-50000/256; TL0=-50000%256; DS_read_temperature();//读取温度 if((HI_alarm==1)||(LO_alarm==1)) alarm(); if(DS_OK==0) return;//如果读取错误,返回从新再读 display_temperature(); buffer_line1[10]='S';//*********修改成STOP buffer_line1[11]='T'; buffer_line1[12]='O'; buffer_line1[13]='P'; PWM=0;MA=~MA;MB=~MB; delay(1); return; } else { TH0=-50000/256; TL0=-50000%256; DS_read_temperature();//读取温度 if((HI_alarm==1)||(LO_alarm==1)) alarm(); if(DS_OK==0) return;//如果读取失败,返回重新再读 display_temperature(); if(sign_temp<=50&&sign_temp>=15) { MA=1; MB=0; if(sign_temp<25) //等于45或65时停止转动,占空比0 { buffer_line1[10]='S';//*********修改成STOP buffer_line1[11]='T'; buffer_line1[12]='O'; buffer_line1[13]='P'; PWM=0; delay(1); return; } buffer_line1[10]='R';//*********修改成RUN buffer_line1[11]='U'; buffer_line1[12]='N'; buffer_line1[13]=' '; zhuan(); } else { MA=0; MB=0; } } } void zhuan() { TMOD|= 0x10; //设置定时计数器工作方式1为定时器 TH1 = 0xFE; TL1 = 0x0C; //--定时器赋初始值,12MHZ下定时0.5ms--// ET1 = 1; //开启定时器1中断 EA = 1; TR1 = 1; //开启定时器 if(timer1>50) //PWM周期为50*0.5ms { timer1=0; } if(timer1 < sign_temp) //改变sign_temp这个值可以改变直流电机的速度 { PWM=1; } else { PWM=0; } } void Time1(void) interrupt 3 //3为定时器1的中断号 1 定时器0的中断器 0外部中断 1 2外部中断 2 4串口中断 { TH1 = 0xFE; //重新赋初值 TL1 = 0x0C; timer1++; }
史海拾趣
|
近几年来,随着对电源产品多样性和复杂性的要求的加大,如何科学而快速地检测其性能和指标成了一大难题。原来的手动测量方式已不能满足生产厂家和用户的要求,测试自动化成为电源模块测试追求的目标[1]。 随着虚拟仪器技术和计算机测试技术的发展, ...… 查看全部问答> |
|
就单路脉冲来说,那个牌子PLC的脉冲指令好用?并且效果也好?(台达,LG,三菱,西门子,施耐德,欧姆龙。。。。) EMERSON有ABS(当前值读取指令) ZRN(原点回归指令) PLSV(可变速脉冲输出指令)   ...… 查看全部问答> |
|
ActiveSync USB同步连接在PC上要编程操作该怎么整?枚举USB设备,把其当一般的USB设备来操作?还是RAPI? ActiveSync USB同步连接在PC上要编程操作该怎么整?枚举USB设备,把其当一般的USB设备来操作?还是RAPI?… 查看全部问答> |
|
void CWINCE500_TCP_CLIENTDlg::OnBnClickedButton4() { //打开串口1 //判断串口是否已经打开 if (m_pSerial != NULL) { ...… 查看全部问答> |
|
市场上流通大量的AT89C51 24PI 09XX的芯片,但去ATMEL主页没发现这个批号,为什么? Device AT80C51RD2 AT83C5134 AT83C5135 AT83C5136 AT83EB5114 AT89C2051 AT89C4051 AT89C5115 AT89C5130A-M AT89C5131A-L AT89C5131A-M AT89C5132 AT89C51AC2 AT89C51AC3 AT89C51CC01 AT89C51CC02 AT89C51CC03 AT89C51ED2 AT89 ...… 查看全部问答> |
|
求迅龙公司s3c2440_MDS522开发板用户手册及硬件电路图 如题,哪位大哥有以上资料,方便的话与小弟联系,不甚感谢,QQ:108763014,邮箱duxuejiao@hotmail.com… 查看全部问答> |
|
如下 嵌入式系统经常具有要求程序员去访问某特定的内存位置的特点。在某工程中,要求 设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个纯粹的ANSI编译器。写 代码去完成这一任务。 原来的答案如下: *(int * cons ...… 查看全部问答> |
|
从wm6.0 移植过来的 代码 在 wince5.0 下运行加载本地图片时 SHLoadImageFile函数报错没定义 换成LoadImage后运行报错Getlasterror = 1814 请问大家怎么解决?? //hbmpI ...… 查看全部问答> |
|
大虾,能否用LSE做为STM8主时钟完成USART的串口通信 如题,能否用LSE(32.768kHz)做为STM8的主时钟完成串口通信啊。 麻烦给些思路,最好能给出验证过的代码。 偶在楼底下先谢您了...............… 查看全部问答> |
|
在人类生活的环境中,温度扮演了一个极为重要的角色,工业生产中要严格考虑温度的变化对系统的影响,因而就有必要设计一个既可以对温度进行实时测量与监控又可以对其进行控制的仪器,我们这里采用msp430f149芯片进行控制,利用tmp275进行温 ...… 查看全部问答> |




