ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:488.02KB ,
资源ID:4168581      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-4168581.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第九章 编程实例Word文档格式.docx)为本站会员(b****2)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

第九章 编程实例Word文档格式.docx

1、AT89X52.H#include /XBYTE函数INTRINS.H/_nop_函数#define uchar unsigned char #define uint unsigned int#define DAADR XBYTE0x8000 /ad0809的0通道地址uchar dd8,m=0; /转换结果在dd8中uchar *ad_adr;/全局变量void main(void) uchar i=0; ad_adr=&DAADR;/给指针赋初值 DAADR=0x00;/采样IN0通道,并启动采样/避开EOC未变化的10s IE=0x81;/开中断 while(1) / disp1(0);

2、在此可以显示,处理数据 void ad0809int(void) interrupt 0 using 1 /中断程序 IE=0X00;/关中断 ddm=*ad_adr;/ 存贮转换结果 ad_adr+;/指向下一个通道 ad_adr=0;/开始下一次转换 m+;/指向下一个数组元素 _nop_();/根据晶振频率调整时间 if(m=8) m=0; IE=0X81;(0809采样)例2 I2C总线A/D转换(TLC0831)TLC0831是8位逐次逼近电压型I2C总线A/D转换器,支持单信道输入串口输出,极性设置固定,不需寻址。其内部有一采样数据比较器将输入的摸拟信号微分比较后转换为数字信号。模

3、拟电压的差分输入方式有利于抑制共模信号和减少或消除转换的偏移误差。电压基准输入可调,使得小范围模拟电压信号转化时的分辨率更高。由标准移位寄存器或微处理器将时间变化的数字信号分配到串口输出,当IN-接地时为单端工作,此时IN+为输入,也可将信号差分后输入到IN+与IN-之间,此时器件处于双端工作状态。主要特点如下:(1) 8位分辨率;(2) 单信道差分输入;(3) 5V的电源提供0-5V可调基准电压;(4) 输入输出可与TTL和MOS兼容;(5) 总失调误差为1SB。(6)串行时钟在250KHz时,转换时间为32s。典型的应用电路如下图:TLC0831共8个引脚, CS:为片选,低电平有效,并启

4、动转换,在转换过程中必须保持低电平;DO:为数据输出端;CLK:时钟信号。IN:模拟信号输入正极;IN:模拟信号输入负极。 在转换过程中,转换数据同时从DO口输出。TLC0831时序图如下: 按照时序图和电路图,可以编写出如下的应用程序,调用该程序一次可以完成一次转换,并将转换结果读入单片机A中:编写的C51应用程序: #include stdio.htypedef unsigned int uuint;typedef unsigned char uchar;sbit adcdo=P1_0; /定义TLC0831的数据线D0sbit adccs=P1_2; /定义TLC0831的时能线CSsb

5、it adcclk=P1_1; /定义TLC0831的时钟线CLKvoid delay(uchar x); /定义廷时函数uchar readadc(void); /定义读数据函数void adcck(void); /定义时钟函数void delay1(uchar x)uchar i;for(i=0;x;i+);void adcck(void) /时钟函数adcclk=1;delay1(2);adcclk=0;uchar readadc(void) /读出TLC0831转换数据函数 uchar ch;adccs=0;adcck();ch=0;for(;adcdo=1;)adcck();for(

6、i=0;8; adcck();ch=(chintrins.h/函数声明 ,次序安排好不用声明/void i2c_send8bit(unsigned char);/unsigned char i2c_receive8bit(void);sbit SDA=P10;/数据接口sbit SCL=P11;/时钟脉冲接口/时钟脉冲为高电平时,数据从高变低,为开始信号 void i2c_start(void) SDA = 1;SCL = 1;SDA = 0;SCL = 0;return;/时钟脉冲为高电平时,数据从低变高,为结束信号 void i2c_stop(void) /发送8位数据,数据保持稳定不变,

7、SCL给一个脉冲 void i2c_send8bit(unsigned char b) unsigned char a; /数据移位控制变量for(a=0;aa+) if (b a ) & 0x80) /取最高位,先发送最高位 /最高位为1发送高电平else /最高位为0发送低电平 /产生时钟脉冲/接收8位数据 ,时序同写,保持SCL为高电平,读SDAunsigned char i2c_receive8bit(void) /读的位数unsigned char b=0; /保持SCL为高电平b=b# define uint unsigned int void dlms( void )void k

8、bscan( void ) ;void main ( void )uchar key ;while( 1 ) key =kbscan ( ) ; dlms( ) ; uchar i ; for ( i=200;i0;i- -) uchar kbscan ( void ) / 键扫描函数 uchar scode ,recode ; P1=oxf0 ; if ( (P1 & 0xf0 ) ! =0xf0 ) / 若有键按下 dlms ( ) ; / 延时去抖动 if ( P1 & 0xf0 )! = 0xf0 ) scode =0xfe ; / 逐行扫描初值 while ( scode & 0x10 ) !=0 ) P1=scode ; / 输出扫描码 if ( P1 & =0xf0 ) / 本行有键按下 recode= ( P1 & 0xf0 ) | 0x0f ; return ( scode ) + ( recode ) ) ; /返回特征字节码 else scode = ( scode reg51.h #define uchar unsigned char# define COM8155 XBYTE 0xfff0 #

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2