单片机电子教案 第十一章--单片机高级语言C51应用

上传人:E**** 文档编号:89411738 上传时间:2019-05-24 格式:PPT 页数:40 大小:243.50KB
返回 下载 相关 举报
单片机电子教案 第十一章--单片机高级语言C51应用_第1页
第1页 / 共40页
单片机电子教案 第十一章--单片机高级语言C51应用_第2页
第2页 / 共40页
单片机电子教案 第十一章--单片机高级语言C51应用_第3页
第3页 / 共40页
单片机电子教案 第十一章--单片机高级语言C51应用_第4页
第4页 / 共40页
单片机电子教案 第十一章--单片机高级语言C51应用_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《单片机电子教案 第十一章--单片机高级语言C51应用》由会员分享,可在线阅读,更多相关《单片机电子教案 第十一章--单片机高级语言C51应用(40页珍藏版)》请在金锄头文库上搜索。

1、第十一章 单片机高级语言C51应用,教学目的和要求,本章通过举例重点介绍单片机高级语言C51在键盘、LED显示、串行通信、A/D、D/A、I2C总线的读写以及打印机控制等方面的应用。重点要求掌握C51语言的编程结构和编程方法,达到C51程序在8051单片机中熟练应用的目的。,8051串行口扩展矩阵键盘接口与应用,8051串行口扩展矩阵键盘接口 由于8051的串行口在方式0工作状态下,可以方便地通过移位寄存器74LS164扩展并行输出口。因此,可以将这些并行口线作为列线,与P3口的行线构成行列式键盘。每占用一条P3口线可增加8个按键,用户根据需要可增减。 8051串行口扩展矩阵键盘应用 在805

2、1的串行口方式0工作状态下,结合P3.4和P3.5实现2*8键盘。如图11-1所示(下页)。,8051串行口扩展矩阵键盘接口与应用,图11-1 8051串行口扩展键盘接口电路,8051串行口扩展矩阵键盘接口与应用,C51软件设计: #include /预处理 #include #include unsigned char getkey(void); /键盘扫描函数 void proc1(void); /定义按键处理程序1 void proc2(void); /定义按键处理程序2 void proc3(void); /定义按键处理程序3 void proc4(void); /定义按键处理程序4

3、bit0=P3.4; bit1=P3.5;,8051串行口扩展矩阵键盘接口与应用,void delay(void); /定义延时函数 void main(void) /主函数 unsigned char idata key; SCON=0x00; /串口初始化 ES=0; EA=0; /关闭中断 while(1) key=getkey(); if(key!=0xff) switch (key),8051串行口扩展矩阵键盘接口与应用, case 0x00: proc0(); braek; case 0x01: proc1(); braek; case 0x02: proc2(); braek;

