红外收发模如何发送AD电池模组采样fpc数据

豆丁微信公众号
君,已阅读到文档的结尾了呢~~
北邮模电实验红外通信收发系统的设计与实现
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
北邮模电实验红外通信收发系统的设计与实现
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口红外声音传输系统报告_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
红外声音传输系统报告
&&2012年吉林省电子设计大赛一等奖报告
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩13页未读,
定制HR最喜欢的简历
你可能喜欢技术小站:
& 参会赢好礼
时间:7月11日 10:00 - 11:30
& 参会赢好礼
时间:9月12日 10:00 - 11:30
& 1分钟轻松答题,赢取精美好礼!
& 轻松答题,赢取好礼!
张飞电子工程师速成全集
10天掌握PCB AD画板
教你高速PCB项目整体设计
如何设计STM32单片机系统?
物联网操作系统从写到用
讲师:华清远见
讲师:林超文
讲师:郑振宇
讲师:李述铜
移入鼠标可放大二维码
红外收发实验
来源:www.elecfans.co
作者:本站日 18:00
[导读] 红外收发实验
一. 实验目的了解红外通讯知识,能够应用红外进行无线控制设计。二. 实验设备及器件IBM PC 机
红外收发实验
一. 实验目的了解红外通讯知识,能够应用红外进行无线控制设计。二. 实验设备及器件IBM PC 机 一台DP-51PROC 单片机综合仿真实验仪 一台三. 实验内容使用单片机的串口发送并接收数据,TxD 接到红外发送管,RxD 接到红外接收头,实现无线通讯。四. 实验要求通过实验掌握红外通讯的基本原理。五. 实验步骤1. B2 区X2 插入20MHz 的晶振。2. 将B2 区的1/512 频率输出端接到D3 区的DCLK。(约为39KHz,用于信号调制)3. 将A2 区的RXD、TXD 分别连接到D3 区的DREC、DSEND。4. 用短路器将D3 区JP9 短接(D3 区电路供电电源)。5. 将A2 区的P10 连接到D1 区的LED1。6. 下载程序并运行,使用较厚的白纸挡住红外发射管红外信号,使其反射到接收头,观察LED1 是否点亮。
图3.36 红外收发实验示意图说明:一般红外接收模块的解调频率为38KHz,当它接收到38KHz 左右的红外信号时将输出低电平,但连续输出低电平的时间是有限制的(如100mS),也就是说发送数据的低电平宽度是有限制的。注意:发送管应与接收头平行,否则接收头可能接收不到来自发射管的反射光。六. 实验预习要求阅读本书的2.8.27 节内容,理解本实验硬件结构,编写实验程序,编译连接后使用DPFlash 软件将HEX 文件下载到TKSMonitor51 仿真器中,再复位运行调试。
七. 实验参考程序/************************************************************** 文件名:DP_51PRO_IRDA.C* 功能:DP_51PRO 实验仪红外收发实验。使用串口发送数据经调制后从红外管输出,* 并通过红外接收模块把接收到的数据返回串口接收端,通过判断接收到的数* 据来控制LED 灯的亮或灭。*************************************************************/#include &Reg52.H&#define uint8 unsigned char#define uint16 unsigned intsbit LED_CON = P1^0; // 定义LED 控制口/************************************************************** 名称:UART_SendByte()* 功能:向串口发送一字节数据。* 入口参数:dat 要发送的数据* 出口参数:无*************************************************************/void UART_SendByte(uint8 dat){ SBUF = // 发送数据while(TI ==0); // 等待发送完毕TI = 0; // 清零TI 标志}/************************************************************** 名称:UART_RcvByte()* 功能:接收一字节串口数据。* 入口参数:dat 接收变量的地址指针* 出口参数:返回0 表示没有数据,返回1 表示接收到数据*************************************************************/uint8 UART_RcvByte(uint8 *dat){ if(RI ==0) return(0); // 若没有接收到数据则返回0*dat = SBUF; // 取得接收的数据RI = 0; // 清除RI 标志return(1);}/************************************************************** 名称:UART_Init()* 功能:串口初始化。模式为1 位起始位,8 位数据位,1 位停止位,波特率为9600。* 入口参数:无* 出口参数:无* 说明:晶振为11.0592MHz,使用T1 作为波特率发生器。*************************************************************/void UART_Init(void){ SCON = 0x50;TMOD = 0x20;TH1 = 0xFD;TR1 = 1;
}/************************************************************** 名称:main()* 功能:主函数,初始化串口后不断地发送及接收数据,若接收到所发送的数据则* 点亮LED。*************************************************************/int main(void){ uint8uint16uint8 rcv_uint8UART_Init();while(1){ count = 0; // 计数变量清零for(i=0; i&50; i++) // 发送及接收50 个数据{ UART_SendByte(0x5A);if( UART_RcvByte(&rcv_dat)!=0 ){ if(0x5A==rcv_dat) count++;// 若接收的数据为0x5A,则计数变量加1}}if(count&40) LED_CON = 0; // 若接收到0x5A 的个数大于40 个时,点亮LEDelse LED_CON = 1; // 否则熄灭LEDfor(j=0; j&500; j++);}return(0);}八. 实验思考题(1) 如何编写其它编码格式的通讯程序?(2) 红外通讯的距离与什么因素有关?使用两台实验仪进行测试,一台发送,另一台接收。
收发相关文章
收发相关下载
红外相关文章
红外相关下载
技术交流、积极发言! 发表评请遵守相关规定。
随着HEVC、AV1等更复杂算法的Codec份额逐步增长,实现高质量视频编解码需要硬件支持,软件的方式无论在服务器端和移动端都非最佳的方案。FPGA专用芯片能...
在确定了公司的业务方向后,Steven Fisher先生也规划了倍捷连接器的发展方向,那就是全球化。他在倍捷连接器服务的45年时间里,帮助公司拓展了美洲、欧...
创新实用技术专题
供应链服务
商务及广告合作
Jeffery Guo
关注我们的微信
供应链服务 PCB/IC/PCBA
版权所有 (C) 深圳华强聚丰电子科技有限公司
电信与信息服务业务经营许可证:粤B2-当前位置: >>
红外接收解码、ADC0832电压采集程序
#include&reg52.h& #include &intrins.h& #define uchar unsigned char #define uint unsigned int #define nop() _nop_() //ADC0832 的引脚 sbit ADCS =P1^3; sbit ADDI =P1^4; sbit ADDO =P1^4; sbit ADCLK =P1^0;//ADC0832 chip seclect //ADC0832 k in //ADC0832 k out //ADC0832 clock signal#define OP_WRITE 0xa0 #define OP_READ 0xa1 #define MAX_ADDR 0x7f // 器件地址以及读取操作 // AT24C02 最大地址unsigned char shin(); bit shout(unsigned char write_data); unsigned char read_random(unsigned char random_addr); void writeiic_byte( unsigned char addr, unsigned char write_data); //获取 ADC 转换回来的值unsigned int Adc0832(unsigned char channel); void ad_tem(); sbit SCL = P3^4; //T1 sbit SDA = P3^5; //T0 uint num[]={0,0,0,0}; bit max_v=0; //电压最大值标识符 uint s=0; #define TURE 1 #define FALSE 0 sbit IR=P3^2;//红外接口标志 //红外用全局变量 //中断次数 //起始码接收标志 bit irpro_ok, //码值处理完毕标志?红外接收完毕标志位? unsigned char IRcord[4]; unsigned char irdata[34];//时长 void Ir_work(void); void Ircordpro(void);void TIM0init(void)//定时器 0 初始化 { EA = 1; IT0 = 1; //中断总允许位 // Configure interrupt 0 for falling edge on /INT0 (P3.2)EX0 = 1; // Enable EX0 Interrupt 断 TMOD=0x22; // 定 时 器 T1 , 在 方 式 2 中 断 产 生 波 特 率 定时器 T0 PCON &=0x00; // 波特率不倍增 PCON=0x00; //SMOD=0 SCON=0x40; TH1=0 TL1=0 ET0=1; TH0=0x14; TL0=0x14; // TR0=1; TR1=1; } //波特率设置为 9600//开定时器 T1 运行控制位void tim0_isr (void) interrupt 1 using 1//定时器 0 中断服务函数 { irtime++; }void ex0_isr (void) interrupt 0 using 0//外部中断 0 服务函数 { TR0=1; if(!flag) { if(irtime&0x3c&&irtime&=0x35) { i=0; flag=1; } } //用于红外码值接收 irdata[i]=//读取时长 irtime=0; i++; if(i==33) { irok=1; i=0; flag=0; } }void Ircordpro(void)//红外码值处理函数 { static unsigned char x, j, static unsigned char cord, y=1; for(x=0;x&4;x++)//处理 4 个字节 { for(j=1;j&=8;j++) //处理 1 个字节 8 位 { cord=irdata[y]; if(cord&0x07)//大于某值为 1 { value=value|0x80; } else { value= } if(j&8) { value=value&&1; } ++y; } IRcord[x]= value=0; } irpro_ok=1;//处理完毕标志位置 1 }void Ir_work(void)//红外键值散转程序 { if (IRcord[2]=~IRcord[3]) { if ((IRcord[2]/16==8)&&(IRcord[2]%16==0)) { if (num[s]==9) { num[s]=0; } else { num[s]=num[s]+1; } IRcord[2]=0; IRcord[3]=0; } if ((IRcord[2]/16==8)&&(IRcord[2]%16==1)) { iic_tem(); max_v=0; IRcord[2]=0; IRcord[3]=0; } if ((IRcord[2]/16==8)&&(IRcord[2]%16==2)) { max_v=1; num[3]=arm_flat[3]; num[2]=arm_flat[2]; num[1]=arm_flat[1]; num[0]=arm_flat[0]; IRcord[2]=0; IRcord[3]=0; } if ((IRcord[2]/16==8)&&(IRcord[2]%16==3)) { if(s&3) { s=s+1; } else s=0; IRcord[2]=0; IRcord[3]=0; } } } //============================================================================= ================================ //串口通信 void main() {TIM0init(); //初始化 while(1) { Ir_work(); if(irok) { Ircordpro(); irok=0; } if(irpro_ok)//step press key { irpro_ok=0; SBUF=IRcord[2]; while(!TI); TI=0; } if(max_v==0) { ad_tem(); arm(); } else displys(); } } //============================================================================= ===================== void serial() interrupt 4 { if(TI) TI=0; }//***********************************************AD ******************************************** void ad_tem(void) { getdata=Adc0832(0);程序temp=getdata*1.0/256*5000; //电压值转换,5V 做为参考电压,分成 256 份, //乖以 500 显示三位数,若乖以 5000 则显示四位数,并且要在 dispbuf[]中增加千 位 dispbuf[3]=temp/1000; dispbuf[2]=temp%; dispbuf[1]=temp%100/10; dispbuf[0]=temp%10; display(); } //=============================/======================================= /* 读 ADC0832 函数 */ /********************************************/ unsigned int Adc0832(unsigned char channel) { uchar i=0; uchar dat=0; uchar ndat=0; //1、初始化操作 if(channel==0) // 通道选择,选择通道 0 的单端模式 channel=2; if(channel==1) //选择通道 1 的单端模式 channel=3; //2 写操作,将通道数写入 ADC0832 ADDI=1; //启始信号 _nop_(); _nop_(); ADCS=0; //拉低 CS 端,能使 DAC0832 _nop_(); //采集并返回 //AD 转换,返回结果 //千位 //百位 //十位 //个位 _nop_(); ADCLK=1; //拉高 CLK 端,DI 端的数据移入 DAC0832 内部的多路移位寄存器 _nop_(); _nop_(); ADCLK=0; //拉低 CLK 端,形成下降沿 1,第一个时钟周期开始 _nop_(); _nop_(); ADCLK=1; //拉高 CLK 端,在第一个时钟周期内,DI 为高,表示启动位, //紧接着输入两位配置位即进行通道选择 //channel=2,ADDI=0 输入通道数 低位ADDI=channel&0x1; _nop_(); _nop_();ADCLK=0; //拉低 CLK 端,形成下降沿 2,第二个时钟周期开始 _nop_(); _nop_(); ADCLK=1; //拉高 CLK 端 ADDI=(channel&&1)&0x1; //ADDI=1 _nop_(); _nop_(); ADCLK=0; //拉低 CLK 端,形成下降沿 3 ADDI=1; //控制命令结束 _nop_(); _nop_(); dat=0; //3 读操作 ,将 AD 转换的数从 DO 口输出 for(i=0;i&8;i++) //CLK 每来一个下降沿输出一位数,先输出高位 { dat|=ADDO; //收数据.&|&位或,如果两位中有一个为 1,则结果为 1,否则为 0 ADCLK=1; _nop_(); _nop_(); ADCLK=0; //形成一次时钟脉冲 _nop_(); _nop_(); dat&&=1; if(i==7) dat|=ADDO; } for(i=0;i&8;i++) { j=0; //CLK 每来一个下降沿输出一位数,先输出低位 输入通道数高位 j=j|ADDO; ADCLK=1; _nop_(); _nop_();//收数据ADCLK=0; //形成一次时钟脉冲 _nop_(); _nop_(); j=j&&7; ndat=ndat|j; if(i&7) ndat&&=1; } //4 结束 AD 转换 ,并返回转换的数 ADCS=1; //拉低 CS 端 ADCLK=0; //拉低 CLK 端 ADDO=1; //拉高数据端,回到初始状态 if(dat==ndat) { return(dat); } //return ad k }
ADC0832外接电压测量;5V可调电压实验_电子/电路_工程科技_专业资料。本程序重要学习电压测量,用户可以选择两种电压测量, 1:外部电压测量:短路 SW7(CH1 输入)SW8(...基于ADC0832的单片机数据采集系统设计_工学_高等教育_教育专区。简易数字电压表的设计毕业论文 合肥学院创新课程设计报告 题目:基于 ADC0832 的单片机数据采集系统设计...ADC0832程序完整版 源码_电子/电路_工程科技_专业资料。ADC0832 程序完整版 ...把模拟电压值转换成 8 位二进制数并返回 unsigned char read0832() { ...ADC0832程序_计算机软件及应用_IT/计算机_专业资料。...5V 电源供电时输入电压在 0~5V 之间; 5、工作...五、测试驱动程序 1、采集程序 /***...要求: 1、设计实现 ADC0832 模数转换电路,将单片机采集到得 0~5V 电压信号用 数码管显示。 2、要求绘制系统原理框图、电路原理图、PCB 版图和程序流程图。 3...adc0832数字电压表(程序 仿真图)_电子/电路_工程科技_专业资料。仿真图: /**...AD 转换子程序 入口参数:CH 出口参数:dat ***...adc0832(unsigned char CH) { unsigned char i,test, adval = 0x00;...将 0-255 级换算成 0.00-5.00 的电压数值 //比较前 8 位与后 8 位的...adc0832模块程序_电子/电路_工程科技_专业资料。/* ADC0832 差分 00 工作方式...*/ unsigned char ReadADC(void) //把模拟电压值转换成 8 位二进制数并返回...单片机和ADC0832的AD模数转换_计算机硬件及网络_IT/计算机_专业资料。单片机驱动...在量 化和编码期间,保持电路相当于一个恒压源,它将采样时刻的信号电压“保持...基于51+ADC0832+LCD1602+仿真图四位电压显示测试OK_电子/电路_工程科技_专业资料。基于51+ADC0832+LCD1602四位电压显示程序和PROTEUS仿真图,测试好用的。欢迎下载...
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。stc系列单片机怎么在ad口读取一个红外控制数据? - 知乎有问题,上知乎。知乎作为中文互联网最大的知识分享平台,以「知识连接一切」为愿景,致力于构建一个人人都可以便捷接入的知识分享网络,让人们便捷地与世界分享知识、经验和见解,发现更大的世界。1被浏览178分享邀请回答1添加评论分享收藏感谢收起0添加评论分享收藏感谢收起写回答

我要回帖

更多关于 gta5采样缩放模式什么 的文章

 

随机推荐