📄 leddisp2.c
字号:
/*********************************************************************/
//
// 采用8*8LED动态显示文字演示程序
// LRM 2004.10.9
/*********************************************************************/
//使用AT89C52单片机,12MHZ晶振,P0口输出一行数据,P2口作行扫描,用共阳LED管
//P1口接三个按键,用于逐字显示、向上滚动显示文字、暂停备用。
#include "reg51.h"
#define char unsigned char
#define int unsigned int
char key,keytmp;
char code distab[]={0xEF,0x83,0xAB,0x83,0xAB,0x83,0xEE,0xE0}; //电
//char code distab[]={0x00,0xff,0xff,0xff,0xff,0xff,0xff,0x00}; //电
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; // 键值存放
}
}
//
//
//********1毫秒延时程序************//
delay1ms(int t)
{
int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
keyscan();
}
//
//
/***********功能程序**********/
/***********逐字显示**********/
fun0()
{
char m;
for(m=0;m<8;m++)
{
P0=distab[m];
delay1ms(1);
P2=scan_con[m];
}
}
//*********主程序**********//
main()
{
keytmp=1; //上电自动演示功能0)
while(1)
{
keyscan();
switch(keytmp)
{
case 1:{fun0();break;}
case 2:{fun1();break;}
case 4:{keyscan();P0=0xff;break;} //备用(暂停黑屏)
default:{break;}
}
}
}
//
//
//*********************结束***********************//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -