单片机课程设计—8个按键控制8个LED自动设定控制流水灯
- 格式:doc
- 大小:4.31 MB
- 文档页数:21
51八只LED灯做流水灯实验第一节:单片机在上电初始后,其各端口输出为高电平。
如果我们现在想让接在P1.0口的LED1亮,那么我们只要把P1.0口的电平变为低电平就可以了。
想让LED1灭,LED0亮,只需将P1.0升高,P1.1变低,LED 1就熄灭LED2随后既点亮!依始类推如下所示8只LED变会一亮一暗的做流水灯了。
本实验在“SP-5 1实验板”学习套件上的相关图纸:P1.0低、P1.0高、P1.1低、P1.1高、P1.2低、P1.2高、P1.3低、P1.3高、P1.4低、P1.4高、P1.5低、P1.5高、P1.6低、P1.6高、P1.7低、P1.7高、返回到开始、程序结束。
我们不能说P1.1你变低,它就变低了。
因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”代码。
我们又怎样来用二进制语议论使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。
今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,然后交给单片机去执行。
这里的“程序语言”目前主要有汇编和C两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。
前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。
现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。
“汉语”语言汇编语言开始:star:P1.0低clr p1.0P1.0高setb p1.0P1.1低clr p1.1P1.1高setb p1.1P1.2低clr p1.2P1.2高setb p1.2这里用到了四条汇编指令:clr、 setb、 ljmp 、end;clr:是将其后面指定的位清为0;setb:是将其后面指定的位置成1;ljmp:是无条件跳转指令,意思是:跳转到指定的标号处继续运行。
LED流水灯实验一、实验内容将LED灯逐个点亮,然后全亮,全灭。
二、实验原理8个LED发光二极管,分别对应单片机IO口的P0.0到P0.7口,8个单片机IO口组成一个字节,用一个八位二进制的左移和右移来确定灯的亮灭,并用定时器延时。
三、描述该实验中运用的理论知识1、LED的点亮:8个LED发光二极管,分别对应单片机IO口的P0.0到P0.7口,8个单片机IO口组成一个字节,在程序编写过程中,可以直接用P0来进行操作。
2、流水效果:C语言的8位二进制数代表了8个IO口,左移,最低位填0,然后按位取反,就可以将灯逐个点亮3、延时:特殊功能寄存器TMOD,如图T1和T0分别代表单片机两个计数器。
GATE:该位被置位时为门控位。
仅当TR1被置位并且INT1脚为高,定时器开始计数。
当该位被清零时,只要TR1被置位,定时器1马上开始计数。
C/T:该位为0的时候,用作定时器,该位为1的时候,用做计数器。
0.5秒的延时12 * (65536- x)/11059200 = 0.001四、实验步骤1、流程图2、结果程序:#include <reg52.h>typedef unsigned char uint8;typedef unsigned int uint16;sbit ENLED = P1^4;sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;main(){uint8 counter;uint16 i,j;ENLED = 0;ADDR0 = 0; ADDR1 = 1; ADDR2 = 1; ADDR3 = 1;TMOD = 0x01;TH0 = 0xB8;TL0 = 0x00;TR0 = 1;while(1){if(1 == TF0){TF0 = 0;TH0 = 0xB8;TL0 = 0x00;counter++;}if(25 == counter){counter = 0;if(8 == j){P0 = 0X00;for(i=0;i<=38000;i++);P0 = 0XFF;for(i=0;i<=38000;i++);j = 0;}P0 = ~(1 << j++);}}}。
51八只LED灯做流水灯实验第一节:单片机在上电初始后,其各端口输出为高电平。
如果我们现在想让接在P1.0口的LED1亮,那么我们只要把P1.0口的电平变为低电平就可以了。
想让LED1灭,LED0亮,只需将P1.0升高,P1.1变低,LED1就熄灭LED2随后既点亮!依始类推如下所示8只LED变会一亮一暗的做流水灯了。
本实验在“SP-51实验板”学习套件上的相关图纸:P1.0低、P1.0高、P1.1低、P1.1高、P1.2低、P1.2高、P1.3低、P1.3高、P1.4低、P1.4高、P1.5低、P1.5高、P1.6低、P1.6高、P1.7低、P1.7高、返回到开始、程序结束。
我们不能说P1.1你变低,它就变低了。
因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”代码。
我们又怎样来用二进制语议论使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。
今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,然后交给单片机去执行。
这里的“程序语言”目前主要有汇编和C两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。
前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。
现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。
“汉语”语言汇编语言开始:star:P1.0低clr p1.0P1.0高setb p1.0P1.1低clr p1.1P1.1高setb p1.1这里用到了四条汇编指令:clr、setb、ljmp 、end;clr:是将其后面指定的位清为0;setb:是将其后面指定的位置成1;ljmp:是无条件跳转指令,意思是:跳转到指定的标号处继续运行。
#include <reg51.h>#include <intrins.h>void delay(void){unsigned char a,b;for(a=0;a<200;a++)for(b=0;b<200;b++);}unsigned char Key_Scan();void main(void){unsigned char ledValue, keyNum;ledValue = 0x01;while (1){keyNum = Key_Scan();switch (keyNum){case(0xFE) :ledValue = 0x01;break;case(0xFD) ://返回按键K2的数据ledValue = 0x02;break;case(0xFB) ://返回按键K3的数据ledValue = 0x04;break;case(0xF7) ://返回按键K4的数据ledValue = 0x08;break;case(0xEF) ://返回按键K5的数据ledValue = 0x10;break;case(0xDF) ://返回按键K6的数据ledValue = 0x20;break;case(0xBF) ://返回按键K7的数据ledValue = 0x40;break;case(0x7F) ://返回按键K8的数据ledValue = 0x80;break;default:break;}P0 = ledValue;//点亮LED灯}}/****************************************************************************** ** 函数名: Key_Scan()* 函数功能: 扫描键盘* 输入: 无* 输出: 读取到的键值******************************************************************************* /unsigned char Key_Scan(){unsigned char keyValue = 0 , i; //保存键值//--检测按键1--//if (P1 != 0xFF)//检测按键K1是否按下{void delay(void){unsigned char a,b;for(a=0;a<200;a++)for(b=0;b<200;b++);}if (P1 != 0xFF)//再次检测按键是否按下{keyValue = P1;i = 0;while ((i<50) && (P1 != 0xFF))//检测按键是否松开{Delay10ms(1);i++;}}}return keyValue; //将读取到键值的值返回}。
51八只LED灯做流水灯实验第一节:单片机在上电初始后,其各端口输出为高电平。
如果我们现在想让接在P1.0口的LED1亮,那么我们只要把P1.0口的电平变为低电平就可以了。
想让LED1灭,LED0亮,只需将P1.0升高,P1.1变低,LED 1就熄灭LED2随后既点亮!依始类推如下所示8只LED变会一亮一暗的做流水灯了。
本实验在“SP-5 1实验板”学习套件上的相关图纸:P1.0低、P1.0高、P1.1低、P1.1高、P1.2低、P1.2高、P1.3低、P1.3高、P1.4低、P1.4高、P1.5低、P1.5高、P1.6低、P1.6高、P1.7低、P1.7高、返回到开始、程序结束。
我们不能说P1.1你变低,它就变低了。
因为单片机听不懂我们的汉语的,只能接受二进制的“1、0......”代码。
我们又怎样来用二进制语议论使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。
今天,我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的“程序语言”通过“翻译”软件“翻译”成单片机所需的二进制代码,然后交给单片机去执行。
这里的“程序语言”目前主要有汇编和C两种;在这里我们所说的“翻译”软件,同行们都叫它为“编译器”,将“程序语言”通过编译器产生单片机的二进制代码的过程叫编译。
前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。
现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序。
“汉语”语言汇编语言开始:star:P1.0低clr p1.0P1.0高setb p1.0P1.1低clr p1.1P1.1高setb p1.1P1.2低clr p1.2P1.2高setb p1.2这里用到了四条汇编指令:clr、 setb、 ljmp 、end;clr:是将其后面指定的位清为0;setb:是将其后面指定的位置成1;ljmp:是无条件跳转指令,意思是:跳转到指定的标号处继续运行。
用 AT89C51单片机实现 8个彩色 LED发光的流水灯电路1.摘要:流水灯是常见的装饰,常见于舞台等场合,本设计主要使用AT89C51芯片,利用P1的8个端口通过74LS373驱动,连接8个发光二极管,通过P1.0到P1.7值的控制,使8个彩色LED依次发光,以达到显示的效果。
二、设计任务和要求用AT89C51芯片,设计一个能控制8个发光二极管轮流闪的流水灯电路。
四、硬件电路设计及描述本设计主要使用AT89C51芯片,利用P1的8个端口通过74LS373驱动,连接8个发光二极管,通过P1.0到P1.7值的控制,使8个彩色LED轮流亮灭,以达到显示的效果。
1.软件设计思路及描述主程序设计思路为,开始时点亮一个灯,其余全灭。
然后执行左移,8个灯依次点亮。
“RLA A”是一条左移指令,它的用途是把A累加器中的值循环左移。
设A=1111 1110,则执行一次指令后,A累加器中的值就变为1111 1101,执行第二次后就变为1111 1011,也就是各位数字不断向左移动,而最右一位由最左一位移入。
1.设计流程图1.编辑源程序将原代码生成一个后缀为.asm的文件,点击确定后,打开这一选项即可添加源程序代码。
源程序:ORG 0000HLJMP STARTORG 30HSTART:MOV A,#0FEHLOOP:MOV P1,ARL ALCALL DELAYLJMP LOOPDELAY:MOV R7,#250D1:MOV R6 #250D2:DJNZ R6,$DJNZ R7,D1RETEND八、软件编译,载入,调试1、保存文本内容后,点击源代码菜单下的全部编译,即可对程序进行编译,生成以.Hes后缀的文件。
2、程序载入CPU3、调试:程序加载完成后,点击按钮运行调试仿真。
九、运行仿真运行仿真后出现效果如下图:ledD1、D2、D3、D4、D5、D6、D7、D8依次点亮。
十、结与体会通过这次课程设计,不仅加深了对单片机控制系统及其语言的应用与理解,锻炼了自己这方面的能力,而且还学到了不少新东西,使自己的专业知识、专业技能有所提高。
8位流水灯课程设计一、课程目标知识目标:1. 让学生掌握8位流水灯的基本原理,理解其内部电路结构与工作流程。
2. 学会运用所学知识设计简单的8位流水灯电路,并掌握相关编程技巧。
3. 了解8位流水灯在实际应用中的场景和意义。
技能目标:1. 培养学生动手实践能力,能够独立完成8位流水灯电路的搭建与编程。
2. 提高学生问题分析、解决能力,能够在实际操作过程中发现并解决问题。
3. 培养学生团队协作能力,能够在小组合作中发挥各自优势,共同完成任务。
情感态度价值观目标:1. 激发学生对电子技术的兴趣,培养创新意识和探索精神。
2. 培养学生严谨、细致的学习态度,注重实际操作中的安全意识。
3. 引导学生关注科技发展,认识到电子技术在日常生活中的重要性。
课程性质:本课程为电子技术实践课程,以项目式教学为主,结合理论知识与实际操作。
学生特点:八年级学生,具备一定的电子技术基础,对实践操作有较高的兴趣。
教学要求:注重理论与实践相结合,以学生为主体,教师为主导,鼓励学生积极参与,培养学生的实际操作能力和创新精神。
通过本课程的学习,使学生能够将所学知识应用于实际项目中,提高学生的综合素养。
二、教学内容1. 理论知识:- 8位流水灯基本原理介绍- 电路组成:LED、电阻、微控制器等- 编程语言基础:C语言或汇编语言- 8位流水灯程序设计思路及方法2. 实践操作:- 8位流水灯电路图的绘制- 电路板搭建,焊接LED和电阻- 微控制器编程与调试- 8位流水灯功能实现与优化3. 教学安排与进度:- 第一课时:8位流水灯基本原理及电路组成介绍- 第二课时:编程语言基础学习与电路图绘制- 第三课时:电路板搭建、焊接及微控制器编程- 第四课时:8位流水灯功能实现与调试优化4. 教材章节:- 《电子技术基础》第四章:数字电路基础- 《电子技术基础》第六章:微控制器原理与应用- 《C语言程序设计》第一章:C语言概述与基本语法教学内容确保科学性和系统性,结合课程目标,注重理论与实践相结合,使学生能够在实践中掌握8位流水灯的相关知识。
电子技术课程设计《电子设计基础》课程报告设计题目:8位流水灯设计学生班级:通信0902学生学号:20096050学生姓名:卢朝飞指导教师:曹文、黎恒、刘春梅2011年6月21日时间:西南科技大学信息工程学院一、8位流水灯设计目的及要求1. 设计一个8位流水灯循环点亮电路。
2. 要求采用74ls42芯片。
二、流水灯功能设计分析分析:(1)要实现8个led依次循环点亮,只需要将发光二极管依次循环点亮和熄灭,8只led便会依次循环点亮熄灭了三、电路设计基本原理及主要器件1. 74ls42芯片简介74LS42 由8 个反相器和10 个4 输入端的与非门组成。
反相器成对连接以便接受4 位BCD 输入,经由与非门译码后输出,该电路为BCD—十进制的多用途译码器。
其输入为高电平有效,而输出是低电平有效。
74LS42 的逻辑设计保证了当大于9 的二进制代码加到输入端上时,所有的输出端均处于高电平(无效)。
当LS42 用作3 线—8 线译码时,最高有效输入D可产生一个有用的“禁止”功能。
D 输入还可在8 输出的解调应用中用来作为数据输入。
2.74ls1613.74ls104.8个发光二极管5.一个220欧姆电阻四、流水灯仿真图、原理图及PCB板图1.8位流水灯仿真图如下:2. 8位流水灯原理图如下:2. 8位流水灯PCB板图如下:底层:顶层:五、总结与体会1、总结在用protel设计与制板过程中自己总结了一些经验:【1】接地的标号中一定要把Net选项选为GND才可以,不然在PCB制作中将没有接地这一个选项出现;还有Dasignator的选项填写的是元件的标号,只有这个填上了在PCB制作中才会有该元件出现。
【2】对PCB制作过程的要求。
从板层的选择,到对元器件的布局最后是加入输入输出,以及对输入输出的连线,每一个都有很多的细节需要注意。
其中最为典型的就是对输入输出的连线,它需要把两端节点及连线都定义为相同的名称才行,即需要对Net进行统一命名,不然系统将不把它默认为导通的连线。
8个流水灯实验课程设计一、课程目标知识目标:1. 学生能理解流水灯的基本原理,掌握电路连接和编程方法。
2. 学生能描述8个流水灯实验的电路图和程序流程。
3. 学生了解并掌握数字电路的基本逻辑功能及其应用。
技能目标:1. 学生能够独立完成8个流水灯实验的电路搭建和程序编写。
2. 学生通过实验操作,提高动手能力和问题解决能力。
3. 学生通过小组合作,提高沟通和团队协作能力。
情感态度价值观目标:1. 学生对电子技术产生兴趣,激发学习积极性。
2. 学生培养耐心、细心的实验态度,养成良好的实验习惯。
3. 学生认识到科技发展对社会的重要性,增强科技创新意识。
课程性质:本课程为实践性课程,结合电子技术和编程知识,培养学生的动手操作能力和创新思维。
学生特点:学生为八年级学生,具有一定的物理知识和数学基础,好奇心强,喜欢动手操作。
教学要求:教师需引导学生掌握基本原理,注重实验操作和问题解决能力的培养,关注学生的情感态度价值观培养。
教学过程中,将目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容本课程依据课程目标,结合教材相关章节,组织以下教学内容:1. 流水灯基本原理:讲解电路组成、LED特性、控制器等基础知识,对应教材第3章。
2. 电路连接方法:学习电路图的识别,掌握面包板的使用,进行电路搭建,对应教材第4章。
3. 编程方法:学习C语言基础,编写流水灯程序,掌握循环和延时函数的使用,对应教材第5章。
4. 数字电路逻辑功能:介绍基本逻辑门电路,理解并应用与、或、非门等逻辑功能,对应教材第6章。
5. 8个流水灯实验:结合以上知识,进行实验操作,包括电路搭建、程序编写和调试,对应教材第7章。
教学大纲安排如下:1. 第1周:流水灯基本原理学习。
2. 第2周:电路图识别和面包板使用训练。
3. 第3周:C语言基础和编程方法教学。
4. 第4周:数字电路逻辑功能讲解。
5. 第5-6周:8个流水灯实验操作及问题解决。
教学内容科学系统,注重理论与实践相结合,使学生在掌握知识的同时,提高实际操作能力。
电子课程设计东北石油大学实习总结报告实习类型生产实习实习单位东北石油大学实习基地实习起止时间 2018 年 7 月 7 日至 2018 年 7 月 16 日指导教师刘东明、孙鉴所在院(系) 电子科学学院班 级 电子科学与技术 15-2学生姓名学号15090124022018 年 7 月 16 日I 页脚内容电子课程设计目录第 1 章 按键控制流水灯设计 ....................................... 1 1.1 实习目的 .............................................. 1 1.2 实习要求 .............................................. 1第 2 章 电路工作原理............................................. 2 2.1 STC89C52 单片机工作原理 ............................... 2 2.2 LED 工作原理 .......................................... 3 2.3 按键工作原理 .......................................... 3 2.4 整体电路图 ............................................ 5 2.5 本章小结 .............................................. 6第 3 章 C 程序设计 ............................................... 7 3.1 程序设计流程图 ........................................ 7 3.2 实验结果 .............................................. 8 3.3 本章小结 .............................................. 9总结及体会..................................................... 10 参考文献 ...................................................... 11 附录: ........................................................ 12I 页脚内容电子课程设计第1章 按键控制流水灯设计1.1 实习目的本次实习以 STC89C52 单片机为控制核心。
通过它实现对八盏 LED 灯的亮灭进 行设定,并在设定完成之后能够按照之前的设定实现流水灯效果。
外部电路为按 键控制流水灯。
P0 口控制八盏灯,P1 口控制矩阵键盘,P2 口控制独立按键,程序 利用单片机内部计时器中断实现流水效果。
要求流水灯能够自行设定、暂停、复 位,工作稳定,可靠性高。
生产实习的主要目的是培养理论联系实际的能力,提高实际动手操作能力。
本专业的生产实习旨在广泛了解实际单片机电子产品工作的全过程,熟悉电子产 品的主要技术管理模式,并在实习的操作过程中学习掌握电子产品的焊接安装调 试的实际操作技能。
巩固和加深理解所学的理论,开阔眼界,提高潜力,为培养 高素质大学本科人才打下必要的基础。
透过学习,是理论与实际相结合,能够使 学生加深对所学知识的理解,并为后续专业课的学习带给必要的感性知识,同时 直接了解本业的生产过程和生产资料,为将来走上工作岗位带给必要的实际生产 知识。
1.2 实习要求1.深入学习单片机开发软件 Keil 的使用,熟悉单片机电路设计,根据实际 应用电路对程序进行调试。
2.熟悉单片机硬件开发平台的应用,掌握单片机编程器、仿真器的使用,能 检查和分析软硬件故障。
3.体会单片机内部资源的功能使用,以单片机开发板现有资源进行应用性设 计。
掌握单片机常用外围器件的使用。
4.对去年生产实习焊接的 51 开发板的程序有更深入的了解。
1 页脚内容电子课程设计第2章 电路工作原理2.1 STC89C52 单片机工作原理单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电 路技术把具有数据处理能力的中央处理器 CPU、随机存储器 RAM、只读存储器 ROM、 多种 I/O 口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽 调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小 而完善的微型计算机系统。
例如 STC89C52 单片机是通过 32 个输入输出口的高低电平变化来实现对外部 电路的控制,痛过相应的程序实现对 32 个输入输出口的控制,这就是单片机工作 的最基本原理。
如图 2-1 所示为 STC89C52 单片机工作的最小系统电路图。
图 2-1 STC89C52 最小工作系统整个电路使用 5V 直流电源供电,其中复位电路能够使单片机复位;晶振电路 相当于单片机的心脏,为单片机提供 12MHz 的高频脉冲使单片机正常工作;MAX232 是将单片机输出的 TTL 电平转换成 PC 机能接收的 232 电平或将 PC 机输出的 232 电平转换成单片机能接收的 TTL 电平,实现单片机与 PC 机之间的通信,以便于下 载程序。
2 页脚内容电子课程设计2.2 LED 工作原理LED(light-emitting diode),即发光二极管,俗称 LED 小灯,51 开发板使 用的是普通贴片发光二极管。
这种二极管通常的正向导通电压是 1.8~2.2V 之间, 工作电流一般在 1~20mA 之间。
其中当电流在 1~5mA 之间变化时,随着通过 LED 的 电流越来越大,肉眼会感觉到这个灯越来越亮,而当电流从 5~20mA 变化时,看到 的发光二极管的亮度变化不明显了。
当电流超过 20mA 时,LED 就有烧坏的危险。
所以在 51 开发板的使用中需要根据相应的电流参数设计一个与 LED 串联的限流电 阻。
如图 2-2 所示为单片机 I/O 口控制 LED 的电路原理图。
图 2-2 单片机控制 LED 电路图图中 PR2 为排阻,在电路中起到限流作用,防止 LED 被烧毁。
因为单片机是 可以编程控制的,即 P00~P07 的高低电平也是能够控制的,所以对应的 8 个 LED 的亮灭状态也是能够控制的,这就达到了单片机控制 LED 的目的。
2.3 按键工作原理 2.3.1 独立按键工作原理独立式按键比较简单,它们各自与独立的输入线相连接,如图 2-3 所示。
3 页脚内容电子课程设计图 2-3 独立式按键原理图4 条输人线接到单片机的 I/O 口上,当按健 K1 按下时,+5V 通过电阻然后再 通过按键 K1 最终进人 GND 形成一条通路,这条线路的全部电压都加到这个电阻上, P20 这个引脚就是个低电平。
当松开按健后,线路断开,就不会有电值通过,P20 和+5V 就应该是等电位,是个高电平。
我们就可以通过 P20 这个 10 口的高低电平 来判断是否有按键按下。
2.3.2 矩阵按键工作原理在某一个系统设计中,如果需要使用很多按键时,做成独立按键会占用大量 I/O 口,因此引用了矩阵键盘的设计。
如图 2-4 所示为 51 开发板上的矩阵按键电 路原理图,使用 8 个 I/O 口来实现 16 个按键。
4 页脚内容电子课程设计图 2-4 矩阵按键原理图在程序设计中分别用四个 I/O 口扫描 4 行,另外 4 个扫描 4 列,确定了按键 在哪行哪列也就确定了按键的具体位置。
2.4 整体电路图如图 2-5 所示为键盘控制 LED 流水灯整体电路图。
图 2-5 总电路原理图5 页脚内容电子课程设计2.5 本章小结本章主要介绍了单片机最小系统、LED 工作原理、按键工作原理。
并从硬件电 路的设计出发,简单分析单片机控制 LED 的工作过程。
理论分析基本完成,接下 来就是具体的程序设计与调试,通过具体的程序来实现相应的功能,这也是单片 机开发中最具技术含量的环节之一。
6 页脚内容电子课程设计第3章 C 程序设计3.1 程序设计流程图如图 3-1 所示为主程序流程图。
开 始 开计时器中断K1 是否按下否是扫描矩阵键盘选 择需要点亮的 LED是K2 是否否按下K3 是否按下否是保存选择的数据 择需要点亮的 LED计时器中断程序选择 数据实现 LED 流水灯图 3-1 程序设计框图主程序由 3 个独立按键控制,K1,K2 和 K3。
开始从主函数执行程序语句,不 断循环扫描按键,当 K1 按下时,进入选择状态,程序会不断地扫描矩阵键盘,通 过矩阵键盘选择需要点亮的 LED;选择结束后按下 K2,程序会将选定后的数据送 入中断程序,中断程序根据接收的数据选泽对应的 LED 实现流水灯效果;当按下7 页脚内容电子课程设计K3 后程序又会进入矩阵键盘扫描重新选择 LED。
3.2 实验结果如图 3-2 所示,当按下 K1 后进入选择定状态。
图 3-2 选择 LED如图 3-2,控制矩阵键盘分别选择了第 1,6,8 盏灯。
再按下 K2 键,让选择的第 1,6,8 盏灯实现流水灯效果。
如图 3-3 所示。
图 3-3 流水灯如图 3-3,按下 K2 之后,LED 由之前第 1,6,8 盏灯亮变为第 1,2,7 盏灯 亮,实现了流水灯右移的效果。
当按下 K3 键,实验结果如图 3-4 所示。
8 页脚内容图3-4 回到初始状态由图3-4可知,当按下K3键之后,程序又回到了设定LED的状态。
3.3本章小结由实验结果可以看出,本次单片机课程设计已达到预期要求,电路工作稳定,满足设计要求。
在整个设计过程中,程序设计与调试最为复杂,出现过按键灯不亮,没有出现滚动流水等现象等一系列程序问题。
但最终在不断地检查、调试之后,问题也逐渐得到解决。
最终实现按键控制流水灯的效果。
总结及体会本次设计通过对单片机进行编程控制,进而控制外部电路,成功地设计了八个按键控制八盏灯亮灭实现流水灯的效果。
深入了解到单片机开发软件Keil的使用,熟悉单片机电路设计,根据实际应用电路对程序进行调试。
熟悉单片机硬件开发平台的应用,掌握了单片机编程器、仿真器的使用,能检查和分析软硬件故障。
体会到单片机内部资源的功能使用,以单片机开发板现有资源进行应用性设计。
通过这次实习使我进一步弄懂所学到的课本知识,巩固和深化对单片机的结构、指令系统、中断系统、键盘/显示系统、接口技术、系统扩展、定时/控制、程序设计、应用开发、等基本理论知识的理解,提高单片机应用于技术的实践操作技能,掌握单片机应用系统设计、研制的方法,培养利用单片机进行科技革新、开发和创新的基本能力,为毕业后从事与单片机相关的工作打下一定的基础。