AD例程序.doc

上传人:11****ws 文档编号:2989764 上传时间:2019-05-16 格式:DOC 页数:12 大小:81KB
下载 相关 举报
AD例程序.doc_第1页
第1页 / 共12页
AD例程序.doc_第2页
第2页 / 共12页
AD例程序.doc_第3页
第3页 / 共12页
AD例程序.doc_第4页
第4页 / 共12页
AD例程序.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

1、http:/ 文件名 : PCF8591TAD 实验.c* 描述 : 该程序实现了用 PCF8591T 同时采集 4 路 AD 输入的功能。在 1602 上会分别显示两个精密可调电阻分压的值。和光敏电阻和热敏电阻的电压值。大家可以调节精密可调电阻,或者挡住光敏电阻的光,或者手接触温敏电阻,数码管上显示的 AD 采集值都会有相应的变化。 * 创建人 : 东流,2012 年 2 月 7 日* 程序类别: AT89S52-单片机程序系列* 发 布: 中国自动化资讯网 http:/* 网站邮箱: E-mail: * 版本号 : 2.0* 版权声明: 转载请注明 作者 和 出处* 杜邦线接法:用 8 针

2、排线把 P0 口和 J12 的 1-8 连接(P0.0 接 J12 的 1 端)。用 8 针排线把 P2 口和 J13 的 1-8 连接(P2.7 接 J13 的 1 端)。 /注意这里是 P2.7P3.6 接 J26 的 6 端,P3.7 接 J26 的 7 端。J26 的 1-4 分别接 J23 的 1-4 端。*/#include#include#include #define uchar unsigned char#define uint unsigned int#define ADDR 0x90 /PCF8591 地址/ 此表为 LED 的字模 / 0 1 2 3 4 5 6 7 8

3、 9 A b c d E - L P U Hidden _ (20)unsigned char code Disp_Tab = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x88,0x83,0xC6,0xA1,0x86,0xbf,0xc7,0x8c,0xc1, 0xff, 0xf7 ; unsigned char TABLEW8 =0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; unsigned char AD_CHANNEL;unsigned char LedOut8;unsigned int D32

4、;/这三个引脚参考资料sbit E=P27; /1602 使能引脚sbit RW=P26; /1602 读写引脚 sbit RS=P25; /1602 数据/命令选择引脚/* 名称 : delay()* 功能 : 延时,延时时间大概为 5US。* 输入 : 无* 输出 : 无*/void delay()_nop_();_nop_();_nop_();_nop_();_nop_();void Delay(uint i)uint x,j;for(j=0;j4) AD_CHANNEL=0;L1602_char(1,1,1);L1602_char(1,2,:);L1602_char(1,3,D0%10

5、00/100+48); L1602_char(1,4,.);L1602_char(1,5,D0%100/10+48);L1602_char(1,6,D0%10+48);L1602_char(1,9,2);L1602_char(1,10,:);L1602_char(1,11,D1%1000/100+48); L1602_char(1,12,.);L1602_char(1,13,D1%100/10+48);L1602_char(1,14,D1%10+48); L1602_char(2,1,3);L1602_char(2,2,:);L1602_char(2,3,D2%1000/100+48); L1

6、602_char(2,4,.);L1602_char(2,5,D2%100/10+48);L1602_char(2,6,D2%10+48);L1602_char(2,9,4);L1602_char(2,10,:);L1602_char(2,11,D3%1000/100+48); L1602_char(2,12,.);L1602_char(2,13,D3%100/10+48);L1602_char(2,14,D3%10+48); /*此部分为 74HC595 的驱动程序使用 SPI 总线连接*/#include#include #define NOP() _nop_() /* 定义空指令 */#

7、define _Nop() _nop_() /*定义空指令*/SPI IOsbit MOSIO =P15;sbit R_CLK =P16;sbit S_CLK =P17;sbit OE =P36;void HC595SendData(unsigned int SendVal);/* 函数名称: HC595SendData* 功能描述: 向 SPI 总线发送数据* 管脚描述:请参考相关的芯片资料(学习光盘中以配)*/void HC595SendData(unsigned int SendVal) unsigned char i;for(i=0;i#include #include #define

8、 NOP() _nop_() /* 定义空指令 */#define _Nop() _nop_() /*定义空指令*/sbit SDA=P36; /I2C 数据 sbit SCL=P37; /I2C 时钟bit ack; /*应答标志位*/*起动总线函数 函数原型: void Start_I2c(); 功能: 启动 I2C 总线,即发送 I2C 起始条件. */void Start_I2c()SDA=1; /*发送起始条件的数据信号*/_Nop();SCL=1;_Nop(); /*起始条件建立时间大于 4.7us,延时*/_Nop();_Nop();_Nop();_Nop(); SDA=0; /

9、*发送起始信号*/_Nop(); /* 起始条件锁定时间大于 4s*/_Nop();_Nop();_Nop();_Nop(); SCL=0; /*钳住 I2C 总线,准备发送或接收数据 */_Nop();_Nop();/*结束总线函数 函数原型: void Stop_I2c(); 功能: 结束 I2C 总线,即发送 I2C 结束条件. */void Stop_I2c()SDA=0; /*发送结束条件的数据信号*/_Nop(); /*发送结束条件的时钟信号*/SCL=1; /*结束条件建立时间大于 4s*/_Nop();_Nop();_Nop();_Nop();_Nop();SDA=1; /*发

10、送 I2C 总线结束信号*/_Nop();_Nop();_Nop();_Nop();/*字节数据发送函数 函数原型: void SendByte(UCHAR c);功能: 将数据 c 发送出去,可以是地址,也可以是数据,发完后等待应答,并对此状态位进行操作.(不应答或非应答都使 ack=0) 发送数据正常,ack=1; ack=0 表示被控器无应答或损坏。*/void SendByte(unsigned char c)unsigned char BitCnt;for(BitCnt=0;BitCnt8;BitCnt+) /*要传送的数据长度为 8 位*/if(cBitCnt) /*判断发送位*/

11、else SDA=0; _Nop();SCL=1; /*置时钟线为高,通知被控器开始接收数据位*/_Nop(); _Nop(); /*保证时钟高电平周期大于 4s*/_Nop();_Nop();_Nop(); SCL=0; _Nop();_Nop();SDA=1; /*8 位发送完后释放数据线,准备接收应答位*/_Nop();_Nop(); SCL=1;_Nop();_Nop();_Nop();if(SDA=1)ack=0; else ack=1; /*判断是否接收到应答信号*/SCL=0;_Nop();_Nop();/*字节数据接收函数 函数原型: UCHAR RcvByte();功能: 用来接收从器件传来的数据 ,并判断总线错误(不发应答信号),发完后请用应答函数应答从机。 */ unsigned char RcvByte()unsigned char retc;unsigned char BitCnt;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 实用文档资料库 > 策划方案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。