微机接口技术课程讲.ppt_第1页
微机接口技术课程讲.ppt_第2页
微机接口技术课程讲.ppt_第3页
微机接口技术课程讲.ppt_第4页
微机接口技术课程讲.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、8.2 C51语言程序设计对输入/输出的应用,例8.7:根据图例8.7所示的I/O控制端口原理,设计一程序通过8051单片机的P1口控制二极管发光,采用延时的方法控制发光二极管的点亮时间和暗的时间。,解:1)电路图说明,单片机的P1口中的线依次连接在连接插座(CON24)上。 ULN2003是反向驱动器,它的输入接P1.0P1.6,它的输出接发光二极管的阴极。 发光二极管的阴极接低电平,则发光二极管亮,反之则暗。,图例8.7,8051,P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7,例8.7续一,2)程序设计:程序名为Led.c,#include #define

2、 uchar unsigned char #define uint unsigned int sbit P1_0=P10; /定义变量P1_0指向P1口第0位 sbit P1_1=P11; /定义变量P1_1指向P1口第1位 sbit P1_2=P12; /定义变量P1_2指向P1口第2位 sbit P1_3=P13; /定义变量P1_3指向P1口第3位 sbit P1_4=P14; /定义变量P1_4指向P1口第4位 sbit P1_5=P15; /定义变量P1_5指向P1口第5位 sbit P1_6=P16; /定义变量P1_6指向P1口第6位,例8.7续二,void DelayX1ms(

3、uint data count); void Led_Off(); void Led_On();,void main() do Led_On(); DelayX1ms(1000); Led_Off(); DelayX1ms(1000); while(1) ,例8.7续三,void DelayX1ms(uint data count) uint j; while(count-!=0) for(j=0;j72;j+); ,void Led_Off() P1_0=0; P1_1=0; P1_2=0; P1_3=0; P1_4=0; P1_5=0; P1_6=0; ,void Led_On() P1_

4、0=1; P1_1=1; P1_2=1; P1_3=1; P1_4=1; P1_5=1; P1_6=1; ,例8.7续四,在例8.7中学到了以下几点:,如何用C51语言编制对单片机P1口的控制程序。 学会了C51语言程序设计的一般方法。,例8.8,用外部中断控制发光二极管的亮和暗。发光二极管的接口电路如图例8.7,外部中断信号的输入电路图如图例8.8。,解:1)电路图说明,单片机的外部中断申请线INT0(P3.2)和INT1(P3.3)分别连接在接线器(J15)的7号和10号端。 接线器的8号和11号接线端分别接开关KEY7和KEY8。 按下开关就可使单片机的中断申请线的电平由高变低,从而产生

5、中断申请信号。,图例8.8,8051,P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7,P3.2 P3.3,接J15.7,接J15.10,例8.8续一,2)程序设计:程序名为Extern_Int.c,#include #define uchar unsigned char sbit P1_0=P10; sbit P1_1=P11; sbit P1_2=P12; sbit P1_3=P13; sbit P1_4=P14; sbit P1_5=P15; sbit P1_6=P16; sbit P3_2=P32; /定义变量P3_2指向P3口第2位 sbit P3_3=

6、P33; /定义变量P3_3指向P3口第3位,例8.8续二,void Led_Off(); void Led_On(); void Xint0(void); void Xint1(void);,void main() P1=0 x00; EA=1; EX0=1; EX1=1; IT0=0; IT1=0; for (;) ; ,例8.8续三,void Led_Off() P1_0=0; P1_1=0; P1_2=0; P1_3=0; P1_4=0; P1_5=0; P1_6=0; ,void Led_On() P1_0=1; P1_1=1; P1_2=1; P1_3=1; P1_4=1; P1_

7、5=1; P1_6=1; ,例8.8续四,void Xint0(void) interrupt 0 using 1/INT0 中断服务子程序 Led_On(); ,void Xint1(void) interrupt 2 using 1/INT1 中断服务子程序 Led_Off(); ,模拟调试以上程序。,例8.9,采用单片机中的定时器的定时来控制发光二极管的亮和暗间隔时间。设单片机时钟频率为12MHZ。,解:1)电路图如图例8.7,2)定时方案:,将T1设置为方式1定时器,定时时间为1ms。则T1的初值a=65536-1000=64536=FC18H。程序通过对1ms定时信号进行计数1000

8、次来确定1s的定时。,例8.9续一,3)程序设计:程序名为Timer1_Led.c,#include #define uchar unsigned char #define uint unsigned int sbit P1_0=P10; /定义变量P1_0指向P1口第0位 sbit P1_1=P11; /定义变量P1_1指向P1口第1位 sbit P1_2=P12; /定义变量P1_2指向P1口第2位 sbit P1_3=P13; /定义变量P1_3指向P1口第3位 sbit P1_4=P14; /定义变量P1_4指向P1口第4位 sbit P1_5=P15; /定义变量P1_5指向P1口第

9、5位 sbit P1_6=P16; /定义变量P1_6指向P1口第6位,例8.9续二,void Timer1_1ms(uint count); void Led_Off(); void Led_On();,void main() TMOD=0 x10;/设置定时器工作方式 do Led_On(); Timer1_1ms(1000); Led_Off(); Timer1_1ms(1000); while(1) ,例8.9续三,void Timer1_1ms(uint count) while(count-) TH1=0 xFC;/设置初值高八位 TL1=0 x18;/设置初值低八位 TR1=1;/启动定时器。 while(!TF1);/检测TF1,若其不为1,则等待。 TF1=0; TR1=0;/暂停定时器工作。 ,例8.9续四,void Led_Of

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论