找回密码
 立即注册

QQ登录

只需一步,快速开始

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

16*64点阵程序+Proteus仿真

[复制链接]
跳转到指定楼层
楼主
ID:103096 发表于 2016-1-13 18:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式



16*64点阵单片机仿真文件下载:http://www.51hei.com/bbs/dpj-42345-1.html
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit DS_red=P3^5;
sbit SHC=P3^2;
sbit STC=P3^3;
sbit OE_red=P3^4;
sbit SW1=P3^6;
sbit SW2=P3^7;
uint count,speed;
uchar p,next,k,high,low,yige;
unsigned char flag,a,i;
uchar code hang[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f};
uchar code hanzi[10][32]={
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},                                                
{0x04,0x80,0x08,0x80,0x34,0x80,0xE7,0xFE,0x24,0x84,0x24,0x88,0x00,0x02,0x09,0x02,
0x09,0x04,0xFF,0xC8,0x09,0x30,0x92,0x28,0x52,0x44,0x12,0x82,0x02,0x1F,0x00,0x00},/*"钱",0*/
{0x20,0x00,0x20,0x02,0x20,0x04,0x27,0xD8,0x24,0x40,0x24,0x42,0xA4,0x41,0x64,0x7E,
0x24,0x40,0x24,0x40,0x24,0x40,0x27,0xD0,0x20,0x08,0x20,0x06,0x20,0x00,0x00,0x00},/*"京",1*/
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

};

                                                  


