找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10516|回复: 9
打印 上一主题 下一主题
收起左侧

8x8点阵显示滚动广告 单片机源程序

  [复制链接]
跳转到指定楼层
楼主
ID:146211 发表于 2016-11-5 10:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
工具/原料
  • 单片机开发板
  • keil C IDE开发工具
  • 8*8字模取模软件


下载:
(121)8x8点阵显示滚动广告.zip (16.47 KB, 下载次数: 127)

部分源码预览:
  1. /*=======================================================================
  2. 程序名        :        8x8点阵显示滚动广告
  3. 编写人        :        李镇
  4. 编写时间:        2015年5月22日
  5. 硬件支持:        STC89C52(QFC51开发板联系旺旺ID:qq763187758)
  6. 系统时钟:        12MHZ
  7. 程序目的:        在试验开发板的点阵上显示滚动广告.
  8. 试验工具:        QFC51开发板,记得把显示切换到点阵显示4的位置
  9. 程序说明:        本程序的取模方式是纵向取模,0电平点亮,所以用软件取的模还要反白,
  10.                         点阵扫描原理是:先选通第最左边的一列,再发送取模数据,一直扫描到最后一列
  11.                         点阵扫描每次只扫描前8列,滚动的效果的原理是,每隔一定时间,就把所有取模向前移一位,就达到滚动效果.
  12.                         当然也可以向后移一位,或者多位.
  13. ========================================================================*/
  14. #include <reg52.h>                                        //包含头文件

  15. /*===把点阵的列选放在这个数组里===*/
  16. unsigned char big[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  17.                                                                         //0111 1111 = 0x7f  选通第7列.从右至左,与数据的位相对,数据的0位在最右边,点阵的第0列也在最右边
  18.                                                                         //1011 1111 = 0xbf
  19.                                                                         //1101 1111 = 0xdf
  20.                                                                         //1110 1111 = 0xef
  21.                                                                         //1111 0111 = 0xf7
  22.                                                                         //1111 1011 = 0xfb
  23.                                                                         //1111 1101 = 0xfd
  24.                                                                         //1111 1110 = 0xfe        选通第0列,从右至左,与数据的位相对,数据的0位在最右边,点阵的第0列也在最右边

  25. /*===/www.qq763187758.com(纵向取模)===*/
  26. xdata unsigned char LedFai[] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCF,0xB7,0xBB,0xDD,0xBB,0xB7,0xCF,0xFF,
  27.                                                                 0xF1,0xFE,0xF9,0xFE,0xF1,0xFF,0xF1,0xFE,0xF9,0xFE,0xF1,0xFF,0xF1,0xFE,0xF9,0xFE,
  28.                                                                 0xF1,0xFF,0xFE,0xFF,0xC7,0xBB,0xBB,0xDB,0x80,0xFF,0xC7,0xBB,0xBB,0xDB,0x80,0xFF,
  29.                                                                 0x9F,0xBF,0xB8,0xB7,0x8F,0xFF,0xE1,0xD6,0xB6,0xB6,0xF9,0xFF,0xBD,0xBE,0xAE,0x96,
  30.                                                                 0xB9,0xFF,0xFF,0xDE,0x80,0xFE,0xFF,0xFF,0xC9,0xB6,0xB6,0xB6,0xC9,0xFF,0x9F,0xBF,
  31.                                                                 0xB8,0xB7,0x8F,0xFF,0x9F,0xBF,0xB8,0xB7,0x8F,0xFF,0x8D,0xAE,0xAE,0xAE,0xB1,0xFF,
  32.                                                                 0xC9,0xB6,0xB6,0xB6,0xC9,0xFF,0xFE,0xFF,0xE3,0xDD,0xDD,0xDD,0xFB,0xFF,0xE3,0xDD,
  33.                                                                 0xDD,0xDD,0xE3,0xFF,0xC1,0xEF,0xDF,0xDF,0xE1};
  34. /*===点阵扫描===*/
  35. void led_out(void)
  36. {
  37.         unsigned char i,j;                                //声明1个变量用来循环用,1个变量用来循环延时用
  38.         for(i = 0;i < 8;i++)                        //for循环8次,i从0到7循环8次
  39.         {
  40.                 P0 = LedFai[i];                                //P0口输出纵向取模,P1口输出列选,在哪1列上显示.从列选表里与i配合输出.
  41.                 P1 = big[i];                                //P1口输出列扫描,分别扫描点阵的8个列,从左到右一列一列扫描.
  42.                 for(j = 0;j < 140;j++);                //延时一段时间.
  43.                 P1 = 0xff;                                        //关闭列选.
  44.         }
  45. }

  46. /*===把字模数组里的元素整体向左移一位===*/
  47. //sizeof(LedFai)的作用是获得LedFai数组的元素的个数。减1就得到此数组的最大元素下标。
  48. void LedLeft()
  49. {
  50.         unsigned char i;
  51.         unsigned char j = LedFai[0];                //先把字模数组的第0个元素暂存,因为取模左移时,这个字模要被移出.
  52.                
  53.         for(i = 0;i < sizeof(LedFai)-1;i++)
  54.         {
  55.                 LedFai[i] = LedFai[i+1];                //把字模数组里的后一个字模向前移动一位.
  56.         }
  57.         LedFai[sizeof(LedFai)-1] = j;                //把字模数组的最前面字模放在这个数组的最后.
  58. }

  59. /*===主函数===*/
  60. void main(void)
  61. {       
  62.         unsigned char j = 0;                                //声明1个变量用来控制滚动时间

  63.         while(1)                                                        //主循环.
  64.         {
  65.                 j++;                                                        //循环延时变量自增
  66.                 if(j == 100)                                        //如果时间到,滚动一次.
  67.                 {
  68.                         j = 0;                                                //清循环延时计数为0,重新开始计数
  69.                         LedLeft();                                        //取模移整体移一位
  70.                 }
  71.                 led_out();                                                //点阵扫描.
  72.         }
  73. }
复制代码

评分

参与人数 2黑币 +55 收起 理由
wwr568174724 + 5 很给力!
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:1 发表于 2016-11-13 17:23 | 只看该作者
51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:218310 发表于 2017-7-18 17:37 | 只看该作者
回复

使用道具 举报

地板
ID:316044 发表于 2018-4-25 11:11 | 只看该作者
刚接触,还得学一学,很多地方都不明白
回复

使用道具 举报

5#
ID:363785 发表于 2018-7-3 15:18 | 只看该作者
感谢大大的程序
回复

使用道具 举报

6#
ID:398944 发表于 2018-9-22 22:55 | 只看该作者
没有硬件连接图吗?
回复

使用道具 举报

7#
ID:726079 发表于 2020-6-11 13:15 | 只看该作者

感谢大大的程序
回复

使用道具 举报

8#
ID:776487 发表于 2020-6-11 18:03 来自触屏版 | 只看该作者
有没有仿真视频
回复

使用道具 举报

9#
ID:138443 发表于 2020-6-11 20:10 | 只看该作者
支持通信更换内容吗?
回复

使用道具 举报

10#
ID:86450 发表于 2020-8-21 13:10 | 只看该作者
没有硬件连接图吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表