2019级《单片机系统设计》作业
请使用课程中的单片机开发板,完成以下项目编程,具体要求如下:
1、 功能描述
“模拟风扇控制系统”能够模拟电风扇工作,通过按键控制风扇的转动速度和定时时间,数码管实时显示风扇的工作模式,动态倒计时显示剩余的定时时间,系统主要由数码管显示、单片机最小系统、按键输入和电机控制保护电路组成,系统框图如图1 所示:
2、 设计任务及要求
(1)工作模式
设备具有“睡眠风”、“自然风”和“常风”三种工作模式可以通过按键切换,通过单片机P34 引脚输出脉宽调制信号控制电机运行状态,信号频率为1KHz。
1.1 “睡眠风”模式下,对应PWM 占空比为20%;
1.2 “自然风”模式下,对应PWM 占空比为30%;
1.3 “常风”模式下,对应PWM 占空比为70%;
(2)数码管显示
数码管实时显示设备当前工作模式和剩余工作时间(倒计时),如图2 所示。
(3)按键控制
(4)LED 指示灯
“睡眠风”模式下,L1 点亮,“自然风”模式下L2 点亮,“常风”模式下L3 点亮;
按下停止按键或倒计时结束时,LED 全部熄灭。
注释:
(1) 自学DS18B20课程视频,掌握工作原理及编程方法;
(2) PWM输出可以接到某颗LED灯上,使用LED灯的亮度示意电机转速;
(3) 一周内完成程序的编写,留存源文件。
(4) 开学后发放DS18B20传感器,验证现象,并撰写实验报告。该任务作为结课作业给课程成绩。
子模块
sbit DQ = P3^7;
void DS18_delay(int useconds)
{
int s;
for (s=0; s<useconds;s++);
}
void write_bit(char bitval)
{
DQ = 0;
if(bitval==1) DQ =1;
ET0=0;
DS18_delay(5);
ET0=1;
DQ = 1;
}
void ds18write_byte(char val)
{
unsigned char i;
unsigned char temp;
for (i=0; i<8; i++)
{
temp = val>>i;
temp &= 0x01;
write_bit(temp);
}
ET0=0;
DS18_delay(5);
ET0=1;
}
unsigned char read_bit(void)
{
unsigned char i;
DQ = 0;
DQ = 1; <