找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机8*8LED点阵—显示汉字实验

  [复制链接]
跳转到指定楼层
楼主
一、读懂代码

因为自身C语言基础比较差,所以决定先把代码看懂然后再在源代码的基础上修改写成自己的点阵显示。
自己对代码的简短理解都写成注释附在下面的源代码中了,有不对的地方请指正
  1. 实现现象:下载程序后点阵上显示数字0
  2.             
  3. 注意事项:一定要将JOE短接片短接到GND端,如果不需要595后面的小灯点亮可以拔掉JP595短接片。                                                                              
  4. ***************************************************************************************/

  5. #include "reg51.h"           //此文件中定义了单片机的一些特殊功能寄存器
  6. #include<intrins.h>

  7. typedef unsigned int u16;     //对数据类型进行声明定义
  8. typedef unsigned char u8;

  9. sbit SRCLK=P3^6;//用SRCLK来表示P3口的第六位
  10. sbit RCLK=P3^5;//用RCLK来表示P3口的第五位
  11. sbit SER=P3^4;//用SER来表示P3口的第四位
  12. //SRCLK、RCLK、SER都是下面程序用到的的芯片74hc595中的引脚的名称,想对芯片进一步了解的同学可以看一下代码后面附的链接

  13. u8 ledduan[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00};
  14. u8 ledwei[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
  15. //二极管点亮的的条件是对应行列分别为高低电平使得电流产生。
  16. //对应本实验实验板即为列线为高电平,行线为低电平时二极管被点亮
  17. //第一行代码控制哪列为高电平即为需要此列是否点亮,第二行控制哪一行为低电平,即某一行被点亮,行列共同点亮时交叉处LED亮灯
  18. //实验板的原理图因为自己看不懂所以这里的行列可能混了【手动狗头】对这个比较清楚的同学可以帮给我指正一下,谢谢。
  19. /*******************************************************************************
  20. * 函 数 名         : delay
  21. * 函数功能         : 延时函数,i=1时,大约延时10us
  22. 死循环实现延时功能
  23. *******************************************************************************/
  24. void delay(u16 i)
  25. {
  26.     while(i--);
  27. }

  28. /*******************************************************************************
  29. * 函数名         : Hc595SendByte(u8 dat)
  30. * 函数功能         : 向74HC595发送一个字节的数据
  31. * 输入           : 无
  32. * 输出             : 无
  33. 将一个字节的信息串行输入给74HC595以后由芯片并行输出
  34. *******************************************************************************/
  35. void Hc595SendByte(u8 dat)
  36. {
  37.     u8 a;
  38.     SRCLK=0;
  39.     RCLK=0;
  40.     for(a=0;a<8;a++)
  41.     {
  42.         SER=dat>>7;
  43.         dat<<=1;

  44.         SRCLK=1;
  45.         _nop_();
  46.         _nop_();
  47.         SRCLK=0;   
  48.     }

  49.     RCLK=1;
  50.     _nop_();
  51.     _nop_();
  52.     RCLK=0;
  53. }

  54. /*******************************************************************************
  55. * 函 数 名       : main
  56. * 函数功能       : 主函数
  57. * 输    入       : 无
  58. * 输    出         : 无
  59. *******************************************************************************/
  60. void main()
  61. {           
  62.     u8 i;
  63.     while(1)//轮回点亮循环体
  64.     {
  65.         P0=0x7f;
  66.         for(i=0;i<8;i++)
  67.         {
  68.             P0=ledwei[i];         //位选
  69.             Hc595SendByte(ledduan[i]);  //发送段选数据
  70.             delay(100);        //延时
  71.             Hc595SendByte(0x00);  //消隐,如果的话点阵显示时会出现重影现象
  72.         }   
  73.     }      
  74. }
复制代码

74HC595芯片资料:http://www.51hei.com/chip/3978.html
二、修改代码

理解代码以后我们对代码进行修改来实现自己的点阵显示。
因为对亮度和别的指标没有要求,所以只需要修改和字符显示的这一段就可以啦

u8 ledduan[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00};

我要显示的是佐字,对应的代码经过推断


所以代码修改为

u8 ledduan[]={0x20,0x7f,0xd0,0x71,0x51,0xdf,0x51,0x51};

三、烧录

将代码编译形成新的hex文件后下载到实验板上就OK啦,当然前提是你没有像我一样忘记JOE短接片短接到GND端


评分

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

查看全部评分

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

使用道具 举报

沙发
ID:9727 发表于 2019-1-26 21:07 | 只看该作者
真详细,好好学习
回复

使用道具 举报

板凳
ID:483844 发表于 2019-3-3 19:13 | 只看该作者
菜鸟求救:段和位不是应该一块修改吗我想要一下就是“佐”字的位代码
回复

使用道具 举报

地板
ID:690706 发表于 2020-2-7 01:25 | 只看该作者
能麻烦问问怎么JOE短接片短接到GND端吗?本人小白刚入手,不会啊,球球大佬捞一把!!
回复

使用道具 举报

5#
ID:690567 发表于 2020-2-7 09:48 | 只看该作者
什么型号的开发板
回复

使用道具 举报

6#
ID:658437 发表于 2020-2-15 20:52 | 只看该作者
如果用138和595控制怎么写
回复

使用道具 举报

7#
ID:432653 发表于 2020-2-21 14:14 | 只看该作者
moshu_ 发表于 2020-2-7 09:48
什么型号的开发板

我也有两块2.0的
回复

使用道具 举报

8#
ID:695749 发表于 2020-2-21 21:10 | 只看该作者
这么的学习例程,谢谢分享
回复

使用道具 举报

9#
ID:707654 发表于 2020-3-16 21:34 来自手机 | 只看该作者
原力 发表于 2020-2-15 20:52
如果用138和595控制怎么写

我也想知道
回复

使用道具 举报

10#
ID:750134 发表于 2020-5-12 16:49 | 只看该作者
仙人抚我顶 发表于 2020-2-7 01:25
能麻烦问问怎么JOE短接片短接到GND端吗?本人小白刚入手,不会啊,球球大佬捞一把!!

拔下来
回复

使用道具 举报

11#
ID:908694 发表于 2021-8-1 13:52 | 只看该作者
仙人抚我顶 发表于 2020-2-7 01:25
能麻烦问问怎么JOE短接片短接到GND端吗?本人小白刚入手,不会啊,球球大佬捞一把!!

单片机上面应该自带有短接板
回复

使用道具 举报

12#
ID:1014820 发表于 2022-6-8 12:41 | 只看该作者
单片机点阵文字是固定的,还是每种单片机都不同
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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