#include <at89x52.h> #include <absacc.h> #define COM8255 XBYTE[0x8033] #define PA8255 XBYTE[0x8000] #define PB8255 XBYTE[0x8001] #define PC8255 XBYTE[0x8002] void LED_delay(void); unsigned char code str[32]={ 0x08,0x10,0x08,0x78,0x0B,0xC0,0x10,0x40,0x10,0x40,0x30,0x40,0x30,0x40,0x5F,0xFE, 0x90,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x10,0x40,0x17,0xFC,0x10,0x00 }; void main(void) { unsigned char i,j,n,m,temp; COM8255=0x80; while(1) { temp=0xfe; PA8255=temp; n=0; for(i=0;i<8;i++) { PC8255=str[2*n]; P1=str[2*n+1]; LED_delay(); temp=(temp<<1)|0x01; PA8255=temp; n++; } temp=0xfe; PB8255=temp; for(i=0;i<8;i++) { PC8255=str[2*n]; P1=str[2*n+1]; LED_delay(); temp=(temp<<1)|0x01; PB8255=temp; n++; } PA8255=0xff; PB8255=0xff; LED_delay(); } } void LED_delay(void) { unsigned char i=50; while(i--); }
时间: 2024-03-19 19:40:46 浏览: 120
单片机c头文件at89X51/AT89X52
5星 · 资源好评率100%
这段代码是基于AT89C52单片机控制的LED点阵显示程序。主要是通过控制8255并口芯片来控制LED点阵的显示,其中的 `PA8255`、`PB8255`、`PC8255` 分别对应8255并口芯片的三个寄存器。
具体程序流程如下:
1. 初始化并口芯片,将其设置为模式0;
2. 通过循环控制LED点阵的显示,每次先将 `PA8255` 置为0xfe,然后依次将点阵的16个列数据通过 `PC8255` 寄存器进行传输,同时将点阵的16个行数据通过 `P1` 引脚进行传输;
3. 每传输完一个列数据,就将 `PA8255` 左移一位,并将最低位设置为1,以便下一次传输;
4. 等待一段时间,然后将 `PA8255` 和 `PB8255` 都置为0xff,以便下一次循环。
需要注意的是,该程序只是一个简单的LED点阵显示程序,具体的电路和硬件驱动部分需要根据实际情况进行设计和实现。
希望能够对你有所帮助!
阅读全文