单片机点阵式1.按下按键,依次显示“电”、“子”、“毕”、“业”
时间: 2023-06-20 15:04:22 浏览: 42
假设使用的是8x8点阵屏幕,可以通过以下步骤实现:
1. 定义每个汉字的点阵信息,可以在网上找到相应的点阵库或手动编写点阵信息。
2. 定义每个汉字的显示时间,以控制汉字的显示速度。
3. 在程序中设置按键检测,当按键按下时,程序依次显示每个汉字。
4. 在显示汉字时,通过循环逐行显示点阵信息,使用延时函数控制行显示时间,以便于观察。
以下是一个简单的示例代码,仅供参考:
```c
#include <reg52.h>
// 定义每个汉字的点阵信息
unsigned char Hanzi_dian[] = {0x0E,0x1F,0x11,0x1F,0x0E,0x00,0x00,0x00}; // 电
unsigned char Hanzi_zi[] = {0x11,0x13,0x15,0x19,0x11,0x00,0x00,0x00}; // 子
unsigned char Hanzi_bi[] = {0x1F,0x05,0x05,0x05,0x1F,0x00,0x00,0x00}; // 毕
unsigned char Hanzi_ye[] = {0x1F,0x11,0x1F,0x04,0x1F,0x00,0x00,0x00}; // 业
// 定义每个汉字的显示时间,单位为毫秒
unsigned int Hanzi_time[] = {1000, 1000, 1000, 1000};
// 延时函数,单位为毫秒
void delay(unsigned int ms)
{
unsigned int i, j;
for(i = 0; i < ms; i++)
for(j = 0; j < 120; j++);
}
// 显示一个汉字
void showHanzi(unsigned char* Hanzi, unsigned int time)
{
unsigned char i, j;
for(i = 0; i < 8; i++)
{
P1 = Hanzi[i]; // 将当前行的点阵信息输出到P1口
delay(1); // 延时1毫秒,控制每行的显示时间
for(j = 0; j < 8; j++)
{
P1 <<= 1; // 每次左移一位,逐列显示当前行的点阵信息
delay(1); // 延时1毫秒,控制每列的显示时间
}
}
delay(time); // 显示完一个汉字后延时一段时间
}
void main()
{
while(1)
{
if(P2 != 0xFF) // 检测按键是否按下
{
showHanzi(Hanzi_dian, Hanzi_time[0]); // 显示“电”
showHanzi(Hanzi_zi, Hanzi_time[1]); // 显示“子”
showHanzi(Hanzi_bi, Hanzi_time[2]); // 显示“毕”
showHanzi(Hanzi_ye, Hanzi_time[3]); // 显示“业”
}
}
}
```