51单片机 — MorseCode、《晴天》、计时器)

该项目通过模块化编程技术,实现了使用发光二极管显示MorseCode和音乐频谱的功能。数码管同时显示对应数字,以配合二极管的动态效果。代码详细展示了如何用C语言进行模块化设计,包括延时函数、数码管显示和二极管控制。此外,还提供了一个计时器功能,以二进制计数形式累计秒数,并在数码管上闪烁显示时、分、秒。
摘要由CSDN通过智能技术生成

目录

写在最前:本项目附视频效果展示,可点击文内链接查看。

一,模块化编程

二,功能介绍

三,bilibili链接视频

四,编写灵感


写在最前:本项目附视频效果展示,可点击文内链接查看。


一,模块化编程

模块化编程是一种软件设计技术,它强调将程序的功能分为独立的,可互换的模块,以使每个模块都包含执行所需功能的一个方面所必需的一切。

在本项目中具体实现方式是将Nixie.h、Nixie.c、Delay.h、Delay.c模块化。

Nixie.h

#ifndef __NIXIE_H__
#define __NIXIE_H__
void Nixie(unsigned char Location,Number,xms);
#endif

Nixie.c

#include <REGX52.H>
#include "Delay.h"
unsigned char NixieNumber[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

void Nixie(unsigned char Location,Number,xms)
{
	P0=0x00;
	switch(Location)
	{
		case 1:
			P0=0x01;break;//1ÁÁ 0Ãð
		case 2:
			P0=0x02;break;
		
	}
	
	P2=NixieNumber[Number];
	Delay(xms);
	//P2=0x00;//0ÁÁ 1Ãð
}

Delay.h

#ifndef __DELAY_H__
#define __DELAY_H__
void Delay(unsigned int xms);
#endif

Delay.c

void Delay(unsigned int xms)		//@12.000MHz
{
	while(xms--)
	{
		unsigned char i, j;

		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
	}
}

前部定义

#include <REGX52.H>
#include "Delay.h"
#include "Nixie.h"

sbit L1=P1^0;
sbit L2=P1^1;
sbit L3=P1^2;
sbit L4=P1^3;
sbit L5=P1^4;
sbit L6=P1^5;
sbit L7=P1^6;
sbit L8=P1^7;

unsigned int i;
unsigned int j;

int P=0x00;
int Hour=0;
int Min=0;
int S=0;

二,功能介绍

  • Morse Code

 本项目中,八个发光二极管全亮表示MorseCode中的长横杠,第一个发光二极管亮表示小点。

代码展示0~9的Morse Code,其中数码管显示正表示的数字,发光二极管负责显示MorseCode。

实现代码如下:

    //0
    for(i=0;i<100;i++)
	{Nixie(1,0,5);L1=0;L2=0;L3=0;L4=0;L5=0;L6=0;L7=0;L8=0;}
	P1=0xff;
	Delay(100);

	for(i&
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值