PIC18单片机C语言编程实例:LED控制与显示

需积分: 9 10 下载量 28 浏览量 更新于2024-07-28 收藏 185KB PDF 举报
"该资源为PIC18单片机C语言编程实例,包含外围功能模块简单应用和LED显示实例,适合初学者学习基础操作。" 本文将详细解析两个C语言程序,它们是针对PIC18单片机设计的,旨在帮助用户理解如何使用C语言控制PIC18单片机进行基本的I/O操作。 首先,我们来看第一个程序,这是一个简单的LED控制实例,用于点亮或熄灭与PORTD口相连的8个LED。在这个程序中: 1. 首先,通过`#include "p18f458.h"`引入了特定型号单片机的头文件,这个头文件包含了该型号单片机的寄存器定义和宏定义,使得我们可以直接使用这些寄存器和宏来控制硬件。 2. `main()`函数是程序的入口点。在其中,`TRISD=0X00;`将PORTD的所有位设置为输出模式,这意味着我们可以直接写入数据来控制与之连接的LED。 3. 接下来,`PORTD=0XFF;`将PORTD的值设为全1,使得所有LED熄灭。这是因为LED通常在低电平时亮起,在高电平时熄灭。 4. `while(1)`创建了一个无限循环,在循环内部,`PORTD=0XAA;`将PORTD的值设置为0XAA,这会按照设定的模式点亮部分LED。 第二个程序则是一个更复杂的示例,它演示了如何在8个LED上依次显示数字1到8。此程序包括初始化子程序和显示子程序: 1. 初始化子程序`initial()`设置了一些必要的寄存器,如将PORTA和PORTC设置为输出,关闭所有中断,配置SPI接口等。其中,SPI接口是用于串行通信的一种协议,这里用于控制LED显示。 2. `SPILED(chardata)`是显示子程序,它接收一个字符数据并将其通过SPI接口发送出去。首先,拉低RA5(LATCH)引脚,然后将数据放入SPI缓冲区,等待发送完成,最后拉高RA5引脚,完成锁存显示。 3. 在`main()`函数中,定义了一个包含数字1到8对应LED显示代码的数组`table[]`,并在无限循环中调用`SPILED()`,依次将数组中的数据传入,实现LED上的数字滚动显示。 这两个程序展示了如何利用C语言编写控制PIC18单片机的程序,包括基本的I/O操作、中断设置、以及串行通信协议的使用。对于初学者来说,这些实例提供了很好的实践平台,可以帮助他们深入理解单片机的硬件控制和C语言编程。