您的位置 首页 开关

单片机实习陈述——点阵的动态显示

一、功能介绍程序实现字幕不同方向,不同速度滚动显示的效果,字幕滚动方向和速度可以通过键盘操作改变。当出现静态笑脸图案时,可以操作

一、功用介绍

程序完成字幕不同方向,不同速度翻滚显现的作用,字幕翻滚方向和速度能够经过键盘操作改动。
当呈现静态笑脸图画时,能够操作键盘,键盘按下时,会听到蜂鸣提示音。此刻按下第一个或第二个键,别离显现向左和向上的“小”“石”“山”“庄”和一个笑脸的翻滚字幕的显现,当再次呈现静态的现笑脸时,按下第三个或第四个键,别离下降和进步字幕翻滚的速度。然后,能够再次按下第一个或第二个键,来检测改动速度后字幕翻滚的作用。

二、硬件原理即完成
有关部分的电路图如下:



有关部分电路阐明:
点阵显现部分:CPU的P0.0~P0.7口接8*8LED点阵的COM1~COM8端,操控点阵行的显现;P2.0~P2.7口经过74HC573接8*8LED点阵的RED1~RED8,寄存点阵每行显现的数据。从程序中获取数据后操控点阵的显现。COM端为0,表明该行或许亮起;RED端为1,表明某行该列亮。
按键完成部分:CPU的P3.2~P3.5口别离接KEY1~KEY4,用于接纳从键盘输入的操控信息。KEY等于0,表明该按键按下;不然,没有按下。
蜂鸣器部分:CPU的P3.7接蜂鸣器的BEE口,用于操控蜂鸣器。低电平蜂鸣器蜂鸣,高电平安静。

一、软件原理及完成

1.全体思路
主程序用while循环履行显现和几个分支句子,完成用键盘对翻滚方向和翻滚速度的操控。
翻滚作用原理相似动画片的原理,逐屏显现错位一行或一列的字幕,然后到达横向或纵向翻滚的作用。横向翻滚的完成只需将RED端的数据向右和向左移位,并将每次移位后的数据存储于中心变量中,用于显现输出。纵向翻滚的完成需求循环操控输出数据的开始方位,每次循环输出的开始方位向后移一个元素,然后完成逐行向上翻滚的作用。
用一个全局变量来操控翻滚速度,该全局变量能够经过键盘的操作添加或减小,然后完成键盘操控速度。
程序特色:主程序别离调用子程序,子程序再调用子程序,最多到达了调用三层子程序。这样的子程序嵌套调用能够进步程序代码的重用率,一起使主程序看起来简练、明晰。例如,程序中完成向左翻滚的部分调用了函数disp_moveleft函数,该函数又别离调用了adjust_moveright和adjust_moveleft函数,用于别离完成逐列显现出完好的字符和字符显现彻底后,逐列左移直到悉数移出。

详细的程序部分功用拜见程序源代码中的注释。

2.程序大体流程图如下:

3.程序原代码如下:
#include
#include
uchar code sz[][8]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //null
0x08,0x08,0x08,0x 2a,0x49,0xa8,0x18,0x08, //小
0xff,0x10,0x10,0x3e,0x52,0x92,0x12,0x1e, //石
0x08,0x08,0x08,0x08,0x49,0x49,0x49,0x7f, //山
0x08,0x3f,0x20,0x24,0x2e,0x24,0x44,0x9f, //庄
0x00,0x42,0xA5,0x00,0x00,0xff,0x42,0x3C, //smile
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 //null
};
uchar code smile[][8]={
0x00,0x00,0xa5,0x42,0x00,0x00,0x24,0x18,
0x00,0x00,0xe7,0x00,0x00,0x3c,0x42,0x3c,
0x00,0x42,0xA5,0x00,0x00,0xff,0x42,0x3C
};
uchar temp[8]={0}; //用于暂时寄存某一时间屏幕上显现的字符或字符某部分的图画
uchar time=5; //用于操控速度
void delayms(uchar x) //延时一段时间(详细由参数而定)
{
uchar i;
uint16 j;
for(i=x;i>0;i–)
for(j=5000;j>0;j–);
}
void delay()
{
uchar i;
for(i=150;i>0;i–);
}
void disp_dat(uchar x) //显现一屏
{
uchar i,j,k,l;
for(j=x;j>0;j–)
{
for(k=3;k>0;k–)
{
l=0xfe;
for(i=0;i<8;i++)
{
P2=0;
P0=l;
P2=temp[i];
delay();
l<<=1;
l++;
}
}
}
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/260789.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部