找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机16x16点阵循环滚动显示汉字程序+电路原理图

[复制链接]
跳转到指定楼层
楼主
仿真原理图:




单片机程序代码如下:

  1. #include <reg51.h>
  2. #include<intrins.h>

  3. /*  数据端接口定义 */
  4. sbit  LSH = P2^0;     //列数时钟
  5. sbit  LDS = P2^1;     //输入
  6. sbit  LST = P2^2;     //列寄存器

  7. sbit  HSH = P2^3;     //行数时钟
  8. sbit  HDS = P2^4;     //输入
  9. sbit  HST = P2^5;     //行寄存器时钟

  10. unsigned int sel[17]={0x7fff,0xbfff,0xdfff,0xefff,0xf7ff,0xfbff,0xfdff,0xfeff,
  11.            0xff7f,0xffbf,0xffdf,0xffef,0xfff7,0xfffb,0xfffd,0xfffe,
  12.                      0xffff,
  13.            };

  14. char code hanzi[170] =
  15. {
  16. 0x01,0x00,0x01,0x00,0x01,0x00,0x3F,0xF8,0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,
  17. 0x21,0x08,0x21,0x08,0x21,0x08,0x3F,0xF8,0x21,0x0A,0x01,0x02,0x01,0x02,0x00,0xFE,//电
  18. 0x00,0x00,
  19. 0x00,0x00,0x7F,0xF8,0x00,0x10,0x00,0x20,0x00,0x40,0x01,0x80,0x01,0x00,0xFF,0xFE,
  20. 0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,//子
  21. 0x00,0x00,
  22. 0x01,0x00,0x01,0x00,0x7F,0xFC,0x01,0x00,0x1F,0xF0,0x00,0x00,0x7F,0xFE,0x40,0x02,
  23. 0x9F,0xF4,0x00,0x00,0x1F,0xF0,0x10,0x10,0x1F,0xF0,0x08,0x20,0x04,0x40,0xFF,0xFE,//壹
  24. 0x00,0x00,
  25. 0x20,0x80,0x10,0x80,0x00,0x9C,0x47,0xE0,0x20,0x80,0x08,0x84,0x10,0x84,0x60,0x7C,
  26. 0x21,0x00,0x01,0x00,0xFF,0xFE,0x05,0x40,0x09,0x20,0x31,0x18,0xC1,0x06,0x01,0x00,//我
  27. 0x00,0x00,
  28. 0x01,0x00,0x00,0x80,0x3F,0xFE,0x20,0x80,0x2F,0xF8,0x20,0x88,0x3F,0xFE,0x20,0x88,
  29. 0x2F,0xF8,0x28,0x80,0x24,0xC4,0x22,0xA8,0x44,0x90,0x48,0x88,0x92,0x86,0x01,0x00,//康
  30. 0x00,0x00,
  31. };



  32. void send_data_H(unsigned int dat);  /*  发送行数据端数据函数  */
  33. void send_data_L(unsigned int dat);  /*  发送列选通端数据函数  */
  34. void display(int a);                 //每一次显示什么东西
  35. void delay(unsigned int m);


  36. void main()
  37. {
  38.   unsigned int j=0,num;
  39. while(1)
  40. {
  41.   num=6;
  42.   while(num--)
  43.   {
  44.     display(j);
  45.      delay(10);
  46.    }
  47.   j=j+2;
  48.   //if(j>150)
  49.    //j=0;
  50. }
  51. }
  52.    //unsigned int a,b;
  53.   //a=sel[i]%256;//后八位
  54.    //b=sel[i]/256;//前八位
  55.     //send_data_H(b);
  56. void send_data_L(unsigned int dat)
  57. {
  58.     unsigned char i;

  59.     for(i=0;i<8;i++)
  60.     {
  61.         LSH = 0;
  62.         LDS = dat&0x80;       //temp<<=1;
  63.         dat = dat<<1;               //ds = CY;
  64.         LSH = 1;
  65.     }
  66.   LST = 0;
  67.     _nop_();
  68.     _nop_();
  69.     LST = 1;
  70. }

  71. void send_data_H(unsigned int dat)
  72. {
  73.     int i;
  74.     for(i=0;i<16;i++)
  75.     {

  76.         HSH = 0;
  77.         HDS = dat&0x8000;
  78.         dat =dat<<1;
  79.         HSH = 1;
  80.     }
  81.   HST = 0;
  82.     _nop_();
  83.     HST = 1;
  84. }
  85. void delay(unsigned int m)
  86. {
  87.     unsigned char i;
  88.     for(;m>0;m--)
  89.     {
  90.         for(i=0;i<124;i++)
  91.    {}
  92.     }
  93. }

  94. void display( int a)
  95. {
  96.     unsigned char i;
  97.    unsigned int x;
  98.     for(i=0;i<16;i++)
  99.     {
  100.         send_data_H(sel[i]);
  101.      x=a+2*i;//展示第几个字符
  102.      if(a+2*i>168)
  103.      x=(a+2*i)%170;
  104.      send_data_L(hanzi[x]);
  105.      send_data_L(hanzi[x+1]);
  106.      delay(1);   
  107.     }
  108. }
复制代码


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:414942 发表于 2018-10-24 22:29 | 只看该作者
很不错的
回复

使用道具 举报

板凳
ID:430126 发表于 2018-12-29 16:31 | 只看该作者

楼主这个能够实现向左右滚动吗
回复

使用道具 举报

地板
ID:458409 发表于 2018-12-30 07:48 来自手机 | 只看该作者
厉害!可惜我看不懂
回复

使用道具 举报

5#
ID:463580 发表于 2019-1-8 16:55 | 只看该作者
楼主有仿真文件吗
回复

使用道具 举报

6#
ID:441874 发表于 2020-12-30 15:22 来自手机 | 只看该作者
不错,显示电子壹柒康,由下向上移动
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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