历史上的今天
今天是:2025年03月16日(星期日)
2020年03月16日 | 基于51单片机的8x8 LED点阵
2020-03-16 来源:eefocus
最近学了LED点阵,并用了三种方式显示字母组,分别为按键控制显示,自动变换显示,和滚动显示
第一种
#include"reg51.h"
#include typedef unsigned char u8; typedef unsigned int u16; sbit RCLK=P3^5; sbit SRCLK=P3^6; sbit SER=P3^4; #define GPIP_KEY P1 #define GPIO_DIG P0 u8 keyvalue; u8 code duan[16][8]={{0x00,0x42,0x7e,0x42,0x42,0x3c,0x00,0x00},//对字母编码 {0x00,0x11,0x12,0x14,0xF8,0x14,0x12,0x11}, {0x00,0x00,0x60,0x10,0x0E,0x10,0x60,0x00}, {0x18,0x24,0x22,0x11,0x22,0x24,0x18,0x00}, {0x00,0x42,0x7E,0x42,0x02,0x06,0x00,0x00}, {0x00,0x06,0x61,0x91,0x89,0x86,0x60,0x00}, {0x81,0xFF,0x81,0x60,0x18,0x86,0xFF,0x81}}; u8 code ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//扫描数组 void delay(u16 i) { while(i--); } void keydown() //按键函数 { u8 a; GPIP_KEY=0x0f; if(GPIP_KEY!=0x0f) { delay(1000); if(GPIP_KEY!=0x0f) { GPIP_KEY=0x0f; switch(GPIP_KEY) { case(0x07): keyvalue=0; break; case(0x0b): keyvalue=1; break; case(0x0d): keyvalue=2; break; case(0x0e): keyvalue=3; break; } GPIP_KEY=0xf0; switch(GPIP_KEY) { case(0x70): keyvalue=keyvalue; break; case(0xb0): keyvalue=keyvalue+4; break; case(0xd0): keyvalue=keyvalue+8; break; case(0xe0): keyvalue=keyvalue+12; break; } while((a<50)&&(GPIP_KEY!=0xf0)) { delay(1000); a++; } } } } void hc595sendbyte(u8 dat) //hc595模块定义 { u8 a; SRCLK=0; RCLK=0; for(a=0;a<8;a++) { SER=dat>>7; dat<<=1; SRCLK=1; _nop_(); _nop_(); SRCLK=0; } RCLK=1; _nop_(); _nop_(); SRCLK=0; } void main() { u8 i; while(1) { keydown(); for(i=0;i<8;i++) { P0=ledwei[i]; hc595sendbyte(duan[keyvalue][i]); delay(100); hc595sendbyte(0x00); //LED矩阵消影 } } } 第二种: #include"reg51.h" #include typedef unsigned char u8; typedef unsigned int u16; sbit RCLK=P3^5; sbit SRCLK=P3^6; sbit SER=P3^4; #define GPIP_KEY P1 #define GPIO_DIG P0 u8 keyvalue; u8 code duan[7][8]={{0x00,0x42,0x7e,0x42,0x42,0x3c,0x00,0x00},//字母段设置 {0x00,0x11,0x12,0x14,0xF8,0x14,0x12,0x11}, {0x00,0x00,0x60,0x10,0x0E,0x10,0x60,0x00}, {0x18,0x24,0x22,0x11,0x22,0x24,0x18,0x00}, {0x00,0x42,0x7E,0x42,0x02,0x06,0x00,0x00}, {0x00,0x06,0x61,0x91,0x89,0x86,0x60,0x00}, {0x81,0xFF,0x81,0x60,0x18,0x86,0xFF,0x81}}; u8 code ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//扫描段 void delay(u16 i) { while(i--); } void hc595sendbyte(u8 dat) //hc595模块设置 { u8 a; SRCLK=0; RCLK=0; for(a=0;a<8;a++) { SER=dat>>7; dat<<=1; SRCLK=1; _nop_(); _nop_(); SRCLK=0; } RCLK=1; _nop_(); _nop_(); SRCLK=0; } void main() { while(1) { u8 i,j,t=100; for(i=0;i<7;i++) { while(t--) { for(j=0;j<8;j++) { P0=ledwei[j]; hc595sendbyte(duan[i][j]); delay(100); hc595sendbyte(0x00);//LED矩阵消影 } } t=100; } hc595sendbyte(0x00); } } 第三种 #include"reg51.h" #include typedef unsigned char u8; typedef unsigned int u16; sbit RCLK=P3^5; sbit SRCLK=P3^6; sbit SER=P3^4; #define GPIP_KEY P1 #define GPIO_DIG P0 u8 keyvalue; u8 code duan[]={0x00,0x00,0x00,0x00,0x42,0x7E,0x42,0x00, //I 0x41,0x7F,0x41,0x01,0x01,0x03,0x00, //L 0x3C,0x42,0x42,0x42,0x3C,0x00, //O 0x70,0x0C,0x02,0x0C,0x70,0x00, //V 0x7F,0x49,0x49,0x49,0x49,0x00, //E 0x60,0x10,0x0E,0x10,0x60,0x00, //Y 0x3C,0x42,0x42,0x42,0x3C,0x00, //O 0x40,0x7C,0x42,0x01,0x01,0x42,0x7C,0x40 //U }; u8 code ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//扫描编码段 void delay(u16 i) { while(i--); } void hc595sendbyte(u8 dat)//hc595模块初始化 { u8 a; SRCLK=0; RCLK=0; for(a=0;a<8;a++) { SER=dat>>7; dat<<=1; SRCLK=1; _nop_(); _nop_(); SRCLK=0; } RCLK=1; _nop_(); _nop_(); SRCLK=0; } void main() { while(1) { u8 i,j,t=30,q=0; for(i=0;i<46;i++) { while(t--) { for(j=i;j<8+i;j++) { P0=ledwei[q++]; hc595sendbyte(duan[j]); delay(100); hc595sendbyte(0x00); //LED矩阵消影 } q=0; } t=30; } } }
上一篇:51例程---led点阵
史海拾趣
|
在wince6.0下,按照网上寻找的步骤来定制shell,可是网上提供的参考文献是PB5.0的文件路径,有些文件和路径对应不起来 特此求助 譬如:在wince5.0中路径E:\\WINCE500\\public\\shell\\oak\\lib\\x86\\retail\\aygutils.lib ...… 查看全部问答> |
|
信息与计算专业,毕业2年一直在用VC在一家小公司里面,写应用软件软件。 C语言一般,大学期间学习过电路的知识,不过多是理论。2年了。基本忘的差不多了。 我想知道 我现在转去学嵌入式,难不?跨度大不?… 查看全部问答> |
|
请教,当在evc4.0里面创建winapi的应运时,编译通过,模拟器可以运行 而创建mfc应用时 ,编译可以通过, 在模拟器上运行出错 提示:“....Make sure the path and filename are correct and that all the required libraries are available.” ...… 查看全部问答> |
|
1.电路设计及EMC器件选择 在新设计及开发项目的开始,正确选择有源与无源器件及完善的电路设计技术,将有利于以最低的成本获得EMC认证,减少产品因屏蔽和滤波所带来的额外的成本、体积和重量。 这些技术也可以提高数字信号的完整性及模拟 ...… 查看全部问答> |
|
这是TI针对目前MR16调光市场推出的最新方案,输出功率一般限制在6W以下。兼容性和调光效果还不错。 目前方案的应用规格为: 电性能测试结果: 调光兼容测试结果和EMI测试结果: TI LM3492 MR16调光板子: 待测试图: … 查看全部问答> |




