⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led595.c

📁 用单片机控制的595和138点阵LED
💻 C
字号:
/**************************************/
/*我的第一个LED显示程序,请高手多指点 */
/*程序功能:用两个点阵LED顺序显示0-9  */
/*作者:邓国明						  */
/*地址:厦门大学机电工程系03级        */
/*Email:gmdengxm@163.com			  */
/**************************************/


#include <REG51.H>
#define uchar unsigned char
#define uint unsigned int


/*******************数字点阵**************/
uchar code	shuzi[10][16] =
{
{0x00,0x00,0x10,0x20,0x10,0x20,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,0x00,0x00},        //"1",0

{0x00,0x00,0x70,0x30,0x08,0x28,0x08,0x24,0x08,0x22,0x88,0x21,0x70,0x30,0x00,0x00},        //"2",1

{0x00,0x00,0x30,0x18,0x08,0x20,0x88,0x20,0x88,0x20,0x48,0x11,0x30,0x0E,0x00,0x00},        //"3",2

{0x00,0x00,0x00,0x07,0xC0,0x04,0x20,0x24,0x10,0x24,0xF8,0x3F,0x00,0x24,0x00,0x00},        //"4",3

{0x00,0x00,0xF8,0x19,0x08,0x21,0x88,0x20,0x88,0x20,0x08,0x11,0x08,0x0E,0x00,0x00},        //"5",4

{0x00,0x00,0xE0,0x0F,0x10,0x11,0x88,0x20,0x88,0x20,0x18,0x11,0x00,0x0E,0x00,0x00},        //"6",5

{0x00,0x00,0x38,0x00,0x08,0x00,0x08,0x3F,0xC8,0x00,0x38,0x00,0x08,0x00,0x00,0x00},        //"7",6

{0x00,0x00,0x70,0x1C,0x88,0x22,0x08,0x21,0x08,0x21,0x88,0x22,0x70,0x1C,0x00,0x00},        //"8",7

{0x00,0x00,0xE0,0x00,0x10,0x31,0x08,0x22,0x08,0x22,0x10,0x11,0xE0,0x0F,0x00,0x00},        //"9",8

{0x00,0x00,0xE0,0x0F,0x10,0x10,0x08,0x20,0x08,0x20,0x10,0x10,0xE0,0x0F,0x00,0x00}        //"0",9

};
/*********************汉字点阵*******************/



/********************位口定义*******************/
sbit P17 = P1^7;


/********************变量定义********************/

uint delayi,delayj,rxdi,i,j,k,n,m;  		//delayi,delayj,n 延时函数变量。rxdi为串行口输出变量
											//i,j,k,m输出控制变量


/********************函数声明*******************/
void delay(uint n);					//不精确延时函数,延时n ms
void rxdout(uchar *d);				//串行口输出函数




/*******************主函数**********************/

void main()
{
	SCON = 0x00;		//串行口方式0,RXD输出数据,TXD输出脉冲
	while(1)
	{

		for( i = 0; i < 10; i++)			//数字显示
		{
			for(k = 0; k < 10; k++)
			{
				for((m = 0, j = 0); j < 16; j += 2)
				{

					P17 = 0;				//P17口为595锁存
					rxdout(&shuzi[i][j]);
					rxdout(&shuzi[i][j+1]);
					P17 = 1;				//595上升沿锁存数据
					P1 = m;					//行驱动
					++m;
					delay(1);				//延时200微秒
				}
			}
			delay(200);						//延时准备显示下一个数字
			delay(200);
			delay(200);
		}
	}
}




/*******************子函数定义*********************/

void delay(uint n)			//不精确延时,12MHz延时大约(200+3)*n微秒
{	

	for( ; n > 0; n--)
	{
		for(delayi = 0; delayi < 100; delayi++)      
		{
			;
		}
	}
}

void rxdout(uchar *d) 		//串行口输出
{
	SBUF = *d;
	while(TI == 0);
	TI = 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -