第七章 变量进阶和点阵LED
来源:互联网 发布:落英纷飞 音乐软件 编辑:程序博客网 时间:2024/05/16 05:22
这里我们讲一讲什么是点阵LED,所谓点的点阵LED就是我们平时在大街上看到的电子滚动屏幕,用以显示店家需要展示的消息。而深入来看,它是一个LED组成的点阵,如图所示![点阵LED原理](http://img.blog.csdn.net/20170813102704299?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGhjaGVuY2hvbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)和我们中学学习的坐标类似,如果要想形成文字,便将点阵LED中的某些点电亮,展现各种各样的图形。我们所看见的电子屏幕的滚动,实际上是图片的动态刷新。一次只移动一个LED,形成我们所看到的滚动屏幕。下面是宋雪松老师提供的代码,详情访问www.kingst.org
#include<reg52.h>sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;unsigned char code image[] = { 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7D,0x01,0x01,0x7D,0xFF,0xFF,0xE3,0xC1,0x81,0x03,0x03,0x81,0xC1,0xE3,0xFF,0xFF,0x81,0x01,0x3F,0x3F,0x3F,0x01,0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, }; void main(){ EA = 1; ENLED = 0; ADDR3 = 0; TMOD = 0x01; TH0 = 0xFC; TL0 = 0x67; ET0 = 1; TR0 = 1; while(1);}void InterruptTimer0() interrupt 1{ static unsigned char i = 0; static unsigned char index = 0; static unsigned char tmr = 0; TH0 = 0xFC; TL0 = 0x67; P0 = 0xFF; switch(i) { case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image[index + 0];break; case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image[index + 1];break; case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image[index + 2];break; case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image[index + 3];break; case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image[index + 4];break; case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image[index + 5];break; case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image[index + 6];break; case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image[index + 7];break; default: break; } tmr++; if(tmr >= 250) { tmr = 0; index++; if(index >= 32) { index = 0; } }}
#include<reg52.h>sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4; unsigned char code image[30][8] = { {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}, //动画帧1 {0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F}, //动画帧2 {0xFF,0x3F,0x7F,0x7F,0x7F,0x7F,0x7F,0x3F}, //动画帧3 {0xFF,0x1F,0x3F,0x3F,0x3F,0x3F,0x3F,0x1F}, //动画帧4 {0xFF,0x0F,0x9F,0x9F,0x9F,0x9F,0x9F,0x0F}, //动画帧5 {0xFF,0x87,0xCF,0xCF,0xCF,0xCF,0xCF,0x87}, //动画帧6 {0xFF,0xC3,0xE7,0xE7,0xE7,0xE7,0xE7,0xC3}, //动画帧7 {0xFF,0xE1,0x73,0x73,0x73,0xF3,0xF3,0xE1}, //动画帧8 {0xFF,0x70,0x39,0x39,0x39,0x79,0xF9,0xF0}, //动画帧9 {0xFF,0x38,0x1C,0x1C,0x1C,0x3C,0x7C,0xF8}, //动画帧10 {0xFF,0x9C,0x0E,0x0E,0x0E,0x1E,0x3E,0x7C}, //动画帧11 {0xFF,0xCE,0x07,0x07,0x07,0x0F,0x1F,0x3E}, //动画帧12 {0xFF,0x67,0x03,0x03,0x03,0x07,0x0F,0x9F}, //动画帧13 {0xFF,0x33,0x01,0x01,0x01,0x03,0x87,0xCF}, //动画帧14 {0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7}, //动画帧15 {0xFF,0xCC,0x80,0x80,0x80,0xC0,0xE1,0xF3}, //动画帧16 {0xFF,0xE6,0xC0,0xC0,0xC0,0xE0,0xF0,0xF9}, //动画帧17 {0xFF,0x73,0x60,0x60,0x60,0x70,0x78,0xFC}, //动画帧18 {0xFF,0x39,0x30,0x30,0x30,0x38,0x3C,0x7E}, //动画帧19 {0xFF,0x9C,0x98,0x98,0x98,0x9C,0x1E,0x3F}, //动画帧20 {0xFF,0xCE,0xCC,0xCC,0xCC,0xCE,0x0F,0x1F}, //动画帧21 {0xFF,0x67,0x66,0x66,0x66,0x67,0x07,0x0F}, //动画帧22 {0xFF,0x33,0x33,0x33,0x33,0x33,0x03,0x87}, //动画帧23 {0xFF,0x99,0x99,0x99,0x99,0x99,0x81,0xC3}, //动画帧24 {0xFF,0xCC,0xCC,0xCC,0xCC,0xCC,0xC0,0xE1}, //动画帧25 {0xFF,0xE6,0xE6,0xE6,0xE6,0xE6,0xE0,0xF0}, //动画帧26 {0xFF,0xF3,0xF3,0xF3,0xF3,0xF3,0xF0,0xF8}, //动画帧27 {0xFF,0xF9,0xF9,0xF9,0xF9,0xF9,0xF8,0xFC}, //动画帧28 {0xFF,0xFC,0xFC,0xFC,0xFC,0xFC,0xFC,0xFE}, //动画帧29 {0xFF,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF} //动画帧30};void main(){ EA = 1; ENLED = 0; ADDR3 = 0; TMOD = 0x01; TH0 = 0xFC; TL0 = 0x67; ET0 = 1; TR0 = 1; while(1);}void InterruptTimer0() interrupt 1{ static unsigned char i = 0; static unsigned char tmr = 0; static unsigned char index = 0; TH0 = 0xFC; TL0 = 0x67; P0 = 0xFF; switch(i) { case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image[index][0]; break; case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image[index][1]; break; case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image[index][2]; break; case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image[index][3]; break; case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image[index][4]; break; case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image[index][5]; break; case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image[index][6]; break; case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image[index][7]; break; default: break; } tmr++; if(tmr >= 250) { tmr = 0; index++; if(index >= 30) { index = 0; } }}
阅读全文
0 0
- 第七章 变量进阶和点阵LED
- LED点阵
- LED点阵
- LED点阵
- LED点阵屏“鬼影”现象的分析和解决
- 3.1.第九个实验--LED点阵数据手册和原理图分析
- led点阵操作方式
- LED点阵书写显示
- 51-LED点阵
- LED点阵显示
- 51例程---led点阵
- LED点阵屏设计一
- LED音乐频谱之点阵
- LED 16*16点阵显示屏
- 7.3 LED点阵的介绍
- 点阵LED扫描法介绍
- 第七章 变量替换
- 树莓派用Java实现Max7219 LED点阵输出字符常用汉字和任意字符......
- 数据库mariadb
- 那些java集合里犯的错
- Codeforces 505B
- Android Studio报Unsupported major.minor version 52.0错误
- C#中volatile的用法
- 第七章 变量进阶和点阵LED
- spring学习笔记 -- day01 ResourceBundle、springSTS插件安装
- java.lang.ClassNotFoundException: javassist.util.proxy.MethodFilter
- 【OpenGL】 创建窗口
- rk3288 android 4.4.4 双屏异显
- Maridb数据库
- Python3的变化
- linux初学者-数据库管理MariaDB篇
- CSS 3 Flex 全解【视频】