void delay(uint z)
{
while(z--);
}
void delay1(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void SendByte(uchar date)
{
uchar p;
for(p=0;p<8;p++)
{
   SHC=0;
   DS_red=date&0x80;
   SHC=1;
   date=date<<1;
}
}
void Send_move(uchar date,uchar f)
{
  uchar i;
  DS_red=1;
  for(i=0;i<f;i++)
  {
          SHC=0;
        DS_red=date&0x80;
        SHC=1;
         date=date<<1;
  }
}
void SendBytefew(uchar temp1,uchar temp2,few)
{
uchar p;
uint temp;
temp=temp1;
temp=(temp<<8)|temp2;
for(p=0;p<few;p++)
{ SHC=0;
  DS_red=temp&0x8000;
  SHC=1;
  temp=temp<<1;
}
}
void main()
{      
        TMOD=0x11;
        TH0=0xff;
        TL0=0x90;
        EA=1;
        ET0=1;
        TR0=1;
        OE_red=0;
        speed=100;
        next=0;

  while(1)
  {
  if(!SW1)
  {delay(20);
          if(!SW1)
        {
          if(speed<=300)
          speed+=20;
          while(!SW1);
          delay(20);        
        }
  }
    if(!SW2)
  {delay(20);
          if(!SW2)
        {
          if(speed>10)
          speed-=30;
          while(!SW2);
          delay(20);        
        }
  }

}
}

void timer0() interrupt 1
{
  TH0=0xfa;
  TL0=0x90;
  count++;
  SendByte(hanzi[0+next][p]);
SendByte(hanzi[0+next][p+1]);
  SendByte(hanzi[1+next][p]);
  SendByte(hanzi[1+next][p+1]);
  SendByte(hanzi[2+next][p]);
  SendByte(hanzi[2+next][p+1]);
  SendByte(hanzi[3+next][p]);
SendByte(hanzi[3+next][p+1]);
   SendBytefew(hanzi[4+next][p],hanzi[4+next][p+1],yige);
  OE_red=1;
   STC=0;
   STC=1;
   P1=hang[k];
   OE_red=0;
   k++;
   p+=2;
   if(p==32)
   p=0;
   if(k==16)
   {
             k=0;
   if(count>=speed)
   {
            count=0;
         yige++;
         if(yige==16)
         {
           yige=0;
           next++;
           if(next==32)
           next=0;
         }

   }
}
}

评分

参与人数 1黑币 +5 收起 理由
admin + 5 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:1 发表于 2016-1-13 19:10 | 只看该作者
这个只能加5分了 没有电路图,有图的话可加50分
回复

使用道具 举报

板凳
ID:102668 发表于 2016-1-14 00:00 | 只看该作者

  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. sbit DS_red=P3^0;  //串行数据输入端,红色灯
  5. sbit DS_green=P3^1;
  6. sbit SHC=P3^2;     //数据在上升沿进入移位寄存器
  7. sbit STC=P3^3;   //上升沿时将数据输出到并行端口
  8. sbit OE_red=P3^4;  //HC595是能段,必须设置!
  9. sbit OE_green=P3^5;
  10. sbit SW1=P3^6;   //滚动减速
  11. sbit SW2=P3^7;   //滚动加速
  12. uint count,speed;  //滚动速度
  13. uchar p,next,k,high,low,yige;
  14. uchar code hang[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,
  15. 0x0c,0x0d,0x0e,0x0f}; //刷行,控制74154管脚输出
  16. uchar code hanzi[][32]={
  17. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  18. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  19. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  20. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

  21. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  22. {0x04,0x00,0x04,0x00,0x0F,0xF0,0x0C,0x20,0x12,0x40,0x61,0x80,0x02,0x60,0x0D,0x1E,0x71,0x08,0x1F,0xFC,0x01,0x00,0x09,0x20,0x11,0x18,0x21,0x08,0x05,0x00,0x02,0x00},
  23. {0x05,0x00,0x45,0x00,0x29,0x00,0x13,0xFE,0x32,0x02,0x4C,0x02,0x89,0xF2,0x19,0x12,0x29,0x12,0x49,0x12,0x89,0xF2,0x09,0x02,0x08,0x02,0x08,0x04,0x50,0x14,0x20,0x08},
  24. {0x08,0x20,0x08,0x20,0x7F,0xFC,0x08,0x20,0x08,0x20,0x0F,0xE0,0x08,0x20,0x0F,0xE0,0x08,0x20,0x08,0x20,0xFF,0xFE,0x08,0x40,0x0C,0x20,0x18,0x10,0x30,0x18,0x40,0x10},
  25. {0x01,0x00,0x00,0x80,0x3F,0xFE,0x28,0x04,0x46,0x88,0x04,0x80,0x08,0x80,0x06,0x80,0x04,0x80,0x7F,0xFE,0x00,0x80,0x01,0x40,0x02,0x20,0x04,0x10,0x18,0x18,0x60,0x10},
  26. {0x10,0x10,0x08,0x18,0x06,0x10,0x04,0x20,0x7F,0xFC,0x04,0x20,0x04,0x20,0x04,0x20,0x7F,0xFE,0x04,0x20,0x04,0x20,0x04,0x20,0x08,0x20,0x08,0x20,0x10,0x20,0x20,0x20},
  27. {0x00,0x04,0x7F,0xFE,0x01,0x80,0x01,0x00,0x01,0x00,0x01,0x00,0x03,0x60,0x05,0x30,0x09,0x18,0x11,0x0C,0x21,0x08,0x41,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00},
  28. {0x00,0x00,0x7E,0x3C,0x05,0xD0,0x09,0x50,0x11,0x50,0x15,0x50,0x19,0x50,0x31,0x50,0xD1,0x50,0x51,0x48,0x11,0x48,0x11,0x64,0x12,0x56,0x12,0xFA,0x54,0x50,0x20,0x00},
  29. {0x08,0x20,0x06,0x30,0x04,0x40,0x3F,0xF8,0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00},
  30. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x10,0x00,0x20,0x00,0x00,0x00},
  31. {0x10,0x00,0x10,0xFC,0x10,0x84,0xFE,0xFC,0x38,0x84,0x34,0xFC,0x54,0x84,0x50,0x84,0x90,0xFC,0x00,0x00,0x01,0x00,0x08,0x84,0x28,0x82,0x28,0x12,0x67,0xF0,0x00,0x00},
  32. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  33. {0x04,0x00,0x04,0x00,0x0F,0xF0,0x0C,0x20,0x12,0x40,0x61,0x80,0x02,0x60,0x0D,0x1E,0x71,0x08,0x1F,0xFC,0x01,0x00,0x09,0x20,0x11,0x18,0x21,0x08,0x05,0x00,0x02,0x00},
  34. {0x05,0x00,0x45,0x00,0x29,0x00,0x13,0xFE,0x32,0x02,0x4C,0x02,0x89,0xF2,0x19,0x12,0x29,0x12,0x49,0x12,0x89,0xF2,0x09,0x02,0x08,0x02,0x08,0x04,0x50,0x14,0x20,0x08},
  35. {0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x7F,0xFE,0x00,0xC0,0x01,0x40,0x01,0x40,0x02,0x40,0x04,0x40,0x08,0x40,0x10,0x40,0x60,0x40,0x00,0x40,0x01,0x40,0x00,0x80},
  36. {0x00,0x00,0x7E,0x3C,0x05,0xD0,0x09,0x50,0x11,0x50,0x15,0x50,0x19,0x50,0x31,0x50,0xD1,0x50,0x51,0x48,0x11,0x48,0x11,0x64,0x12,0x56,0x12,0xFA,0x54,0x50,0x20,0x00},
  37. {0x08,0x20,0x06,0x30,0x04,0x40,0x3F,0xF8,0x21,0x08,0x3F,0xF8,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x08,0x01,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00},

  38. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  39. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  40. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
  41. {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

  42. };//刷列
  43. void delay(uint z)
  44. {
  45. while(z--);
  46. }

  47. void delay1(uint z)
  48. {
  49. uint x,y;
  50. for(x=z;x>0;x--)
  51. for(y=110;y>0;y--);  
  52. }

  53. //点阵显示位传送

  54. void SendByte(uchar date)//595数据传送
  55. {
  56. uchar p;
  57. for(p=0;p<8;p++)
  58. {
  59. SHC=0;
  60. DS_red=date&0x80;
  61. SHC=1;
  62. date=date<<1;
  63. }
  64. }

  65. void Send_move(uchar date,uchar f)
  66. {
  67. uchar i;
  68. DS_red=1;
  69. for(i=0;i<f;i++)
  70. {
  71. SHC=0;
  72. DS_red=date&0x80;
  73. SHC=1;
  74. date=date<<1;
  75. }
  76. }
  77. void SendBytefew(uchar temp1,uchar temp2,few)//将十六位数据传给595
  78. {
  79. uchar p;
  80. uint temp;
  81. temp=temp1;
  82. temp=(temp<<8)|temp2;
  83. for(p=0;p<few;p++)
  84. {
  85. SHC=0;
  86. DS_red=temp&0x8000;
  87. SHC=1;
  88. temp=temp<<1;
  89. }
  90. }
  91. void main()
  92. {
  93. TMOD=0x11;
  94. TH0=0xff;  
  95. TL0=0x90;
  96. EA=1;
  97. ET0=1;
  98. TR0=1;
  99. OE_red=0;
  100. speed=100;
  101. next=0;
  102. while(1)
  103. {
  104. if(!SW1)
  105. {
  106. delay(20);
  107. if(!SW1)
  108. {
  109. if(speed<300)
  110. speed+=20;
  111. while(!SW1);
  112. delay(20);
  113. }
  114. }
  115. if(!SW2)
  116. {
  117. delay(20);
  118. if(!SW2)
  119. {
  120. if(speed>10)
  121. speed-=30;
  122. while(!SW2);
  123. delay(20);
  124. }
  125. }
  126. }
  127. }
  128. void timer0() interrupt 1
  129. {
  130. TH0=0xfa;  
  131. TL0=0x90;
  132. count++;
  133. //先刷四个空格
  134. SendByte(hanzi[0+next][p]);
  135. SendByte(hanzi[0+next][p+1]);
  136. SendByte(hanzi[1+next][p]);
  137. SendByte(hanzi[1+next][p+1]);
  138. SendByte(hanzi[2+next][p]);
  139. SendByte(hanzi[2+next][p+1]);
  140. SendByte(hanzi[3+next][p]);
  141. SendByte(hanzi[3+next][p+1]);
  142. SendBytefew(hanzi[4+next][p],hanzi[4+next][p+1],yige);//刷文字
  143. OE_red=1;
  144. STC=0;
  145. STC=1;
  146. P2=hang[k];//行显示
  147. OE_red=0;//打开595使能端
  148. k++;
  149. p+=2;
  150. if(p==32)
  151. p=0;
  152. if(k==16)
  153. {
  154. k=0;
  155. if(count>=speed)
  156. {
  157. count=0;
  158. yige++;
  159. if(yige==16)
  160. {
  161. yige=0;
  162. next++;
  163. if(next==21)//注意next的值必须等于文字个数
  164. next=0;
  165. }

  166. }
  167. }
  168. }
复制代码
回复

使用道具 举报

地板
ID:575208 发表于 2019-7-4 10:36 | 只看该作者

请问你这个有原理图吗
回复

使用道具 举报

5#
ID:375637 发表于 2021-4-23 11:04 | 只看该作者
就差原理图了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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