继电器(Relay),作用是用弱电控制强电。比如,我们用avr单片控制一个220V电压的灯泡,这就必须用到继电器。
本课用avr单片机来控制继电器的吸合与断开。
Proteus仿真实验器件:
1 atmega128一块
2 button,按键一个
3 relay,通用继电器一个,并把继电器的Component Value设置为5V
4 pnp三极管一个
5 LAMP,灯泡一个改为220V
6 resistor 1k
7 DIODE 二极管一个
这个程序实际上很简单,主要要学习继电器的用法,注意的是,继电器必须接一个二极管。
仿真程序如下:
#include
#include
#define int8u unsigned char
#define int16u unsigned int
#define k1_down() (PINB & _BV(PB7))
#define relay_switch() PORTD^=_BV(PD4)
int main()
{
DDRD=0xff;
PORTD=0xff;
DDRB=0x00;
PORTB=0xff;
while(1)
{
if(k1_down() )
{
while(k1_down() );
relay_switch( );
_delay_ms(20);
}
}
}
关键字:AVR 单片机控制 继电器 吸合与断开
引用地址:
AVR单片机控制继电器吸合与断开的仿真设计
推荐阅读最新更新时间:2024-11-10 10:31
AVR单片机的几个重要总结
转ST和AVR时都没有系统的看过相关文档,都是根据项目,拿到datasheet,备好工具就开始了,看得最多的就是feature和pins,所以经常在一些细节上疏忽了。在经历过惨痛的教训后,总结出来一些。。。。 1. 通过ISP给Tiny25下载程序时发现内置的EEPROM的数据全部被清掉,重置为0xFF了。经过多次实践,可以这样说:给AVR单片机下载程序时,内部EEPROM的数据全部会被重置,所以,如果想往EEPROM烧些初始化值的话,最好的方式是定义个.eeprom段,在烧完FLASH程序后再将生成的eep文件烧到EEPROM中去,修改Fuse和LockBits是不影响EEPROM数据的。 2. Tiny5的A/D引脚如果悬
[单片机]
基于AVR单片机的PCF8563子程序
/********************************************************************* 目 的: 建立PCF8591操作库 目标系统: 基于AVR单片机 应用软件: ICCAVR *********************************************************************/ /*01010101010101010101010101010101010101010101010101010101010101010101
[单片机]
AVR定时器T1中断示例程序
AVR定时器T1中断示例程序使用AVR的定时器T1做1S定时,并使用PD口的 LED 指示灯做简单指示。 #include iom16v.h #include macros.h #define DISP_DDR DDRD #define DISP_PORT PORTD /*----------------------------------------------------------------- 程序名称:定时器1初始化程序 程序功能: 注意事项:基于7.3728M 晶振 提示说明:晶振不要买到假的,要不然,调不出来还以为电脑有鬼! 输 入: 返
[单片机]
AVR单片机电子钟C程序
#include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int #define setb(val,bitn) (val|=(1 (bitn)))//设置某IO口某位为1 #define clr(val,bitn) (val&=~(1 (bitn)))//设置某IO口某位为0 #define get(val,bitn) (val&(1 (bitn)))//读取某位状态 uchar shi=20,fen=39,miao,a=0xff,num; #pragma interrupt_handler zhong:9//它所对应
[单片机]
AVR系列之PWM测试
现在都已经开始上课了 总结还没做完呢 还是不急 都说是慢工出细活的 不过偶是不知道自己的算不算是细活呢 自我安慰下 姑且就当是吧 今天整理的是关于定时器的PWM功能测试 不多说了 继续写出代码吧 #include iom16v.h #include macros.h #define OC0_OUT_EN DDRB |= 0b00001000 //OCO设置为输出端 //PWM初始化 void Timer0Init(void) { TCCR0 = (1 WGM01)|(1 WGM00)|(1 COM01)|(1 COM00)|(1 CS00); /* WGM01=1; WGM00=1; -- fast PWM m
[单片机]
AVR单片机IAR AVR C语言中断编程
一、AVRmega16中断向量表 向量号 程序地址 中断源 描述 IAR AVR中的定义 1 000 RESET 外部引脚电平引发的复位,上电复位,掉电检测复位,看门狗复位,以及JTAG AVR 复位 RESET_vect 2 002 INT0 外部中断请求0 INT0_vect 3 004 INT1 外部中断请求1 INT1_vect 4 006 TIMER2 COMP 定时器/计数 2 比较匹配 TIMER2_COMP_vect 5 008 TIMER2 OVF 定时器/计数 2 溢出 TIMER2_OVF_vect 6 00A TIMER1 CAPT 定时器/计数 1事件捕捉 TIMER_ CAPT_vect 7 00C T
[单片机]
AVR单片机一些学习笔记
下面是自己在学习AVR单片机时的学习经验,分享出来给大家,一起学习。 1、AVR单片机采用RISC架构,8051单片机采用CISC架构。 前者速度为后者的2~4倍,为流水线操作指令。 2、 AVR单片机有32个通用寄存器(地址在RAM区从$0000开始到$001F),其中有6个(最后6个)合并为3个16位的X,Y,Z寄存器,用来存放地址指针,Z寄存器还可以寻址程序存储器。 3、 哈佛结构,131条机器指令。 4、 延迟开机功能。 5、 内部自带RC振荡器,可提供1/2/4/8MHZ的工作时钟。 6、 FLASH+EEPROM+SRAM+SPI+USART+TWI+PWM+RTC+10位ADC+模拟比较器+JTAG。
[单片机]
使用AVR定时/计数器的PWM功能设计要点
一、定时/计数器PWM设计要点 根据PWM的特点,在使用ATmega128的定时/计数器设计输出PWM时应注意以下几点: 1.首先应根据实际的情况,确定需要输出的PWM频率范围,这个频率与控制的对象有关。如输出PWM波用于控制灯的亮度,由于人眼不能分辨42Hz以上的频率,所以PWM的频率应高于42Hz,否则人眼会察觉到灯的闪烁。 2.然后根据需要PWM的频率范围确定ATmega128定时/计数器的PWM工作方式。AVR定时/计数器的PWM模式可以分成快速PWM和频率(相位)调整PWM两大类。 3.快速PWM可以的到比较高频率的PWM输出,但占空比的调节精度稍微差一些。此时计数器仅工作在单程正向计数方式,计数器的上限值决定
[单片机]