AVR单片机PWM试验程序

发布者:boczsy2018最新更新时间:2015-06-19 来源: 51hei关键字:AVR单片机  PWM  试验程序 手机看文章 扫描二维码
随时随地手机看文章
//本试验输出口为PD5 ,输出电压可以调节0---5V。


 

 

 


 [page]

此图电压输出位0.6V
以下是程序源码可从http://www.51hei.com/f/avrpwmcx.rar 下载源文件.


// ATMEGA16 晶振8MHZ
#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
  {
    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];
  }
}
关键字:AVR单片机  PWM  试验程序 引用地址:AVR单片机PWM试验程序

上一篇: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); 关于本文的更多详情请往下看。 Ⅱ、实例工程下载 笔者针对于初学者提供的例程都是去掉了许多不必要的功能,精简了官方的代码,对初学者一看就明白,以简单明了的工程供大家学习。 笔者提供的实例工程都是在
[单片机]
STM32F4_TIM输出<font color='red'>PWM</font>波形(可调频率、占空比)
AVR单片机新手避免锁死的方法
新手尽量不要设定熔丝,但是下载程序又必须设定一些,因此下面这些显得十分必要: 1、针对新买的AVR,它的内部没有程序,在电路板第一次通电写程序前设置与实际工作相符的熔丝位。特别是没有外部晶振时设置成外部时钟那肯定必死无疑。 2、如果AVR已有程序,且之前没有用外部晶振电路,中途想加外部晶振怎么办,焊接好外部晶振后,不要急着修改熔丝位,否则后果你懂得。先在内部RC工作模式下清除FLASH程序,然后再将熔丝位修改成外部晶振时钟。 3、如果熔丝锁死已经发生,没办法,要么用高压编程,要么自己买个大于4M的有源晶振(4个脚)直接给AVR提供时钟解锁。
[单片机]
什么是脉冲宽度调制(PWM)或脉冲频率调制
什么是脉冲宽度调制(PWM)或脉冲频率调制(PFM) 所谓脉冲宽度调制的方法是一种在整个工作过程中,开关频率不变,而开关接通的时间按照要求变化的方法。 所谓脉冲频率调制的方法是一种在整个工作过程中,开关接通的时间不变,而开关频率按照要求变化的方法。 占空比的定义: 开关接通的占空比定义为D, 其中ton 为开关导通时间,TS为开关周期。
[模拟电子]
什么是脉冲宽度调制(<font color='red'>PWM</font>)或脉冲频率调制
带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
[单片机]
<font color='red'>avr单片机</font>Proteus风速计模型仿真 bascom源<font color='red'>程序</font>
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供电,当它们有正
[电源管理]
使用低侧<font color='red'>PWM</font> IC的降压转换器
基于AVR单片机多任务嵌入式Internet系统设计
1 引言   目前,嵌入式系统已经广泛渗透到人们的工作、生活中。从家用电器、信息终端、手持通信设备到仪器仪表、制造工业、过程控制等领域,嵌入式设备已随处可见。另一方面,近几年来Internet技术的飞速发展给嵌入式应用带来了新的契机,在未来嵌入式系统中应用Internet技术具有很大的优势。   目前嵌入式Internet技术的实现主要有下面三种方式 :   第一种方式是EMIT技术,采用支持TCP/IP协议的高性能服务器作为网关(emGateway), 嵌入式设备通过RS-232、RS-485或者CAN总线等与网关服务器连接,间接通过服务器网关连接Internet。经过多年的发展EMIT技术已经在工业设备的网络化中得到了广
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved