欢迎来到天天文库
浏览记录
ID:50473489
大小:140.50 KB
页数:11页
时间:2020-03-09
《串行通讯和AD及DA转换器例子.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、串行通讯和A/D、D/A转换器例子例1、将字符串“MCS-51SerialCommunicationBus.”发送出去。设fosc=11.0592MHz,波特率=2400,串行口工作于方式1。#include“reg51.h”#include“string.h”chars[]=“MCS-51SerialCommunicationBus.”;main(){chara,b=0;TMOD=0x20;SCON=0x50;/*SM0=SM2=0,SM1=1,REN=1*/TH1=0xF4;TL1=0xF4;a=strlen(s);将
2、字符串“MCS-51SerialCommunicationBus.”发送出去。设fosc=11.0592MHz,波特率=2400,串行口工作于方式1。#include“reg51.h”#include“string.h”chars[]=“MCS-51SerialCommunicationBus.”;main(){chara,b=0;TMOD=0x20;SCON=0x50;/*SM0=SM2=0,SM1=1,REN=1*/TH1=0xF4;TL1=0xF4;a=strlen(s);例1for(;b3、[b];while(!TI);TI=0;}}例2带奇偶校验的发送程序。设fosc=11.0592MHz,波特率=2400,串行口工作于方式1。#include“reg51.h”#include“string.h”chars[]=“MCS-51SerialCommunicationBus.”;charbdatac;sbitc7=c^7;main(){chara,b=0;TMOD=0x20;SCON=0x50;/*SM0=SM2=0,SM1=1,REN=1*/TH1=0xF4;TL1=0xF4;a=strlen(s);for(4、;b5、出端得到一个锯齿波电压信号。程序名为:da0832.c。#include#include#defineDA0832XBYTE[0xfffe]#defineucharunsignedchar#defineunitunsignedintvoidstair(void){uchari;while(1){for(i=0;i<=255;i=i++)/*形成锯齿波输出值,最大255*/{DA0832=i;}}}例48路模拟信号的采集ADC0809的启动信号START由片选线P2.7与写信号的“或非”6、产生。这要求一条向ADC0809写操作指令来启动转换。ALE与START相连,即按打入的通道地址接通模拟量并启动转换输出允许信号OE由读信号与片选线P2.7“或非”产生,即一条ADC0809的读操作使数据输出。按照图中的片选线接法,ADC0809的模拟通道0~7的地址为:7FF8H~7FFFH。输入电压其中D为采集的数据字节。从ADC0809的8通道轮流采集一次数据,采集的结果放在数组ad中。程序名为ad0809.c。#include#include#defineucharunsign7、edchar#defineIN0XBYTE[0x7ff8]/*设置ADC0809的通道0地址*/sbitad_busy=P3^3;/*即EOC状态*/voidad0809(ucharidata*x)/*采样结果放指针中的A/D采集函数*/{uchari;ucharxdata*ad_adr;ad_adr=&IN0;for(i=0;i<8;i++)/*处理8通道*/{*ad_adr=0;/*启动转换*/i=i;/*延时等待EOC变低*/i=i;while(ad_busy==0)/*查询等待转换结束*/x[i]=*ad_adr;8、/*存转换结果*/ad_adr++;/*下一通道*/}}Voidmain(void){staticucharidataad[10];ad0809(ad);/*采样AD0809通道的值*/}
3、[b];while(!TI);TI=0;}}例2带奇偶校验的发送程序。设fosc=11.0592MHz,波特率=2400,串行口工作于方式1。#include“reg51.h”#include“string.h”chars[]=“MCS-51SerialCommunicationBus.”;charbdatac;sbitc7=c^7;main(){chara,b=0;TMOD=0x20;SCON=0x50;/*SM0=SM2=0,SM1=1,REN=1*/TH1=0xF4;TL1=0xF4;a=strlen(s);for(
4、;b5、出端得到一个锯齿波电压信号。程序名为:da0832.c。#include#include#defineDA0832XBYTE[0xfffe]#defineucharunsignedchar#defineunitunsignedintvoidstair(void){uchari;while(1){for(i=0;i<=255;i=i++)/*形成锯齿波输出值,最大255*/{DA0832=i;}}}例48路模拟信号的采集ADC0809的启动信号START由片选线P2.7与写信号的“或非”6、产生。这要求一条向ADC0809写操作指令来启动转换。ALE与START相连,即按打入的通道地址接通模拟量并启动转换输出允许信号OE由读信号与片选线P2.7“或非”产生,即一条ADC0809的读操作使数据输出。按照图中的片选线接法,ADC0809的模拟通道0~7的地址为:7FF8H~7FFFH。输入电压其中D为采集的数据字节。从ADC0809的8通道轮流采集一次数据,采集的结果放在数组ad中。程序名为ad0809.c。#include#include#defineucharunsign7、edchar#defineIN0XBYTE[0x7ff8]/*设置ADC0809的通道0地址*/sbitad_busy=P3^3;/*即EOC状态*/voidad0809(ucharidata*x)/*采样结果放指针中的A/D采集函数*/{uchari;ucharxdata*ad_adr;ad_adr=&IN0;for(i=0;i<8;i++)/*处理8通道*/{*ad_adr=0;/*启动转换*/i=i;/*延时等待EOC变低*/i=i;while(ad_busy==0)/*查询等待转换结束*/x[i]=*ad_adr;8、/*存转换结果*/ad_adr++;/*下一通道*/}}Voidmain(void){staticucharidataad[10];ad0809(ad);/*采样AD0809通道的值*/}
5、出端得到一个锯齿波电压信号。程序名为:da0832.c。#include#include#defineDA0832XBYTE[0xfffe]#defineucharunsignedchar#defineunitunsignedintvoidstair(void){uchari;while(1){for(i=0;i<=255;i=i++)/*形成锯齿波输出值,最大255*/{DA0832=i;}}}例48路模拟信号的采集ADC0809的启动信号START由片选线P2.7与写信号的“或非”
6、产生。这要求一条向ADC0809写操作指令来启动转换。ALE与START相连,即按打入的通道地址接通模拟量并启动转换输出允许信号OE由读信号与片选线P2.7“或非”产生,即一条ADC0809的读操作使数据输出。按照图中的片选线接法,ADC0809的模拟通道0~7的地址为:7FF8H~7FFFH。输入电压其中D为采集的数据字节。从ADC0809的8通道轮流采集一次数据,采集的结果放在数组ad中。程序名为ad0809.c。#include#include#defineucharunsign
7、edchar#defineIN0XBYTE[0x7ff8]/*设置ADC0809的通道0地址*/sbitad_busy=P3^3;/*即EOC状态*/voidad0809(ucharidata*x)/*采样结果放指针中的A/D采集函数*/{uchari;ucharxdata*ad_adr;ad_adr=&IN0;for(i=0;i<8;i++)/*处理8通道*/{*ad_adr=0;/*启动转换*/i=i;/*延时等待EOC变低*/i=i;while(ad_busy==0)/*查询等待转换结束*/x[i]=*ad_adr;
8、/*存转换结果*/ad_adr++;/*下一通道*/}}Voidmain(void){staticucharidataad[10];ad0809(ad);/*采样AD0809通道的值*/}
此文档下载收益归作者所有