找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机控制16x16点阵显示姓名的仿真原理图与程序

  [复制链接]
跳转到指定楼层
楼主
自己实训做的,不知道有没有不足的地方,希望指导一下
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. #include "reg51.h"

  2. #define uchar unsigned char
  3. #define uint  unsigned int

  4. #define Lie   P1

  5. sbit SHCP = P2^0;
  6. sbit  DS  = P2^1;
  7. sbit STCP = P2^2;

  8. uchar code led[ ] ={
  9. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

  10. 0x00,0x00,0xFE,0xFF,0x22,0x04,0x5A,0x08,0x86,0x07,0x08,0x20,0x88,0x11,0x68,0x0D,
  11. 0x18,0x41,0x0F,0x81,0xE8,0x7F,0x08,0x01,0x08,0x05,0x08,0x09,0x08,0x30,0x00,0x00, // 陈

  12. 0x00,0x40,0x00,0x38,0xFC,0x00,0x44,0x00,0x44,0x3C,0x44,0x40,0x44,0x40,0xFF,0x43,
  13. 0x44,0x4C,0x44,0x40,0x44,0x40,0x44,0x70,0xFC,0x04,0x00,0x08,0x00,0x30,0x00,0x00,  //忠


  14. 0x20,0x04,0x10,0x04,0x08,0x04,0xFC,0x05,0x03,0x04,0x20,0x04,0x20,0x04,0x10,0xFF,
  15. 0x7F,0x04,0x88,0x04,0x88,0x04,0x84,0x04,0x82,0x04,0xE0,0x04,0x00,0x04,0x00,0x00, //华

  16. 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

  17. };


  18. //uchar led[]={}

  19. void shift16bit(uchar dat1,uchar dat2)  //595输出16位数据
  20. {
  21. uchar i;
  22. STCP=0;       
  23. for(i=0;i<8;i++)
  24.   {
  25.    SHCP=0;
  26.    if(dat1 &0x80) DS=1;
  27.      else DS=0;
  28.     dat1<<=1;
  29.    SHCP=1;
  30.   }
  31.   for(i=0;i<8;i++)
  32.   {
  33.    SHCP=0;
  34.    if(dat2 &0x80) DS=1;
  35.      else DS=0;
  36.     dat2<<=1;
  37.    SHCP=1;
  38.   }
  39. STCP=1;
  40. }

  41. void delay(uint x)
  42. {
  43. uint i;
  44. for(i=0;i<x;i++);
  45. }

  46. void main()
  47. {
  48. uchar i,x=0;
  49. uint n;

  50. while(1)
  51. {
  52. for(n=0;n<10;n++)
  53. for(i=0;i<16;i++)
  54.   {
  55.    Lie=i;
  56.    shift16bit(led[2*i+1+2*x],led[2*i+2*x]);
  57.    delay(10);
  58.   }
  59.   x++;
  60. if(x==48) x=0;

  61. /*
  62. for(n=0;n<100;n++)
  63.   for(i=0;i<16;i++)
  64.    {
  65.            Lie= i;
  66.     shift16bit(led[x][2*i+1],led[x][2*i]);
  67.         delay(100);
  68.    }
  69.    x++;
  70.    if(x==4) x=0;
  71. */
  72. }
  73. }
复制代码



所有资料51hei提供下载:
163110109 16x16 点阵显示姓名陈忠华.rar (92.28 KB, 下载次数: 158)


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:568876 发表于 2019-7-11 14:19 | 只看该作者
还行叭,可以下载
回复

使用道具 举报

板凳
ID:524764 发表于 2019-8-29 14:13 | 只看该作者
学习了,谢谢分享
回复

使用道具 举报

地板
ID:554793 发表于 2019-9-18 14:55 来自手机 | 只看该作者
为什么用字模弄出的字,表示不出来
回复

使用道具 举报

5#
ID:671025 发表于 2019-12-23 10:34 | 只看该作者
找不到仿真图。。。。。。
回复

使用道具 举报

6#
ID:675834 发表于 2020-8-17 02:14 来自手机 | 只看该作者
shift16bit(led[2*i+1+2*x],led[2*i+2*x]);这句什意思里面的2乘i加1加2乘x为什么要2乘i加1加2
回复

使用道具 举报

7#
ID:776473 发表于 2020-11-23 12:29 | 只看该作者
金毛 发表于 2020-8-17 02:14
shift16bit(led[2*i+1+2*x],led[2*i+2*x]);这句什意思里面的2乘i加1加2乘x为什么要2乘i加1加2

每次刷16行,要移动的时候,第一个字的第一行就被移走了,显示第一个字的第2行到16行及第2个字的第一行,那个2*i就是这么吧第2个字的一行带刷过去的。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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