P1口流水灯实验 实验报告包括: 1、实验名称:P1口流水灯实验 2、实验目的: (1)了解/O口的电气特性和驱动能力; (2)掌握程序编写的方法;(3)了解LED电路中加入 限流电阻的原理。 3、实验设备:PC机一台;PROTEUS仿真软件一套; 实验箱一台;SP下载器一台。 4、实验内容:P1口作为输出口,控制8位发光二极管作 流水灯显示。 5、硬件电路; 6、实验程序; 7、实验现象: 烧录程序后上电运行后,第一个LED灯 点亮,然后下一个LED灯点亮,循环往复,构成一个流 水灯。 8、实验心得体会; 9、思考题
P1口流水灯实验 实验报告包括: 1、实验名称:P1口流水灯实验 2、实验目的:(1)了解I/O口的电气特性和驱动能力; (2)掌握程序编写的方法;(3)了解LED电路中加入 限流电阻的原理。 3、实验设备:PC机一台;PROTEUS仿真软件一套; 实验箱一台;ISP下载器一台。 4、实验内容:P1口作为输出口,控制8位发光二极管作 流水灯显示。 5、硬件电路; 6、实验程序; 7、实验现象:烧录程序后上电运行后,第一个 LED灯 点亮,然后下一个LED灯点亮,循环往复,构成一个流 水灯。 8、实验心得体会; 9、思考题
硬件电路:P1口流水灯电路 U1 39 XTAL1 X1 PD.DADO 33 90.1A01 R2 37 18 P0.2/AD2 XTAL2 P0.3/AD3 35 20 PD.4/AD4 D PO.S/AD5 PD.6/AD6 33 20 RST P0.7/AD7 32 R4 p20A8 21 P2.1/A9 P2.2IA10 29 PSEN P2.3A11 30 P2.4iA12 6 BUTTON 31 P2.5A13 P2.6A14 27 P2.7A15 28 R1 2 P1.0 P3.0/RXD 10 1 p12 P3.1TXD p1.3 P3.21NT0 P1.4 P3.3/INT1 13 14 P15 P3.4T0 P3.5/T1 15 p1.6 P17 P3.6i P1.7 P3.7/RD > AT89C51 实验接线:P1.0~P1.7接发光二极管显示单元D1~D8
硬件电路:P1口流水灯电路 实验接线:P1.0~P1.7 接发光二极管显示单元D1~D8
P1口亮灯电路及其Proteus仿真 亮灯电路的硬件电路图如图所示,这里采用P1 口做LED发光二极管的驱动端口。发管二极管具有单 向导电性,只需要通过5mA左右的电流即可发光,电 流越大,亮度越强,一般控制其电流在520mA,因 此在发光二极管电路中串联一个电阻,用来限制通过 发二极管的电流。 负极的一正极 如图,当发光二极管发光时,其两端的导通压降 约为1.7V,发光二极管通过2202的限流电阻与+5V电 源相连,则其电流为(5一1.7)220=15mA。31脚EA 端与+5V相连,以保证单片机上电复位后从内部程序 存储器开始运行程序
P1口亮灯电路及其Proteus仿真 亮灯电路的硬件电路图如图所示,这里采用P1 口做LED发光二极管的驱动端口。发管二极管具有单 向导电性,只需要通过5mA左右的电流即可发光,电 流越大,亮度越强,一般控制其电流在5~20mA,因 此在发光二极管电路中串联一个电阻,用来限制通过 发二极管的电流。 如图,当发光二极管发光时,其两端的导通压降 约为1.7V,发光二极管通过220Ω的限流电阻与+5V电 源相连,则其电流为(5-1.7)/220=15mA。31脚 端与+5V相连,以保证单片机上电复位后从内部程序 存储器开始运行程序。 EA
P1口流水灯实验程序: #include <reg51.h> #include <intrins.h> /延时程序 void delay(unsigned int count) { unsigned char i; while(count-!=0)/*count=count-1若不等于0,就执 行循环*/ for(i=0;i<120;计+);/i=i计1加到120为止
P1口流水灯实验程序: #include <reg51.h> #include <intrins.h> //延时程序 void delay(unsigned int count) { unsigned char i; while(count- != 0) /*count=count-1若不等于0,就执 行循环*/ for(i=0; i<120; i++);//i=i+1加到120为止 }
P1口流水灯实验程序: void mainO { unsigned char val Oxfe; while(1) P1 val; val=_crol_(val,1); 1/循环左移1位 delay(500); /延时500ms }
P1口流水灯实验程序: void main() { unsigned char val = 0xfe; while(1) { P1 = val; val = _crol_(val, 1); //循环左移1位 delay(500); //延时500ms } }