LED点阵实验 实验现象: 16*16点阵显示相关程序的功能 实验步骤: 如图: 注意:滚动(左右上下)这个程序里,绿色和红色的切换,只要把J11接到J19(绿色),或者J11接到J20(红色)。 点阵显示数字这个程序,绿色是用P1口,红色是用P2口。 注意另一个例程是不一样的。不清楚的可以看下程序源码,里面都端口IO的定义。 程序下载成功后自动运行 常见问题解决方法: 请您检查下JP595跳线帽有没有连接上,将单片机重新安装下,重启开发板。 请您将排线重新插拔下,或者换根排线试试。
单片机源程序如下:
- /*****************************************************************************************
- * *
- * LED点阵实验 (左右上下流动显示) *
- * 说明 通过P0 P1和 P2 作为点阵接口 *
- *要求学员掌握 LED点阵的工作原理和 各点阵脚的定义及接法,具体接线请参考接线说明 *
- *我们采用的LED点阵式是低功耗,在做实验时可以用单片机脚直接驱动 *
- ******************************************************************************************/
- #include <REG51.H>
- unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //纵条表
- unsigned char code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //衡条表
- /*************延时函数*********************/
- void delay1(void)
- {
- unsigned char i,j,k;
-
- for(k=10;k>0;k--) //循环时间是 10*20*248次
- for(i=20;i>0;i--)
- for(j=248;j>0;j--);
-
- }
- /*************主函数*****************************/
- void main(void)
- {
- unsigned char i,j;
-
- while(1)
- {
- for(j=0;j<3;j++) //从左到右3次
- {
- for(i=0;i<8;i++) //循环8次逐条点亮8个LED点阵灯
- {
- P2=taba[i];
- P0=0xff;
- delay1();
- }
- }
-
- for(j=0;j<3;j++) //从右到左3次
- {
- for(i=0;i<8;i++) //循环8次逐条点亮8个LED点阵灯
- {
- P2=taba[7-i];
- P0=0xff;
- delay1();
- }
- }
-
- for(j=0;j<3;j++) //从上到下3次
- {
- for(i=0;i<8;i++) //循环8次逐条点亮8个LED点阵灯
- {
- P2=0x00;
- P0=tabb[7-i];
-
- delay1();
- }
- }
-
- for(j=0;j<3;j++) //从下到上3次
- {
- for(i=0;i<8;i++) //循环8次逐条点亮8个LED点阵灯
- {
- P2=0x00;
- P0=tabb[i];
-
- delay1();
- }
- }
- }
- }
复制代码
所有资料51hei提供下载:
9、 LED点阵.rar
(2.44 MB, 下载次数: 44)
|