2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 51单片机16×16点阵led屏滚动显示+protues仿真+按键功能(史上最全)

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

时间:2018-10-09 07:00:46

相关推荐

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

文章目录

前言一、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 P2sbit 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- Keil Elektronik GmbH and ARM Germany GmbHAll 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打开

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。