📄 shuxian.txt
字号:
//采用AT89S52单片机,12MHZ晶振,P0输出一行数据,P2做行扫描,共阳LED管
//P1接3个按键,用于逐字显示,向上滚动和暂时备用
#include"reg51.h"
#define char unsigned char
#define int unsigned int
//
char key ,keytmp;
char code distab[]=
{
/*********电子设计8*8字模*******************/
0xEF,0x83,0xAB,0x83,0xAB,0x83,0xEE,0xE0,
0xEF,0xC7,0xEF,0x83,0xEF,0xEF,0xCF,0xEF,
0xB1,0xB5,0x04,0xBF,0xB1,0xB5,0x9B,0xA4,
0xBB,0xBB,0x1B,0xA0,0xBB,0xBB,0x9B,0xBB,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
};
//
char code scan_con[8]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//列扫描控制字
//
//*************按键扫描函数***************//
void keyscan()
{
key=(~P1)&0x0f; //读入键值
if (key!=0)
{
while(((~P1)&0x0f)!=0);//等待按键释放
keytmp=key; //键值存放
}
}
//*********1ms延时程序***********//
delay1ms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
keyscan();
}
/*********功能程序*************/
/********逐字显示***************/
fun0()
{
int m,n,h;
for(h=0;h<32;h=h+8)
{for(n=0;n<100;n++)
{for(m=0;m<8;m++)
{P0=distab[m+h];P2=scan_con[m];delay1ms(1);}
}
}
}
/**********向上滚动显示*************/
fun1()
{
int m,n,h;
for(h=0;h<32;h++) //控制显示字数(32÷8=4个)
{for(n=0;n<10;n++) //控制移动速度
{for(m=0;m<8;m++) //显示1扫描(分8 行,每行亮1ms)
{P0=distab[m+h];P2=scan_con[m];delay1ms(1);}
}
}
}
//**********主程序****************//
main()
{
keytmp=1; //上电自动演示功能(逐字显示)
while(1)
{
keyscan();
switch(keytmp)
{
case 1:{fun0();break;}
case 2:{fun1();break;}
case 4:{keyscan();P0=0xff;break;}//备用(暂停黑屏)
}
}
}
//*************结束******************//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -