单片机实现发光二极管的循环点亮控制讲解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

桂林电子科技大学单片机最小应用系统

指导老师:***

学生:钟静茹

学号:09210202

机电工程学院

2010年6月

单片机最小应用系统设计报告

目录

一、设计题目 (3)

二、设计内容与要求 (3)

三、设计目的意义 (3)

四、系统硬件电路图 (4)

五、程序流程图与源程序 (6)

5.1流程图 (6)

5.2源程序 (7)

5.2.1程序设计思想 (7)

5.2.2源程序清单 (7)

六、系统功能分析与说明 (9)

6.1系统主要组成部分 (9)

6.2指示灯显示部分 (10)

6.3 电路板的制作 (10)

6.3.1 PCB图的制作 (11)

6.3.2 电路板的腐蚀、钻孔和元器件的焊接 (13)

七、设计体会 (11)

八、参考文献 (12)

一、设计题目

用8031单片机实现发光二极管的循环点亮控制。采用3个按键分别控制发光二极管的启动、停止及每个灯点亮的时间的更换,定时时间有软件控制。

二、设计内容与要求

用8031单片机控制8个发光二极管循环点亮。要求用按键控制点亮时间(如每个灯点亮0.5秒或者1秒等,各灯点亮时间相同)。按启动键开始循环点亮;按停止键后停止。

三、设计目的意义

1、掌握单片机系统中扩展简单I/O接口的方法。

2、掌握单片机的硬件接口电路、8031单片机的内部结构及其编程方法。

3、掌握单片机的最小系统的设计。

4、掌握电路板的设计与制作。。

5、了解程序编写与调试的方法和技巧。

6、综合掌握所学的单片机指令系统和硬件接口电路知识,进行简单的最小系统开发。

四、系统硬件电路图

系统硬件图(图1)包括单片机最小系统(复位电路、晶振电路和相关的控制信号)、外电路接通显示部分、及电源显示部分。

设计硬件电路图时,其基本思想:先通过万能板搭建试验平台,将编好的程序下载到51中,等可以达到预期要求后,最后在PROTEL中设计原理图与PCB,做出电路板。

图1 系统硬件图

五、程序流程图与源程序

5.1流程图

5.2源程序

5.2.1程序设计思想

单片机通入电源后,一直让单片机对8031的P1和P3口进行采集,将8031的P3口开关信号送入8031,以控制流水灯的亮灭及时间。

5.2.2源程序清单

#include

#define uchar unsigned char

#define uint unsigned int

sbit KEY1 = P3^2;

sbit KEY2 = P3^3;

sbit KEY3 = P3^4;

uchar Count = 0,i,k;

uchar code table[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void Delay(uint del)

{

uint i,j;

for(i=0; i

for(j=0; j<1827; j++)

;

}

void Time0_Init()

{

TMOD = 0x01;

TH0 = 0x4c;

TL0 = 0x00;

TR0 = 1;

IE=0x82;

}

void Time0_Int() interrupt 1

{

TH0 = 0x4c;

TL0 = 0x00;

Count++;

}

void Outside1_Init(void)

{

IT0 = 1;

EX0=1;

EA=1;

}

void Outside1_Int(void) interrupt 0 {

EX0 = 0;

Delay(3);

if(KEY1 == 0)

{

while(1)

{

P0 = table[k];

if(KEY2==0)

{

break;

}

}

}

Delay(30);

EX0 = 1;

}

void Main(void)

{

uint i = 0,j=0;

Time0_Init();

Outside1_Init();

while(1)

{ for(i=0;i<8;i++)

{

P0 = table[i];

k=i;

if(KEY3 == 0)

{

Delay(1);

if(KEY3== 0) {

j++;

}

Delay(50);

}

if(j%2==1)

{

while(1)

{

if(Count == 20)

{

Count = 0;

break;

}

}

}

else

{

while(1)

{

if(Count == 10)

{

相关文档
最新文档