欢迎来到天天文库
浏览记录
ID:40522530
大小:58.50 KB
页数:3页
时间:2019-08-04
《c8051f020读取AD574程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、电路采用双极性链接,如下图所示:电路中将第2脚接地,实际上也可以将第6脚接+5V。输出端口的电路接发如下图所是:即将低4位链接到高4位,中4位不变,读取数据的时候分两次读取12位的数据。程序如下:#include"C8051F020.h"#include"sysinit.h"#include"lcd1602.h"#include//sprintf函数需要用到的头文件#includeexternunsignedcharxdatalcd_buff0[16];//1602显示缓冲区externunsig
2、nedcharxdatalcd_buff1[16];#defineAD574_SETCEP6=P6
3、0x08//CE=1P6.3#defineAD574_CLRCEP6=P6&0xF7//CE=0#defineAD574_SETCSP6=P6
4、0x04//CS=1P6.2#defineAD574_CLRCSP6=P6&0xFB//CS=0#defineAD574_SETRCP6=P6
5、0x02//RC=1P6.1#defineAD574_CLRRCP6=P6&0xFD//RC=0#defineAD574_SETA0P6=P6
6、0x01/
7、/A0=1P6.0#defineAD574_CLRA0P6=P6&0xFE//A0=0#defineAD574_DATABUSSP7//读取数据端口定义#definemaxinput10//定义输入信号的峰峰值sbitstatus=P0^0;//AD转换状态输出/*本测试程序是为C8051F020读取AD574的程序AD574采用双极性链接方式,读取方式为:分两次读取12位的数据电路中将AD574低四位的数据输出引脚链接到高四位引脚程序上电以后第一读取的数据不正确,第一次以后,每次读取的数据都是正确的*/unsignedintad574
8、_readvalue(void);voidmain(void){floatrealad;CloseWDT();//关闭看门狗SysClkInit();//配置系统时钟,使用外部晶振,系统上电默认使用内部2M时钟PortInit();//I/O端口配置LCD1602_Init();//lcd1602初始化LCD_SET_CURSOR(1,1);//设置1602显示坐标在第一行第一个字PrintString(lcd_buff0);//LCD1602显示第一行LCD_SET_CURSOR(2,1);//设置1602显示坐标在第二行第一个字Pr
9、intString(lcd_buff1);//LCD1602显示第二行while(1){realad=ad574_readvalue();realad=(realad-2048)*maxinput/4095;sprintf(lcd_buff1,"ad:%.4fV",realad);//显示AD转换的值LCD_SET_CURSOR(2,1);//设置1602显示坐标在第二行第一个字PrintString(lcd_buff1);//LCD1602显示第二行Delay_Ms(20);}}unsignedintad574_readvalue(v
10、oid){unsignedintadvalue;//存储高八位数据unsignedcharlow_advalue;//存储低四位数据AD574_CLRCS;AD574_SETCE;AD574_CLRRC;AD574_CLRA0;while(status==1);//等待转换完成AD574_SETRC;AD574_SETA0;_nop_();_nop_();_nop_();low_advalue=P7;//读取低四位AD574_CLRA0;_nop_();_nop_();_nop_();advalue=P7;//读取高八位advalue=
11、(advalue<<4)
12、(low_advalue>>4);returnadvalue;}
此文档下载收益归作者所有