找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2625|回复: 0
收起左侧

单片机8X8点阵显示protues仿真程序

[复制链接]
ID:763147 发表于 2020-5-28 15:35 | 显示全部楼层 |阅读模式
8x8点阵显示,包括静止显示与滚动显示,还有protues仿真
51hei.png

单片机源程序如下:
  1. /*********************************
  2. *name:                 微型计算机控制技术试验
  3. *                                         8*8LED点阵输出名字学号
  4. *auther:         16级电气一班 WYH
  5. *                                        2016903020
  6. *********************************/
  7. #include "reg51.h"                         
  8. #include<intrins.h>

  9. typedef unsigned int u16;          //对数据类型进行声明定义
  10. typedef unsigned char u8;
  11. u8 zero_duan[]        ={0x00,0x00,0x3c,0x42,0x42,0x3c,0x00,0x00};
  12. u8 wei[]                                 ={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

  13. u8 one_duan[]                ={0x00,0x00,0x00,0x44,0x7e,0x40,0x00,0x00};
  14.                        
  15. u8 two_duan[]                ={0x00,0x00,0x64,0x52,0x4a,0x44,0x00,0x00};
  16.        
  17. u8 three_duan[]        ={0x00,0x00,0x24,0x42,0x5a,0x24,0x00,0x00};
  18.        
  19. u8 six_duan[]                ={0x00,0x00,0x7c,0x92,0x92,0x62,0x00,0x00};
  20.        
  21. u8 nine_duan[]        ={0x00,0x00,0x8c,0x92,0x92,0x7c,0x00,0x00};
  22.        
  23. u8 w_duan[]                        ={0x08,0x10,0x20,0x18,0x18,0x20,0x10,0x08};
  24.                        
  25. u8 y_duan[]                        ={0x00,0x02,0x04,0x78,0x04,0x02,0x00,0x00};
  26.                        
  27. u8 h_duan[]                        ={0x00,0x00,0xfe,0x10,0x10,0xfe,0x00,0x00};
  28. /*******************************************************************************
  29. * 函 数 名         : delay
  30. * 函数功能                   : 延时函数,i=1时,大约延时10us
  31. *******************************************************************************/
  32. void delay(u16 i)
  33. {
  34.         while(i--);
  35. }

  36. /*******************************************************************************
  37. * 函 数 名       : main
  38. * 函数功能                 : 主函数
  39. * 输    入       : 无
  40. * 输    出             : 无
  41. *******************************************************************************/
  42. void main()
  43. {                       
  44.         u8 i;
  45.         u16 j,k;
  46.         while(1)
  47.         {
  48.                 for(j=0;j<13;j++)
  49.                 {
  50.                         k=100;
  51.                         while(k--)
  52.                         {
  53.                                 for(i=0;i<8;i++)
  54.                                 {
  55.                                         switch(j)
  56.                                         {
  57.                                                 case 0:                                                //w
  58.                                                         P0=wei[i];                  //位选
  59.                                                         P2=w_duan[i];                //发送段选数据
  60.                                                         break;
  61.                                                 case 1:                                                //y
  62.                                                         P0=wei[i];                  //位选
  63.                                                         P2=y_duan[i];                //发送段选数据
  64.                                                         break;
  65.                                                 case 2:                                                //h
  66.                                                         P0=wei[i];                  //位选
  67.                                                         P2=h_duan[i];                //发送段选数据
  68.                                                         break;
  69.                                                 case 3:                                                //2
  70.                                                         P0=wei[i];                  //位选
  71.                                                         P2=two_duan[i];        //发送段选数据
  72.                                                         break;
  73.                                                 case 4:                                                //0
  74.                                                         P0=wei[i];                  //位选
  75.                                                         P2=zero_duan[i];//发送段选数据
  76.                                                         break;
  77.                                                 case 5:                                                //1
  78.                                                         P0=wei[i];                  //位选
  79.                                                         P2=one_duan[i];        //发送段选数据
  80.                                                         break;
  81.                                                 case 6:                                                //6
  82.                                                         P0=wei[i];                  //位选
  83.                                                         P2=six_duan[i];        //发送段选数据
  84.                                                         break;
  85.                                                 case 7:                                                //9
  86.                                                         P0=wei[i];                  //位选
  87.                                                         P2=nine_duan[i];//发送段选数据
  88.                                                         break;
  89.                                                 case 8:                                                //0
  90.                                                         P0=wei[i];                  //位选
  91.                                                         P2=zero_duan[i];//发送段选数据
  92.                                                         break;
  93.                                                 case 9:                                                //3
  94.                                                         P0=wei[i];                  //位选
  95.                                                         P2=three_duan[i];//发送段选数据
  96.                                                         break;
  97.                                                 case 10:                                        //0
  98.                                                         P0=wei[i];                  //位选
  99.                                                         P2=zero_duan[i];//发送段选数据
  100.                                                         break;
  101.                                                 case 11:                                        //2
  102.                                                         P0=wei[i];                  //位选
  103.                                                         P2=two_duan[i];        //发送段选数据
  104.                                                         break;
  105.                                                 case 12:                                        //0
  106.                                                         P0=wei[i];                  //位选
  107.                                                         P2=zero_duan[i];//发送段选数据
  108.                                                         break;
  109.                                         }
  110.                                         delay(120);                   //延时
  111.                                 }       
  112.                         }
  113.                 }
  114.         }               
  115. }
复制代码

所有资料51hei提供下载:
8X8点阵.zip (91.72 KB, 下载次数: 47)
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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