第七章 MCS-51与键盘、显示器的接口精要.ppt

  1. 1、本文档共78页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 MCS-51与键盘、显示器的接口精要.ppt

③.双缓冲方式: 当8位输入锁存器和8位DAC寄存器分开控制导通时,DAC0832工作于双缓冲方式。 双缓冲方式时单片机对DAC0832的操作分两步: 第一步,使8位输入锁存器导通,将8位数字量写入8位输入锁存器; 第二步,使8位DAC寄存器导通,8位数字量从8位输入锁存器送入8位DAC寄存器。第二步只使DAC寄存器导通,在数据输入端写入的数据无意义。 * 当要求多个模拟量同时输出时,可采用双缓冲方式。 * 计算输出量为0CDH时,的输出。 四.DAC0832的应用 * * * 例:利用DAC0832分别产生各种波形信号。 * 串口电平转换芯片 * (1) 阶梯波 设定一个8位的变量,该变量从0开始循环增加,每增加一次向DAC0832写入一个数据,得到一个输出电压,这样可以得到一个阶梯波。 DAC的分辨率是8位,若满刻度为5V,则一个阶梯波增量的幅值为: mV C51源程序如下: #include reg51.h #define uint unsigned int #define uchar unsigned char sbit cs=P3^1; sbit wr=P3^4; void main() { uchar i=0; cs=0; wr=0; while(1) { for(i=0;i256,i++) {DAC0832=i;} } } * (2) 三角波 将正向阶梯波和反向阶梯波结合起来则可以获得三角波。 void main() { uchar i=0; cs=0; wr=0; while(1) { for(i=0;i256,i++) {DAC0832=i;} for(i=256;i0,i--) {DAC0832=i;} } } C51源程序如下: #includereg51.h #define uint unsigned int #define uchar unsigned char sbit cs=P3^1; sbit wr=P3^4; * (3) 矩形波 矩形波也是一种常用的波形信号。通过增加不同的延迟时间可以获得不同占空波的矩形波,当延时时间相同时,即是方波信号。上限电压和下限电压对应的数字量可计算得到。 C51源程序如下: #includereg51.h #define uint unsigned int #define uchar unsigned char sbit cs=P3^1; sbit wr=P3^4; void delay1( ) { uint j; for(j=255;j0;j--); } void delay2( ) { uint j; for(j=200;j0;j--); } void main() { uchar i=0; cs=0; wr=0; while(1) { DAC0832=0xff; delay1( ); DAC0832=0; Delay2( ); } } * (4) 正弦波 利用DAC0832实现正弦波输出时,首先需要将正弦波模拟电压离散化。对于一个离散化为N点的正弦波,需要计算出这N个离散点的模拟电压对应的数字量,并制成一个表存储。 由于正弦波是对称的,只需计算1/4周期内点的值即可。 正弦波C51源程序如下: #includereg51.h #define uint unsigned int #define uchar unsigned char code uchar sintab[ ]={0x7f,0x89,0x94,0x9f,0xaa,0xb4,0xbe,0xc8,0xd1, 0xd9,0xe0,0xe7,0xed,0xf2,0xf7,0xfa,0xfc,0xfe,0xff} sbit cs=P3^1; sbit wr=P3^4; * void main() { uchar data i=0; cs=0; wr=0; while(1) { for(i=0;i18,i++) { DAC0832=sintab[i]; delay1( );} for(i=18;i0,i--) { DAC0832=sintab[]; delay1( );} for(i=0;i18,i++) { DAC0832=~ sintab[]; delay1( );} for(i=18;i0,i--) { DAC0832=~ sintab[]; delay1( );} } } * 7.5 MCS-51单片机与行程开关、晶闸管、继电器的接口 7.5.1 行程开关、继电器与MCS-51单片机接

文档评论(0)

love + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档