#include <reg52.h> #define uchar unsigned char #define uint unsigned int uint code tab[6][5]= { {0x7F,0x08,0x08,0x08,0x7F}, //"H" {0x3D,0x42,0x45,0x41,0x3E}, //"Q" {0x7E,0x01,0x01,0x01,0x7E}, //"U" {0x7F,0x04,0x38,0x04,0x7F}, //"W" {0x61,0x51,0x49,0x45,0x43}, //"Z" {0x7F,0x08,0x08,0x08,0x7F}, //"H" }; void Delay(unsigned int xms) { unsigned char i, j; while(xms--) { i = 2; j = 239; do { while (--j); } while (--i); } } void main(void) { uint n; uchar i,j; while(1) { for(j=0;j<6;j++) { //显示屏显示刷新150次,保持每个数字显示一定时间 for(n=0;n<150;n++) { for(i=0;i<5;i++) { P1=i; P2=tab[j][i]; Delay(1); P2=0; Delay(1); } } } } 修改这段代码,实现基于STC89C52单片机,搭建7×5点阵屏,用c语言编写程序,实现循环显示HQUWZH六个字母,并且不同字母之间切换显示时,前一字母亮度慢慢降低,直至完全熄灭;然后,后一字母慢慢亮起,直至完全显现。
时间: 2024-01-22 10:03:27 浏览: 61
按矩阵键盘显示平方#include<reg52.h>
4星 · 用户满意度95%
好的,我来给您修改一下这段代码实现您的需求:
```
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uint code tab[6][5] = {
{0x7F,0x08,0x08,0x08,0x7F}, //"H"
{0x3D,0x42,0x45,0x41,0x3E}, //"Q"
{0x7E,0x01,0x01,0x01,0x7E}, //"U"
{0x7F,0x04,0x38,0x04,0x7F}, //"W"
{0x61,0x51,0x49,0x45,0x43}, //"Z"
{0x7F,0x08,0x08,0x08,0x7F} //"H"
};
void Delay(unsigned int xms) {
unsigned char i, j;
while(xms--) {
i = 2;
j = 239;
do {
while (--j);
} while (--i);
}
}
void main(void) {
uint n;
uchar i,j,k;
while(1) {
for(j=0;j<6;j++) {
for(k=0;k<100;k++) { //控制前一字母逐渐变暗
for(i=0;i<5;i++) {
P1=i;
P2=(tab[j][i]>>(k/20)); //逐渐右移,数字变小
Delay(1);
P2=0;
Delay(1);
}
}
for(k=0;k<100;k++) { //控制后一字母逐渐变亮
for(i=0;i<5;i++) {
P1=i;
P2=(tab[(j+1)%6][i]>>(100-k)/20); //逐渐左移,数字变大
Delay(1);
P2=0;
Delay(1);
}
}
}
}
}
```
修改了的部分主要包括:
1. 加入了一个变量k,用于控制前一字母的亮度逐渐变暗以及后一字母的亮度逐渐变亮。
2. 在循环中加入了两个for循环,分别控制前一字母和后一字母的亮度变化。
3. 在显示过程中,通过右移和左移操作来控制数字的变小和变大,从而实现逐渐变暗和逐渐变亮的效果。
希望能够帮到您!
阅读全文