《微机接口技术课程讲.ppt》由会员分享,可在线阅读,更多相关《微机接口技术课程讲.ppt(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、8.2 C51语言程序设计对输入语言程序设计对输入/输出输出的应用的应用例8.7:根据图例8.7所示的I/O控制端口原理,设计一程序通过8051单片机的P1口控制二极管发光,采用延时的方法控制发光二极管的点亮时间和暗的时间。解:1)电路图说明u单片机的P1口中的线依次连接在连接插座(CON24)上。uULN2003是反向驱动器,它的输入接P1.0P1.6,它的输出接发光二极管的阴极。u发光二极管的阴极接低电平,则发光二极管亮,反之则暗。图例图例8.78051P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7例例8.7续一续一2)程序设计:程序名为Led.c#include#def
2、ine uchar unsigned char#define uint unsigned intsbit 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(uint data c
3、ount);void Led_Off();void Led_On();void main()doLed_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_0=1;P1_1=1;P1_2=1;P1_3=1;P1_4=1;P1_
4、5=1;P1_6=1;例例8.7续四续四在例8.7中学到了以下几点:1.如何用C51语言编制对单片机P1口的控制程序。2.学会了C51语言程序设计的一般方法。例例8.8用外部中断控制发光二极管的亮和暗。发光二极管的接口电路如图例8.7,外部中断信号的输入电路图如图例8.8。解:1)电路图说明1.单片机的外部中断申请线INT0(P3.2)和INT1(P3.3)分别连接在接线器(J15)的7号和10号端。2.接线器的8号和11号接线端分别接开关KEY7和KEY8。3.按下开关就可使单片机的中断申请线的电平由高变低,从而产生中断申请信号。图例图例8.88051P1.0P1.1P1.2P1.3P1.4
5、P1.5P1.6P1.7P3.2 P3.3接J15.7接J15.10例例8.8续一续一2)程序设计:程序名为Extern_Int.c#include#define uchar unsigned charsbit 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=P33;/定义变量P3_3指向P3口第3位例例8.8续二续二void Led_Off();void Led_On();v
6、oid 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_5=1;P1_6=1;例例8.8续四续四void Xint0(void)interrupt 0 using 1/INT0 中断服务子程序Led_On();void Xint1(
7、void)interrupt 2 using 1/INT1 中断服务子程序Led_Off();模拟调试以上程序。例例8.9采用单片机中的定时器的定时来控制发光二极管的亮和暗间隔时间。设单片机时钟频率为12MHZ。解:1)电路图如图例8.72)定时方案:将T1设置为方式1定时器,定时时间为1ms。则T1的初值a=65536-1000=64536=FC18H。程序通过对1ms定时信号进行计数1000次来确定1s的定时。例例8.9续一续一3)程序设计:程序名为Timer1_Led.c#include#define uchar unsigned char#define uint unsigned in
8、tsbit 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.9续二续二void Timer1_1ms(uint count);void Led_Off();void Led_On();void main()TMOD=
9、0 x10;/设置定时器工作方式doLed_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_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_5=1;P1_6=1;作业十八作业十八292.8,11