标题: 单片机LED点阵显示I ❥ U字符 [打印本页]

作者: hhh666    时间: 2017-11-18 13:17
标题: 单片机LED点阵显示I ❥ U字符
这个例程是在液晶屏上显示I ❥ U ,可以通过字符取模软件,改变显示内容,用来表白显示逼格?
原理图这里有:http://www.51hei.com/mcu/3015.html
单片机源程序如下:
  1. /*
  2. *******************************************************************************
  3. *                     《手把手教你学51单片机(C语言版)》
  4. *                    配套 KST-51 单片机开发板 示例源代码
  5. * 文件名:main.c
  6. * 描  述:第7章 LED点阵显示横向移动的动画(掉转板子方向的取巧方式)
  7. * 版本号:v1.0.0
  8. * 备  注:详情见第7章7.5.2节
  9. *******************************************************************************
  10. */

  11. #include <reg52.h>

  12. sbit ADDR0 = P1^0;
  13. sbit ADDR1 = P1^1;
  14. sbit ADDR2 = P1^2;
  15. sbit ADDR3 = P1^3;
  16. sbit ENLED = P1^4;

  17. unsigned char code image[] = {  //图片的字模表
  18.     0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
  19.     0x7D,0x01,0x01,0x7D,0xFF,0xFF,0xE3,0xC1,
  20.     0x81,0x03,0x03,0x81,0xC1,0xE3,0xFF,0xFF,
  21.     0x81,0x01,0x3F,0x3F,0x3F,0x01,0x81,0xFF,
  22.     0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
  23. };

  24. void main()
  25. {
  26.     EA = 1;       //使能总中断
  27.     ENLED = 0;    //使能U4,选择LED点阵
  28.     ADDR3 = 0;
  29.     TMOD = 0x01;  //设置T0为模式1
  30.     TH0  = 0xFC;  //为T0赋初值0xFC67,定时1ms
  31.     TL0  = 0x67;
  32.     ET0  = 1;     //使能T0中断
  33.     TR0  = 1;     //启动T0
  34.     while (1);
  35. }
  36. /* 定时器0中断服务函数 */
  37. void InterruptTimer0() interrupt 1
  38. {
  39.     static unsigned char i = 0;  //动态扫描的索引
  40.     static unsigned char tmr = 0;  //250ms软件定时器
  41.     static unsigned char index = 0;  //图片刷新索引

  42.     TH0 = 0xFC;  //重新加载初值
  43.     TL0 = 0x67;
  44.     //以下代码完成LED点阵动态扫描刷新
  45.     P0 = 0xFF;   //显示消隐
  46.     switch (i)
  47.     {
  48.         case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image[index+0]; break;
  49.         case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image[index+1]; break;
  50.         case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image[index+2]; break;
  51.         case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image[index+3]; break;
  52.         case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image[index+4]; break;
  53.         case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image[index+5]; break;
  54.         case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image[index+6]; break;
  55.         case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image[index+7]; break;
  56.         default: break;
  57.     }
  58.     //以下代码完成每250ms改变一帧图像
  59.     tmr++;
  60. ……………………

  61. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码


源代码.zip (21.4 KB, 下载次数: 8)







欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1