//本试验输出口为PD5 ,输出电压可以调节0---5V。
#include
#define uchar unsigned char
#define uint unsigned int
#define xtal 8
__flash uchar seg7[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//数码管码表
__flash uchar tab[]={0xfe,0xfd,0xfb,0xf7};//数码管位选
//---------------------------------
void delaynms(uint k) //延时k毫秒函数
{
uint i,j;
for(i=0;i
关键字:AVR单片机 PWM 试验程序
引用地址:AVR单片机PWM试验程序
{
for(j=0;j<1140;j++);
}
}
uint wide; //脉冲宽度
void portinit() //端口初始化
{
DDRA=0xff;
PORTA=0xff;
DDRC=0xff;
PORTC=0xff;
DDRB=0xff;
PORTB=0xff;
DDRD=0xff;
PORTD=0xff;
}
void time1init() //定时器设置函数
{
TCCR1A=0x83; //升序计数比较匹配清零,降序计数比较匹配置位
TCCR1B=0x02; //设置为相位修正PWM模式,选择8分频
}
void initdevice()
{
portinit();
time1init();
}
void scanint1() //PD3口按下,脉宽增加
{
if((PIND&0x08)==0)
{
delaynms(10);
if((PIND&0x08)==0)
{
if(wide<1023)wide++; 脉宽最大增加到1023
delaynms(200);
}
}
}
void scanint0() //PD2按下,脉宽减少
{
if((PIND&0x04)==0)
{
delaynms(10);
if((PIND&0x04)==0)
{
if(wide>0)wide--;
delaynms(200);
}
}
}
void main(void)
{
long x;
uint voltage;
initdevice();
delaynms(100);
while(1)
{
voltage=wide;
OCR1AH=(uchar)(wide>>8); 脉宽取低8位
OCR1AL=(uchar)(wide&0xff);脉宽低8位和高8位组合成比较匹配器A的数值
scanint1();
scanint0();
x=(long)voltage; 设置电压变量
x=(x*5000)/1023; 电压为5V 分辨率5000设置
voltage=(uint)x;
PORTA=seg7[voltage/1000];
PORTC=tab[3];
PORTA=seg7[voltage%1000/100];
PORTC=tab[2];
PORTA=seg7[voltage%100/10];
PORTC=tab[1];
PORTA=seg7[voltage%10];
PORTC=tab[0];
}
}
上一篇:1602 AVR单片机版 报警指示功能
下一篇:AVR中断运用报警2路指示
推荐阅读最新更新时间:2024-03-16 14:04
STM32F4_TIM输出PWM波形(可调频率、占空比)
Ⅰ、概述 上一篇文章关于STM32基本的计数原理明白之后,该文章是在其基础上进行拓展,讲述关于STM32比较输出的功能,以输出PWM波形为实例来讲述。 提供实例工程中比较实用的函数:只需要调用该函数,参数为频率和占空比 void TIM2_CH2_PWM(uint32_t Freq, uint16_t Dutycycle); 先看一下实例中1KHz、20%占空比波形图 TIM2_CH2_PWM(1000, 20); 关于本文的更多详情请往下看。 Ⅱ、实例工程下载 笔者针对于初学者提供的例程都是去掉了许多不必要的功能,精简了官方的代码,对初学者一看就明白,以简单明了的工程供大家学习。 笔者提供的实例工程都是在
[单片机]
AVR单片机新手避免锁死的方法
新手尽量不要设定熔丝,但是下载程序又必须设定一些,因此下面这些显得十分必要: 1、针对新买的AVR,它的内部没有程序,在电路板第一次通电写程序前设置与实际工作相符的熔丝位。特别是没有外部晶振时设置成外部时钟那肯定必死无疑。 2、如果AVR已有程序,且之前没有用外部晶振电路,中途想加外部晶振怎么办,焊接好外部晶振后,不要急着修改熔丝位,否则后果你懂得。先在内部RC工作模式下清除FLASH程序,然后再将熔丝位修改成外部晶振时钟。 3、如果熔丝锁死已经发生,没办法,要么用高压编程,要么自己买个大于4M的有源晶振(4个脚)直接给AVR提供时钟解锁。
[单片机]
什么是脉冲宽度调制(PWM)或脉冲频率调制
什么是脉冲宽度调制(PWM)或脉冲频率调制(PFM) 所谓脉冲宽度调制的方法是一种在整个工作过程中,开关频率不变,而开关接通的时间按照要求变化的方法。 所谓脉冲频率调制的方法是一种在整个工作过程中,开关接通的时间不变,而开关频率按照要求变化的方法。 占空比的定义: 开关接通的占空比定义为D, 其中ton 为开关导通时间,TS为开关周期。
[模拟电子]
带ADC、PWM和比较器的单片机-EM78P458
EM78P458是台湾义隆公司最新推出的一款高性能 OTP单片机,除了具有其它EM78系列单片机的特点外,还增加了8路8位A/D转换器,2路脉宽调制器(PWM)和一个比较器,可以广泛应用在智能仪表、自动控制、家用电器等领域。下面主要介绍该单片机的特点以及A/D转换器、脉宽调制器和比较器的结构与用法。
1. EM78P458主要特点 EM78P458具有如下特点: ● 8路8位A/D转换器,其中2路可选择5级放大增益; ●2路脉宽调制输出,10位分辨率,可用作D/A转换器; ●1 个比较器,可产生中断,外接反馈电阻可构成运放; ●8级硬件堆栈,方便程序调用; ●6个中断源: 定时/计数器溢出中断; I
[单片机]
avr单片机Proteus风速计模型仿真 bascom源程序
编译环境:bascom avr+Proteus8.9 单片机源程序如下: rem Main.bas file generated by New Project wizard rem rem Created: 周二 6月 2 2020 TAOTIE rem Processor: ATmega8 rem Compiler: BASCOM-AVR rem Write your code here $regfile = m8def.dat $crystal = 8000000 '$baud = 9600
[单片机]
AVR单片机教程——蜂鸣器
引子 定时/计数器(简称定时器)是单片机编程中至关重要的一部分,再简单的单片机也会带有定时器。 也许你会觉得我们已经在delay函数中接触过定时器了,然而并不是,它只是软件地通过“浪费时间”来实现延时。我们接触定时器在数码管中,segment_auto函数可以自动完成动态扫描,好像在main函数背后又开了一个线程,两者并行执行一样。这就用到了定时器中断。 中断是一种必要的程序流程控制方法,但这两讲我们先聚焦于利用定时器来输出波形。 本讲中,我们用定时器来输出一定频率的方波,让蜂鸣器发出声音。 定时/计数器 ATmega324PA提供了3个定时器:定时器0、定时器1、定时器2。其中,定时器0和2都是8位的,定时器1是
[单片机]
使用低侧PWM IC的降压转换器
最常见的开关电源结构是降压转换器,它能高效地将高电压转换为低电压。图1给出了一个典型的降压转换器,其中N沟道MOSFET Q1需要一个浮栅驱动信号。浮栅驱动是PWM(脉宽调制)控制器IC的一部分。根据控制器的设计,Q1可以是N沟道或者是P沟道。遗憾的是,IC的额定电压必须与输入电压同高,这限制了它可以处理的极限最高电压。
图2中的电路采用一个简单的电压电平移位器,用一个降压转换器控制一个带低侧IC的导通晶体管,该IC有以地为基准的栅极驱动。由于PWM IC中的电平移位电路不用承受大电压,因此可以实现任意高输入电压的转换器。
带低侧栅极驱动的PWM IC可以为N沟道MOSFET供电,当它们有正
[电源管理]
基于AVR单片机多任务嵌入式Internet系统设计
1 引言 目前,嵌入式系统已经广泛渗透到人们的工作、生活中。从家用电器、信息终端、手持通信设备到仪器仪表、制造工业、过程控制等领域,嵌入式设备已随处可见。另一方面,近几年来Internet技术的飞速发展给嵌入式应用带来了新的契机,在未来嵌入式系统中应用Internet技术具有很大的优势。 目前嵌入式Internet技术的实现主要有下面三种方式 : 第一种方式是EMIT技术,采用支持TCP/IP协议的高性能服务器作为网关(emGateway), 嵌入式设备通过RS-232、RS-485或者CAN总线等与网关服务器连接,间接通过服务器网关连接Internet。经过多年的发展EMIT技术已经在工业设备的网络化中得到了广
[应用]
小广播
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐
最新单片机文章
更多精选电路图
更多热门文章
更多每日新闻
更多往期活动
11月13日历史上的今天
厂商技术中心