单片机流水灯显示方式
对于单片机的显示方式有很多种:闪烁,交替,流水灯等等。但今天我做的就是流水灯,但实际上所用的代码都差不多,只有把显示方式的子程序改一下即可。我用到的语言是C语言,而且是用键盘控制的。
只要把相应的电平变为低电平就可以了;相反,如果要接LED熄灭,就要把相应的电平变为高电平;同理,接在P1.1~P1. 7口的其他7个LED的点亮和熄灭的方法同LED1。因此,要实现流水灯功能,我们只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了。同样的道理,可以让8个灯左移显示方式,右移显示方式,开幕式显示方式。
在此我们还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了。
代码:
#include<reg52.h>
#include<absacc.h>
#include<intrins.h>
#define COM8255
XBYTE[0xF003]
#define PA8255
XBYTE[0XF000]
#define PB8255
XBYTE[0xF001]
#define PC8255 XBYTE[0xF002]
#define uchar
unsigned char
#define u8
unsigned char
code const u8
SegArray1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //左移方式
code const u8
SegArray3[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //右移方式
code const u8 SegArray2[]={0xe7,0xdb,0xbd,0x7e}; //开幕式方式
static unsigned char n,m=1;
unsigned char
key_read(void); //函数声明
void delay( uchar
a) //延时函数
{
uchar z;while(a--)
for(z=0;z<120;z++);
}
u8 AllKey()
{ PB8255 = 0x0; //全“0”->扫描口
return ~PC8255 & 0x3; //读键状态,取低二位
}
u8 keyi() //控制键盘的函数
{ u8 i,j;
if (AllKey() == 0) //调用判有无闭合键子程序{ return 0xff;}i
= 0xfe;
j = 0;while(i != 0xff){ PB8255 = i;if ((PC8255 & 0x1) ==
//0行有键闭合{ break;}else if ((PC8255 & 0x2)
== 0) //1行有键闭合
{ j += 8;break;}j++; //列计数器+1i = ((i<<1) | 1); }if
(i == 0xff)
return 0xff;return
j; //键号
}
void main()
{
u8
i;
COM8255=0x89;
while(1)
{
n=keyi();
if(n!=0xff)
m=n;
switch(m)
{
case
0x01: //左移方式
{
PA8255=SegArray1[i];
i++;
if(i>7)
i=0;
delay(200);
} break;
case
0x02: //右移方式
{
PA8255=SegArray3[i];
i++;
if(i>7)
i=0;
delay(200);
} break;
case 0x03: //闭幕式方式
{
PA8255=SegArray2[i];
i++;
if(i>3)
i=0;
delay(200);
} break;
}
}
}
连接实图
单片机流水灯显示方式相关推荐
- 51单片机流水灯制作
文章目录 51单片机流水灯制作 初试与复试 初试 复试 制作 分工 制作之硬件 制作之软件 总结 51单片机流水灯制作 我不得不承认自己的毅力实在是太差了,原先准备一星期写一篇博客的目标一致没有实现, ...
- 51单片机流水灯现象1
**` 51单片机流水灯程序 `** 初学者小白,分享上课时写的小程序和普中科技程序,感兴趣的可以瞧瞧. 程序如有相同冒犯了. /*********************************** ...
- 单片机流水灯三种实现
单片机流水灯的三种实现方式(由上至下,再重下到上) 原理图 一般使用单片机的P1口 输出,不需要加上拉电阻: 由原理图可以看出这里采用低电平输出. 一.采用数组方式进行字节定义,最好理解的方式 #in ...
- c语言流水灯程序详细讲解,用c语言编写单片机流水灯程序详解
用C语言编写的单片机流水灯程序 一.硬件电路 因为电路用单片机控制,所以电路非常简洁.其电路原理图见下图,印制板图如下图所示. ? 电路的核心部分是AT89C2051单片机,前面提到它有Pl和P3两组 ...
- AT89C51单片机流水灯c语言程序及详解(扫盲教程)
AT89C51单片机是我们学习单片机必学的一个单片机,也是单片机入门的教材,下面给大家展示一下流水灯的编写方法适合初学者 首先先在proteus画出仿真图,方便仿真程序 下面来编写程序,先来写入头函数 ...
- 89c52流水灯汇编语言,89c52单片机流水灯汇编程序
8路流水灯汇编语言程序的写法 汇编语言程序如下: ;假设1:D1~D8八个彩灯接在P1口,输出低电平发光 ;假设2:系统晶振为12MHz ;假设3:N = 5 ;程序如下: ORG 0000H MOV ...
- 基于STM32单片机流水灯仿真与程序设计
STM32单片机流水灯仿真与程序设计 摘要 本次程序设计和仿真是基于Proteus和keil的环境对STM32F103系列单片机进行流水灯设计,通过配置STM32的GPIO工作模式,实现LED的点亮和 ...
- 单片机流水灯串口控制流水灯
单片机流水灯串口控制的功能要求[从PC通过串口发送字符('R','L,'S),分别控制流水灯向右流动.向左流动.停止]: (1)编写完整的C语言程序实现功能要求,采用循环轮询结构: 答:循环轮 ...
- 80c51流水灯程序汇编语言,单片机流水灯汇编语言源代码大全(六款流水灯汇编语言源代码)...
描述 单片机流水灯汇编语言源代码大全(一) 单片机AT89C51的P1口接8个发光二极管,让这8个发光二极管能够双灯左移之后再双灯右移,形成霹雳灯的效果,如此循环5次后全灭,延时0.5S.灯右移,形成 ...
- 单片机流水灯全亮c语言程序,终极流水灯单片机C语言程序.doc
终极流水灯单片机C语言程序 #include #include #define uint unsigned int sbit beep=P2^3; void ji_ou(); void sx(); v ...
最新文章
- DOS命令八大经典案例
- 基于Docker部署Nginx
- 计算机室是学校重要的教学设施,计算机室治理规章.doc
- 专家票选! 2020 年度 10 篇人工智能经典论文(6-10)
- 【最新版】Java速成路线(急于找工作!)
- typora html代码无效,Typora优化-适合不懂CSS代码的小白
- 南瑞科技服务器型号,南瑞--NSC通讯概述
- Unity视频播放之Video Player的简单使用
- 《信号与系统》解读 前言:为什么要解读《信号与系统》?
- 打开.class文件
- STM32之红外接收
- HTML5之横向二三级,纵向三级导航栏
- 复联4定档 4.24——十一年21部漫威电影,用数据为你梳理口碑、票房、主演最佳...
- Linux内核ncsi驱动源码分析(二)
- 杭电计算机学硕还是专硕就业好,19计算机考研选学硕还是专硕?
- [UVA]1391 Astronauts 2-Sat 朝花夕拾
- Android自带浏览器打开网页
- 新的任务发布平台源码
- Swift调用摄像头之权限判断
- 达梦数据库-SQL优化之HINT-平坦化处理