ahai0306:
第二章 单片机基础实验一、单片机控制发光二极管实验[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/72/67561228365123.jpg');}"onmousewheel="returnimgzoom(this);">首先学习一下硬件,拿第一路为例,R1为限流电阻,发光二极管导通后的压降为Ud,那么流过此二极管的电流为(U-Ud)/R,大家可以根据二极管的大小来调整电阻大小,以保证亮度.开发板用的0805/1206发光二极管使用1K电阻即可.如果是大功率的发光管需要加驱动如三极管电路之类的,不能直接连接单片机引脚的.各种品牌的IO驱动能力不一样的,STC89C51的IO灌电流能力是20mA.上面发光二极管的原理是,P00为高电平(5V),D1截止,不亮;P00为低电平(0V),D1导通,发光.二极管控制就这么简单,下面来编写程序吧C语言程序:#include //调用头文件(单片机内部的寄存器定义)sbit LED0 =P0^0; //必须定义,P0^0脱离开sbit指令是其它意思main() //主函数{ LED0=0; //LED0发光二极管亮(P00输出低电平) while(1); //单片机在这里等待(待机)}汇编程序:;***********硬件I/O口定义************LED0 EQU P0.0 ORG 0000H ;上电后程序从这里运行 AJMP MAIN MAIN: CLR LED0 ;LED0发光二极管亮(P00输出低电平) SJMP $ ;单片机在这里等待(待机) END第一个程序已经编写完了,编译后下载到单片机体验一下吧,我以前写过初学者的第一个单片机程序,大家可以看看:http://blog.ednchina.com/ahai0306/19917/message.aspx这时候大家已经会点亮第一个灯了,然后大家可以随便点亮其它的灯了,可以使用P0直接点亮8个灯了C语言程序:#include //调用头文件(单片机内部的寄存器定义)main() //主函数{ P0=0; //P0口的8个发光二极管全亮 while(1); //单片机在这里等待(待机)}汇编程序: ORG 0000H ;上电后程序从这里运行 AJMP MAINMAIN: MOVP0 #00H ;P0的8个发光二极管全亮 SJMP $ ;单片机在这里等待(待机) END现在大家可以用移位指令加上适当延时,来进行流水灯实验了,大家先思考一下如何实现?不明白的地方和本人交流!QQ:464976346http://blog.ednchina.com/ahai0306/(我的博客)