赞
踩
目录
写在最前:本项目附视频效果展示,可点击文内链接查看。
模块化编程是一种软件设计技术,它强调将程序的功能分为独立的,可互换的模块,以使每个模块都包含执行所需功能的一个方面所必需的一切。
在本项目中具体实现方式是将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;
本项目中,八个发光二极管全亮表示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;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。