?? leddisp.c
字號(hào):
/*********************************************************************/
//
// 采用8*8LED動(dòng)態(tài)顯示文字演示程序
//
/*********************************************************************/
//使用AT89C52單片機(jī),12MHZ晶振,P0口輸出一行數(shù)據(jù),P2口作行掃描,用共陽(yáng)LED管
//P1口接三個(gè)按鍵,用于逐字顯示、向上滾動(dòng)顯示文字、暫停備用。
#include "reg51.h"
#define char unsigned char
#define int unsigned int
//
char key,keytmp;
char code distab[]=
{
/********電子設(shè)計(jì)8*8字模********************/
0xEF,0x83,0xAB,0x83,0xAB,0x83,0xEE,0xE0,
0xFF,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}; // 列掃描控制字
//
//
//
//**********按鍵掃描函數(shù)***********//
void keyscan()
{
key=(~P1)&0x0f; //讀入鍵值
if(key!=0) //
{
while(((~P1)&0x0f)!=0); //等待按鍵釋放
keytmp=key; // 鍵值存放
}
}
//
//
//********1毫秒延時(shí)程序************//
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);}
}
}
}
//
/***********向上滾動(dòng)顯示**********/
fun1()
{
int m,n,h;
for(h=0;h<32;h++) //控制顯示字?jǐn)?shù)(32/8=4個(gè))
{for(n=0;n<10;n++) //控制幀移動(dòng)速度
{for(m=0;m<8;m++) //顯示1幀掃描(分8行,每行亮1毫秒)
{P0=distab[m+h];P2=scan_con[m];delay1ms(1);}
}
}
}
//
//
//*********主程序**********//
main()
{
keytmp=1; //上電自動(dòng)演示功能0)
while(1)
{
keyscan();
switch(keytmp)
{
case 1:{fun0();break;}
case 2:{fun1();break;}
case 4:{keyscan();P0=0xff;break;} //備用(暫停黑屏)
default:{break;}
}
}
}
//
//
//*********************結(jié)束***********************//
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -