栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Proteus + Keil单片机仿真教程(二)炫彩灯

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Proteus + Keil单片机仿真教程(二)炫彩灯

一、炫彩灯

参考图:

程序分析:每个小灯闪两次,依次累加常亮,最后所有灯再闪烁两次。

        这个程序主要是延时程序、单片机引脚口的控制,流程化控制,相对比较简单,首先还是绘制原理图,同上节一样,首先搜索对应的元件添加到元件列表当中,具体如下:

AT89C51   ----> 51单片机
BUTTON    ----> 按钮
CAP       ----> 普通电容
CAP-ELEC  ----> 电解电容要分正负极
CRYSTAL   ----> 晶振
LED-BULE  ----> LED发光二极管(蓝色)*颜色可以自己选择
RESISTOR  ----> 电阻

绘制原理图,如下图所示:

 源代码:

//添加头文件,C51必要文件,主要定义的是51/52系列单片机
#include "reg52.h"
//引用延时函数
void Delay1MS(unsigned int t);
//定义引脚,这里定义P0引脚
sbit P00 = P0^0;
sbit P01 = P0^1;
sbit P02 = P0^2;
sbit P03 = P0^3;
sbit P04 = P0^4;
sbit P05 = P0^5;
sbit P06 = P0^6;
sbit P07 = P0^7;

int main(void){
	//进入循环
	while(1){
		//P00闪烁两次
		P00 = 1;
		Delay1MS(200);
		P00 = 0;
		Delay1MS(200);
		P00 = 1;
		Delay1MS(200);
		P00 = 0;
		Delay1MS(200);
		
		//P00常亮1s
		P00 = 0;
		Delay1MS(1000);
		P00 = 1;
		Delay1MS(50);
		
		//P01闪烁两次
		P01 = 1;
		Delay1MS(200);
		P01 = 0;
		Delay1MS(200);
		P01 = 1;
		Delay1MS(200);
		P01 = 0;
		Delay1MS(200);
		
		//P00、P01常亮1s
		P00 = 0;
		P01 = 0;
		Delay1MS(1000);
		P00 = 1;
		P01 = 1;
		Delay1MS(50);
		
		//P02闪烁两次
		P02 = 1;
		Delay1MS(200);
		P02 = 0;
		Delay1MS(200);
		P02 = 1;
		Delay1MS(200);
		P02 = 0;
		Delay1MS(200);
		
		//P00、P01、P02常亮1s
		P00 = 0;
		P01 = 0;
		P02 = 0;
		Delay1MS(1000);
		P00 = 1;
		P01 = 1;
		P02 = 1;
		Delay1MS(50);
		
		//P03闪烁两次
		P03 = 1;
		Delay1MS(200);
		P03 = 0;
		Delay1MS(200);
		P03 = 1;
		Delay1MS(200);
		P03 = 0;
		Delay1MS(200);
		
		//P00、P01、P02、P03常亮1s
		P00 = 0;
		P01 = 0;
		P02 = 0;
		P03 = 0;
		Delay1MS(1000);
		P00 = 1;
		P01 = 1;
		P02 = 1;
		P03 = 1;
		Delay1MS(50);
		
		//P04闪烁两次
		P04 = 1;
		Delay1MS(200);
		P04 = 0;
		Delay1MS(200);
		P04 = 1;
		Delay1MS(200);
		P04 = 0;
		Delay1MS(200);
		
		//P00、P01、P02、P03、P04常亮1s
		P00 = 0;
		P01 = 0;
		P02 = 0;
		P03 = 0;
		P04 = 0;
		Delay1MS(1000);
		P00 = 1;
		P01 = 1;
		P02 = 1;
		P03 = 1;
		P04 = 1;
		Delay1MS(50);
		
		//P05闪烁两次
		P05 = 1;
		Delay1MS(200);
		P05 = 0;
		Delay1MS(200);
		P05 = 1;
		Delay1MS(200);
		P05 = 0;
		Delay1MS(200);
		
		//P00、P01、P02、P03、P04、P05常亮1s
		P00 = 0;
		P01 = 0;
		P02 = 0;
		P03 = 0;
		P04 = 0;
		P05 = 0;
		Delay1MS(1000);
		P00 = 1;
		P01 = 1;
		P02 = 1;
		P03 = 1;
		P04 = 1;
		P05 = 1;
		Delay1MS(50);
		
		//P06闪烁两次
		P06 = 1;
		Delay1MS(200);
		P06 = 0;
		Delay1MS(200);
		P06 = 1;
		Delay1MS(200);
		P06 = 0;
		Delay1MS(200);
		
		//P00、P01、P02、P03、P04、P05、P06常亮1s
		P00 = 0;
		P01 = 0;
		P02 = 0;
		P03 = 0;
		P04 = 0;
		P05 = 0;
		P06 = 0;
		Delay1MS(1000);
		P00 = 1;
		P01 = 1;
		P02 = 1;
		P03 = 1;
		P04 = 1;
		P05 = 1;
		P06 = 1;
		Delay1MS(50);
		
		//P07闪烁两次
		P07 = 1;
		Delay1MS(200);
		P07 = 0;
		Delay1MS(200);
		P07 = 1;
		Delay1MS(200);
		P07 = 0;
		Delay1MS(200);
		
		//P00、P01、P02、P03、P04、P05、P06、P07常亮1s
		P00 = 0;
		P01 = 0;
		P02 = 0;
		P03 = 0;
		P04 = 0;
		P05 = 0;
		P06 = 0;
		P07 = 0;
		Delay1MS(1000);
		P00 = 1;
		P01 = 1;
		P02 = 1;
		P03 = 1;
		P04 = 1;
		P05 = 1;
		P06 = 1;
		P07 = 1;
		Delay1MS(50);
		
		//八个LED发光二极管第一次闪烁
		P00 = 0;
		P01 = 0;
		P02 = 0;
		P03 = 0;
		P04 = 0;
		P05 = 0;
		P06 = 0;
		P07 = 0;
		Delay1MS(200);
		P00 = 1;
		P01 = 1;
		P02 = 1;
		P03 = 1;
		P04 = 1;
		P05 = 1;
		P06 = 1;
		P07 = 1;
		Delay1MS(200);
		
		//八个LED发光二极管第二次闪烁
		P00 = 0;
		P01 = 0;
		P02 = 0;
		P03 = 0;
		P04 = 0;
		P05 = 0;
		P06 = 0;
		P07 = 0;
		Delay1MS(200);
		P00 = 1;
		P01 = 1;
		P02 = 1;
		P03 = 1;
		P04 = 1;
		P05 = 1;
		P06 = 1;
		P07 = 1;
		Delay1MS(200);
		
	}
}
//1m延时程序
void Delay1MS(unsigned int t){
	unsigned char i;
	while(--t != 0){
		for(i = 0; i < 125; i++);
	}
}

编译:

 导入Protues运行:

 效果:

         结语:本章节是上一节的延续,主要是掌握并熟练Protues 绘图方法、单片机引脚连接方式、Keil引脚流程控制程序的编写,这里可以根据本节程序内容自行进行修改,编写出好看的LED程序。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/604924.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号