标题: ADC0809程序和原理图中文资料 51单片机例程实测可用 [打印本页]
作者: sunshine17999 时间: 2017-3-25 14:02
标题: ADC0809程序和原理图中文资料 51单片机例程实测可用
adc0809程序和资料 51单片机例程 实测可用
adc0809中文资料:
本次单片机实验的adc0809原理图
adc0809模块pcb:
如果用例程测试时需要注意以下:
一、先调试单片机控制系统,也就是先不接模块,1602液晶会显示:
Xingxiangrong
AD=255 VIN=4.92v
能这样显示后证明单片机控制系统没有问题,然后再接入AD模块
二、插针
J7短路帽套上,使模块上面的可调电位器可调端和IN3接通
J3 和J4用短路帽把中间和VCC插上,使A和B为1
J5用短路帽把中间和GND插上,使C为0,选择通道IN3;
源程序:
- //功能:ADC0809模块测试,读取IN3口的模拟电
- //编译环境: KEIL UVISION2
- //单片机晶振:12M 单片机型号AT89S52
- //单片机晶振: 无特殊要求
- //作者:兴向荣电子元件店
- //日期:2013.06.20
- //功能:
- #include <reg52.h>
- #include <intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- // adc0809模块接线
- #define uchar unsigned char
- sbit STR=P1^0; //单片机P1.0接模块STR引脚, 启动转换信号
- sbit EOC=P1^1; //单片机P1.1接模块EOC, 转换结束信号,高电平有效
- sbit OE=P1^2; //单片机P1.2接模块OE,输出允许信号,高电平有效
- sbit CLK=P1^3; //单片机P1.3接CLK ,ADC0809时钟,输入50-800KHZ的频率
- //一般选用500K
- #define adc0809_data P3// ADC0809模块的D0-D7分别接P3.0-P3.7
- /*地址选择 A 接H
- B 接H
- C 接L
- 选择通到IN3,当然也可以通过软件设置地址
- REF+ 接VCC
- REF- 接GND
- 这样 AD=256*(VIN-(VREF-))/(VREF+)-(VREF-)
- (VREF+)=5V;
- (VREF-)=0V;
- AD=256*VIN/5
- 所以IN3口的电压VIN=AD*5/256;
- */
- uchar AD_DATA[1]; //保存IN0通道转换后的数据
- uint addata2;
- //==============LCD1602接口连接方法=====================
- /*-----------------------------------------------------
- |DB0-----P0.0 | DB4-----P0.4 | RW-------P2.3 |
- |DB1-----P0.1 | DB5-----P0.5 | RS-------P2.4 |
- |DB2-----P0.2 | DB6-----P0.6 | E--------P2.2 |
- |DB3-----P0.3 | DB7-----P0.7 |
- ---------------------------------------------------*/
- //================================================*/
- #define LCM_Data P0 //LCD1602数据接口
- #define Busy 0x80 //用于检测LCM状态字中的Busy标识
- sbit LCM_RW = P2^3; //读写控制输入端,LCD1602的第五脚
- sbit LCM_RS = P2^4; //寄存器选择输入端,LCD1602的第四脚
- sbit LCM_E = P2^2; //使能信号输入端,LCD1602的第6脚
- //**************函数声明***************************************
- void WriteDataLCM (uchar WDLCM);//LCD模块写数据
- void WriteCommandLCM (uchar WCLCM,BuysC); //LCD模块写指令
- uchar ReadStatusLCM(void);//读LCD模块的忙标
- void DisplayOneChar(uchar X,uchar Y,uchar ASCII);//在第X+1行的第Y+1位置显示一个字符
- void LCMInit(void);//LCD初始
- void delayms(uint ms);//1MS基准延时程序
- void delay(uchar i); //延时函数2
- void DisplayListChar(uchar X,uchar Y,uchar delayms, uchar code *DData);
- void judge_xianshi(void);//显示处理程序
- void init();//系统初始化设置
- void AD();//读取AD数据
- uchar flag1;
- //***********************主程序******************************
- main()
- {
- init();//系统初始化设置
- LCMInit();
- while(1)
- {
- AD();
- judge_xianshi();
- delayms(100);
-
- }
- }
- /*********
- 系统初始化
- ***********/
- void init()
- {
- EA=1; //开总中断
- TMOD=0x02; //设定定时器 T0工作方式
- TH0=216; //利用T0中断产生CLK信号
- TL0=216;
- TR0=1; //启动定时器T0
- ET0=1;
- STR=0;
- OE=0;
-
- }
- void judge_xianshi()
- {
- addata2=AD_DATA[0]*100;//把数据扩大100,为下面求取小数位后2位做准备
- DisplayListChar(0,1,0, "xingxiangrong");//在液晶的第一行显示字符"XINGXIANGR"
- DisplayListChar(1,0,0, "AD="); //在液晶的第二行第0位开始显示"AD="
- DisplayOneChar( 1, 3, AD_DATA[0]/100+0x30); //显示AD数据的百位
- DisplayOneChar( 1, 4, AD_DATA[0]/10%10+0x30);//显示AD数据的十位
- DisplayOneChar( 1, 5, AD_DATA[0]%10+0x30);//显示AD数据的各位
- DisplayListChar(1,7,0, "Vin="); //在液晶的第二行第8位开始显示"Vin="
- //根据VIN=AD*5/256,求取IN3通到输入的电压
- DisplayOneChar( 1, 11, AD_DATA[0]/51+0x30);//显示输入电压的整数位
- DisplayListChar(1,12,0, ".");//显示小数点
- DisplayOneChar( 1, 13, addata2/51/10%10+0x30);//显示输入电压小数后1位
- DisplayOneChar( 1, 14, addata2/51%10+0x30);//显示输入电压小树后2位
- DisplayListChar(1,15,0, "V");
- }
- /***********AD
- 转换函数
- **********/
- void AD()
- {
- STR=0;
- //ADDR这样如果不是通道0,可以在这边加一条其他地址的程序
- delay(10);
- STR=1; //启动AD转换
- delay(10);
- STR=0;
- while(0==EOC);//等待转换结束
- OE=1;
- AD_DATA[0]=adc0809_data; //读取AD数据,数据范围为0-255
- OE=0;
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
完整的中文资料和程序等下载:
兴向荣电子ADC0809模块配套资料.rar
(495.51 KB, 下载次数: 486)
作者: jxyczg 时间: 2017-8-7 17:05
如何取得黑贝呀?
作者: 895855647 时间: 2017-10-16 01:08
谢谢分享
作者: qwer971103 时间: 2018-3-5 22:27
我想学习学习没黑币
作者: SCGscg843903307 时间: 2018-3-5 23:53
不错不错
作者: cicizou78 时间: 2018-4-9 15:44
谢谢楼主分享!!!!
作者: cicizou78 时间: 2018-4-9 15:44
希望分享更多信息,共同进步
作者: tobety 时间: 2018-4-10 20:26
氪金啊 0.0000.00
作者: tobety 时间: 2018-4-13 10:32
可以可以 有用
作者: maester 时间: 2018-4-18 16:07
感谢分享
作者: 凯撒星星 时间: 2018-5-27 07:49
楼主这段程序对我很有用处,十分的感谢!!!!
作者: 凯撒星星 时间: 2018-5-27 07:50
可以用,可以用,谢谢
作者: 1911759078 时间: 2018-8-4 17:33
很给力!
作者: wdliming 时间: 2018-8-13 13:13
谢谢分享~~~
作者: leiteme 时间: 2018-11-12 20:59
感谢楼主分享,超级给力
作者: cs3312469 时间: 2018-12-18 17:29
谢谢分享
作者: masxiaosong 时间: 2019-8-2 16:45
谢谢分享,来学习一下
作者: 1453642765 时间: 2020-3-16 12:20
十分感谢
作者: MCRIE 时间: 2020-4-15 21:35
谢谢谢谢
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |