- 3
- 0
- 约5.06千字
- 约 5页
- 2018-02-08 发布于河南
- 举报
ADS7841驱动
ADS7841接线:1、7、9脚接VCC=5V
?????????????????????????? 3、6、10、11脚接GND
????????????????????????? 4、5脚悬空
?????????????????????????? 12----16脚接PD4----PD0
?????????????????????????? 2脚加外部输入电压,8脚接2.5V外部参考电压
以下是main.c
/******************************************************************************????????????????????????????? ADS7841驱动程序* * 主控芯片:ATmega64* * 编译环境:ICCAVR6.31A******************************************************************************/#include iom64v.h#include macros.h
#include delay.h#include ads7841.h#include LCD1602.h
//----------------------ADS7841控制字节----------------------------------------#define control_byte 0//bit????? val description//bit7?????? 1????? start,恒为1//bit6,5,4?? 001??? 选择CH0为+IN//bit4?????? 1????? 选择为单端输入//bit2?????? X????? 外部MODE接GND,该位无作用,恒为12位//bit1,0???? 00???? 转换期间ADC为掉电模式
void port_init(void){?? PORTA = 0xFF;//将所有端口初始化为输入,打开上拉?? DDRA = 0x00;?? PORTB = 0xFF;?? DDRB = 0x00;?? PORTC = 0xFF;??? DDRC = 0x00;?? PORTD = 0xFF;?? DDRD = 0x00;?? PORTE = 0xFF;?? DDRE = 0x00;?? PORTF = 0xFF;?? DDRF = 0x00;?? PORTG = 0xFF;?? DDRG = 0x00;}
void main(){unsigned int result;unsigned char i,array[4],table[]=0123456789;port_init();??????????????????????????? //端口初始化LCD1602_init();???????????????????????? //1602液晶初始化ads7841_init();???????????????????????? //ADS7841初始化LCD_write_string(0x80,result:);while(1){?? ads7841_start();??????????????????? //启动ADS7841,即拉低CS?? delay_nus(10);?? result=ads7841_W_R(control_byte);?? //发送控制字,并得到转换数据??? result=0b0000111111111111;???????? //屏蔽掉高四位?? delay_nus(10);?? ads7841_finish();?????????????????? //停止ADS7841,即拉高CS?? for(i=0;i4;i++)??????????????????? //以下均为显示部分?? {??? array[i]=result%10;//??? result/=10;?? }?? for(i=0;i4;i++)?? {??? LCD_write_onechar(0x87+i,table[array[3-i]]);?? }?? delay_nms(300);}}
以下是ads7841.h
#ifndef _ads7841_h#define _ads7841_h
#define DCLK?????? PD0#define DCLK_ddr?? DDRD#define DCLK_port PORTD#define DCLK_pin?? PIND#define
原创力文档

文档评论(0)