项目3 LED广告灯灯设计_第1页
项目3 LED广告灯灯设计_第2页
项目3 LED广告灯灯设计_第3页
项目3 LED广告灯灯设计_第4页
项目3 LED广告灯灯设计_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LED广告灯灯设计项目3从P1.0到P1.7依次循环点亮一个LED

任务1动手做1——画出硬件电路图

单片机有4个8位的I/O口P0、P1、P2、P3,任意一个I/O口都可以用来控制8个LED灯的亮灭显示(P0口要外接上拉电阻),该任务采用P1口的控制8个LED灯,电路如图所示。P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.01111111011111101111110111111011111101111110111111011111101111111循环8次你可以编写出这个循环结构的程序吗?跟我做2-------程序分析显示状态引脚输出数据P1口输出数据P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0复位状态(全灭)11111111FFH状态1(LED8亮)11111110FEH状态1(LED7亮)11111101FDH状态1(LED6亮)11111011FBH状态1(LED5亮)11110111F7H状态1(LED4亮)11101111EFH状态1(LED3亮)11011111DFH状态1(LED2亮)10111111BFH状态1(LED1亮)011111117FH#include<reg51.h>voiddelay(unsigned

inti); //延时函数声明voidmain() //主函数{while(1){P1=0xfe; //点亮第1个发光二极管delay(200); //延时P1=0xfd; //点亮第2个发光二极管delay(200); //延时P1=0xfb; //点亮第3个发光二极管delay(200); //延时P1=0xf7; //点亮第4个发光二极管delay(200); //延时P1=0xef; //点亮第5个发光二极管delay(200); //延时P1=0xdf; //点亮第6个发光二极管delay(200); //延时P1=0xbf; //点亮第7个发光二极管delay(200); //延时P1=0x7f; //点亮第8个发光二极管delay(200); //延时

}}voiddelay(unsignedchari) //功能:采用循环结构实现的流水灯控制程序#include<reg51.h> //包含头文件REG51.Hvoiddelay(unsignedchari); //延时函数声明voidmain() //主函数{unsignedchari,w;while(1){w=0x01; //信号灯显示字初值为01H

for(i=0;i<8;i++){ P1=~w; //显示字取反后,送P1口

delay(200); //延时

w<<=1; //显示字左移一位

}}}voiddelay(unsignedchari)//延时函数,参见任务1的程序ex1_1.c动手做3——proteus仿真从PROTEUS中选取如下元器件:(1)AT89C51,单片机;(2)RES、RX8,电阻、排阻;(3)CAP、CAP-ELEC,电容、电解电容;(4)74LS240,八路反相驱动器;(5)LED,发光二极管。放置元器件、电源和地,设置参数,连线,最后进行电气规则检查,将目标代码文件ex3_1_1.hex加载到AT89C51单片机中,电路仿真

任意模式霓虹灯显示

各显示模式字之间无任何变化规律,无法采用移位指令和循环结构的程序来实现。应该采用什么结构的程序呢?

任务2数组分为一维、二维、三维和多维数组等,常用的是一维、二维和字符数组。(1)一维数组的定义格式如下:类型说明符数组名[常量表达式];例如“chara[5];”即定义字符数组a,有5个元素。(2)数组元素的一般形式为:数组名[下标]

例如:tab[5]、num[i+j]、a[i++]都是合法的数组元素。(3)数组初始化赋值的一般形式为:类型说明符数组名[常量表达式]={值,值……值};例如:intnum[10]={0,1,2,3,4,5,6,7,8,9};//程序:ex3_3.c//功能:采用数组实现的任意变化的霓虹广告灯控制程序#include<reg51.h> //包含头文件REG51.Hvoiddelay(unsignedchari); //延时函数声明voidmain() //主函数{unsignedchari;unsignedchardisplay[]={0xe7,0xdb,0xbd,0x7e};while(1){

for(i=0;i<4;i++){P1=display[i]; //显示字送P1口

delay(400); //延时

}}}voiddelay(unsignedchari)//延时函数,参见任务1程序ex1_1.c扩展任务:模拟城市道口交通灯控制系统的设计

扩展任务A道B道1.A道绿灯B道红灯55s;2.A道绿灯闪烁3s;3.A道黄灯2s;4.B道绿灯A道红灯254s;5.B道绿灯闪烁3s;6.B道黄灯2s;任务2:模拟演示

跟我做1——画出硬件电路图跟我想1常见的交通灯显示状态如表1.7.1所示。

A方向禁行,B方向禁行灭灭亮灭灭亮A方向禁行,B方向警告灭亮灭灭灭亮A方向禁行,B方向警告闪烁灭灭灭灭亮A方向禁行,B方向通行亮灭灭灭灭亮A方向警告,B方向禁行灭灭亮灭亮灭A方向警告,B方向禁行灭灭亮闪烁灭灭A方向通行,B方向禁行灭灭亮亮灭灭绿灯黄灯红灯绿灯黄灯红灯南北方向(简称B方向)东西方向(简称A方向)状态说明信号灯显示状态状态7:A禁行,B禁行DBH110110状态6:A禁行,B警告DDH101110状态5:A禁行,

B绿灯闪0、1交替11110状态4:A禁行,B通行DEH011110状态3:A警告,B禁行EBH110101状态2:A绿灯闪,

B禁行1100、1交替11状态1:A通行,B禁行F3H110011B绿灯B黄灯B红灯A绿灯A黄灯A红灯状态说明P1端口数据P1.0P1.1P1.2P1.3P1.4P1.5各控制口线的分配以及控制状态如表1.7.2所示。跟我想2东、西两个方向的信号灯显示状态是一样的,所以只用P1口的3根I/O口线控制即可;南、北方向可用P1口的另外3根I/O口线。当I/O口线输出高电平时,对应的交通灯灭;反之,当I/O口线输出低电平时,对应的交通灯亮。

//功能:简单的交通灯控制系统

#include<REG51.H>unsignedchart1;//定义全局变量,用来保存延时时间循环次数//函数名:delay_t1//函数功能:实现0.5秒~128秒延时//形式参数:unsignedchart;//延时时间为0.5秒×t//返回值:无voiddelay_t1(unsignedchart){for(t1=0;t1<t;t1++)//采用全局变量t1作为循环控制变量delay(200);}voidmain() //主函数

{unsignedchark;while(1){P1=0xf3; //A绿灯,B红灯,延时55秒

delay_t1(110);

for(k=0;k<3;k++){ //A绿灯闪烁3次

P1=0xf3;delay(200); //延时0.5秒

P1=0xfb;delay(200); //延时0.5秒

}

P1=0xeb; //A黄灯,B红灯,延时2秒

delay_t1(4);P1=0xde; //A红灯,B绿灯,延时25秒

delay_t1(50);

for(k=0;k<3;k++){ //B绿灯闪烁3次

P1=0xde;delay(200); //延时0.5秒

P1=0xdf;delay(200);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论