• 51单片机智能电风扇控制系统proteus仿真设计( 仿真+程序+原理图+报告+讲解视频)


    51单片机智能电风扇控制系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

    51单片机智能电风扇控制系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

    仿真图proteus7.8及以上

    程序编译器:keil 4/keil 5

    编程语言:C语言

    设计编号:S0042

    讲解视频

    基于51单片机的智能电风扇控制系统proteus仿真设计

    1.主要功能:

    运用所学知识,制作一个 51单片机智能电风扇控制系统仿真设计

    (1)3个独立按键分别控制“自然风”、“睡眠风”、“常风”,(三者的区别是直流电机的停歇时间不同),并3个LED显示出区别。

    (2)每种类型风可以根据按下独立按键次数分为4个档的风力调节,并在数显管上显示1,2,3,4。

    (3)设计风扇的过热保护,外接一个拨码开关模拟过热信号产生,当拨码开关断开时单片机采集到不稳态,风扇停止;当拨码开关闭合时,风扇继续运转。

    (4)具有室内温度检测显示功能。

    具体电路实现:

    1.四位数码管显示室内温度和风扇档位,前三位显示温度,后一位显示风扇档位。

    2.使用DS18B20检测温度数据,接到单片机的P3.3口

    3.自然风,睡眠风,常风档位通过三个LED灯显示,分别接到P0.0,P0.1,P0.2

    4.过热保护装置通过拨码开关模拟,拨码开关闭合,单片机P0.3口接地,引脚电位拉低。拨码开关打开,引脚电位不确定,单片机检测不到低电位默认不过热。

    5.通过L298控制直流电机,仿真使用示波器显示脉冲宽度调制PWM,占空比越大,风扇转动越快。

    6.四个按键控制自然风,睡眠风,常风和风扇停止。按下按键可以完成对自然风,睡眠风,常风模式4个档的风力调节

    需注意仿真中51单片机芯片是通用的,AT89C51,AT89C52都是51单片机的具体型号,内核是兼容的。无论stc还是at都一样,引脚功能都是一样的,程序也是一样的,芯片可以替换为STC89C52/STC89C51/AT89C52/AT89C51等51单片机芯片。

    以下为本设计资料展示图:

    2.仿真

    开始仿真

    打开仿真工程,双击proteus中的单片机,选择hex文件路径,然后开始仿真。开始仿真够风扇不转动,需要按下档位按键才工作。

    img

    风扇转动的1档最大转速14.5,第二档转速最大转速28.5,第三档最大转速41.5,第四档最大转速55.6。下面是各模式在4档的仿真结果。

    自然风4档,温度31度,风扇转动的最高转速是+55.6,转动间隔时间0.2秒,自然风指示灯点亮,数码管前三位显示温度31,后一位显示风扇档位4。

    img

    睡眠风4档,温度31度,风扇转动的最高转速是+55.6,转动间隔时间0.8秒,睡眠风指示灯点亮,数码管前三位显示温度31,后一位显示风扇档位4。

    img

    常风4档,温度31度,风扇转动的最高转速是+55.6,转动间隔时间0.3秒,常风指示灯点亮,数码管前三位显示温度31,后一位显示风扇档位4。

    img

    过热保护

    任何档位或者模式下,拨码开关断开,过热保护模式启动,风扇停止转动。

    img

    3. 原理图

    image-20230901231735067
    元件 型号 数量

    单片机 AT89C51 1

    电容 10uf 1

    电容 30pf 2

    晶振 12MHZ 1

    电阻 10k 1

    按钮 4

    温度传感器 DS18B20 1

    驱动器 L298N 1

    显示器 LCD1602 1

    排阻 10k 1

    数码管 4位共阴 1

    电阻 1k 1

    直流电机 5V 1

    LED 黄色 3

    电阻 100欧 3

    排针 2P 1

    电容 0.1uf 2

    电容 100uf 2

    稳压器 7805 1

    4. 程序代码

    使用keil4或者keil5编译,代码有注释,可以结合报告理解代码含义。

    img

    主函数部分代码

    sbit k1=P2^3;//按钮
    sbit k2=P2^4;
    sbit k3=P2^5;
    sbit k4=P2^2;
    sbit led1=P0^0;//LED
    sbit led2=P0^1;
    sbit led3=P0^2;
    sbit out1=P2^6;//电机控制
    sbit out2=P2^7;
    sbit smg1=P3^4;//数码管
    sbit smg2=P3^5;
    sbit smg3=P3^6;
    sbit smg4=P3^7;
    sbit heat=P0^3;//过热
    
    //数码管编码
    uchar code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
    uchar sec=0,time=0,mode=0;//系统变量
    uchar miao=0,miao1=0,miao2=0,start=0;//间歇控制
    uchar sudu=1;//档位
    uchar wait=0;
    uchar time1=0;
    uchar bei=0;//暂停控制
    uchar wendu=0;//温度
    //延时
    void delay(uint i)
    {
    	while(i--)
    	{
    		//输出pwm
    		if(time1<99)
    		 	time1++;
    		else
    			time1=0;
    		if(start &&(miao<miao1))//启动
    		{
    			out1=1;
    			if(time1<sudu*20)
    			{
    				out2=0;
    			}
    			else
    			{
    				out2=1;
    			}
    		}
    		else //停止
    		{
    			out2=1;
    			out1=0;
    		}
    	}
    }
    //主函数
    void main()
    {
    	uchar k=0;
    	out1=0;
    	TMOD|=0X01;//初始化定时器
    	TH0=0X3C;
    	TL0=0XB0;	
    	ET0=1;//打开定时器0中断允许
    	EA=1;//打开总中断
    	TR0=1;//打开定时器
    	while(1)
    	{		
    		//按键检测
    		if(!k1 &&(k!=1))//自然风
    		{
    			k=1;
    			start=1;//启动
    			led1=0;//指示灯
    			led2=1;
    			led3=1;
    			miao1=3;miao2=1;
    			if(mode!=1)
    				mode=1;
    			else
    			{
    				if(sudu<4)
    					sudu++;
    				else
    					sudu=1;
    			}
    		}
    		if(!k2 &&(k!=2))//睡眠风
    		{
    			k=2;
    			start=1;//启动
    			led1=1;//指示灯
    			led2=0;
    			led3=1;
    			miao1=3;miao2=6;
    			if(mode!=2)
    				mode=2;
    			else
    			{
    				if(sudu<4)
    					sudu++;
    				else
    					sudu=1;
    			}
    		}
    		if(!k3 &&(k!=3))//常风
    		{
    			k=3;
    			start=1;//启动
    			led1=1;//指示灯
    			led2=1;
    			led3=0;
    			miao1=3;miao2=2;
    			if(mode!=3)
    				mode=3;
    			else
    			{
    				if(sudu<4)
    					sudu++;
    				else
    					sudu=1;
    			}
    		}
    		if(!k4)//停止
    		{
    			start=0;
    			led1=1;//指示灯
    			led2=1;
    			led3=1;
    			mode=0;
    		}
    		if(k1 && k2 && k3)
    			k=0;
    		//显示
    		P1=smgduan[wendu/10];smg1=0;delay(100);smg1=1;
    		P1=smgduan[wendu%10];smg2=0;delay(100);smg2=1;
    		P1=smgduan[sudu];smg4=0;delay(100);smg4=1;
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137

    5.设计报告

    7508字设计报告,内容包含设计框图,引言,硬件设计介绍,软件设计介绍,仿真调试,总结和参考文献。

    img

    6. 设计资料内容清单

    资料设计资料包括仿真,程序代码、讲解视频、功能要求、设计报告、软硬件设计框图等。

    0、常见使用问题及解决方法–必读!!!!

    1、仿真

    2、程序代码

    3、功能要求

    4、讲解视频

    5、设计报告

    6、框图

    7、原理图

    8、元器件清单

    9、开题报告

    10、结构框图

    Altium Designer 软件资料

    KEIL软件资料

    Proteus软件资料

    单片机学习资料

    答辩技巧

    设计报告常用描述

    鼠标双击打开查找更多51 STM32单片机课程毕业设计.url

    img

    资料下载链接(可点击):

  • 相关阅读:
    在项目中如何利用JS去修改CSS的属性值(二) --- :root+var()方法
    Logstash多数据源多输出怎么办?
    猿创征文 | 【Linux】调试器-gdb使用
    秋招每日一题T28——最大连续子序列
    【JavaSE】实例内部类、静态内部类和匿名内部类
    Spring之bean对象
    Mybatis—SqlSource与BoundSql
    【Dison夏令营 Day 18】如何用 Python 中的 Pygame 制作国际象棋游戏
    DevEco Studio 3.0编辑器配置技巧篇
    Android Material Design之BottomNavigationView(十一)
  • 原文地址:https://blog.csdn.net/weixin_52733843/article/details/132632183