找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4536|回复: 6
收起左侧

单片机使用2片74LS138、2片74HC595驱动16x16点阵显示汉字的上移源程序及源程序

  [复制链接]
ID:526281 发表于 2020-6-9 20:57 | 显示全部楼层 |阅读模式
2片74LS138、2片74HC595驱动16x16点阵显示汉字的上移源程序及仿真,需要的自取,也欢迎提一些建议。

仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.gif
51hei.png

单片机源程序如下:
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. sbit R=P2^0;        //数据串口输入
  4. sbit CLK=P2^1;        //脉冲信号输入
  5. sbit STB=P2^2;        //锁存信号

  6. char code table[]={
  7. /*--  文字:  风  --*/
  8. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  9. 0x00,0x00,0xFC,0x0F,0x04,0x08,0x04,0x08,0x14,0x0A,0x24,0x0A,0x44,0x09,0x44,0x09,
  10. 0x84,0x08,0x84,0x08,0x44,0x09,0x44,0x49,0x24,0x52,0x12,0x52,0x02,0x60,0x01,0x40,

  11. /*--  文字:  星  --*/
  12. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  13. 0x00,0x00,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x08,0x08,0xF8,0x0F,0x80,0x00,0x88,0x00,
  14. 0xF8,0x1F,0x84,0x00,0x82,0x00,0xF8,0x0F,0x80,0x00,0x80,0x00,0xFE,0x3F,0x00,0x00,

  15. /*--  文字:  子  --*/
  16. /*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
  17. 0x00,0x00,0xFE,0x1F,0x00,0x08,0x00,0x04,0x00,0x02,0x80,0x01,0x80,0x00,0xFF,0x7F,
  18. 0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0xA0,0x00,0x40,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. };        

  22. void delay(int z)                                //延时程序
  23. {
  24.         int x,y;
  25.         for(x=55;x>0;x--)
  26.                 for(y=z;y>0;y--);
  27. }

  28. void wordByt(char b)                        //写(拆分)一个字节数据
  29. {
  30.         char i;
  31.         for(i=0;i<8;i++)
  32.         {
  33.                 b=b>>1;                        //右移一位,暂存近CY
  34.                 R=CY;                                //取出最低位
  35.                 CLK=0;                        //上升沿        
  36.                 CLK=1;
  37.         }
  38. }

  39. void main()
  40. {
  41.         int num,move,speed,i;
  42.         i=3;                                        //汉字个数
  43.         while(1)
  44.         {
  45.                 if(++speed>2)                //速度控制(数字小速度快)
  46.                 {
  47.                         speed=0;
  48.                         move++;                //移位

  49.                         if(move>16*i)        //判断是否完成一个汉字
  50.                                 move=0;        //从头开始

  51.                 }

  52.                         for(num=0;num<16;num++)
  53.                         {
  54.                                 wordByt(table[2*num+move*2]);
  55.                                 wordByt(table[2*num+1+move*2]);
  56.                                 P1=num;
  57.                                 STB=1;                //输出锁存中的数据,下降沿
  58.                                 STB=0;
  59.                                 delay(3);
  60.                         }
  61.         }
  62. }
复制代码

所有资料51hei提供下载:
上移位16x16点阵源程序及仿真.7z (60.79 KB, 下载次数: 202)

评分

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

查看全部评分

回复

使用道具 举报

ID:782710 发表于 2020-6-18 00:47 | 显示全部楼层
谢谢分享
回复

使用道具 举报

ID:785582 发表于 2020-6-21 22:32 | 显示全部楼层
为啥我用字模软件转换的时候,用你这个程序,显示出来的左右是颠倒的啊,请问有什么需要改动么
回复

使用道具 举报

ID:949804 发表于 2021-7-14 09:50 | 显示全部楼层
为什么我改不了程序里的汉字啊楼主,我一打字都是乱码
回复

使用道具 举报

ID:1052096 发表于 2023-5-30 20:15 | 显示全部楼层
xsjsensei 发表于 2020-6-21 22:32
为啥我用字模软件转换的时候,用你这个程序,显示出来的左右是颠倒的啊,请问有什么需要改动么

程序里的字模以0X3F为例,自己取得字模是0XFC
回复

使用道具 举报

ID:1052096 发表于 2023-5-30 20:34 | 显示全部楼层
xsjsensei 发表于 2020-6-21 22:32
为啥我用字模软件转换的时候,用你这个程序,显示出来的左右是颠倒的啊,请问有什么需要改动么

将LED接口的前八位接成(8~15)后八位接成(0~7)
回复

使用道具 举报

ID:1098329 发表于 2023-11-3 13:18 | 显示全部楼层
这个确实很棒
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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