AT89X52 AD9854程序下载

weixin_39820535 2019-04-27 06:30:17
关于AT89C52 控制AD9854的源程序
相关下载链接://download.csdn.net/download/travis11/1982513?utm_source=bbsseo
...全文
22 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
#include<at89x52.h> #include #define uint unsigned int #define uchar unsigned char #define ulong unsigned long #define CLOCK P1_0 #define D_IN P1_1 #define D_OUT P1_2 #define _CS P1_3 sbit g1=P2^7; sbit g2=P2^1; sbit g3=P2^3; sbit g4=P2^5; ulong AD_ad1,AD_ad2; float JiZhun_AD=2.5; float AD_Data=0.0; ulong AD_ad=0; char chi; unsigned char code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; void delay02s(void) { unsigned char i,j,k; for(i=1;i>0;i--) for(j=10;j>0;j--) for(k=200;k>0;k--); } uint read1543(uchar port) { uint ad; uint i; uchar al=0,ah=0; CLOCK=0; _CS=0; port<<=4; for (i=0;i<4;i++) //将四位通道地址送1543 { D_IN=(bit)(port&0x80);CLOCK=1;CLOCK=0; port<<=1; } for (i=0;i<6;i++) //填6个CLOCK信号 { CLOCK=1;CLOCK=0; } _CS=1; _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_(); _CS=0; //等待AD转换结束 _nop_();_nop_();_nop_(); for (i=0;i<2;i++) //D9,D8 { D_OUT=1;CLOCK=1;ah<<=1; if (D_OUT) ah +=0x01; CLOCK=0; } for (i=0;i<8;i++) //取出D7--D0 { D_OUT=1;CLOCK=1;al <<= 1; if (D_OUT) al +=0x01; CLOCK=0; } _CS=1; ad = (uint)ah; ad <<= 8; ad +=(uint)al; // return(ad); } void main() { TMOD=0x01; TH0=(65535-20000)/255; TL0=(65535-20000)%255; EA=1;ET0=1;TR0=1; while(1) { P0=table[(AD_ad)]; g1=1; delay02s(); g1=0; P0=table[(AD_ad/10)]; g2=1; delay02s(); g2=0; P0=table[(AD_ad/100)]; g3=1; delay02s(); g3=0; P0=table[(AD_ad/1000)]|0X80; g4=1; delay02s(); g4=0; } } zhongduan()interrupt 1 { TH0=(65535-20000)/255; TL0=(65535-20000)%255; chi++; if(chi==50) { chi=0; AD_ad1 = read1543(0); // (通道0电压正端) AD_Data = ((float)AD_ad1)*JiZhun_AD*2/1024+0.15005;//0.15经过实测需要加0.15减少误差 AD_ad =((AD_Data-2.68)/0.185)*1000; } }
STC89C52单片机开发板 一、方案设计 1.1 方案论证 在科技广泛发展的今天,计算机的发展已经越来越快,他的应用已经越来越广泛。二 单片机的发展和应用是其中的重要一方面。单片机在工业生产(机电、化工、轻纺、自 控等)和民用家电方面有广泛的应用。其中,单片机在工业生产中的应用尤其广泛。 单片机具有集成度高,处理能力强,可靠性高,系统结构简单,价格低廉的优点,因 此被广泛应用。目前,单片机在工业控制系统诸多领域得到了极为广泛的应用。特别是 C51系列的单片机稳定性好,运算精度高,推动了工业生产,影响着人们的工作和学习。 而本次设计就是要通过对C52系列单片机最小系统进行开发板的设计。有助于当代大学生 及涉及单片机领域的工作者们更深入的了解和学习单片机的开发机应用。 1.2 设计思路 (1)本设计采用STC89C52单片机为主控制核心。 (2)选择PCF8951实现A/D、D/A转换装置,与单片机接口为P2.1口和P2.0口。 (3)此外,还选择了NRF905无线通信模块及4*4矩阵键盘等模块进行开发与学习设计。 硬件设计 本设计由8部分组成:STC89C52单片机最小系统、PCF8951A/D转换电路、报警器模块 、NRF905无线模块、矩阵键盘模块、温度传感器电路、红外接收模块、LED流水灯模块。 电路原理图见附录。 2.1 STC89C52单片机最小系统模块 STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的 解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容 被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高 运作频率35Mhz,6T/12T可选。 复位电路 当振荡器运行时,只要有有两个机器周期即24个振荡周期以上的高电平在这个引脚出 现时,那么就将会使单片机复位,如果将这个引脚保持高电平,那么51单片机芯片就会 循环不断地进行复位。复位后的P0口至P3口均置于高电平,这时程序计数器和特殊功能 寄存器将全部清零。 单片机晶振 单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结 合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么 单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频 率。 在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有 些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振用一种 能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡 。 单片机晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各 部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方 法保持同步。晶振通常与锁相环电路配合使用,以提供系统所需的时钟频率。如果不同 子系统需要不同频率的时钟信号,可以用与同一个晶振相连的不同锁相环来提供。 晶振实物图: 单片机实物图如下: 2.2 PCF8951 AD/DA转换模块 PCF8591是一款单电源、低功耗8位COMS型A/D、D/A转换芯片,它具有4路模拟量输入 通道、一路模拟量输出通道和1个I2C总线接口。该器件I2C从地址的低三位由芯片的A0、 A1和A2三个地址引脚决定,所以在不增加任何硬件的情况下同一条I2C总线最多可以连接 8个同类型的器件。 该器件具有多路模拟量输入、片上跟踪保持、8位A/D转换和8位D/A转换等功能。A/D 与D/A的最大转换速率由I2C总线的最大传输速率决定。 PCF8591具有以下特点:单电源供电;正常工作电源电压范围为2.5V~6V;通过I2C总 线完成数据的输入/输出;器件地址由3个地址引脚决定;采样频率由I2C总线传输速率决 定; 4路模拟量输入可编程为单端输入或差分输入;可配置转换通道号自动增加功能; 模拟电压范围为VSS~VDD;片上跟踪保持功能;8位逐次逼近A/D转换;带有一路模拟量输 出的乘法D/A转换。 PCF8951A/D、D/A转换模块: PCF8951模块实物图: 2.3 Nrf905 无线通信装置 NRF9

12,806

社区成员

发帖
与我相关
我的任务
社区描述
CSDN 下载资源悬赏专区
其他 技术论坛(原bbs)
社区管理员
  • 下载资源悬赏专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