控制AVR单片机5路PWM波形
控制AVR单片机5路PWM波形
现开发了单片机控制5路PWM波形,也可以同时控制15路直流三色灯板,按触摸屏顺序点亮的电路和程序,供大家参考。
电路为
单片机ATMEGA128控制5路PWM方波,按照74HC08逻辑编码输出15路PWM信号,一次按照迪文触摸屏点亮3种颜色灯板的5路发光信号。ULN2003提供12V电压。每个灯板通过一个CMOS管IR3205输出功率。一个74HC08通过一路PWM,这路PWM通过74HC08控制的继电器控制IR3205的开关,进而控制24V,13V,36V灯板的开关,灯板的亮度通过PWM波形的占空比调节电路的PCB如下
上面是单片机PCB,它和灯板PCB通过排线连接
图片
图片
图片
图片
图片
图片
上面是灯板PCB。下面是单片机程序,程序用ICC-AVR开发,链接:https://pan.baidu.com/s/1X_7zIHR4K1ipaGRTviVtUw ;
提取码:so7m
链接: https://pan.baidu.com/s/1oK1L9I1EFRVYrHcABoS7Cg?pwd=y7nn 提取码: y7nn
复制这段内容后打开百度网盘手机App,操作更方便哦
//ICC-AVR application builder : 2010-6-22 15:14:03
// Target : M64A
// Crystal: 4.0000Mhz
/*
修改宏定义以实现不同功能,
*/
#include “main.h”
/*******************************************
向串口1发送单个数据,查询方式
***************************************/
void TxUart1(unsigned char i)
{
//CLI(); //disable all interrupts
//DelayMs(1);
while (!(UCSR0A & (1<<UDRE0))); / 等待发送缓冲器为空/
UDR0 = i; / 发送数据/
//SEI(); //re-enable interrupts
}
/*******************************************
向串口0发送数组,查询方式
参数1:数组指针;
参数2:数组长度;
*******************************************/
void TxArrayUart1(unsigned char *ptr,unsigned char number)
{
//CLI(); //disable all interrupts
uchar i;
for(i = 0; i < number; i++)
{
TxUart1(ptr[i]);
}
//SEI(); //re-enable interrupts
}
/*******************************************
向串口1发送单个数据,查询方式
void TxUart1(unsigned char i)
{
//CLI(); //disable all interrupts
while (!(UCSR1A & (1<<UDRE1))); //等待发送缓冲器为空
UDR1 = i; //发送数据
//SEI(); //re-enable interrupts
}
/*******************************************
向串口0发送数组,查询方式
参数1:数组指针;
参数2:数组长度;
void TxArrayUart1(unsigned char *ptr,unsigned char number)
{
//CLI(); //disable all interrupts
uchar i;
for(i = 0; i < number; i++)
{
TxUart1(ptr[i]);
}
//SEI(); //re-enable interrupts
}
/*******************************************
数据接收ÿ