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

news2024/9/22 2:58:46

一、系统方案
模拟的电风扇的工作状态有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仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/931852.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MacOS软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 MacOS是一种由苹果公司开发的操作系统,专门用于苹果公司的计算机硬件。它被广泛用于创意和专业应用程序,如图像设计、音频和视频编辑等。以下是关于MacOS的详细介绍。 1、MacOS的历史和演变 MacOS最初于…

功能强大的网站检测工具Web-Check

什么是 Web-Check ? Web-Check是一款功能强大的一体化工具,用于查找有关网站/主机的信息。目前仪表版上可以显示:IP 信息、SSL 信息、DNS 记录、cookie、请求头、域信息、搜索爬虫规则、页面地图、服务器位置、开放端口、跟踪路由、DNS 安全扩…

UE4/5的Custom节点:在VScode使用HLSL(新手入门用)

目录 custom节点 VSCode环境安装 将VSCode里面的代码放入Custom中 custom节点 可以看到这是一个简单的Custom节点: 而里面是可以填写代码的: 但是在这里面去写代码会发现十分的繁琐【按下enter后,不会换行,也不会自动缩进】 …

关于UG/NX二次开发的历史和发展前景

UG/NX是一款广泛应用于计算机辅助设计与制造领域的软件,具有强大的二次开发能力。本文将介绍UG/NX二次开发的历史和发展前景。 一、UG/NX二次开发的历史 UG/NX最初由美国UGS公司(后被西门子收购)开发,是一款集成了CAD、CAM和CAE…

docker 重装提示 Exising installation is up to date 解决方法

Windows Docker 重装提示 Exising installation is up to date 解决方法 出现这个问题是因为卸载Docker没有卸载干净,导致无法重装 解决方法: 按下WindowR唤起命令输入界面,输入 regedit 打开注册表编辑在地址栏输入HKEY_LOCAL_MACHINE\SOFTW…

大数据之Maven

一、Maven的作用 作用一:下载对应的jar包 避免jar包重复下载配置,保证多个工程共用一份jar包。Maven有一个本地仓库,可以通过pom.xml文件来记录jar所在的位置。Maven会自动从远程仓库下载jar包,并且会下载所依赖的其他jar包&…

【MOS管的作用和工作原理】

数电/模电知识学习与分享001 MOS管的作用和工作原理1、MOS管基本概念2、MOS管基本原理3、MOS管广泛作用4、MOS管特点4、参考文献 MOS管的作用和工作原理 1、MOS管基本概念 MOS管(Metal-Oxide-Semiconductor Field-Effect Transistor)是一种常用的半导体…

100个Python小游戏,上班摸鱼我能玩一整年【附源码】

哈喽铁子们 表弟最近在学Python,总是跟我抱怨很枯燥无味,其实,他有没有认真想过,可能是自己学习姿势不对? 比方说,可以通过打游戏来学编程! 今天给大家分享100个Python小游戏,一定…

个人记录:划分

原始数据展示 每五个大图移动一次所有的大图名称的小图片。 读取指定图片格式的图片名称,内置函数map执行,文件移动 图片01-17[:27] 图片17-70要改27为25 import os import shutil # source dataset/sat_train/ source_path "/mnt/sdb1/fenghaixia/dsm/da…

考虑储能电池参与一次调频技术经济模型的容量配置方法(matlab代码)

目录 1 主要内容 储能参与调频原理 储能参与一次调频的充放电策略 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现文献《考虑储能电池参与一次调频技术经济模型的容量配置方法》模型,以调频效果最优为目标,考虑储能参与一次调频的充放电…

Tcp 协议的接口测试

首先明确 Tcp 的概念,针对 Tcp 协议进行接口测试,是指基于 Tcp 协议的上层协议比如 Http ,串口,网口, Socket 等。这些协议与 Http 测试方法类似(具体查看接口自动化测试章节),但在测…

函数式编程-Stream流学习第二节-中间操作

1 Stream流概述 java8使用的是函数式编程模式,如同它的名字一样,它可以用来对集合或者数组进行链状流式操作,让我们更方便的对集合或者数组进行操作。 2 案例准备工作 我们首先创建2个类一个作家类,一个图书类 package com.stream.model;…

VMware软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 VMware软件是一种虚拟化软件,可以将一台计算机分成多个虚拟机,每个虚拟机都可以运行独立的操作系统和应用程序,从而实现多个不同的工作环境共用同一台硬件设备。以下是关于VMware软件的详细介…

38、springboot为 spring mvc 提供的静态资源管理,覆盖和添加静态资源目录

springboot为 spring mvc 提供的静态资源管理 ★ Spring Boot为Spring MVC提供了默认的静态资源管理: ▲ 默认的四个静态资源目录: /META-INF/resources > /resources > /static > /public ▲ ResourceProperties.java类的源代码&#xff0…

Java进阶篇--进程和线程的区别

进程和线程 进程 在一个操作系统中,每个独立执行的程序都可称之为一个进程,也就是“正在运行的程序”。目前大部分计算机上安装的都是多任务操作系统,即能够同时执行多个应用程序,最常见的有Windows、Linux、Unix等。比如在Wind…

最新社会工程学技术

人本身是防御体系中最大的漏洞。由于人心的不可测性,决定了无法像修补漏洞一样对人打补丁,只能通过后天培养安全意识来预防这种情况发生。虽然社会工程学的本质是心理战术,但是可以使用很多技术手段进行辅助,本节介绍社会工程学常…

REDIS 7 教程 数据类型-进阶篇

⑥ *位图 bitmap 1. 理论 由0和1 状态表现的二进制位的bit 数组。 说明:用String 类型作为底层数据结构实现的一种统计二值状态的数据类型 位图本质是数组,它是基于String 数据类型的按位操作。该数组由多个二进制位组成,每个二进制位都对应一个偏…

合并两个链表

题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 比如以下例子: 题目接口: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListN…

nodejs+vue+elementui农业产品信息网上商城管理系统_9927h

语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 前端nodejsvueelementui,系统使用权限分别包括管理员、种植户和用户,其中管理员拥有着最大的权限,同时管理员的…

C++初学者学习指南

文章目录 环境职业选择基本技能新特性与学习曲线高阶技能C模版元编程线程池,异步任务 C 相关工具及资源C ToolsC Resources 项目大项目小项目 如何学未来期望 环境 编程工具:VSCode插件: BazelC/CClang-FormatVim 职业选择 AI领域&#xf…