文章目录

  • 前言
  • 一、protues仿真
    • 安装软件
    • 绘制原理图
  • 二、keil程序编写
    • 1.
  • 三、仿真示例

前言

本次任务:基于protues仿真实现at89c51控制16×16点阵led屏实现流水文字滚动,按键实现暂停,反向,调速
需要用到的工具:keil5,protues8.9


提示:以下是本篇文章正文内容,下面案例可供参考

一、protues仿真

安装软件

protues是一款仿真软件,推荐使用最新版protues8.9具体下载地址:protues8.9安装

绘制原理图

由于官方所给库中只有8×8点阵,现有两个方案:1自行绘制一个16×16点阵教程
2,用四块8×8点阵拼接而成(由于技术有限选择方案二)

先点开元件库,在库里搜索我们需要的元件

接下来任选一个自己喜欢的颜色,同理选择at89c51芯片,74h138,按键,电阻电容等等。

左上部分为51最小系统固定格式,照抄就好

四块数码点阵图

完整示例

二、keil程序编写

1.

代码如下(示例):

#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define data1 P0
#define data2 P2
sbit s1=P3^6;
sbit s2=P3^7;
sbit s3=P3^4;
bit fangxiang;
uint net=0,sl=128;
int i = 20;
int alt =0;
bit mode;
uchar code tab[]={//0x00,0x01,0x00,0x02,0x03,0xEC,0x02,0x20,0x02,0x20,0x02,0x28,0xFE,0x26,0x12,0x20,0x12,0x28,0x12,0x26,0x12,0x20,0x13,0xE0,0x10,0x08,0x10,0x07,0x00,0x00,0x00,0x00,/*"点",0*/
/* (16 X 16 , 宋体 ) */0x01,0x00,0x01,0x00,0x02,0x00,0x04,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0xC3,0xFF,0x20,0x00,0x10,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x00,0x01,0x00,0x00,0x00,/*"个",1*/
/* (16 X 16 , 宋体 ) */0x00,0x81,0x00,0x81,0x08,0x82,0x88,0x82,0x68,0x84,0x08,0x88,0x08,0xB0,0x0F,0xC0,0x08,0xB0,0x08,0x88,0x28,0x84,0xC8,0x82,0x08,0x82,0x00,0x81,0x00,0x81,0x00,0x00,/*"关",2*/
/* (16 X 16 , 宋体 ) */0x08,0x20,0x06,0x20,0x40,0x7E,0x31,0x80,0x00,0x02,0x10,0x02,0x10,0x82,0x10,0x82,0x90,0x82,0x5F,0xFE,0x10,0x82,0x10,0x82,0x10,0x82,0x10,0x82,0x00,0x02,0x00,0x00,/*"注",3*/
/* (16 X 16 , 宋体 ) */0x02,0x00,0x42,0x00,0x33,0xFC,0x00,0x08,0x00,0x54,0x3F,0xC8,0x6A,0x52,0xAA,0x61,0x3F,0xFE,0x01,0x00,0x08,0xC2,0x08,0x01,0xFF,0xFE,0x08,0x00,0x08,0x00,0x00,0x00,/*"谢",4*/
/* (16 X 16 , 宋体 ) */0x02,0x00,0x42,0x00,0x33,0xFC,0x00,0x08,0x00,0x54,0x3F,0xC8,0x6A,0x52,0xAA,0x61,0x3F,0xFE,0x01,0x00,0x08,0xC2,0x08,0x01,0xFF,0xFE,0x08,0x00,0x08,0x00,0x00,0x00,/*"谢",5*/
/* (16 X 16 , 宋体 ) */0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",5*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*" ",6*/};void delay(uint z)
{uchar x;for(;z>0;z--)for(x=110;x>0;x--);
}
void Delay20ms()        //@11.0592MHz
{unsigned char i, j;_nop_();_nop_();i = 216;j = 36;do{while (--j);} while (--i);
}void xianshi()
{ uchar aa,i;for(i=0;i<16;i++){P1=i; data1=tab[net+aa]; aa++;data2=tab[net+aa]; aa++;delay(5);   data1=0;  data2=0;  P1=0x00;  if(aa>30) aa=0;  }
}void main()
{ET1=1;    EA=1;   TR1=1;    while(1)     {xianshi();  if(s1==0)   {delay(30);  TR1=~TR1;   while(!s1)xianshi();delay(30);}if(s2==0)    {delay(30);         fangxiang=~fangxiang;  while(!s2)xianshi();delay(30);}if(s3==0){Delay20ms();alt = 0;i=i-9;if(i<0){i=20;}            Delay20ms();}
}}
void timer1() interrupt 3
{alt++;if(alt==i)          {alt=0;if(fangxiang==0)    {net=net+2;if(net>sl)  net=0;}else              {net=net-2;if(net<2)net=sl;   }}}

上面是main函数,下面是头文件

/*--------------------------------------------------------------------------
INTRINS.HIntrinsic functions for C51.
Copyright (c) 1988-2010 Keil Elektronik GmbH and ARM Germany GmbH
All rights reserved.
--------------------------------------------------------------------------*/#ifndef __INTRINS_H__
#define __INTRINS_H__#pragma SAVE#if defined (__CX2__)
#pragma FUNCTIONS(STATIC)
/* intrinsic functions are reentrant, but need static attribute */
#endifextern void          _nop_     (void);
extern bit           _testbit_ (bit);
extern unsigned char _cror_    (unsigned char, unsigned char);
extern unsigned int  _iror_    (unsigned int,  unsigned char);
extern unsigned long _lror_    (unsigned long, unsigned char);
extern unsigned char _crol_    (unsigned char, unsigned char);
extern unsigned int  _irol_    (unsigned int,  unsigned char);
extern unsigned long _lrol_    (unsigned long, unsigned char);
extern unsigned char _chkfloat_(float);
#if defined (__CX2__)
extern int           abs       (int);
extern void          _illop_   (void);
#endif
#if !defined (__CX2__)
extern void          _push_    (unsigned char _sfr);
extern void          _pop_     (unsigned char _sfr);
#endif#pragma RESTORE#endif

将头文件导入即可

具体不做过多赘述;
如果需要修改文字内容,可以用取模软件

取模软件地址
需要注意,在放入程序后,需要将每行前后的中括号去掉

三、仿真示例

keil生成hex文件后,用protues打开


按下第一个按键即可更改速度;第二个按键暂停/启动;第三个按键反向滚动

到这里就结束啦,本人水平有限,如有错误多多指教!!

51单片机16×16点阵led屏滚动显示+protues仿真+按键功能(史上最全)相关推荐

  1. 51单片机实现c语言字母滚动,使用51单片机实现点阵汉字平滑滚动显示

    使用51单片机实现点阵汉字平滑滚动显示 #说明:采用的芯片是89C51,LED点阵屏的规格是16*16,同时使用了两个74HC595芯片,字模生成软件在文末有网盘链接. 1 连接原理图 整体的电路连接 ...

  2. 51单片机IIC 12864 OLED屏幕滚动显示仿真

    51单片机IIC 12864 OLED屏幕滚动显示仿真 程序代码接着前面文章<STC15W408AS单片机IIC驱动0.96寸OLED显示> 这里不再贴出代码了,前面有一篇有实物效果演示, ...

  3. 51单片机AD转换pcf8591+数码管显示+Proteus仿真二

    51单片机AD转换pcf8591+数码管显示+Proteus仿真二

  4. 【51单片机】点阵LED的显示实验

    点阵LED显示实验 前言 一.环境 二.硬件 1.了解Matrix-8×8就像你需要了解女朋友 2.正确地连接线路就像你需要以正确的方式让她开心. 三.软件 1.思路就是有一个给她惊喜的想法 2.头文 ...

  5. 基于51单片机实现旋转LED灯报警(Proteus仿真)

    WeChat:[嵌入式工程师成长日记] https://mp.weixin.qq.com/s?__biz=Mzg4Mzc3NDUxOQ==&mid=2247484096&idx=2&a ...

  6. 51单片机入门:LED灯闪烁(原理图+仿真+程序)

    目录 硬件电路设计 仿真电路设计 程序设计 仿真实现 在用51单片机点亮一个LED小灯的基础上,下面尝试将一个LED灯闪烁起来. 硬件电路设计 结合51单片机最小系统的知识,利用AD19画好最小系统电 ...

  7. C语言16x16点阵显示汉字程序,单片机+16x16点阵,汉字滚动显示程序(带仿真)

    2013-6-26 04:31 上传 点击文件名下载附件 下面是源代码预览: #include #include #define DATAOUT P2 //P2 use as data, you ca ...

  8. 基于51单片机声音噪声分贝检测采集显示proteus仿真原理图PCB程序设计

    硬件设计 (末尾附文件) 功能说明: 1.基于STC89C51/52(与AT89S51/52.AT89C51/52通用)单片机作为主控制器 2.采用LCD1602液晶显示屏实时显示分贝值: 3.使用小 ...

  9. 基于51单片机的时钟闹钟温度计LCD1602显示proteus仿真原理图PCB

    功能介绍: 0.本系统采用STC89C52作为单片机 1.LCD1602液晶实时显示时间/当前温度 2.按键可进行闹钟设置和温度上下限设置 3.到达闹钟时间或温度超过阈值范围,蜂鸣器报警 4.到达闹钟 ...

最新文章

  1. python查题_python 数据库连表查询习题
  2. python最基本的两种循环结构_Python基础 — 分支和循环
  3. 如何将文件加添加成webapp
  4. android源代码
  5. ZOJ 3631 Watashi's BG
  6. Concepts in Games Development(游戏开发概述) 公开课笔记
  7. 有哪些朋友圈励志说说短句?
  8. leetcode 503. 下一个更大元素 II
  9. 计算机组成原理(第三版)唐朔飞-课后习题(完整版)
  10. 翻译: 顶级人工智能会议 CVPR NeurIPS AAAI 等
  11. 魔兽地图编辑器使用自定义图标的方法
  12. 书犹药也,善读之可以医愚
  13. 961 计算机学科专业基础综合,2018年北京航空航天大学961计算机学科专业基础综合考研复习资料...
  14. 最简单的全球基站定位接口API
  15. Python遗传算法求一元函数最大值
  16. 树莓派镜像备份/内核编译和更换/EC200U上网
  17. 煤矿用计算机,计算机技术在煤矿安全生产中应用
  18. SASE:基于数字身份标识的网络与安全访问云服务
  19. C语言程序设计笔记(浙大翁恺版) 第五周:循环控制
  20. MSSQL 服务器主体 无法在当前安全上下文下访问数据库,错误:916

热门文章

  1. thinkphp框架的使用
  2. LiteOS 内存管理
  3. C++获取屏幕分辨率(屏幕窗口大小),屏幕显示比例(DPI)几种方法
  4. cmd中运行exe的简单命令
  5. Android studio+SQLCipher加密SQLite数据库的几个坑
  6. 紧急救援 dijkstra
  7. L2-001紧急救援c++
  8. 文件服务器上传文件流程,上传文件到服务器流程
  9. 华强北耳机值得买吗?质量怎么样?靠谱吗?深度拆解悦虎二代1562m耳机!
  10. JSR303字段校验