课程设计题三十五:风扇模拟控制系统设计
设计内容:1、3个独立按键分别控制“自然风”、“睡眠风”、“常风”,(三者的区别是直流电机的停歇时间不同),并在数显管上显示出区别
2、每种类型风可以根据按下独立按键次数分为4个档的风力调节。
3、设计风扇的过热保护,用继电器实现。即当风扇运行一段时间后,暂停10秒。
4、其他创新内容(如报警提示)
按键1
1234档位
按键2 5678档位
按键3 9 10 11 12档位
所有代码仿真打开下载:
http://dt4.8tupian.net/2/28880a68b9990.pg3
这是一个基于8051单片机的嵌入式系统程序,用于控制风扇的档位和定时关闭功能。以下是程序的主要部分的解释:
- 头文件和宏定义:
-
#include "reg51.h"
: 引入51单片机的寄存器定义。 -
#include <intrins.h>, <string.h>, <stdio.h>, <stdlib.h>
: 引入一些标准库和一些用于字符串、输入输出和内存管理的头文件。 - 定义了一些宏,如
uchar
,uint
,u8
,u16
,用于简化数据类型的定义。
- 全局变量和IO定义:
-
sbit ENA = P3 ^ 4;
: 定义 ENA 为 P3.4 引脚,用于控制风扇。 -
u8 ENA_PWM_data = 7;
: 用于控制风扇的 PWM 数据。 -
uchar code LEDData[]
: 数码管段选表。 -
sbit key_01, key_02, key_03;
: 定义三个按键的输入引脚。 -
sbit RELAY = P3 ^ 6;
,sbit BEEP = P3 ^ 7;
: 定义继电器和蜂鸣器的控制引脚。
- 函数和延时:
-
void delay_ms_key(unsigned char t)
: 实现毫秒级延时函数。 -
unsigned char KeySscan(void)
: 按键检测函数,返回按下的按键编号。 -
void init_timer1(void)
: 定时器1的初始化设置。 -
void timer1_server(void) interrupt 3
: 定时器1中断服务程序,用于控制 PWM。
- 主函数
main()
:
- 初始化风扇、蜂鸣器和定时器。
- 通过按键控制风扇档位,设置 ENA_PWM_data 和数码管显示的值。
- 定时器1中断服务程序
timer1_server()
:
- 控制 PWM 的工作。
- 当
pwm_count
达到ENA_PWM_data
时,关闭 ENA。
- 定时器0中断服务程序
T1_time()
:
- 实现定时功能,控制风扇在一定时间内打开或关闭。
- 当
ifg
为1时,计时关闭风扇,否则计时打开风扇。 - 控制 LED 数码管显示,用于显示风扇的运行时间。
总体来说,这个程序通过按键控制风扇的档位,定时关闭风扇,并通过 LED 数码管显示风扇的运行时间。