AVR128 智能风扇设计-proteus-程序

一、系统方案

模拟的电风扇的工作状态有3种:自然风、常风及睡眠风。使用三个按键S1-S3设置自然风、常风及睡眠风。

再使用两个按键S4和S5,S4用于定时电风扇定时时间长短的设置,每按一次S4键,定时时间增加10秒,最长60秒,超过60秒回到0秒重新开始。按下S5键表示定时倒计时开始。

按下相应的风类键,使用处理器ATmega128定时/计数器的PWM功能生成不同占空比的1KHz的PWM信号来驱动直流电动机MOTOR-DC(模拟电风扇电机)。"自然风":生成占空比为30%的PWM信号,"睡眠风": 生成占空比为20%的PWM信号,"常风":生成占空比为70%的PWM信号.

使用8LED数码管或液晶显示屏显示电风扇的工作状态、动态显示使用电风扇的定时功能时的剩余定时时间。使用8LED数码管和液晶显示屏LM041L时,"自然风"显示"1"、"常风"显示"2"及"睡眠风"显示"3",使用12864液晶显示屏LGM12641BS1R LM3228时使用中文显示。

二、硬件设计

原理图如下:

三、单片机软件设计

1、首先是系统初始化

DDRA = 0xFF;

PORTA= 0xFF;

DDRC = 0xFF;

PORTC= 0xFF;

DDRF = 0x00;

PORTF= 0xFF;

DDRE &= 0xFC;

PORTE = 0x03;

//init_devices();

timer0_pwm(); // 初始化PWM

timer1_init(); // 初始化定时器

LCD_init();

// LCD12864_init(); // 初始化LCD

OCR0 = 0X46; // OCR0/0XFF=OCR0/256,占空比可调

// TCCR0=0X0A; // PWM关闭

2、液晶显示程序

void LCD_write_com(unsigned char com)

{

RS_CLR;

RW_CLR;

EN_SET;

Data_IO = com;

delay_nms(5);

EN_CLR;

}

//***********************************************************************

// 显示屏数据写入函数

//***********************************************************************

void LCD_write_data(unsigned char data)

{

RS_SET;

RW_CLR;

EN_SET;

Data_IO = data;

delay_nms(5);

EN_CLR;

}

3、按键程序

if((PINF&0x01)==0x00) // 自然风按下

{

Mode = 1;

OCR0 = 0X46; // 占空比 30%

}

if((PINF&0x02)==0x00) // 常风按下

{

Mode = 3;

OCR0 = 0X26; // 占空比 20%

}

if((PINF&0x04)==0x00) // 睡眠风按下

{

Mode = 2;

OCR0 = 0XA6; // 占空比 70%

}

复制代码
   if((PINF&0x08)==0x00)       //  设置当前时间
   {
      delay(10);   
	  if((PINF&0x08)==0x00)    //  设置当前时间
      {
	    Timer = Timer+10;
	    while(!(PINF&0x08));   //  按键释放
		if(Timer > 60)
		{
		   Timer = 0;
		}
	  }
   } 

4、核心算法程序

#pragma interrupt_handler timer1:15/定时器溢出中断向量标号/

void timer1(void)

{

static u16 Tmr = 0;

TCNT1H=(65536-1000)/256;

TCNT1L=(65536-1000)%256; // 定时4ms

if(++Tmr >= 250)

{

Tmr = 0;

if(Start == 1) // 启动标志位启动

{

if(--Timer > 60)

{

Timer = 0;

Start = 0;

}

}

}

}

四、proteus仿真设计

Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关推荐
西贝爱学习5 天前
Proteus8.17安装包,推荐教程
proteus
资料,小偿7 天前
8086微机原理与汇编语言,8086程序设计,EMU8086,MASM,汇编程序设计,proteus
汇编·51单片机·proteus
易享电子19 天前
基于单片机车窗环境监测控制系统Proteus仿真(含全部资料)
单片机·嵌入式硬件·fpga开发·51单片机·proteus
iCxhust20 天前
Proteus8.3打开前期项目版本的方法和步骤
proteus
易享电子21 天前
基于单片机大棚浇水灌溉控制系统Proteus仿真(含全部资料)
单片机·嵌入式硬件·fpga开发·51单片机·proteus
易享电子23 天前
基于单片机智能台灯(调光,时钟)系统Proteus仿真(含全部资料)
单片机·嵌入式硬件·fpga开发·51单片机·proteus
易享电子23 天前
基于单片机电器断路器保护器系统Proteus仿真(含全部资料)
单片机·嵌入式硬件·fpga开发·51单片机·proteus
逼子格1 个月前
【Proteus仿真】虚拟终端出现乱码问题解决
单片机·嵌入式硬件·proteus·嵌入式·硬件工程·电路仿真·虚拟终端
猫头虎2 个月前
2025最新超详细FreeRTOS入门教程:第十三章 FreeRTOS临界区与原子操作
stm32·单片机·嵌入式硬件·物联网·51单片机·proteus·iot
小莞尔2 个月前
【51单片机】【protues仿真】基于51单片机公交报站系统
stm32·单片机·嵌入式硬件·51单片机·proteus