分享

51单片机控制点阵显示任何你想显示的文字_单片机点阵显示汉字

 和生k7zm98l2kv 2023-06-07 发布于广东

其实点阵的原理很简单,就是操作起来麻烦一些,总的来说就是叫一部分灯亮起来,组成自己想要的图形而已,下面我就以显示数字0为例,来演示一下具体的操作过程。如图,先来确定哪些灯亮能组成0这个数字吧!

 上图黄色的实心圆就是要亮的灯,想要这些个灯亮很简单,就是左面给高电平1,下面给低电平0,对应的led灯就会亮起,利用这个原理,把需要的图形画出来,然后把行和列的编码写出来,利用单片机速度很快的原理挨个点亮他们,超过了25赫兹人眼就分不出来有灯灭过了,也就是一直在亮了。接下来打开proteus,如图导入元器件并连线。

 下面是点阵的导入方法:

 接下来就是写C程序了。

  1. #include"reg52.h"
  2. unsigned char code column[]={0x00, 0x18, 0x24, 0x24, 0x24, 0x24, 0x18, 0x00}; //高电平
  3. unsigned char row[]={0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01}; // 这个都是高电平,取反这位就是低电平,其他都是高电平了
  4. void delay(unsigned int t){ // 延时函数
  5. unsigned int i=0, j=0;
  6. for(i=0; i<t; i++){
  7. for(j=0; j<120; j++);
  8. }
  9. }
  10. void gengxin(){ // 更新函数,函数名就是拼音
  11. // 下面两行注释的代码只是用来检测一下P2和P3哪一端接高电平,哪一端接低电平
  12. // P2 = 0x7F; // 0111 1111 P2要接低电平的一端
  13. // P3 = 0x80; // 1000 0000 P3要接高电平的一侧
  14. unsigned int i=0, j=0;
  15. for(i=0; i<8; i++){
  16. P2 = ~row[i];
  17. P3 = column[i];
  18. delay(2);
  19. }
  20. }
  21. void main(){ // 主函数
  22. while(1){ // 无限循环
  23. gengxin(); // 一直运行更新函数
  24. }
  25. }

最后编译成hex文件导入proteus,模拟运行后,如图就能显示我们之前设计的图形0了。

 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多