4、case 0x03: proc3();,8051串行口扩展矩阵键盘接口与应用,braek; default: break; unsigned char getkey(void) /键盘扫描函数 unsigned char idata key_code,col=0; mask=0x00;,8051串行口扩展矩阵键盘接口与应用,TI=0; SBUF=mask; while(TI=0); if(bit0,8051串行口扩展矩阵键盘接口与应用,SBUF=mask; while(TI=0); if(bit0 ,8051串行口扩展矩阵键盘接口与应用,if(col=8) return(0xff); if(b

5、it0=1) key_code=col; else key_code=8+col; while(bit0 ,8051串行口扩展LED显示器接口与应用,8051串行口扩展LED显示器接口 在8051单片机应用系统中,可以利用串行接口来扩展并行I/O口(假定串行口工作在移位寄存器、方式0的状态下)。串行移位输出接输出移位寄存器74LS164可扩展一个8位并行输出口,用以连接一个LED数码管作静态显示。,8051串行口扩展LED显示器接口与应用,8051串行口扩展LED显示器应用 如图11-2所示。由6个共阳极LED数码管,编程使其显示200304。,图11-2 串行口扩展LED显示接口电路,805

6、1串行口扩展LED显示器接口与应用,C51软件设计: # include /预处理 # include unsigned char code ledcode11=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88; /字型编码 unsigned char code buf6=0x2,0x00,0x00,0x03,0x00,0x04; /200304 void main(void) /主函数 unsigned char idata i,k; SCON=0x00; /串行口初始化 ES=0; EA=0; /关闭中断,8051串行口扩展LED

7、显示器接口与应用,for(i=0;i6;i+) TI=0; k=bufi; k=ledcodek; SBUF=k; while(TI=0); while(1); ,8051串行口实现多机通讯,利用8051串行口实现多机通讯,下面给出一个利用8051串行口进行多机通讯的C51程序。一个主机与多个从机进行单工通讯,主机发送,从机接收。(双方均采用11.0592MHz晶振) 发送软件设计如下: # include # define COUNT 10 # define NODE_ADDR 64 unsigned char bufferCOUNT; unsigned int pointer; void

8、main(void) while(pointerCOUNT) /发送缓冲区初始化 bufferpointer=A+pointer;,8051串行口实现多机通讯,pointer=pointer+1; SCON=0xc0; /串行口初始化 TMOD=0x20; TH1=0xfd; /波特率为9600b/s TL1=0xfd; TR1=1; ET1=0; ES=1; EA=1; pointer=1; TB8=1; SBUF=NODE_ADDR; While(pointerCOUNT); ,8051串行口实现多机通讯,void send(void) interrupt 4 using 3 /发送中断服

9、务程序 TI=0; pointer+; if ( pointer=COUNT) return; else TB8=0; SBUF=bufferpointer; ,8051串行口实现多机通讯,接收软件设计: # include # define COUNT 10 # define NODE_ADDR 64 unsigned char bufferCOUNT; unsigned int pointer; void main (void) SCON=0xc0; TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; ET1=0; ES=1; EA=1; ,8051串行口实现多机通

10、讯,pointer=0; While(pointer=COUNT) SM2=1; ,DAC转换接口与应用,8051与DAC0832的硬件连接 由于DAC0832的输出是电流型,要输出电压信号,需要进行I/V转换。DAC0832与8051单片机接口如图11-5所示,DAC0832的端口地址为7FFFH。,图11-5 0832与8051接口电路,DAC转换接口与应用,DAC0832产生锯齿波的软件设计 # include # define DAC0832 XBYTE0x7fff void delay(unsigned char t) while(t-); void saw(void) unsign

11、ed char j; for(j=0;j255;j+) DAC0832=j;,DAC转换接口与应用,delay(10); void main(void) while(1) saw(); ,DAC转换接口与应用,DAC0832产生梯形波的软件设计 # include # define DAC0832 XBYTE0x7fff void delay (unsigned char t) while(t-); void saw (void) unsigned char j; for(j=0;j255;j+) DAC0832=j; delay(10); ,DAC转换接口与应用,delay(250); fo

12、r(j=0;j255;j+) DAC0832=255-j; delay(10); void main(void) while(1) saw(); ,ADC0809转换器的接口与应用,ADC0809与8051单片机的接口 ADC0809与8051单片机的连接如图11-6所示:,图11-6 0809与8051接口电路,ADC0809转换器的接口与应用,电路连接主要涉及两个问题。一是八路模拟信号通道选择,二是A/D转换完成后数据的传送。 1. 八路模拟通道选择 A、B、C分别接地址锁存器提供的低三位地址,只要把三位地址写入ADC0809中的地址锁存器,就实现了模拟通道选择。对系统来说,地址锁存器是一

13、个输出口,为了把三位地址写入,还要提供端口地址。图11-6中使用的是线选法,端口地址由P2.0确定。同时把WR作为写选通信号。 图11-6中可以看到,把ALE信号与START信号连接在一起了,这样连接使得在信号的前沿写入地址信号,紧接着在其后沿启动转换。 2. 转换数据的传送 A/D转换/得到的是数字量的数据,这些数据应传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认数据转换完成后,才能进行传送。,ADC0809转换器的接口与应用,AD0809应用举例 设有一个8路模拟量输入的巡回检测系统,采样数据依次存放在外部RAM 2000H-2007H单元中,其数据采样的

14、初始化程序和中断服务程序如下: C51软件设计: # include # include unsigned char xdata AD08090x8 - at - 0xfef0; /AD0809端口地址 unsigned char xdata buf0x8 at 0x2000; /存放采集数据 unsigned int idata pointer; unsigned char idata count; void main(void) pointer=0x2000; count=0x8;,ADC0809转换器的接口与应用,IT1=0; EA=1; EX1=0; AD08988-count=0x0

15、0; while(1); ,ADC0809转换器的接口与应用,中断服务软件设计: void ad intrrupt 1 using 2 unsigned char idata tmp,j; tmp=AD08098-count; bufpointer=tmp; pointer=pointer+1; count=count-1 if(count=0) EX0=0; ,软件模拟I2C总线的C51读写程序,I2C总线简介 I2C总线是一种简单、双向二线制同步串行总线,它只需要两根线(串行时钟线和串行数据线)即可在连接于总线上的器件之间传送信息。这种总线的主要特征如下: 总线只有两根线:串行时钟线和串行数据线; 每个连到总线上的器件都可由软件以唯一的地址寻址,并建立简单的主从关系,主器件既可作为发送器,也可作为接收器; 它是一个真正的多主总线,带有竞争检测和仲裁电路,可使多个主机任意同时发送数据而不破坏总线上的数据信息; 同步时钟允许器件通过总线以不同的波特率进行通信; 同步时钟可以作为停止和重新启动串行口发送的握手方式; 连接到同一总线上的集成电路器件数只受400PF的最大

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号