迅维网

查看: 2368|回复: 0
打印 上一主题 下一主题

AT89C51单片机LED16x16点阵显示屏程序及仿真

[复制链接]
跳转到指定楼层
1#
发表于 2017-2-8 12:35:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式 来自: 山东青岛 来自 山东青岛

马上注册,获取阅读精华内容及下载权限

您需要 登录 才可以下载或查看,没有帐号?注册

x
    这是一款AT89C51单片机LED16x16点阵显示屏程序,使用AT89C51单片机,16*16点阵屏驱动使用了两片74HC154集成电路,整个电路非常简洁,使用的元件比较少,方便布线。压缩文件中附上了16*16点阵字模取模软件及使用示例图片,同时给出了仿真文件,方便使用学习。




                               
登录/注册后看高清大图




                               
登录/注册后看高清大图




                               
登录/注册后看高清大图




                               
登录/注册后看高清大图




单片机源程序:
  • #include <reg51.h>
  • #define u8 unsigned char
  • #define u16 unsigned int
  • sbit a=P2^4;   //154芯片使能
  • sbit b=P2^5;
  • u8 code led[][32]={
  • {0x02,0x02,0xFA,0x4A,0x4A,0x4A,0x4A,0xFE,0x4A,0x4A,0x4A,0x4A,0xFE,0x0B,0x02,0x00,
  • 0x80,0x80,0x87,0x42,0x46,0x2A,0x12,0x2F,0x22,0x42,0x42,0x42,0x87,0x80,0x80,0x00,},// 更
  • {0x00,0x00,0x20,0x10,0x98,0xA4,0x47,0x24,0xE4,0x14,0x0C,0x04,0x00,0x00,0x00,0x00,
  • 0x00,0x81,0x91,0x89,0x44,0x44,0x4A,0x31,0x11,0x11,0x09,0x05,0x03,0x01,0x00,0x00,},// 多
  • {0x00,0x00,0xF8,0x49,0x4A,0x4C,0x48,0xF8,0x48,0x4C,0x4A,0x49,0xFC,0x08,0x00,0x00,
  • 0x10,0x10,0x17,0x12,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x13,0x18,0x10,0x00,},//单
  • {0x00,0x00,0xFE,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
  • 0x80,0x40,0x3F,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,},//片
  • {0x10,0x10,0xD0,0xFF,0x90,0x10,0x00,0xFC,0x04,0x04,0x04,0xFE,0x04,0x00,0x00,0x00,
  • 0x04,0x03,0x00,0xFF,0x80,0x41,0x20,0x1F,0x00,0x00,0x00,0x3F,0x40,0x40,0x70,0x00,},//机
  • {0x24,0x24,0xA4,0xFE,0xA3,0x22,0x20,0x7E,0x42,0x42,0x42,0x42,0x42,0x7F,0x02,0x00,
  • 0x08,0x06,0x01,0xFF,0x00,0x43,0x41,0x49,0x49,0x49,0x7F,0x49,0x4D,0x69,0x41,0x00,},//程
  • {0x00,0x00,0xFC,0x04,0x14,0x14,0x14,0x55,0x96,0x54,0x34,0x14,0x16,0x04,0x00,0x00,
  • 0x40,0x30,0x0F,0x00,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x05,0x03,0x01,0x00,0x00,},//序
  • {0x80,0x40,0x20,0xF8,0x07,0x10,0x10,0x10,0xF1,0x96,0x90,0x90,0xD0,0x98,0x10,0x00,
  • 0x00,0x00,0x00,0xFF,0x00,0x80,0x40,0x30,0x0F,0x40,0x80,0x40,0x3F,0x00,0x00,0x00,},//仿
  • {0x00,0x04,0x04,0xF4,0x54,0x54,0x54,0x5F,0x54,0x54,0x54,0xFC,0x16,0x04,0x00,0x00,
  • 0x10,0x10,0x90,0x5F,0x35,0x15,0x15,0x15,0x15,0x15,0x35,0x5F,0xD0,0x18,0x10,0x00,},//真
  • {0x20,0x22,0xEC,0x00,0x20,0x22,0xAA,0xAA,0xAA,0xBF,0xAA,0xAA,0xEB,0xA2,0x20,0x00,
  • 0x00,0x00,0x7F,0x20,0x10,0x00,0xFF,0x0A,0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x00,},//请
  • {0x00,0x62,0x52,0x4A,0xC6,0x42,0x52,0x63,0xC2,0x00,0xF8,0x00,0x00,0xFF,0x00,0x00,
  • 0x40,0x42,0x42,0x42,0x7F,0x22,0x23,0x22,0x20,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00,},//到
  • {0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xFC,0x08,0x00,0x00,0x00,
  • 0x00,0x07,0x02,0x02,0x02,0x02,0x3F,0x42,0x42,0x42,0x42,0x47,0x40,0x70,0x00,0x00,},//电
  • {0x80,0x80,0x82,0x82,0x82,0x82,0x82,0xE2,0xA2,0x92,0x8A,0x86,0x80,0xC0,0x80,0x00,
  • 0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,},//子
  • {0x00,0x80,0xC0,0xBC,0x84,0x84,0x84,0xF4,0x82,0x82,0x83,0x82,0x80,0xC0,0x80,0x00,
  • 0x00,0x40,0x20,0x10,0x0C,0x40,0x80,0x7F,0x00,0x00,0x04,0x08,0x30,0x60,0x00,0x00,},//乐
  • {0x00,0x00,0xFE,0x0A,0x2A,0x2A,0xAA,0x6A,0x2A,0x2A,0xAA,0x2A,0x2F,0x22,0x00,0x00,
  • 0x40,0x30,0x4F,0x48,0x48,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x4C,0x68,0x40,0x00,},//屋
  • };
  • void delay(u16 ms)
  • {
  •          u8 s=0;
  •     while(--ms)
  •                 {
  •                    for(s=0;s<88;s++);
  •                 }
  • }
  • u8 K=0;
  • void LedScan(u8 x)
  • {
  •     static u8 i = 0;
  •     for(i=0;i<16;i++)            //上半屏显示
  •    {a=0;
  •     b=1;
  •      P2 = (P2 & 0xf0) | i;
  •                    P0=led[x];
  •                  delay(2);
  •    }
  •     for(i=0;i<16;i++)            //下半屏显示
  •    {
  •                  a=1;
  •      b=0;
  •      P2 = (P2 & 0xf0) | i;
  •                    P0=led[x][i+16];
  •                  delay(2);
  •    }
  • }
  • void main()
  • {
  •           a=1;
  •           b=1;
  •         TMOD = 0x01;
  •     TH0 = 0x0D8;
  •     TL0 = 0x0F0;
  •     EA = 1;
  •     ET0 = 1;
  •     TR0 = 1;
  •     while(1)
  •                 {
  •                         LedScan(K);
  •                 }
  • }
  • void Timer0Interrupt(void) interrupt 1
  • {
  •          static u16 dd=0;
  •     TH0 = 0x0D8;
  •     TL0 = 0x0F0;
  •     dd++;
  •         if(dd==50)
  •         { dd=0;
  •           K++;
  •                 if(K==15)//显示的字数个数
  •                 {K=0;}
  •         }
  • }




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

本版积分规则

快速回复 返回顶部 返回列表
附近
店铺
微信扫码查看附近店铺
维修
报价
扫码查看手机版报价
信号元
件查询
点位图 AI维修
助手



芯片搜索

快速回复