硬件设计

8x16点阵方案如下
该方案支持左右滚动,可通过按键手动控制方向。

仿真图:

8x8点阵方案如下

该方案支持多种模式,例如0-9数字显示,跳动心等等

仿真图:

程序设计

程序1:

#include <reg51.h>
#include <intrins.h>
#include <stdio.h>
#define uchar unsigned char
#define uint unsigned int
sbit RCK_Pin = P3^2;
sbit k1 = P1^1;
sbit k2 = P1^3;
uchar flag=1;
uchar code DSY_CONTENT_8x8_0[]=
{ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xE3,0x81,0x00,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xE7,0xE7,0xFF,0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,/*"天"*/0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,/*"天"*/0xFF,0xC0,0xB7,0xD3,0xD3,0xDF,0xC0,0xFF,/*"向"*/0xFF,0xFD,0xFD,0x81,0xED,0xED,0xFD,0xFF,/*"上"*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};
uchar code DSY_CONTENT_8x8_1[]=
{ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xE3,0x81,0x00,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xC3,0xE7,0xE7,0xFF,0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,/*"天",0*/0xEE,0xAD,0xAB,0x87,0xA3,0xAD,0xEE,0xFF,/*"天",1*/0xFF,0xC0,0xDF,0xD3,0xD3,0xB7,0xC0,0xFF,/*"向",2*/0xFF,0xFD,0xED,0xED,0x81,0xFD,0xFD,0xFF,/*"上",3*/0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
};uchar Scan_BIT = 0x01;
uchar Scan_BIT1 = 0x80;
uchar Offset,Data_Index = 0;
uchar Offset1,Data_Index1 = 0;
void Delay(uint t)
{uchar i;while(t--) for(i=0;i<120;i++);
}void T0_Led_Display_Control() interrupt 1
{TH0 = (65536-1000)/256;TL0 = (65536-1000)%256;if(flag==0)
{Scan_BIT1=0x80;
Data_Index1 = 0;Scan_BIT = _cror_(Scan_BIT,1);putchar(Scan_BIT);while(TI == 0);putchar( DSY_CONTENT_8x8_0[Offset + Data_Index + 8]);while (TI==0);putchar( DSY_CONTENT_8x8_0[Offset + Data_Index ]);while(TI == 0);Data_Index = (Data_Index + 1) % 8;RCK_Pin = 1;RCK_Pin = 0;
}if(flag==1){Scan_BIT=0x01;Data_Index = 0;Scan_BIT1 = _crol_(Scan_BIT1,1);putchar(Scan_BIT1);while(TI == 0);putchar( DSY_CONTENT_8x8_1[Offset1 + Data_Index1]);while (TI==0);putchar( DSY_CONTENT_8x8_1[Offset1 + Data_Index1 + 8 ]);while(TI == 0);Data_Index1 = (Data_Index1 + 1) % 8;RCK_Pin = 1;RCK_Pin = 0;
}
}void main()
{uchar i;TMOD = 0x01;TH0 = (65536-1000) / 256;TL0 = (65536-1000) % 256;IE = 0x82;TCON =0x00;TI = 1;while(1){for(i=0;i<64;i++){

程序2:

#include <reg52.h>sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit KEY   = P3^5;unsigned int cnt,m,stage,sec=1000;unsigned char code image[][8] = {  {0xFF,0xE7,0xDB,0xDB,0xDB,0xDB,0xE7,0xFF},     //0{0xFF,0xE7,0xEF,0xEF,0xEF,0xEF,0xC3,0xFF},     //1{0xFF,0xE3,0xDF,0xDF,0xE7,0xFB,0xC3,0xFF},     //2{0xE3,0xDF,0xDF,0xE7,0xDF,0xDF,0xE3,0xFF},     //3{0xFF,0xEF,0xE7,0xEB,0xC3,0xEF,0xEF,0xFF},      //4{0xFB,0xC3,0xFB,0xE3,0xDF,0xDF,0xE3,0xFF},     //5{0xE7,0xFB,0xFB,0xE3,0xDB,0xDB,0xE7,0xFF},    //6{0xFF,0xC3,0xDF,0xDF,0xDF,0xDF,0xDF,0xFF},    //7{0xE7,0xDB,0xDB,0xE7,0xDB,0xDB,0xE7,0xFF},    //8{0xE7,0xDB,0xDB,0xC7,0xDF,0xDF,0xE7,0xFF}     //9
};
unsigned char code image1[][8] = {              //心跳{0xFF,0x99,0x00,0x00,0x00,0x81,0xC3,0xE7},  //大心{0xFF,0xFF,0xDB,0x81,0x81,0xC3,0xE7,0xFF},  //中心{0xFF,0xFF,0xFF,0xDB,0xC3,0xE7,0xFF,0xFF},  //小心
};unsigned char code image3[][8] = {              //小坦克{0xFE,0xFF,0xE3,0xE3,0xF7,0xFF,0xFF,0xFF},
{0xFE,0xFF,0xFF,0xE3,0xE3,0xF7,0xFF,0xFF},
{0xFE,0xFF,0xFF,0xFF,0xE3,0xE3,0xF7,0xFF},
{0xFE,0xFF,0xFF,0xFF,0xF3,0xE3,0xF3,0xFF},
{0xFE,0xFF,0xFF,0xFF,0xE7,0xC7,0xE7,0xFF},
{0xFE,0xFF,0xFF,0xFF,0xCF,0x8F,0xCF,0xFF},
{0xFE,0xFF,0xFF,0xFF,0xDF,0x8F,0x8F,0xFF},
{0xFE,0xFF,0xFF,0xDF,0x8F,0x8F,0xFF,0xFF},
{0xFE,0xFF,0xDF,0x8F,0x8F,0xFF,0xFF,0xFF},
{0xFE,0xDF,0x8F,0x8F,0xFF,0xFF,0xFF,0xFF},
};unsigned char code image2[] = {                  //0-->9平移0xFF,0xE7,0xDB,0x5A,0x5A,0xDB,0xE7,0xFF,0xFF,0xE7,0xEF,0x6E,0x6E,0xEF,0xC3,0xFF,0xFF,0xE3,0xDF,0x5E,0x66,0xFB,0xC3,0xFF,0xE3,0xDF,0xDF,0x66,0x5E,0xDF,0xE3,0xFF,0xFF,0xEF,0xE7,0x6A,0x42,0xEF,0xEF,0xFF,0xFB,0xC3,0xFB,0x62,0x5E,0xDF,0xE3,0xFF,0xE7,0xFB,0xFB,0x62,0x5A,0xDB,0xE7,0xFF,0xFF,0xC3,0xDF,0x5E,0x5E,0xDF,0xDF,0xFF,0xE7,0xDB,0xDB,0x66,0x5A,0xDB,0xE7,0xFF,0xE7,0xDB,0xDB,0x46,0x5E,0xDF,0xE7,0xFF,
};void Delay10ms()
{unsigned char i, j;i = 20;j = 113;do{while (--j);} while (--i);
}void main()
{EA = 1;       //使能总中断ADDR3 = 0;TMOD = 0x01;  //设置T0为模式1TH0  = 0xFC;  //为T0赋初值0xFC67,定时1msTL0  = 0x67;ET0  = 1;     //使能T0中断TR0  = 1;     //启动T0while (1){if(stage>3)stage=0;if(KEY==0)  {Delay10ms();if(KEY==1)stage++;}if(cnt >= sec){cnt = 0;m++;}}
}
/* 定时器0中断服务函数 */
void InterruptTimer0() interrupt 1
{static unsigned char i = 0;  //动态扫描的索引static unsigned char tmr = 0;  //250ms软件定时器static unsigned char index = 0;  //图片刷新索引TH0 = 0xFC;  //重新加载初值TL0 = 0x67;P0 = 0xFF;   //显示消隐cnt++;/***********************模式一:数字闪出***********************************/if(stage==0)                    {sec = 1000;if(m>=10)m=0;switch (i){case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image[m][0]; break;case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image[m][1]; break;case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image[m][2]; break;case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image[m][3]; break;case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image[m][4]; break;case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image[m][5]; break;case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image[m][6]; break;case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image[m][7]; break;default: break;}}/**********************模式二:动态爱心************************************/else if(stage==1){sec = 150;if(m>=3)m=0;switch (i){case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image1[m][0]; break;case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image1[m][1]; break;case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image1[m][2]; break;case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image1[m][3]; break;case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image1[m][4]; break;case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image1[m][5]; break;case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image1[m][6]; break;case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image1[m][7]; break;default: break;}}/**********************模式三:坦克走动**************************************/else if(stage==2){sec = 800;if(m>=10)m=0;switch (i){case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image3[m][0]; break;case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image3[m][1]; break;case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image3[m][2]; break;case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image3[m][3]; break;case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image3[m][4]; break;case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image3[m][5]; break;case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image3[m][6]; break;case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image3[m][7]; break;default: break;}}/**********************模式四:数字平移****************************************/else if(stage==3){switch (i){

附:http://www.jh-tec.cn/archives/7541

基于51单片机的8x16及8x8点阵滚动广告牌proteus仿真相关推荐

  1. 【033】基于51单片机的步进电机角度测量与速度设定Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的步进电机角度测量与速度设定proteus仿真设计一份: (2).基于51单片机的步进电机角度测量与速度设定proteus仿真设计keli源代码一份: (3) ...

  2. 1430基于51单片机的管道压力检测及泄漏检测Proteus仿真

    [前言] hello 大家好,今天给大家讲一讲基于51单片机的管道压力检测及泄漏检测Proteus仿真. 该项目的功能如下: 1.LCD1602液晶实时显示当前始端和末端压力,压力阈值 2.按键启动/ ...

  3. 基于51单片机CO一氧化碳可燃气体浓度检测超限报警Proteus仿真

    资料编号:160   下面是相关功能视频演示: 160-基于51单片机CO一氧化碳可燃气体浓度检测超限报警Proteus仿真(源码+仿真+全套资料) 功能介绍: 采用51单片机作为CPU,ADC083 ...

  4. 基于51单片机的温湿度光强二氧化碳气体家庭环境检测proteus仿真

    硬件设计 仿真图1: 该设计是基于51单片机的温湿度光强二氧化碳检测系统,由LCD1602作为显示器,温湿度采用的SHT11传感器,ADC采用的TLC2543,光强就是光敏传感器,气体检测这里采用的是 ...

  5. 基于51单片机的智能冰箱鱼缸淬火炉温度控制系统proteus仿真

    今天讲解一个温度控制系统的设计,温度控制系统我们在家庭冰箱.鱼缸或者工厂的淬火炉中常常见到,原理其实不复杂:通过人机交互设置好温度的工作范围,外设具有降温和升温设备,当环境温度高于预设温度值,降温设备 ...

  6. 基于51单片机的16x32点阵滚动广告牌 proteus仿真原理图程序设计

    硬件设计 仿真图: 支持左右轮动 程序设计 #include <REG51.H> #define FOSC 12 //定义晶振频率 #define INIT_TH0 0x3C //定时器T ...

  7. 基于51单片机的16x16点阵滚动广告牌 proteus仿真 左右滚动 按键暂停

    硬件设计 (末尾附文件) 该方案支持左右滚动,两个按键,其中之一支持暂停/启动,另外一个支持换方向. 原理图: 仿真图: 程序设计 #include<reg51.h> #include&l ...

  8. 基于51单片机八路抢答器课程设计(含proteus仿真图及代码)

    一.设计要求: 1.可满足8个选手的抢答 2.具有主持者控制开关,用来控制系统清零和抢答开始 3.抢答器具有数据锁存功能.显示功能和声音提示功能 4.抢答开始后,若有选手按动抢答器按钮,编号立即锁存, ...

  9. 基于51单片机的数字电容容值测量仪proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.系统支持15pF~450uF电容测量 2.按键可更改测量量程 3.除了采用LCD1602可以实时显示测量参数,同时具有LED可以显示各个档位 ...

最新文章

  1. 2022-2028年全球与中国闪光棉市场研究及前瞻分析报告
  2. Oracle伪列ROWID和ROWNUM
  3. Python爬虫应用实战-网站数据爬取及数据分析
  4. Sql Server 分区演练
  5. 分布式设计与开发(一)------宏观概述
  6. python分析推特_用Python关注者的关注者抓取Twitter数据的最快方法
  7. Visual Studio提示——使用数据提示
  8. python 二分查找算法_Python实现二分查找法
  9. 「专题训练」Collecting Bugs(POJ-2096)
  10. 测试团队成功适应敏捷的障碍
  11. CES直击:戴尔连发多款ALIENWARE与XPS新品
  12. 基于Android平台的x264的移植与应用(一):移植篇
  13. excel导入数据到mysql数据库
  14. 电影院订票选座小程序,电影购票小程序,微信小程序电影院订票系统毕设作品
  15. IP地址和 MAC地址详解
  16. 北京休闲好去处 适合春游的地方
  17. 记一次gitlab添加用户收不到邮件的解决办法
  18. 咬住爱的甜蜜 像夹心巧克力 连懒懒的猫咪 也偷偷看你 难以抗拒你的美丽 裙摆摇不停 只为了与你相遇
  19. 蓝牙各种版本的区别(推荐)
  20. 微型计算机DEC影响零标志位吗,汇编语言中常用指令对标志位寄存器的影响

热门文章

  1. 计算机开启telnet服务,win10打开telnet服务如何操作_win10怎么开启电脑telnet服务-win7之家...
  2. (附源码)计算机毕业设计SSM基于的二手车商城
  3. L - 小鑫の日常系列故事(五)——卡片游戏
  4. 全球与中国厨房除油剂市场现状及未来发展趋势
  5. vue项目中设置全局loading时 遇到多个请求时loading加载显示问题
  6. 如何控制HTML中DIV的加载顺序
  7. 1小时教你快速搭建蓝鲸CMDB运行平台
  8. 汇佳学校家长专栏|家校携手,共创“教育的第三种选择”
  9. 牛市初期标志:半月一次的暴涨暴跌?
  10. FFmpeg crop裁剪原理记录一个bug