80C51单片机入门:程序控制LED闪烁

需积分: 10 7 下载量 62 浏览量 更新于2024-08-02 收藏 630KB DOC 举报
"80C51单片机实例教程,通过简单的程序控制实现单片机的初步操作,包括闪烁灯实验,旨在帮助初学者掌握单片机编程和应用。" 80C51单片机是微控制器的一种,广泛应用于嵌入式系统设计。在这个实例中,我们将学习如何通过编写程序控制单片机实现一个基本的功能——让LED灯闪烁。这个过程涵盖了程序设计、硬件连接以及延时程序的实现。 1. **闪烁灯实验** 实验目标是利用单片机的P1.0端口连接一个LED灯,使得LED以0.2秒的周期交替亮灭。这需要精确的定时控制,以便达到预设的闪烁频率。 2. **电路原理** 实验电路图显示了P1.0端口与LED灯的连接,通过导线将单片机的P1.0引脚与LED的阳极相连,阴极则通过一个限流电阻接地,确保电流安全流通。 3. **硬件连线** 在系统板上,需要将“单片机系统”区域的P1.0端口与“八路发光二极管指示模块”的L1端口连接。 4. **程序设计** - **延时程序**:由于单片机的指令执行速度非常快,为了实现0.2秒的延时,我们需要编写一段循环计数的延时子程序。这里的延时程序基于单片机的时钟频率(12MHz),每个机器周期为1微秒。通过R6和R7寄存器的循环计数,可以计算出所需的时间长度。例如,R6=20,R7=248时,延时约为10ms,因此可以通过调整R5的值(R5=20)实现200ms的延时。 - **输出控制**:P1.0端口的电平控制LED的亮灭。当P1.0为高电平时(P1.0=1),LED熄灭;为低电平时(P1.0=0),LED点亮。使用SETB和CLR指令分别设置P1.0为高电平和低电平。 5. **程序框图和源代码** 汇编源程序展示了整个程序的结构,包括主程序和延时子程序。主程序通过调用延时子程序控制LED的亮灭。程序框图则直观地表示了程序的流程。 6. **汇编源程序示例** ```assembly ORG 0 START: CLR P1.0 ; LED熄灭 LCALL DELAY ; 延时0.2秒 SETB P1.0 ; LED点亮 LCALL DELAY ; 再次延时0.2秒 LJMP START ; 循环执行 DELAY: MOV R5, #20 ; 延时子程序 D1: MOV R6, #20 D2: MOV R7, #248 DJNZ R7, $ ; 循环计数 DJNZ R6, D2 DJNZ R5, D1 RET ; 子程序结束 ``` 这段代码展示了如何在80C51单片机上实现LED的闪烁,并提供了基础的延时算法,有助于理解单片机程序控制的基本逻辑。 通过这个简单的实例,初学者能够理解单片机的输入/输出控制、延时程序设计以及汇编语言编程的基础知识,为后续更复杂的单片机项目打下坚实的基础。