找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机生日礼物 点阵心形灯仿真带时间显示

[复制链接]
跳转到指定楼层
楼主
单片机做的心形灯,同时在16*16点阵上显示生日快乐和笑脸图片,下面是仿真原理图:


单片机源程序:
  1. #include <at89x51.h>
  2. #include <DS1302.h>
  3. #define  din  P3_2
  4. #define  load  P3_3
  5. #define  clk  P3_4
  6. #define uchar unsigned char
  7. #define uint  unsigned int
  8. unsigned char code dispcode[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,0x01};
  9. uchar buf[]={0,0,0,0,0,0,0,0};
  10. SYSTEMTIME  time1;
  11. unsigned char code tab1[]={
  12.           0x0F,0x00,0x1F,0x80,0x3F,0xC0,0x7F,0xE0,
  13.                                                     0x7F,0xF0,0x7F,0xF8,0x3F,0xFC,0x1F,0xFE,
  14.                                                     0x1F,0xFE,0x3F,0xFC,0x7F,0xF8,0x7F,0xF0,
  15.                                                     0x7F,0xE0,0x3F,0xC0,0x1F,0x80,0x0F,0x00,//心型图
  16.                                                
  17.                                                         0x00,0x80,0x01,0x02,0x06,0x02,0x78,0x82,
  18.                                                         0x08,0x82,0x08,0x82,0x08,0x82,0x08,0x82,
  19.                                                         0xFF,0xFE,0x48,0x82,0x08,0x82,0x08,0x82,
  20.                                                         0x19,0x82,0x08,0x86,0x00,0x02,0x00,0x00,/*"生",2*/
  21.                                                        
  22.                                                         0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFC,
  23.                                                         0x42,0x08,0x42,0x08,0x42,0x08,0x42,0x08,
  24.                                                         0x42,0x08,0x42,0x08,0x42,0x08,0x7F,0xFC,
  25.                                                         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*"日",3*/
  26.                                                        
  27.                                                         0x0E,0x00,0x00,0x00,0xFF,0xFF,0x10,0x00,
  28.                                                         0x0D,0x01,0x11,0x02,0x11,0x0C,0x11,0x70,
  29.                                                         0xFF,0x80,0x11,0x60,0x11,0x10,0x11,0x0C,
  30.                                                         0x1F,0x06,0x01,0x03,0x01,0x02,0x00,0x00,/*"快",4*/
  31.                                                        
  32.                                                         0x00,0x00,0x00,0x04,0x02,0x18,0x3F,0x30,
  33.                                                         0x22,0xE0,0x22,0x48,0x22,0x04,0x62,0x02,
  34.                                                         0x5F,0xFC,0x42,0x00,0xC2,0x00,0xC2,0x40,
  35.                                                         0x42,0x30,0x02,0x1C,0x00,0x08,0x00,0x00,/*"乐",5*/

  36.                                                        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  37.                                                        0x00,0x00,0x00,0x00,0x3F,0x8C,0x7F,0xDE,
  38.                                                        0x7F,0xDE,0x3F,0x8C,0x00,0x00,0x00,0x00,
  39.                                                        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//!

  40.                                                        0x00,0x00,0x42,0xFE,0x42,0x02,0x7E,0x00,
  41.                                                        0x42,0xFE,0x42,0x82,0x00,0xFE,0x00,0x00,
  42.                                                        0x00,0xFC,0x00,0x02,0x7E,0xFC,0x02,0x00,
  43.                                                        0x02,0xFE,0x02,0x92,0x7E,0x92,0x00,0x00,//I LOVE U

  44.                                                        0xE0,0x07,0x8F,0xF1,0x98,0x19,0x30,0x0C,
  45.                                                        0x64,0x46,0x48,0x22,0x44,0x12,0x40,0x12,
  46.                                                        0x40,0x12,0x44,0x12,0x48,0x22,0x64,0x46,
  47.                                                        0x30,0x0C,0x98,0x19,0x8F,0xF1,0xE0,0x07,//笑脸
  48. };
  49. unsigned char code tab2[]={ 0x0f,0x0e,0x0d,0x0c,0x0b,0x0a,0x09,0x08,
  50.                                                     0x07,0x06,0x05,0x04,0x03,0x02,0x01,0x00};
  51. uchar code tab3[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x03,0x06,
  52.                                    0x0c,0x18,0x30,0x60,0xe0,0x70,0x38,0x1c,0x0e,0x07,
  53.                                    0x0f,0x1f,0x3e,0x7c,0xf8,0xfc,0x7e,0x3f,0x7f,0xfe,
  54.                                    0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x3f,
  55.                                    0x9f,0xcf,0xe7,0xf3,0xf9,0xfc,0xf8,0xf1,0xe3,0xc7,
  56.                                    0x8f,0x1f,0x0f,0x87,0xc3,0xe1,0xf0,0xe0,0xc1,0x83,
  57.                                    0x07,0x03,0x81,0xc0,0x80,0x01,0x00,
  58.                                    0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00,0x01,0x03,
  59.                                    0x07,0x0f,0x1f,0x3f,0x7f,0xff,0xe7,0xc3,0x81,0x00,
  60.                                    0x81,0xc3,0xe7,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,
  61.                                    0xbf,0x7f,0x7e,0x7d,0x7b,0x77,0x6f,0x5f,0x3f,0x3e,
  62.                                    0x3d,0x3b,0x37,0x2f,0x1f,0x1e,0x1d,0x1b,0x17,0x0f,
  63.                                    0x0e,0x0d,0x0b,0x07,0x06,0x05,0x03,0x02,0x01,0x00,
  64.                                    0x55,0xaa,0x55,0xaa,0x00,0xff,0x00,0xff,0x00,0xff,};
  65. sbit KAI=P1^4;
  66. sbit KAI2=P1^5;
  67. void delay(uint time);
  68. uint j=0,q=0;
  69.    uchar r,t=0,num=0;
  70. void csh()
  71. {
  72.   load=1;
  73.   clk=1;
  74.   din=1;
  75. }
  76.   Delayms(uint c)
  77. {  
  78.    uint a,b;
  79.    for(a=0;a<c;a++)
  80.    for(b=0;b<120;b++);
  81. }
  82. void write(uchar com,uchar da)
  83. {
  84.    uchar temp,i,j;
  85.    load=0;
  86.    clk=0;
  87.        for(i=0;i<8;i++)
  88.       { temp=com;
  89.               if((temp&(0x80>>i))!=0)
  90.                       din=1;
  91.                  else din=0;
  92.              clk=1;
  93.          for(j=0;j<5;j++);
  94.                  clk=0;
  95.           }
  96.     for(i=0;i<8;i++)
  97.            { temp=da;
  98.           if((temp&(0x80>>i))!=0)
  99.                   din=1;
  100.                     else din=0;
  101.                   clk=1;
  102.                   for(j=0;j<5;j++);
  103.                   clk=0;
  104.            }
  105.          load=1;

  106. }

  107. void main()

  108. {  
  109.    
  110.    csh();
  111.    write(0x0c,0x01);//正常工作状态,关断模式
  112.    write(0x09,0x00);//译码选择,非BCD码
  113.    write(0x0a,0x0a);//亮度调节
  114.    write(0x0b,0x07);//显示位数
  115.    Initial_DS1302();   
  116.    while(1)
  117.      {         
  118.            DS1302_GetTime(&time1);
  119.        buf[7]=(time1.Second)%10;
  120.        buf[6]=(time1.Second)/10;
  121.        buf[4]=(time1.Minute)%10;
  122.        buf[3]=(time1.Minute)/10;
  123.        buf[1]=(time1.Hour)%10;
  124.        buf[0]=(time1.Hour)/10;
  125.        write(0x08,dispcode[buf[7]]);
  126.        write(0x07,dispcode[buf[6]]);
  127.        write(0x06,dispcode[10]);
  128.        write(0x05,dispcode[buf[4]]);
  129.        write(0x04,dispcode[buf[3]]);
  130.            write(0x03,dispcode[10]);
  131.            write(0x02,dispcode[buf[1]]);
  132.            write(0x01,dispcode[buf[0]]);
  133.       // Delayms(200);  
  134.           num++;
  135.                 if(num==137)
  136.                 num=0;
  137.                 for(r=0;r<105;r++)
  138.                  for(j=q;j<32+q;j++)
  139.                   {
  140.                           P1=tab2[t];
  141.                         KAI=1;
  142.                         P2=0X00;
  143.                         P2=tab1[j];                                                       
  144.                         KAI=0;
  145.                         j++;
  146.                         KAI2=1;
  147.                         P2=0X00;                       
  148.                         P2=tab1[j];                                                       
  149.                         KAI2=0;
  150.                         P0=tab3[num];
  151.                         delay(40);
  152.                         t++;
  153.                         if(t==16)                       
  154.                         t=0;
  155.                   }
  156.       q=q+32;
  157.           if(q==256)
  158.           q=0;
  159.            }
  160. }
  161. void delay(uint time)
  162. {
  163.         uint linger;
  164.         for(linger=0;linger<time;linger++);
  165. }
复制代码


所有资料打包下载:
生日礼物心形灯仿真带时间显示.rar (29.23 KB, 下载次数: 48)

评分

参与人数 2黑币 +5 收起 理由
不负时光~田 + 3 很给力!
shzj + 2 很给力!

查看全部评分

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

使用道具 举报

沙发
ID:21568 发表于 2016-10-25 16:32 | 只看该作者
51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:144676 发表于 2016-10-26 23:54 | 只看该作者
谢谢分享
回复

使用道具 举报

地板
ID:130231 发表于 2017-3-16 21:41 | 只看该作者
太好看了,我下载来看。
回复

使用道具 举报

5#
ID:171583 发表于 2017-3-17 16:40 | 只看该作者
谢谢51黑有你更精彩!!!
回复

使用道具 举报

6#
ID:171583 发表于 2017-3-17 16:41 | 只看该作者
51黑有你更精彩!!!
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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