Board logo

标题: Arduino-Lite系列学习(四) [打印本页]

作者: wxg1988    时间: 2012-9-23 22:34     标题: Arduino-Lite系列学习(四)


上一篇文章中,我们用AVR通过arduino_lite 编程点燃了一个发光二极管。这次我们将介绍模拟量采集(ADC)
Arduino-Lite沿用了ArduinoanalogRead函数,但提供了如下ADC控制功能:
enable_adc()
开启AVR芯片的ADC转换模块,该函数在Arduino-Lite初始化后自动执行。
disable_adc()
关闭AVR芯片的ADC转换模块,该操作可以降低AVR芯片耗电,节省电能
正如上篇文章那样,我们还使用Protues7.8Arduino-Lite进行AVR的仿真实验。



首先我们把AVR __ ATMAGE8的引脚图打开


在本次试验中我们有6个引脚可以使用即(AI0---AI5)AI0---AI5端口的精度是10位的,它的取值范围为0~10230~5V)。
如电路图所连接,使用AI0端口读取数值,我们可以事先知道AI0端口的数值为512

代码程序
/*
*   Demo sketch modified from Arduino
*
*
*/
#include "arduino_lit.h"
#define F_CPU 4000000UL
#define INT8U   char
#define INT16U  unsigned int
INT8U SEG_CODE[]="0123456789";
unsigned char  Display_Buffer[]="";
char cu[]="";
//LCD控制引脚定义;
#define RS_1() PORTD |=  (1<<PD4)
#define RS_0() PORTD &= ~(1<<PD4)
#define RW_1() PORTD |=  (1<<PD3)
#define RW_0() PORTD &= ~(1<<PD3)
#define EN_1() PORTD |=  (1<<PD5)
#define EN_0() PORTD &= ~(1<<PD5)
//模拟输入口
#define ADC_PIN  1

//LCD端口定义;
#define LCD_PORT  PORTB                     //发送LCD数据端口
#define LCD_PIN   PINB                      //接收LCD数据端口
#define LCD_DDR   DDRB                     //LCD端口方向数据
//-----------------------------------------------------------------
// LCD忙等待 ;
//-----------------------------------------------------------------
void LCD_BUSY_WAIT()
{
RS_0();RW_1();
LCD_DDR=0x00;
EN_1();_delay_ms(10);
//loop_until_bit_is_clear(LCD_PIN,7);
EN_0();
LCD_DDR=0xff;
}

//-----------------------------------------------------------------
// LCD命令寄存器;
//-----------------------------------------------------------------
void Write_LCD_Command(INT8U cmd)
{
LCD_BUSY_WAIT();
RS_0();RW_0();
LCD_PORT=cmd;
EN_1();EN_0();

}

//-----------------------------------------------------------------
// LCD数据寄存器;
//--------------------------------------------------------------







欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0