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仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关推荐
逐步前行1 天前
Proteus 8.9(三)元器件类
proteus
资料,小偿2 天前
4.1.2基于51单片机汇编语言出租车计价器proteus仿真出租车计价器,汇编语言51单片机
汇编·51单片机·proteus
逐步前行4 天前
Proteus 8.9(四)51单片机仿真
嵌入式硬件·51单片机·proteus
逐步前行5 天前
Proteus 8.9(二)常用组件
proteus
资料,小偿5 天前
4.1.1基于51单片机汇编语言出租车计价器可切换白天黑夜,可修改价格
汇编·51单片机·proteus
逼子格6 天前
硬件工程师成长之路——知识汇总(持续更新)
嵌入式硬件·proteus·硬件工程·ad·keil·电路仿真·硬件工程师面试
逐步前行8 天前
Proteus 8.9(一)安装汉化
proteus
up向上up8 天前
基于STM32的电子钟万年历Proteus仿真设计_LCD1602显示
stm32·单片机·proteus
新晨单片机设计8 天前
【S001A】基于STM32单片机视力保护仪【Proteus仿真+Keil程序+报告+原理图】
stm32·单片机·proteus
up向上up8 天前
【普中】基于普中51开发板单片机的8_8点阵滚动显示设计
单片机·51单片机·proteus