c51单片机编写代码点阵显示“李”“子”
时间: 2023-11-12 11:04:03 浏览: 30
下面是使用C51单片机编写的点阵显示“李”“子”的代码:
```c
#include <reg52.h>
// 数码管段码表
unsigned char code table[]={
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
// 显示“李”函数
void display_Li(){
unsigned char i;
// 显示“李”的第一个字“李”的8x8点阵
unsigned char Li1[]={
0x00,0x18,0x24,0x42,0x42,0x7e,0x42,0x00
};
// 显示“李”的第二个字“子”的8x8点阵
unsigned char Li2[]={
0x00,0x7e,0x40,0x40,0x7c,0x42,0x7e,0x00
};
for(i=0;i<8;i++){
P1=~Li1[i]; // 将“李”字的每一行数据赋值给P1口
P2=table[i]; // 显示李字的第一行
Delay(1); // 延时1ms
}
for(i=0;i<8;i++){
P1=~Li2[i]; // 将“子”字的每一行数据赋值给P1口
P2=table[i]; // 显示李字的第二行
Delay(1); // 延时1ms
}
}
// 延时函数
void Delay(unsigned int t){
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<125;j++);
}
// 主函数
void main(){
while(1){
display_Li(); // 调用显示“李”函数
}
}
```
注:该代码使用了共阴数码管,如需使用共阳数码管需要将`table`数组中的数码管段码表取反。另外,该代码只实现了单个字的显示,如果需要显示多个字,请在`display_Li()`函数中添加相应的字体点阵数据。