单片机 LED点阵

2019-04-15 17:43发布

单片机 LED点阵

一、简述     使用8×8LED点阵显示汉字。向上滚动"中华"两个汉字。
     文件打包:链接: https://pan.baidu.com/s/1oHSAIY6qVA7qFFWUvMvJEA 密码: snyg二、效果
三、工程文件结构1、Keil工程
2、仿真电路图
四、代码88led.c文件#include #define uint unsigned int #define uchar unsigned char uchar code led[]={0xEF,0xEF,0x83,0xAB,0xAB,0x83,0xEF,0xEF,0xD5,0x93,0x55,0xC0,0x00,0xEF,0xEF,0xEF};//汉字“中华” 点阵码 uchar code led_w[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//对应1~8行,赋给P2口,控制在哪一行显示 /********************************************************************/ //函数名:delay_1ms(uint x) //功能:利用定时器0精确定时1ms; 自加 time_t的值为后面时间调整函数服务 //调用函数: //输入参数:x,1ms计数 //输出参数: //说明:延时的时间为1ms乘以x /********************************************************************/ void delay_1ms(uint x) { TMOD=0X01;//开定时器0,工作方式为1 TR0=1;//启动定时器0; while(x--) { TH0=0Xfc;//定时1ms初值的高8位装入TH0 TL0=0X18;//定时1ms初值的低8位装入TL0 while(!TF0);//等待,直到TF0为1 TF0=0; //重置溢出位标志 } TR0=0;//停止定时器0; } /**********************************************************/ //函数名:ledplay() //功能:led点阵显示程序 //调用函数: //输入参数: //输出参数: //说明: /**********************************************************/ void ledplay() { uchar i,y,j; y=0; //稳定显示电平,平滑滚动,每8行数据显示10次 j=0;//数据偏移,每次偏移1位 while(1)//实现汉字向上滚动效果 { for(i=0;i<8;i++)//显示8行数据 { P0=0xFF;//消除上次电平的影响 P2=led_w[i];//控制显示行 P0=led[i+j];//行电平数据 delay_1ms(3);//延时3ms } y++; if(y>9) { P0=0xFF;//消除上次电平的影响 delay_1ms(1);//延时,确保消除上次电平的影响 y=0; j++; if(j>8) //"中华"二字一共16行电平数据(0~15),i+j要<15 j=0; } } } /**********************************************************/ //主程序 /**********************************************************/ void main() { ledplay();//调用显示程序; }五、总结