找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3116|回复: 1
收起左侧

关于单片机8x8点阵屏移动显示0-F等十六个字符的仿真和程序

[复制链接]
ID:827939 发表于 2020-11-22 20:30 | 显示全部楼层 |阅读模式
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

pro7.8仿真实例

pro7.8仿真实例
51hei.png

单片机源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>

  3. typedef unsigned char u8;
  4. typedef unsigned int u16;

  5. sbit R3 = P1^2;    //
  6. sbit R2 = P1^1;    //
  7. sbit R1 = P1^0;    //

  8. sbit DS   = P1^4;  //
  9. sbit SHCP = P1^5;  //
  10. sbit STCP = P1^6;  //

  11. code u8 g[16][8]={
  12.                                   {0x00,0x38,0x44,0x44,0x44,0x44,0x38,0x00},//0
  13.                                   {0x00,0x08,0x18,0x08,0x08,0x08,0x1C,0x00},//1
  14.                                   {0x00,0x3C,0x04,0x04,0x3C,0x20,0x20,0x3C},//2
  15.                                   {0x00,0x3C,0x04,0x04,0x3C,0x04,0x04,0x3C},//3
  16.                                   {0x04,0x0C,0x14,0x24,0x44,0xFF,0x04,0x04},//4
  17.                                   {0x00,0x1E,0x10,0x10,0x1E,0x02,0x02,0x1E},//5
  18.                                   {0x00,0x3C,0x20,0x20,0x3E,0x22,0x22,0x3E},//6
  19.                                   {0x00,0x1E,0x02,0x04,0x08,0x08,0x08,0x08},//7
  20.                                   {0x1C,0x22,0x22,0x22,0x1C,0x22,0x22,0x1C},//8
  21.                                   {0x3C,0x24,0x24,0x3C,0x04,0x04,0x3C,0x00},//9
  22.                                   {0x00,0x10,0x28,0x44,0x7C,0x44,0x44,0x00},//A
  23.                                   {0x00,0x38,0x24,0x24,0x38,0x24,0x24,0x38},//B
  24.                                   {0x1C,0x22,0x20,0x20,0x20,0x22,0x1C,0x00},//C
  25.                                   {0x00,0x38,0x24,0x24,0x24,0x24,0x38,0x00},//D
  26.                                   {0x00,0x3C,0x20,0x20,0x3C,0x20,0x20,0x3C},//E
  27.                                   {0x00,0x3C,0x20,0x3C,0x20,0x20,0x20,0x00}        //F
  28.                                   };  

  29. void wrong(u16 i)  //调试用
  30. {
  31.         if(i)
  32.                 P0=0xff;
  33. }

  34. void delay1ms(void)   //100ms延时
  35. {
  36.     unsigned char a,b;
  37.     for(b=199;b>0;b--)
  38.         for(a=1;a>0;a--);
  39. }


  40. void row(u8 r)  //选择点亮第几行
  41. {
  42.         switch(r)
  43.         {
  44.                 case 1:{R3=1;R2=1;R1=1;};break;
  45.                 case 2:{R3=1;R2=1;R1=0;};break;
  46.                 case 3:{R3=1;R2=0;R1=1;};break;
  47.                 case 4:{R3=1;R2=0;R1=0;};break;
  48.                 case 5:{R3=0;R2=1;R1=1;};break;
  49.                 case 6:{R3=0;R2=1;R1=0;};break;
  50.                 case 7:{R3=0;R2=0;R1=1;};break;
  51.                 case 8:{R3=0;R2=0;R1=0;};break;
  52.                
  53.                 default :wrong(1);break;
  54.         }
  55. }

  56. void send(u8 d) //选择该行显示的内容
  57. {
  58.         u8 i;
  59.         
  60.         SHCP = 0;
  61.         STCP = 0;
  62.         
  63.         for(i=0;i<8;i++)
  64.         {
  65.                 DS = d>>7;
  66.                 d<<=1;
  67.                 SHCP = 1;
  68.                 _nop_();        
  69.                 _nop_();        
  70.                 SHCP = 0;
  71.         }
  72.         STCP = 1;
  73.         _nop_();
  74.         _nop_();
  75.         STCP = 0;
  76. }

  77. void main()
  78. {
  79.         u8 i;
  80.         unsigned int k,m;
  81.         while(1)
  82.         {
  83.                 for(k=0;k<16;k++)
  84.                 {
  85.                         for(m=0;m<100;m++)        
  86.                         {
  87.                                 
  88.                                 for(i=0;i<8;i++)
  89.                                 {
  90.                                         send(g[k][i]);
  91.                                         row(i+1);    //i+1表示第几行
  92.                                         delay1ms();  //延时
  93.                                         send(0);     //消隐,和延时一起使?

  94.                                 }
  95.                         }
  96.                 }
  97.         }
  98. }
复制代码
51hei.png
所有资料51hei提供下载:
8x8led点阵 显示0-f等字符.zip (73.15 KB, 下载次数: 38)

评分

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

查看全部评分

回复

使用道具 举报

ID:827939 发表于 2020-11-22 20:31 | 显示全部楼层
是可以移动显示0-F等字符的,
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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