历史上的今天
今天是:2024年12月03日(星期二)
2020年12月03日 | 51单片机8*8LED点阵翻页 闪烁 静止 平移显示
2020-12-03 来源:51hei
基于单片机的LED点阵设计
基本要求:利用单片机AT89C51设计LED点阵,显示器能显示不同的字符、图形,能够用独立键控制不同字符的切换效果。
创新:显示效果可以是闪烁;静止;平移等。
任务区分:A——每隔1s闪烁1次
B——循环平移,速度自定
.
单片机源程序如下:
#include sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit KEY = P3^5; unsigned int cnt,m,stage,sec=1000; unsigned char code image[][8] = { {0xFF,0xE7,0xDB,0xDB,0xDB,0xDB,0xE7,0xFF}, //0 {0xFF,0xE7,0xEF,0xEF,0xEF,0xEF,0xC3,0xFF}, //1 {0xFF,0xE3,0xDF,0xDF,0xE7,0xFB,0xC3,0xFF}, //2 {0xE3,0xDF,0xDF,0xE7,0xDF,0xDF,0xE3,0xFF}, //3 {0xFF,0xEF,0xE7,0xEB,0xC3,0xEF,0xEF,0xFF}, //4 {0xFB,0xC3,0xFB,0xE3,0xDF,0xDF,0xE3,0xFF}, //5 {0xE7,0xFB,0xFB,0xE3,0xDB,0xDB,0xE7,0xFF}, //6 {0xFF,0xC3,0xDF,0xDF,0xDF,0xDF,0xDF,0xFF}, //7 {0xE7,0xDB,0xDB,0xE7,0xDB,0xDB,0xE7,0xFF}, //8 {0xE7,0xDB,0xDB,0xC7,0xDF,0xDF,0xE7,0xFF} //9 }; unsigned char code image1[][8] = { //心跳 {0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7}, //大心 {0xFF,0xFF,0xDB,0x81,0x81,0xC3,0xE7,0xFF}, //中心 {0xFF,0xFF,0xFF,0xDB,0xC3,0xE7,0xFF,0xFF}, //小心 }; unsigned char code image3[][8] = { //小坦克 {0xFE,0xFF,0xE3,0xE3,0xF7,0xFF,0xFF,0xFF}, {0xFE,0xFF,0xFF,0xE3,0xE3,0xF7,0xFF,0xFF}, {0xFE,0xFF,0xFF,0xFF,0xE3,0xE3,0xF7,0xFF}, {0xFE,0xFF,0xFF,0xFF,0xF3,0xE3,0xF3,0xFF}, {0xFE,0xFF,0xFF,0xFF,0xE7,0xC7,0xE7,0xFF}, {0xFE,0xFF,0xFF,0xFF,0xCF,0x8F,0xCF,0xFF}, {0xFE,0xFF,0xFF,0xFF,0xDF,0x8F,0x8F,0xFF}, {0xFE,0xFF,0xFF,0xDF,0x8F,0x8F,0xFF,0xFF}, {0xFE,0xFF,0xDF,0x8F,0x8F,0xFF,0xFF,0xFF}, {0xFE,0xDF,0x8F,0x8F,0xFF,0xFF,0xFF,0xFF}, }; unsigned char code image2[] = { //0-->9平移 0xFF,0xE7,0xDB,0x5A,0x5A,0xDB,0xE7,0xFF,0xFF,0xE7,0xEF,0x6E,0x6E,0xEF,0xC3,0xFF, 0xFF,0xE3,0xDF,0x5E,0x66,0xFB,0xC3,0xFF,0xE3,0xDF,0xDF,0x66,0x5E,0xDF,0xE3,0xFF, 0xFF,0xEF,0xE7,0x6A,0x42,0xEF,0xEF,0xFF,0xFB,0xC3,0xFB,0x62,0x5E,0xDF,0xE3,0xFF, 0xE7,0xFB,0xFB,0x62,0x5A,0xDB,0xE7,0xFF,0xFF,0xC3,0xDF,0x5E,0x5E,0xDF,0xDF,0xFF, 0xE7,0xDB,0xDB,0x66,0x5A,0xDB,0xE7,0xFF,0xE7,0xDB,0xDB,0x46,0x5E,0xDF,0xE7,0xFF, }; void Delay10ms() { unsigned char i, j; i = 20; j = 113; do { while (--j); } while (--i); } void main() { EA = 1; //使能总中断 ADDR3 = 0; TMOD = 0x01; //设置T0为模式1 TH0 = 0xFC; //为T0赋初值0xFC67,定时1ms TL0 = 0x67; ET0 = 1; //使能T0中断 TR0 = 1; //启动T0 while (1) { if(stage>3)stage=0; if(KEY==0) { Delay10ms(); if(KEY==1)stage++; } if(cnt >= sec) { cnt = 0; m++; } } } /* 定时器0中断服务函数 */ void InterruptTimer0() interrupt 1 { static unsigned char i = 0; //动态扫描的索引 static unsigned char tmr = 0; //250ms软件定时器 static unsigned char index = 0; //图片刷新索引 TH0 = 0xFC; //重新加载初值 TL0 = 0x67; P0 = 0xFF; //显示消隐 cnt++; /***********************模式一:数字闪出***********************************/ if(stage==0) { sec = 1000; if(m>=10)m=0; switch (i) { case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image[m][0]; break; case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image[m][1]; break; case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image[m][2]; break; case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image[m][3]; break; case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image[m][4]; break; case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image[m][5]; break; case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image[m][6]; break; case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image[m][7]; break; default: break; } } /**********************模式二:动态爱心************************************/ else if(stage==1) { sec = 150; if(m>=3)m=0; switch (i) { case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image1[m][0]; break; case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image1[m][1]; break; case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image1[m][2]; break; case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image1[m][3]; break; case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image1[m][4]; break; case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image1[m][5]; break;
史海拾趣
|
通讯行业研发源代码如何保密 手机通信行业的研发部门,广泛使用各种编译器,如keil,、ADS/RealView、MPLAB、Windows Mobile…,版本不统一。相当多公司内部通过网络协作开发,各种软件生成的文件需要交叉引用,应用环境十分复杂。通常采用 ...… 查看全部问答> |
|
前面gprs网络连接等都没问题,就是在at%ipsend发送数据,不能直接发送字符,好像要经过转换,这个方面我不太清楚,求高手解答。 at%ipsend=\"ffffffff\"是可以发送的,这是什么数据格式?有么有直接发送字符的方法?… 查看全部问答> |
|
新平台上线总会有这样那样的问题,我们在尽量改进,努力为大家提供更好的用户体验,还请大家多包涵啦 现将一些常见问题放上,请大家参考。 1、新用户注册信息 这个请大家一定认真填写,因为我们会有LaunchPad开发板、抽奖奖品乃至iPad2 ...… 查看全部问答> |
|
一个简单很容易实现火炬样式LED手电筒,从一个国外网站上看到的。下面的介绍是用gg翻译的,不通顺,,哈哈,,大家凑合着看,也不知道老外是用什么软件画出来的,, 真正的光明和持久的LED机型是相当昂贵和沉重的,廉价的传统似乎总 ...… 查看全部问答> |




