IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 小开脑洞(51单片机组合编程:MorseCode、《晴天》、计时器) -> 正文阅读

[嵌入式]小开脑洞(51单片机组合编程:MorseCode、《晴天》、计时器)

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

目录

一,模块化编程

二,功能介绍

三,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?e
		case 2:
			P0=0x02;break;
		
	}
	
	P2=NixieNumber[Number];
	Delay(xms);
	//P2=0x00;//0áá 1?e
}

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=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=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=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=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;
	P0=0x00;
	Delay(300);			
	
		
	//1
	for(i=0;i<100;i++)
	{Nixie(1,1,5);L1=0;}
	P1=0xff;
	Delay(100);

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

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

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

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

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

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

	for(i=0;i<100;i++)
	{Nixie(1,3,5);L1=0;}
	P1=0xff;
	Delay(100);

	for(i=0;i<100;i++)
	{Nixie(1,3,5);L1=0;}
	P1=0xff;
	Delay(100);	

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

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

	for(i=0;i<100;i++)
	{Nixie(1,4,5);L1=0;}
	P1=0xff;
	Delay(100);
	
	for(i=0;i<100;i++)
	{Nixie(1,4,5);L1=0;}
	P1=0xff;
	Delay(100);

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

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

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

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

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

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

	for(i=0;i<100;i++)
	{Nixie(1,9,5);L1=0;L2=0;L3=0;L4=0;L5=0;L6=0;L7=0;L8=0;}
	P1=0xff;
	Delay(100);
		
	for(i=0;i<100;i++)
	{Nixie(1,9,5);L1=0;}
	P1=0xff;
	P0=0x00;
	Delay(300);
	
	//爆闪
	L1=0;L2=0;L3=0;L4=0;L5=0;L6=0;L7=0;L8=0;
	Delay(100);
	L1=1;L2=1;L3=1;L4=1;L5=1;L6=1;L7=1;L8=1;
	Delay(100);		
	
	L1=0;L2=0;L3=0;L4=0;L5=0;L6=0;L7=0;L8=0;
	Delay(100);
	L1=1;L2=1;L3=1;L4=1;L5=1;L6=1;L7=1;L8=1;
	Delay(100);	
  • 《晴天》

本项目,八个发光二极管展示音乐频谱,数码管显示歌词简谱。

实现代码如下:

for(i=0;i<100;i++)
{Nixie(1,3,5);L1=0;L2=0;L3=0;}
L1=1;L2=1;L3=1;
for(i=0;i<100;i++)
{Nixie(1,2,5);L1=0;L2=0;}
L1=1;L2=1;
for(i=0;i<100;i++)
{Nixie(1,4,5);L1=0;L2=0;L3=0;L4=0;}
L1=1;L2=1;L3=1;L4=1;
for(i=0;i<100;i++)
{Nixie(1,3,7);L1=0;L2=0;L3=0;}
L1=1;L2=1;L3=1;
for(i=0;i<100;i++)
{Nixie(1,1,5);L1=0;}
L1=1;
for(i=0;i<100;i++)
{Nixie(1,5,4);L1=0;L2=0;L3=0;L4=0;L5=0;}
L1=1;L2=1;L3=1;L4=1;L5=1;
for(i=0;i<100;i++)
{Nixie(1,7,4);L1=0;L2=0;L3=0;L4=0;L5=0;L6=0;L7=0;}
L1=1;L2=1;L3=1;L4=1;L5=1;L6=1;L7=1;
for(i=0;i<100;i++)
{Nixie(1,1,5);L1=0;}
L1=1;
for(i=0;i<100;i++)
{Nixie(1,7,5);L1=0;L2=0;L3=0;L4=0;L5=0;L6=0;L7=0;}
L1=1;L2=1;L3=1;L4=1;L5=1;L6=1;L7=1;
for(i=0;i<100;i++)
{Nixie(1,1,14);L1=0;}
L1=1;
P0=0x00;
Delay(100);

for(i=0;i<100;i++)
{Nixie(1,1,6);L1=0;}
L1=1;
for(i=0;i<100;i++)
{Nixie(1,6,9);L1=0;L2=0;L3=0;L4=0;L5=0;L6=0;}
L1=1;L2=1;L3=1;L4=1;L5=1;L6=1;
for(i=0;i<100;i++)
{Nixie(1,6,5);L1=0;L2=0;L3=0;L4=0;L5=0;L6=0;}
L1=1;L2=1;L3=1;L4=1;L5=1;L6=1;
for(i=0;i<100;i++)
{Nixie(1,5,14);L1=0;L2=0;L3=0;L4=0;L5=0;}
L1=1;L2=1;L3=1;L4=1;L5=1;
for(i=0;i<100;i++)
{Nixie(1,4,4);L1=0;L2=0;L3=0;L4=0;}
L1=1;L2=1;L3=1;L4=1;
for(i=0;i<100;i++)
{Nixie(1,3,5);L1=0;L2=0;L3=0;}
L1=1;L2=1;L3=1;
for(i=0;i<100;i++)
{Nixie(1,2,4);L1=0;L2=0;}
L1=1;L2=1;
for(i=0;i<100;i++)
{Nixie(1,3,3);L1=0;L2=0;L3=0;}
L1=1;L2=1;L3=1;
for(i=0;i<100;i++)
{Nixie(1,4,6);L1=0;L2=0;L3=0;L4=0;}
L1=1;L2=1;L3=1;L4=1;
for(i=0;i<100;i++)
{Nixie(1,3,20);L1=0;L2=0;L3=0;}
L1=1;L2=1;L3=1;

P0=0x00;
Delay(1000);
  • 计时器

本项目中,八个发光二极管以二进制计数形式累计秒数,每满60秒刷新以重新计数。数码管一秒内闪烁三次,分别表示时、分、秒。

实现代码如下:
?

for(Hour=0;;Hour++)
	{
		for(Min=0;Min<60;Min++)
		{
			P=0x01;
			for(i=0;i<60;i++)
			{

				P1=~P;
				Delay(100);
				P1=0xff;
				P++;
				S++;
				
				for(j=0;j<100;j++)
				{Nixie(1,Hour/10,1);
				Nixie(2,Hour%10,1);}
				
				P2=0xff;
				P0=0x03;
				P2=0x7f;
				Delay(50);//
				
				for(j=0;j<300;j++)
				{Nixie(1,Min/10,1);
				Nixie(2,Min%10,1);}
				
				P2=0xff;
				P0=0x03;
				P2=0x7f;
				Delay(50);//
				
				for(j=0;j<300;j++)
				{Nixie(1,S/10,1);
				Nixie(2,S%10,1);}
				
				P2=0xff;
			}
			S=0;
		}
		Min=0;
	}

三,bilibili链接视频

展示视频链接:单片机组合编程https://www.bilibili.com/video/BV1jS4y1d7rn?share_source=copy_webhttps://www.bilibili.com/video/BV1jS4y1d7rn?share_source=copy_web


四,编写灵感

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-11 12:52:08  更:2021-11-11 12:52:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:17:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码