STC89C52RC 点阵显示字母 Z, E, L, S, B 代码示例
#include <reg52.h>
#define uchar unsigned char #define uint unsigned int
// 定义点阵字母 Z uchar code Z[8] = { 0x00, // 00000000 0x1F, // 00011111 0x18, // 00011000 0x10, // 00010000 0x0C, // 00001100 0x04, // 00000100 0x1F, // 00011111 0x00 // 00000000 };
// 定义点阵字母 E uchar code E[8] = { 0x00, // 00000000 0x1F, // 00011111 0x11, // 00010001 0x1F, // 00011111 0x11, // 00010001 0x11, // 00010001 0x1F, // 00011111 0x00 // 00000000 };
// 定义点阵字母 L uchar code L[8] = { 0x00, // 00000000 0x10, // 00010000 0x10, // 00010000 0x10, // 00010000 0x10, // 00010000 0x10, // 00010000 0x1F, // 00011111 0x00 // 00000000 };
// 定义点阵字母 S uchar code S[8] = { 0x00, // 00000000 0x0E, // 00001110 0x11, // 00010001 0x10, // 00010000 0x0E, // 00001110 0x01, // 00000001 0x1F, // 00011111 0x00 // 00000000 };
// 定义点阵字母 B uchar code B[8] = { 0x00, // 00000000 0x1E, // 00011110 0x11, // 00010001 0x1E, // 00011110 0x11, // 00010001 0x11, // 00010001 0x1E, // 00011110 0x00 // 00000000 };
// 点阵显示函数 void display(uchar *data) { uint i; for(i = 0; i < 8; i++) { P0 = 0x01 << i; P2 = ~data[i]; delay(5); // 延时一段时间 P2 = 0xFF; // 关闭点阵 } }
// 延时函数 void delay(uint ms) { uint i, j; for(i = ms; i > 0; i--) for(j = 110; j > 0; j--); }
void main() { while(1) { // 第一个按键显示字母Z if(key1 == 0) { display(Z); } // 第二个按键显示字母E else if(key2 == 0) { display(E); } // 第三个按键显示字母L else if(key3 == 0) { display(L); } // 第四个按键显示字母S else if(key4 == 0) { display(S); } // 第五个按键显示字母B else if(key5 == 0) { display(B); } } }
// 请注意,以上代码只是一个示例,假设按键通过key1、key2、key3、key4、key5等变量表示,你需要根据实际的硬件连接和按键驱动方式进行相应的修改。此外,还需要根据具体的硬件平台和编译器,进行相关的配置和编译操作。
原文地址: https://www.cveoy.top/t/topic/pj9E 著作权归作者所有。请勿转载和采集!