标题:
Arduino-Lite系列学习(四)
[打印本页]
作者:
wxg1988
时间:
2012-9-23 22:34
标题:
Arduino-Lite系列学习(四)
上一篇文章中,我们用
AVR
通过
arduino_lite
编程点燃了一个发光二极管。这次我们将介绍
模拟量采集
(ADC)
Arduino-Lite
沿用了
Arduino
的
analogRead
函数,但提供了如下
ADC
控制功能:
enable_adc()
开启
AVR
芯片的
ADC
转换模块,该函数在
Arduino-Lite
初始化后自动执行。
disable_adc()
关闭
AVR
芯片的
ADC
转换模块,该操作可以降低
AVR
芯片耗电,节省电能
正如上篇文章那样,我们还使用
Protues7.8
和
Arduino-Lite
进行
AVR
的仿真实验。
首先我们把
AVR __ ATMAGE8
的引脚图打开
在本次试验中我们有
6
个引脚可以使用即(
AI0---AI5)
,
AI0---AI5
端口的精度是
10
位的,它的取值范围为
0~1023
(
0~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