单片机课程设计 8个LED灯来回点亮汇总
2.用T1定时,使8个LED灯以每隔1s间隔循环亮灯
单片机实验报告41、实验目的:1.掌握定时器的编程方法2.用T1定时,使8个LED灯以每隔1s间隔循环亮灯2、实验工具单片机最小应用系统、THKL-C51仿真器、单片机实验箱3、实验步骤1.单片机最小应用系统的P1^1口接LED灯2.用串行数据通信线连接计算机与仿真器,然后将仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上3.打开Keil uVision4仿真软件,首先建立本实验的项目文件,接着添加源程序,进行编译,直到编译无误。
4.打开模块电源和总电源,点击开始调试按钮,点击RUN按钮运行程序。
5.观察实验结果并记录结果,进行分析。
4、实验主要程序#include<reg51.h>unsigned char LED; //定义变量LEDunsigned char n=0; //定义变量nunsigned char code ma[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //定义LED灯的位置void delay1s() //延迟一秒的延时函数{unsigned char i,j,k;For(i=0;i<250;i++)For(j=0;j<100;j++)For(k=0;k<20;k++){;}}void main(){unsigned char n=0;P1=0x00; //P1口清零TMOD=0X10; //使用定时中断T1,工作于方式1TH1=0XFF; //给高8位赋初值TL1=0XFE; //给低8位赋初值EA=1; //开启总中断ET1=1; //开启T1中断TR1=1; //T1开始计数While(1); //循环等待}void count1(void) interrupt 3 using 0 //中断程序{delay1s(); //延时1sP1=ma[n]; //给P1赋值LED=P1; //把P1端口值赋给LEDTH1=0XFF; //给高8位赋初值TL1=0XFE; //给低8位赋初值n++; //n自增If(n==8) //判断n的值,等于8时,赋值为0;n=0;}5、实验结果用T1定时,使8个LED灯以每隔1s间隔循环亮灯,符合实验目的。
单片机八个灯依次亮的编程汇编语言
单片机八个灯依次亮的编程汇编语言哎呀,这可是个不简单的活儿啊!单片机八个灯依次亮,听起来就像是在玩连连看,可是可不是那么简单的事情哦!不过别着急,我来给你讲讲怎么搞定这个“连连看”吧!我们得了解一下单片机的基本知识。
单片机就像一个小电脑,里面有好多好多的芯片,可以完成各种各样的任务。
这次我们要让单片机控制八个灯依次亮起来,就像是在跳一个八步舞一样,一步一步地来。
第一步,我们得给这八个灯分别取个名字。
比如说,第一个灯叫做“小明”,第二个叫做“小红”,以此类推。
这样一来,我们就可以用名字来代替它们了,方便我们进行编程。
第二步,我们得告诉单片机该怎么做。
这就需要用到编程语言了。
编程语言就像是我们跟单片机沟通的工具,它告诉单片机:“小明先亮一下,然后是小红,再是小刚......”这样一来,单片机就知道该按照什么顺序来控制灯了。
第三步,我们得把这个程序写到单片机里。
这可不是一件容易的事情,需要我们仔细地思考每一个步骤,确保没有漏洞。
写完之后,我们还得把程序烧录到单片机的芯片里,让它变成真正的“活”程序。
第四步,我们得测试一下这个程序是否正常工作。
这就像是在排练一场舞蹈一样,我们需要不断地调整步伐和节奏,直到完美无缺。
如果发现有什么问题,我们就得赶紧修改程序,让它重新开始跳舞。
终于到了最后一步——让我们看看这个八步舞到底有多精彩吧!当所有的灯都亮起来的时候,你会感觉就像是看到了一场绚丽多彩的烟花表演,让人陶醉其中。
这就是单片机控制八个灯依次亮起来的魅力所在!虽然这个任务看起来有点儿复杂,但是只要我们一步一步地来,就一定能够成功。
就像学习任何一门新技能一样,只要肯下功夫、勤奋努力,就一定能够取得好成绩!加油吧!。
八路彩灯控制器 课程设计
目录第一章总体设计 (5)1.1设计目的 (5)1.2设计任务与要求 (5)1.3基本工作原理 (5)1.4设计方案 (5)第二章单片机简介 (6)2.1单片机结构 (6)2.2单片机的封装形式、引脚定义及功能 (7)2.3单片机的工作原理 (8)2.4 CPU的工作原理 (8)2.5存储器结构 (9)2.6 CPU时序及时钟电路 (10)2.7复位操作 (12)第三章硬件设计 (14)3.1整体硬件接结构 (14)3.2功能模块电路 (14)3.3系统硬件原理电路图 (16)第四章软件设计 (17)4.1软件总体结构设计 (17)4.2各功能模块设计 (18)总结与心得 (25)参考文献: (26)第一章总体设计1.1设计目的1)了解单片机的基本原理及相关的简单应用。
2)掌握用单片机设计系统的一般步骤。
3)了解LED数码管的基本知识和驱动方法。
4)掌握单片机系统各个组成部分的作用以及分布位置。
5)学会运用单片机的硬件资源。
1.2设计任务与要求8个彩灯的控制电路的任务为:用AT89S51单片机设计设计一个8个彩灯控制电路。
要求:完成以下花形变化:1) 从左到右依次点亮,8个灯全亮;从右到左依次熄灭,8个灯全灭。
时间节拍为1秒。
2)从两边向中间依次点亮,8个灯全亮;从中间向两边依次熄灭,8个灯全灭。
时间节拍为1秒。
3)循环往复,用LED管模拟彩灯。
4)用汇编语言编程,用proteus仿真。
1.3基本工作原理此次使设计一个能控制八路彩灯的控制器,其中彩灯用发光二极管模拟。
由P1.6和P1.7口控制电路启动与停止,根据彩灯的亮灭要求,利用数据指针查表,将查到的内容送给P2口进行显示,然后调用1s延时程。
若查到的内容为跳出代码就重新开始循环。
1.4设计方案软件方面:通过汇编语言编程实现不同要求的状态,由延时程序实现1秒的延时时间。
硬件方面:彩灯启动与停止由P1.6和P1.7口进行控制,彩灯的显示状态由AT89C51的P2口输出显示。
项目2---8位流水灯的单片机
二、编程及问答:
1、要使得本项目中发光二极管的闪烁速度加快,程序如何修 改?若变慢呢?
2、试编写两段延时时间不同的子程序,并分别调用。 3、汇编程序的书写格式和注意事项是什么?
项目2个发光二极管的顺序点亮, 学会使用MCS-51单片机芯片的P1口进行输出控 制,进一步学习汇编程序的分析方法,并能熟练 运用RR、RL等基本指令。
项目任务
要求应用AT89C51芯片,控制8个发光 二极管的有序亮灭,呈现流水灯的效果。 设计单片机控制电路并编程实现此功能。
(二)程序编写
ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV P1,#0FEH LCALL YS MOV P1,#0FDH LCALL YS MOV P1,#0FBH LCALL YS MOV P1,#0F7H LCALL YS MOV P1,#0EFH LCALL YS MOV P1,#0DFH LCALL YS
项目分析
利用单片机P1口连接8个发光二极管, 利用各引脚输出电位的变化,控制发光二 极管的亮灭。P1口各引脚的电位变化可以 通过指令来控制,为了清楚地分辨发光二 极管的点亮和熄灭,在P1口输出信号由一 种状态向另一种状态变化时,编写延时程 序实现一定的时间间隔。
项目实施
一、硬件电路设计 二、控制程序的编写
MOV P1,#0BFH LCALL YS MOV P1,#7FH LCALL YS LJMP MAIN ORG 0100H YS:MOV R7,#2 L1:MOV R6,#0FFH L2:MOV R5,#0FFH L3:DJNZ R5,L3 DJNZ R6,L2 DJNZ R7,L1 RET END
DJNZ R7,D0
LJMP XH
任务9 用自制的跑马灯电路实现8只LED循环点亮
• 出栈指令格式为:POP direct ;(direct)←(SP) • • ;SP←SP-1 该指令执行时先将SP所指单元数据弹出至direct所指的地址单元, 然后SP减1指向新的栈顶单元地址。
• •
4)子程序调用指令 ) 子程序调用指令的功能调用子程序,执行时先将断点地址(调用 指令的下一条指令的首地址)压入堆栈区,然后将子程序的首地址送 PC,执行子程序。 (1)长调用指令LCALL addr16 ;PC←PC+3 ;SP←SP+1 ;(SP)←PC7-0 ;SP←SP+1 ;(SP)←PC15-8 ; PC←addr16
执行该指令时,先将PC+2得到下一条指令的16位首地址,并将其压入堆栈, 最后子程序标号所在的子程序入口地址送给PC,CPU转入子程序执行。由于短 调用指令中的PC高5位地址不变,所以其转移的范围为2KB。
任务9 用自制的跑马灯电路实现8只 任务 用自制的跑马灯电路实现 只LED循环点亮 循环点亮 程序分析讲解
任务9 用自制的跑马灯电路实现8只 任务 用自制的跑马灯电路实现 只LED循环点亮 循环点亮
9.1.3 跟我学 1)减1不为零循环转移指令 ) 不为零循环转移指令DJNZ 不为零循环转移指令 DJNZ Rn,rel ;PC←PC+2,Rn←(Rn)-1,若(Rn)≠0,则PC←PC+rel DJNZ direct,rel ;PC←PC+2, direct←(direct)-1,若(direct)≠0,则 PC←PC+rel; 每执行一次循环转移指令,第一操作数(Rn或direct中的数)减1,并 保存,若减1后结果不为零,则转移至目的地(标号处);若减1后结果为零, 则程序按顺序执行下一条指令。
单片机8个灯循环点亮汇编语言 -回复
单片机8个灯循环点亮汇编语言-回复单片机8个灯循环点亮汇编语言是一种常见的电子编程技术,它广泛应用于各种电子设备和嵌入式系统中。
本文将一步一步回答关于这个主题的问题,以帮助读者了解和学习这一技术。
第一步:介绍单片机和汇编语言在深入讨论单片机8个灯循环点亮的具体实现之前,我们首先需要了解单片机和汇编语言的基本概念。
单片机是一种集成电路,它集成了中央处理器(CPU)、存储器、输入输出接口和其他辅助电路等功能模块。
它具有小尺寸、低功耗和高性能等优点,因此被广泛应用于各种电子设备中。
汇编语言是一种低级语言,它与机器语言密切相关。
汇编语言使用助记符和指令来表达计算机的指令和数据,而不是使用二进制代码。
通过使用汇编语言,我们可以直接操作计算机的硬件,从而实现各种功能。
第二步:了解循环点亮的原理循环点亮是指在一段时间内,灯依次点亮,并按照固定的顺序重复。
在单片机中,我们可以通过编程来实现这一功能。
第三步:了解单片机的引脚和端口单片机通常具有多个引脚和端口,用于连接外部设备和传输数据。
在实现循环点亮的例子中,我们需要了解单片机的哪些引脚和端口用于控制灯。
第四步:编写汇编程序在开始编写汇编程序之前,我们需要选择合适的开发工具和单片机型号。
这些选择将直接影响我们的编程和调试过程。
编写汇编程序的过程通常包括以下几个步骤:1. 初始化单片机的引脚和端口,以便能够控制灯的点亮和熄灭。
2. 编写循环语句,通过改变引脚的状态来实现灯的点亮和熄灭。
在每次循环迭代中,我们需要将当前的引脚状态更新为下一个灯的状态。
3. 设置循环的条件,以确定循环执行的次数。
在这个例子中,循环次数应该是灯的数量。
4. 调试程序,确保灯以正确的顺序点亮和熄灭。
第五步:实现灯的循环点亮根据我们在前面的步骤中所学到的知识,我们现在可以开始实现循环点亮的汇编程序了。
首先,我们需要在程序中定义和初始化单片机的引脚和端口。
然后,我们可以使用循环语句和条件控制语句,在每个循环迭代中依次点亮和熄灭下一个灯。
8个LED灯循环闪烁课程设计
摘要“微机原理与接口技术”是高等学校电子信息工程、通信工程、自动化、电气工程及其自动化等工科电气与电子信息类各专业的核心课程。
该课程以INTER 8086微处理器和IBM PC系列微机为主要对象,系统。
深入地介绍了微型计算机的基本组成、工作原理、接口技术及应用,把微机系统开发过程中用到的硬件技术和软件技术有机地结合起来。
本文详述了8个LED灯循环闪烁的课程设计。
设置8个LED灯,首先是1、3、5、7号LED依次亮1秒钟,当7号LED亮后,这四个灯同时闪烁5下。
然后是2、4、6、8号LED 依次亮1秒钟,当8号LED亮后,这四个灯同时闪烁5下。
本课程设计,由于自身能力和学习水平有限,可能存在一定的错误和不当之处,敬请批评和指正。
一、设计目的1.巩固和加深课堂所学知识;熟悉各种指令的应用及条件;2.学习掌握一般的软硬件的设计方法和查阅、运用资料的能力;3.进一步了解8255A各引脚的功能, 8255A和系统总线之间的连接, 8255A和CPU 之间的数据交换,以及8255A的内部逻辑结构。
深入掌握8255A显示电路的基本功能及编程方法,8255等芯片的工作方式、作用。
4.培养和锻炼在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力。
通过课程设计,要求熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,得到微机开发应用方面的初步训练。
同时并了解综合问题的程序设计掌握实时处理程序的编制和调试方法,掌握一般的设计步骤和流程,使我们以后搞设计时逻辑更加清晰。
二、设计内容根据所学内容和对8255A的应用,整个系统硬件采用8086微处理器和8255A可编程并行接口芯片和8个LED等连成硬件电路。
设计8个LED灯,实现如下要求:首先是1、3、5、7号LED依次亮1秒钟,当7号LED亮后,这四个灯同时闪烁5下。
然后是2、4、6、8号LED依次亮1秒钟,当8号LED亮后,这四个灯同时闪烁5下。
三、设计要求使用8255A可编程接口芯片实现8个LED灯以十种不同的方式显示。
单片机课程设计—8个按键控制8个LED自动设定控制流水灯
时间:二 O 二一年七月二十九日东北石油大学之吉白夕凡创作时间:二 O 二一年七月二十九日实习总结陈述实习类型生产实习实习单位东北石油大学实习基地实习起止时间 2018 年 7 月 7 日至 2018 年 7 月 16 日指导教师刘东明、孙鉴所在院(系) 电子科学学院班 级电子科学与技术 15-2学生姓名学 号 1509012402 2018 年 7 月 16 日时间:二 O 二一年七月二十九日时间:二 O 二一年七月二十九日目录第 1 章 按键控制流水灯设计 1 1.1 实习目的错误!未定义书签。
1.2 实习要求错误!未定义书签。
第 2 章 电路任务原理 2 2.1STC89C52 单片机任务原理 2 2.2LED 任务原理 3 2.3 按键任务原理 3 2.4 整体电路图 5 2.5 本章小结 6第 3 章 C 程序设计 7 3.1 程序设计流程图 7 3.2 实验结果 8 3.3 本章小结 9总结及体会 10 参考文献 11 附录 12时间:二 O 二一年七月二十九日时间:二 O 二一年七月二十九日第1章 按键控制流水灯设计1.1 实习目的本次实习以 STC89C52 单片机为控制核心.通过它实现对八盏 LED 灯的亮 灭进行设定,并在设定完成之后能够依照之前的设定实现流水灯效果.外部电 路为按键控制流水灯.P0 口控制八盏灯,P1 口控制矩阵键盘,P2 口控制独立按键, 程序利用单片机内部计时器中断实现流水效果.要求流水灯能够自行设定、暂 停、复位,任务稳定,可靠性高.生产实习的主要目的是培养理论联系实际的能力,提高实际动手操纵能力. 本专业的生产实习旨在广泛了解实际单片机电子产品任务的全过程,熟悉电子 产品的主要技术办理模式,并在实习的操纵过程中学习掌握电子产品的焊接装 置调试的实际操纵技能.稳固和加深理解所学的理论,开阔眼界,提高潜力,为培 养高素质大学本科人才打下需要的基础.透过学习,是理论与实际相结合,能够 使学生加深对所学知识的理解,并为后续专业课的学习带给需要的理性知识, 同时直接了解本业的生产过程和生产资料,为将来走上任务岗亭带给需要的实 际生产知识.1.2 实习要求1.深入学习单片机开发软件 Keil 的使用,熟悉单片机电路设计,按照实际 应用电路对程序进行调试.2.熟悉单片机硬件开发平台的应用,掌握单片机编程器、仿真器的使用, 能检查和阐发软硬件毛病.3.体会单片机内部资源的功效使用,以单片机开发板现有资源进行应用性 设计.掌握单片机经常使用外围器件的使用.4.对去年生产实习焊接的 51 开发板的程序有更深入的了解.时间:二 O 二一年七月二十九日时间:二 O 二一年七月二十九日第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 机之间的通信,以便于下载程序.时间:二 O 二一年七月二十九日时间:二 O 二一年七月二十九日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 所示.时间:二 O 二一年七月二十九日时间:二 O 二一年七月二十九日图 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 个按键.时间:二 O 二一年七月二十九日时间:二 O 二一年七月二十九日图 2-4 矩阵按键原理图 在程序设计中辨别用四个 I/O 口扫描 4 行,另外 4 个扫描 4 列,确定了按键 在哪行哪列也就确定了按键的具体位置.2.4 整体电路图如图 2-5 所示为键盘控制 LED 流水灯整体电路图.图 2-5 总电路原理图 时间:二 O 二一年七月二十九日2.5 本章小结时间:二 O 二一年七月二十九日本章主要介绍了单片机最小系统、LED 任务原理、按键任务原理.并从硬 件电路的设计出发,简单阐发单片机控制 LED 的任务过程.理论阐发基本完成, 接下来就是具体的程序设计与调试,通过具体的程序来实现相应的功效,这也 是单片机开发中最具技术含量的环节之一.时间:二 O 二一年七月二十九日时间:二 O 二一年七月二十九日第3章 C 程序设计3.1 程序设计流程图如图 3-1 所示为主程序流程图.开始 开计时器中断K1 是否按下 否是扫描矩阵键盘选 择需要点亮的 LED是K2 是否按下 否K3 是否按下 否是保管选择的数据 择需要点亮的 LED计时器中断程序选择 数据实现 LED 流水灯图 3-1 程序设计框图 主程序由 3 个独立按键控制,K1,K2 和 K3.开始从主函数执行程序语句,不 竭循环扫描按键,当 K1 按下时,进入选择状态,程序会不竭地扫描矩阵键盘,通 过矩阵键盘选择需要点亮的 LED;选择结束后按下 K2,程序会将选定后的数据 送入中断程序,中断程序按照接收的数据选泽对应的 LED 实现流水灯效果;当时间:二 O 二一年七月二十九日时间:二 O 二一年七月二十九日 按下 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 所示.时间:二 O 二一年七月二十九日图3-4回到初始状态由图3-4可知,当按下K3键之后,程序又回到了设定LED的状态.3.3本章小结由实验结果可以看出,本次单片机课程设计已达到预期要求,电路任务稳定,满足设计要求.在整个设计过程中,程序设计与调试最为庞杂,出现过按键灯不亮,没有出现滚动流水等现象等一系列程序问题.但最终在不竭地检查、调试之后,问题也逐渐得到解决.最终实现按键控制流水灯的效果.总结及体会本次设计通过对单片机进行编程控制,进而控制外部电路,成功地设计了八个按键控制八盏灯亮灭实现流水灯的效果.深入了解到单片机开发软件Keil 的使用,熟悉单片机电路设计,按照实际应用电路对程序进行调试.熟悉单片机硬件开发平台的应用,掌握了单片机编程器、仿真器的使用,能检查和阐发软硬件毛病.体会到单片机内部资源的功效使用,以单片机开发板现有资源进行应用性设计.通过这次实习使我进一步弄懂所学到的课本知识,稳固和深化对单片机的结构、指令系统、中断系统、键盘/显示系统、接口技术、系统扩展、定时/控制、程序设计、应用开发、等基本理论知识的理解,提高单片机应用于技术的实践操纵技能,掌握单片机应用系统设计、研制的办法,培养利用单片机进行科技改革、开发和创新的基天性力,为结业后从事与单片机相关的任务打下一定的基础.参考文献[1]童诗白,华成英.模拟电子技术基础(第四版)[M].北京:初等教育出版社,2006.[2]阎石.数字电子技术基础(第五版)[M].北京:初等教育出版社,2006.[3]韩建,全星慧,周围.电子技术课程设计指导[M].哈尔滨:哈尔滨工程大学出版社,2014.[4]黎小桃.数字电子电路阐发与应用[M].北京:北京理工大学出版社,2014.[5]高吉祥. 电子技术基础实验与课程设计[M].北京:电子产业出版社,2002.[6]陈明义.电子技术课程设计实用教程(第3版) [M]. 长沙:中南大学出版社,2010.[7]程春雨. 模拟电子技术实验与课程设计[M].北京:电子产业出版社,2016.[8]宋雪松,李东明,崔长胜. 手把手教你学51单片机(C语言版)[M]. 北京:清华大学出版社,2014.附录:#include <reg52.h>#include <intrins.h>#define KEY P1sbit k1=P2^0;sbit k2=P2^1;sbit k3=P2^2;sbit k4=P2^3;unsigned char LED=0x00,LED1=0x00;unsigned char x=0;unsigned char KeyValue;unsigned char A1=0x00,A2=0x00,A3=0x00,A4=0x00,A5=0x00,A6=0x00,A7=0x00,A8=0x00;void Delay10ms(unsigned int c);void KeyDown(); //矩阵键盘检测void kongzhil();void kongzhi2();void main(void){ TMOD=0x01; //定时器任务状态为1 TH0=(65536-50000)/256;TL0=(65536-50000)%6;EA=1; //开总中断ET0=1; //开定时器中断TR0=1; //开启定时器while(1){ int n=0;if(k1==0){Delay10ms(1);if(k1==0)n=1;}if(k3==0){Delay10ms(1);if(k3==0)n=3;}if(k4==0){Delay10ms(1);if(k4==0)n=4;}switch(n){case 1:KeyDown();break;case 3:kongzhil();break;case 4:kongzhi2();break;default:break;}}}void KeyDown(void){ int k=1;while(k){char a=0;KEY=0x0f;if(KEY!=0x0f){Delay10ms(1); //延时消抖if(KEY!=0x0f){KEY=0X0F;switch(KEY) //扫描行{case(0X07): KeyValue=0;break;case(0X0b): KeyValue=4;break;case(0X0d): KeyValue=8;break;case(0X0e): KeyValue=12;break;}KEY=0XF0;switch(KEY) //扫描列{case(0X70): KeyValue=KeyValue+3;break;case(0Xb0): KeyValue=KeyValue+2;break;case(0Xd0): KeyValue=KeyValue+1;break;case(0Xe0): KeyValue=KeyValue;break;}while((a<50) && (KEY!=0xf0)) //松手检测{Delay10ms(1);a++;}switch(KeyValue) //选择需要亮的灯{case(0):A1=~A1;break;case(1):A2=~A2;break;case(2):A3=~A3;break;case(3):A4=~A4;break;case(4):A5=~A5;break;case(5):A6=~A6;break;case(6):A7=~A7;break;case(7):A8=~A8;break;default:break;}}}if (A1==0xff) //保管数据(LED1=LED1|0x80);else if(A1==0x00)(LED1=LED1&0x7f);if (A2==0xff)(LED1=LED1|0x40);else if(A2==0x00)(LED1=LED1&0xbf);if (A3==0xff)(LED1=LED1|0x20);else if(A3==0x00)(LED1=LED1&0xdf);if (A4==0xff)(LED1=LED1|0x10);else if(A4==0x00)(LED1=LED1&0xef);if (A5==0xff)(LED1=LED1|0x08);else if(A5==0x00)(LED1=LED1&0xf7);if (A6==0xff)(LED1=LED1|0x04);else if(A6==0x00)(LED1=LED1&0xfb);if (A7==0xff)(LED1=LED1|0x02);else if(A7==0x00)(LED1=LED1&0xfd);if (A8==0xff)(LED1=LED1|0x01);else if(A8==0x00)(LED1=LED1&0xfe);LED=LED1;if(k2==0){Delay10ms(1);if(k2==0){k=0;LED=LED1;};};if(k4==0){Delay10ms(1);if(k4==0){k=0;kongzhi2();};};}}void kongzhil(void){int m=1;LED1=LED,LED=0x00;while(m){if(k3==0){Delay10ms(1);if(k3==0){m=0,LED=LED1;};}}}void kongzhi2(void){LED1=0x00;LED=0x00;A1=0;A2=0;A3=0;A4=0;A5=0;A6=0;A7=0;A8=0;}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%6;x++;if(x==6) //6*50MS=300MS{x=0;P0=LED;LED = _crol_(LED,1);//if(++i==8) i=0;}}void Delay10ms(unsigned int c) {unsigned char a, b;for (;c>0;c--){for (b=38;b>0;b--){for (a=130;a>0;a--);}}}。
单片机课程设计-8个LED灯来回点亮
课题简介
当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品。而电子LED灯已跨入了我们生活的众多电子领域。在众多场合随处可见的闪光灯,流水灯不仅大方美观而且十分节能。然而控制它们的单片机却是一个不能被忽视的角色。
单片机简介
第二章设计目的及要求
2.1设计目的
通过本次课题设计,应用《单片机原理及应用》等所学相关知识及查阅资料,完成简易计算器的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。
通过本次设计的训练,可以使我在基本思路和基本方法上对基于89C51单片机的系统设计有一个比较感性的认识,并具备一定程度的设计能力。
5.2编辑源程序--------------------------------------------------14
第六章系统调试与仿真结果--------------------------------16
6.1系统调试-----------------------------------------------------16
4.5工作电路------------------------------------------------------12
第五章软件设计------------------------------------------------13
5.1程序流程图--------------------------------------------------13
培养实践技能,提高分析和解决实际问题的能力。
2.2设计要求
(1)认真研究设计任务书,明确设计要求、条件、内容和步骤;复习课程有关内容,熟悉有关单元电路的设计方法和步骤;搜集、分析、消化相关资料、软件等;掌握微型计算机应用系统软件设计方法;准备好设计需要的图书、资料和工具;拟定设计计划等
用51控制8个LED灯的亮灭
用51控制8个LED灯的亮灭本来以为这个程序很简单的,没想到写了快三个小时。
哎学艺不精啊。
贴出来给你研究吧。
我不想做过多的解释了,我是按我理解的你出的题目做的,可能和你的本意不是很一样,1、依次亮,依次灭:从一个灯亮到全亮,再到全灭,每次改变一个灯亮灭2、奇偶号灯间隔亮灭:隔一个灯亮一个灯亮灯时间为1s,没有灯全灭的时候3、依次闪烁、切换时间为3秒,闪烁时间为2秒,我理解的是,没三秒钟有一个灯在闪烁,其中有一秒钟是灭灯状态程序中使用了P1口与8个发光二极管相连,具体电路图你百度一下吧,还有使用了一个按键,该按键与P3.7相连,低电平为按下状态。
程序如下:#include#include/*变量声明:i、j、k都是记录计时器溢出次数的变量,stat是记录当前显示状态的变量,由按键key控制temp是状态2中保护P1口状态的变量*/unsigned char i=0,j=0,k=0,stat=0,temp;bit flag=1; //状态1处于灭灯还是亮灯状态的变量,1为依次亮灯,0为依次亮灯sbit key=P3^7; //按键控制void init(); //初始化函数void delay(unsigned int N); //延时函数void keyscan(); //键盘扫描函数void main(){init();while (1){switch (stat){case 0: //0方案if(i==20&&flag){i=0;P1=P1<<1; //依次亮灯temp=P1;if(temp==0){flag=0;}}if(i==20&&!flag){i=0;if(P1==0xff){flag=1;P1=0xfe;}if(!flag){P1=P1<<1; //依次灭灯temp=P1;P1=temp+1;}}break;case 1: //2方案if(i==20){i=0;P1=~P1; //去反后亮灯状态为灭灯,P1初值取0x55或0xaa,奇偶交替亮灯}break;case 2: //3方案if(j==60){P1=temp;P1=_crol_(P1,1);temp=P1; //保护P1口亮灯状态k=0;j=0;}//闪烁部分,应该可以优化if(k<5){P1=0xff;}else if(k>=5&&k<10){P1=temp;}else if(k>=10&&k<15){P1=0xff;}else if(k>=15&&k<20){P1=temp;}else if(k>=20&&k<25){P1=0xff;}else if(k>=30&&k<35){P1=temp;}else if(k>=35&&k<40){P1=0xff;}//----------------------------------- break;}keyscan();}}void init(){TH0=0x3c; //定时器赋初值定时时间50ms TL0=0xB0;TMOD=0x01; //设置定时器工作方式为方式1 EA=1; //开总中断ET0=1; //开中断允许位TR0=1; //定时器计数P1=0xfe; //这里假设led灯与P1口相连并且//低电平有效}void delay(unsigned int N){int i,j;for (i=0;i<n;i++);for (j=0;j<110;j++);}void keyscan(){if(!key){delay(10); //消抖if(!key); //确认有键按下stat++;if(stat==3){stat=0;}//右键按下复位i=0;j=0;k=0;TH0=0x3c;TL0=0xB0;switch (stat){case 0:P1=0xfe;flag=1;stat=0;break;case 1:P1=0x55;break;case 2:P1=0xfe;temp=P1;break;}//-----------------------------------while(!key) //此循环中的函数和主函数中的显示函数是同一个//用于长按键的显示,可以去掉,去掉长按键不会正常显示,松开按键后正常{switch (stat){case 0:if(i==20&&flag){i=0;P1=P1<<1;temp=P1;if(temp==0){flag=0;}}if(i==20&&!flag){i=0;if(P1==0xff){flag=1;P1=0xfe;}if(!flag){P1=P1<<1;temp=P1;P1=temp+1;}break;case 1:if(i==20){i=0;P1=~P1;}break;case 2:if(j==60){P1=temp;P1=_crol_(P1,1); temp=P1;k=0;j=0;}if(k<5){P1=0xff;}else if(k>=5&&k<10) {P1=temp;}else if(k>=10&&k<15)P1=0xff;}else if(k>=15&&k<20){P1=temp;}else if(k>=20&&k<25){P1=0xff;}else if(k>=30&&k<35){P1=temp;}else if(k>=35&&k<40){P1=0xff;}break;}}}}void timer0() interrupt 1 {TH0=0x3c;TL0=0xB0; //溢出后重新赋初值//定时器中断时间为50msi++; //20次中断时间为1s j++; //40次中断时间为2s k++; //60次中断时间为3s }</n;i++);。
单片机教学规划8个LED灯来回点亮
目录第一章绪论--------------------------------------------------------3第二章设计目的及要求-----------------------------------------51.1 设计目的--------------------------------------------------------51.2 设计要求--------------------------------------------------------5第三章设计电路原理----------- -------------------------------73.1 控制部分的设计与选择-------------------------------------73.2 LED显示方案-----------------------------------------------8第四章硬件系统------------------------------------------------94.1 原件清单-------------------------------------------------------94.2 单片机AT89C51---------------------------------------------94.3 单片机时钟电路--------------------------------------------104.4 单片机复位电路---------------------------------------------114.5 工作电路------------------------------------------------------12第五章软件设计------------------------------------------------135.1 程序流程图--------------------------------------------------135.2 编辑源程序--------------------------------------------------14第六章系统调试与仿真结果--------------------------------166.1系统调试-----------------------------------------------------166.2仿真结果----------------------------------------------------16总结------------------------------------------------------------- 19参考文献--------------------------------------------------------2 0第一章绪论课题简介当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品。
单片机课程设计报告八路LED跑马灯实验
目录一、引言—本课程设计的目的 (2)二、八路LED跑马灯实验 (2)2.1设计内容 (2)2.2电路图 (2)2.3上机程序 (3)2.4调试结果及结论: (4)三、二位数码管循环显示00~99的实验 (4)3.1设计内容 (4)3.2电路图 (4)3.3上机程序 (5)3.4调试结果及结论 (6)四、单片机演奏音乐实验 (6)4.1设计内容 (6)4.2电路图 (6)4.3上机程序 (7)4.4调试结果及结论 (9)五、心得体会 (9)六、参考文献 (10)摘要:由于单片机体积小、成本低、使用方便,所以被广泛地应用于仪器仪表、现场数据的采集和控制。
通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用。
关键词:单片机,程序,跑马灯,数码管,测试……一、引言—本课程设计的目的以本学期对单片机的学习和认识,并通过本次课程设计加以应用,从而达到一个对所学知识的巩固、更深一步的理解,面对一个电子设计,应对出系统的方案,分析出各个板块来,再对各个板块进一步的具体的设计,先进行硬件电路设计,此时一定要考虑好要用什么元件、各个元件的具体参数、是否能实现应有功能,从而得到一个完整的硬件电路。
在根据该电路设计出软件的功能模块、从而完成程序流程图,在根据流程图完成程序的设计,并通过反复的调试、运行、更正,直至完成既定功能为止,最后将软件、硬件结合进行调试、运行,对其功能进行最终测试,并反复思考其测试中遇到相应问题的原因,并将其一一处理,从而完成本次设计的实验要求,以及本次课程设计的最终目的。
二、八路LED跑马灯实验2.1设计内容:八路发光二极管轮流点亮的实验,也就是通常所说的跑马灯实验,首先让我们来完成必须的硬件部分,我们需要焊接上8个发光二极管和8个限流电阻,可以参考下面的原理图和实物图像进行操作,需要注意的是LED是有极性的,引脚长的为正极,引脚短的为负极,负极和电阻一侧连接,如果接错那么相应的那一路可能在实验中不会点亮了。
【8个流水灯来回点亮设计程序】
单片机C语言如何实现8个LED流水灯来回流动?第一部分参考程序#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned int//--------------------------------void DelayMS(uint ms){uchar t;while(ms--) for (t=0;t<120;t++);}//----------------------------------void main(){P2= 0xfe;while (1){P2 =_crol_(P2,1);DelayMS(200);}}2012-06-14 17:06 芯DZ|分类:C/C++|浏览267次现在只能从左到右循环流动,怎么才能从左到右再从右到左流动呢?#include <reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit beep=P2^3;uchar p1e;void delay(uint a);void main(){p1e=0xfe;P1=p1e;while(1){p1e=_crol_(p1e,1);delay(55);P1=p1e;beep=0;delay(55);beep=1;delay(55);}}void delay(uint a){uint x,y;for(x=a;x>0;x--)for(y=150;y>0;y--); }提问者采纳2012-06-14 17:51char i;while(1){for(i=0; i<7; i++){p1e=_crol_(p1e,1);delay(55);P1=p1e;beep=0;delay(55);beep=1;delay(55);}for(i=0; i<7; i++){p1e=_cror_(p1e,1);delay(55);P1=p1e;beep=0;delay(55);beep=1;delay(55);}}CYF0316|六级p1e=_cror_(p1e,1);追问这个只是向右移吧...我是说向左移动到第8个LED后再从第8个向左移,实现来回流动回答1,赋值2,右移动3,再赋值4,左移动你程序都写出了只是把程序COPy 粘帖到下面把p1e=_crol_(p1e,1); 改成p1e=_cror_(p1e,1); 就好了呀第二部分参考、归纳、总结得正确程序(仅供参考)#include <AT89X51.H>#include <intrins.h>#define uchar unsigned char#define uint unsigned intvoid DelayMS(uint ms) {uchar t;while(ms--) for (t=0;t<120;t++);}void main(){ char i;P2= 0xfe;while (1){for(i=0; i<7; i++){P2 =_crol_(P2,1);DelayMS(200);}for(i=0; i<7; i++){P2 =_cror_(P2,1);DelayMS(200);}}}以下是附加文档,不需要的朋友下载后删除,谢谢班主任工作总结专题8篇第一篇:班主任工作总结小学班主任特别是一年级的班主任,是一个复合性角色。
51单片机课程设计作业
流水灯:1.第一个发光管以间隔200ms闪烁8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。
2.8个发光管来回流动,第个管亮100ms,流动时让蜂鸣器发出“滴滴”声。
3.用8个发光管演示出8位二进制数累加过程。
4.8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全部熄灭再以300ms间隔全部闪烁5次。
重复此过程。
5.间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。
6.间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。
数码管静态显示:1.同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800,1k(hz)的方波。
2.用定时器以间隔500MS在6位数码管上依次显示0、1、2、3….C、D、E、F,重复。
数码管动态显示:1.利用动态扫描方法在六位数码管上显示出稳定的4321.2.用动态扫描方法和定时器1在数码管的前三位显示出秒表,精确到1%秒,即后两位显示1%秒,一直循环下去。
3.利用动态扫描和定时器1在数码管上显示出从765432开始以1/10秒的速度往下递减直至765398并保持显示此数,与此同时利用定时器0以500MS速度进行流水灯从上至下移动,当数码管上数减到停止时,实验板上流水灯也停止然后全部开始闪烁,3秒后(用T0定时)流水灯全部关闭、数码管上显示出“HELLO”。
到此保持住。
矩阵键盘及中断原理:1.数码管前三位显示一个跑表,从000到999之间以1%秒速度运行,当按下一个独立键盘时跑表停止,松开手后跑表继续运行。
(用定时器设计表)。
2.在上题的基础上,用另外三个独立键盘实现按下第一个时计时停止,按下第二个时计时开始,按下第三个是计数值清零从头开始。
控制P1口的8只LED灯每0.5秒闪亮一次
单片机课程设计论文题目:控制P1口的8只LED灯每0.5秒闪亮一次系部电子信息工程学院专业通信工程学号姓名指导教师程亮亮2015年6月25日摘要现当今,单片机的应用无处不在。
利用单片机控制灯具的实例也不胜枚举,可控制灯具的芯片也相当之多,而利用单片机控制灯具,达到人们预想效果的方法最为广泛。
它有功能多、价格优、外部电路简单的特点,深受单片机爱好者及灯具控制制造商的青昧,用80C51 单片机及少数外部电路控制LED灯光,使LED灯产生明暗效果,并在灯光达到最亮与最暗时伴随响亮的告警音。
通过硬件电路的制作以及软件程序的编制,使灯光的亮度与告警音配合得当。
LED又称为发光二极管,是一种新型光源,具有高效节能、绿色环保、使用寿命长等其他光源无法比拟的优点。
作为绿色照明光源产品,国家绿色照明推广使用的产品,代表着未来照明技术的发展方向。
本文介绍了以STC89C52为控制核心,利用PWM调光技术,通过调整PWM的周期、PWM的占空比从而控制电流,进而达到对LED进行光度亮暗的控制调节的效果,实现对LED灯的PWM调光控制。
关键词:单片机;LED灯;软件程序AbstractNowadays, the application of single chip microcomputer. SCM is used to control the lamps and lanterns of examples are numerous, control the lamps and lanterns of chip is quite much, and using single chip computer control lamps and lanterns, achieve expected effect of the method is the most widely used. It has multi functions, excellent prices, the characteristics of the external circuit is simple, by the Qing Mei single-chip lovers and lamp control manufacturers, with 80C51 microcontroller and a few external circuit to control the LED light, LED lamp has the effect of light and shade, and the light to the brightest and darkest with loud alarm sound. Through the production of the hardware circuit and software program, the brightness of the lighting and sound alarm.LED is also known as light-emitting diode, is a new type of light source, with high efficiency, energy saving, environmental protection, long service life and other light source can not match the advantages. As a green light source products, national green lighting to promote the use of products, representing the development direction of future lighting technology. STC89C52 as control core, using PWM dimming technology, by adjusting the PWM cycle, PWM accounted for empty than to control electric current, thus achieving the photometric light and dark control and regulation of the effect of the LED, LED lamp dimming with PWM control is introduced in this paper.Key words: single chip microcomputer; LED; software program目录摘要 (Ⅱ)Abstract (Ⅲ)目录 (Ⅳ)前言 (1)1:制P1口8只LED灯每0.5秒闪亮一次原理图 (2)1.1原理图 (2)1.2原理图器件 (2)1.3原理图参数设置说明 (3)1.4 PCB板图 (4)2:制P1口8只LED灯每0.5秒闪亮一次程序 (5)2.1 程序 (5)2.2 程序原理详细介绍 (5)3:件流程图 (7)3.1流程图的优点 (7)3.2流程图采用的符号 (7)3.3软件流程图制作软件 (7)3.4流程图 (7)4:软件仿真 (9)4.1 Proteus仿真原理图 (9)参考文献 (11)前言:单片机技术飞速发展,单片机的应用已经渗透到了国民经济的各个领域,处处影响着人们的生活,它的出现给现代工业测控领域带来了一次新的技术革命。
八路彩灯循环点亮电路设计
数字电子技术课程设计设计题目:八路彩灯循环点亮电路设计学院:专业:____班级:学号:学生姓名:指导教师:2009年 7月 09日目录前言 (3)设计题目 (4)1 设计要求及主要技术指标.. (4)1.1 设计要求 (4)1.2 主要技术指标 (4)2 设计过程 (4)2.1题目分析 (4)2.2 整体构思 (5)2.3 具体实现 (5)3 元件说明及相关计算 (6)3.1 元件说明 (6)3.2 相关计算..................................... . (12)4 调试过程 (12)4.1 调试过程 (12)4.2 遇到问题及解决措施..................... . (13)5 心得体会......... ......... ......... ............. (14)参考文献......................................... (14)附录一:电路原理图 (15)附录二:元件清单 (16)前言电子电路中的信号可分为两类:一类是随时间连续变化的信号,称为模拟信号,例如温度的变化、声音在空气中的传播、表的指针指示的时间、正弦交流信号等。
用来产生、传输、处理模拟信号的电路称为模拟电路。
另一类是时间上和数值上都不连续变化的离散信号,称为数字信号,例如数字电子表显示的时间量、数字万用表测量的量、工厂产品量的统计等。
用来产生、传输、处理数字信号的电路称为数字电路。
数字电路的工作信号在时间上和数值上是不连续变化的。
数字信号反映在电路上只有高电平和低电平两种状态,高电平通常为+3.5 v左右,低电平通常为+0.3 v左右。
这两种状态很方便地用二极管或三极管的导通、截止即开、关状态来实现。
分别用1和。
表示这两个状态,就可以用二进制数进行信息的传输和处理。
所以数字电路就不能采用模拟电路的分析方法。
利用数字电路技术数出给定时间内所通过的脉冲数并显示计数结果的数字化仪器。
单片机课程设计汇本8个LED灯来回点亮
目录第一章绪论--------------------------------------------------------3第二章设计目的及要求-----------------------------------------51.1 设计目的--------------------------------------------------------51.2 设计要求--------------------------------------------------------5第三章设计电路原理----------- -------------------------------73.1 控制部分的设计与选择-------------------------------------73.2 LED显示方案-----------------------------------------------8第四章硬件系统------------------------------------------------94.1 原件清单-------------------------------------------------------94.2 单片机AT89C51---------------------------------------------94.3 单片机时钟电路--------------------------------------------104.4 单片机复位电路---------------------------------------------114.5 工作电路------------------------------------------------------12第五章软件设计------------------------------------------------135.1 程序流程图--------------------------------------------------135.2 编辑源程序--------------------------------------------------14第六章系统调试与仿真结果--------------------------------166.1系统调试-----------------------------------------------------166.2仿真结果----------------------------------------------------16总结------------------------------------------------------------- 19参考文献--------------------------------------------------------2 0第一章绪论课题简介当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录第一章绪论--------------------------------------------------------3 第二章设计目的及要求-----------------------------------------5 1.1 设计目的--------------------------------------------------------5 1.2 设计要求--------------------------------------------------------5 第三章设计电路原理----------- -------------------------------7 3.1 控制部分的设计与选择-------------------------------------7 3.2 LED显示方案-----------------------------------------------8 第四章硬件系统------------------------------------------------9 4.1 原件清单-------------------------------------------------------9 4.2 单片机AT89C51---------------------------------------------9 4.3 单片机时钟电路--------------------------------------------104.4 单片机复位电路---------------------------------------------11 4.5 工作电路------------------------------------------------------12 第五章软件设计------------------------------------------------135.1 程序流程图--------------------------------------------------13 5.2 编辑源程序--------------------------------------------------14 第六章系统调试与仿真结果--------------------------------166.1系统调试-----------------------------------------------------16 6.2仿真结果----------------------------------------------------16 总结------------------------------------------------------------- 19 参考文献--------------------------------------------------------20第一章绪论课题简介当今社会,随着人们物质生活的不断提高,电子产品已经走进了家家户户,无论是生活或学习,还是娱乐和消遣几乎样样都离不开电子产品。
而电子LED灯已跨入了我们生活的众多电子领域。
在众多场合随处可见的闪光灯,流水灯不仅大方美观而且十分节能。
然而控制它们的单片机却是一个不能被忽视的角色。
单片机简介目前的单片机分通用型和专用型两种。
MCS-51系列单片机是属于通用型的单片机,通用型的单片机把开发资源全部公开,用户可以根据自己的应用系统进行设计,适用面广,应用灵活。
制造单片机的材料也从TTL材料发展到CMOS材料,通常工作电压是5V,如5V±5%或5V±10%,也有3V/3.3V电压的产品,更低的可在1.5V工作。
现在单片机又出现了宽电压范围型,在 2.5~6.5V内都可正常工作。
低功耗是单片机所追求的一个指标,目前低功耗单片机的静态电流可以低至μA或nA级。
有的单片机还有等待、关断、睡眠等多种工作模式以降低功耗。
单片机的低功耗在智能化仪表中有重要的应用。
在工业控制中的控制器,可以应用软件的方法,实现复杂的控制过程,改变控制算法方便。
有丰富的逻辑判断和位操作指令,可以在开关量控制、顺序控制、逻辑控制中发挥作用。
目前,在加热控制、电机控制、锅炉控制、汽车电器、数控机床等各个领域,单片机得到了广泛的使用,并取得了很好的效果。
单片机由于其微小的体积和极低的成本,广泛的应用于家用电器、工业控制等领域中。
单片微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
本设计就是利用单片机AT89C51为控制器来实现8个LED左右来回点亮的实验。
第二章设计目的及要求2.1 设计目的通过本次课题设计,应用《单片机原理及应用》等所学相关知识及查阅资料,完成简易计算器的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。
通过本次设计的训练,可以使我在基本思路和基本方法上对基于89C51单片机的系统设计有一个比较感性的认识,并具备一定程度的设计能力。
培养实践技能,提高分析和解决实际问题的能力。
2.2设计要求(1)认真研究设计任务书,明确设计要求、条件、内容和步骤;复习课程有关内容,熟悉有关单元电路的设计方法和步骤;搜集、分析、消化相关资料、软件等;掌握微型计算机应用系统软件设计方法;准备好设计需要的图书、资料和工具;拟定设计计划等(2)系统总体及功能设计,制定总体方案及元器件的选择;(3)硬件设计,完成硬件结构图设计、系统电路图设计和绘制及电路模块的连接;(4)软件设计,完成软件流程图的设计、程序设计;(5)使用Proteus与Keil软件仿真运行;(6)写出设计报告)第三章设计电路原理3.1 控制系统的设计AT89C51系列的I/O脚的设置和使用非常简单,当该脚作输入脚使用时,只须将该脚设置为高电平(复位时,各I/O 口均置高电平)。
当该脚作输出脚使用时,则为高电平或低电平均可。
低电平时,吸入电流可达20mA,具有一定的驱动能力;而为高电平时,输出电流仅数十μA甚至更小(电流实际上是由脚的上拉电流形成的),基本上没有驱动能力。
其原因是高电平时該脚也同时作输入脚使用,而输入脚必须具有高的输入阻抗,因而上拉的电流必须很小才行。
作输出脚使用,欲进行高电平驱动时,得利用外电路来实现,如上拉电阻,I/O脚不通,电流经R驱动LED发光;低电平时,I/O脚导通,电流由该脚入地,LED灭(I/O脚导通时对地的电压降小于1V,LED的域值1.5~1.8V)所以在本设计中将使用AT89C51为控制器,可将8个有着四种颜色的LED与AT89C51的8个P2(p2.0~p2.7)接口相连。
3.2 LED的显示由于LED 具有亮度高、发光均匀、可靠性好、接线简单、拼装方便等优点。
它被广泛应用于大型LED 智能显示屏、智能仪器仪表和机电一体化设备的显示单元中,取得了较好的效果。
由于它经济、小型的显示系统,同时要求使用方便灵活,方便地组成了由多块大屏幕LED 显示器构成的显示系统,该系统可广泛用于商场、车站、码头及其它公共场合。
对于8个LED的点亮有很多种方案,可以同时点亮,同时熄灭,不同个数的LED来回交替。
本设计由于LED 的个数和颜色相对较多可以让8个LED从左到右然后再从右到左来回点亮。
第四章硬件原理4.1元件清单4.2 单片机AT89C51该单片机功能强大,不仅能满足设计的需要,也可以在设计要求的基础上进行一些扩展。
单片机的结构如下:图1单片机引脚图在使用时VCC接电源电压,GND接地。
P0,P1,P2,P3可作为输入或输出端口,RST是复位输入,接复位电路。
XTAL1和XTAL2接复位电路。
这些可以在硬件设计部分体现出来4.3.单片机的时钟电路单片机内部有在一个振荡器,本设计采用内部时钟方式,以12MHZ石英晶体振荡器和两个30PF的片电容组成外部电容的大小对振荡频率有微小影响,可起调节作用。
振荡器,如图所示。
片内的高增益反向放大器通过XTAL1和XTAL2外接,作为反馈元件的外部晶体振荡器与电容组成的并联谐振回路构成一个自激振荡器,向内部时钟电路提供振荡时钟。
如图;4.4.单片机的复位电路AT89C51的RST引脚是复位端。
当单片机振荡器工作时,该引脚上出现持续两个机械周期的高电平,就可以实现系统复位,使单片机快速回到初始状态。
如图;4.5整体电路图第五章软件设计5.1 程序流程图5.2 编辑源程序程序利用循环移位函数_crol_和_cror_形成来回滚动的效果#include<reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned int//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;P2=0x01;while(1){for(i=0;i<7;i++){P2=_crol_(P2,1); //P2 的值向左循环移动DelayMS(150);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2 的值向右循环移动DelayMS(150);}}}第六章系统调试6.1系统调试1.编写程序并查错2.在Keil中输入源程序,编译并连接,及时发现程序中的错误,改正,直至编译连接无误后保存并生成HEX文件。
3.在Proteus中打开该电路对各器件及连线节点进行检查,其中单片机的频率一定要与晶振频率一致。
4.在单片机属性中找到program File中添加源程序生成的hex文件。
如图;单击“确定”后即可进行模拟仿真。
6.2仿真结果;结论与心得通过这次课程设计使我懂得了理论与实际相结合是很非常重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为己所用,从而提高自己的实际动手能力和独立思考的能力。
我在设计的过程中遇到了许多问题的同时也发现了自己的不足之处,即对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对汇编语言掌握得不透彻。
还有,这次的设计让我明白了“求人不如求己”,“自己动手丰衣足食”的深刻寓意。
虽然我们要讲究合作愉快,但更重要的是自己,只有自己懂了,自己做了才不会在关键时刻掉链子。
别人终究是一个陪衬,路总是要自己走的,属于自己的任务就要自己搞定。
所以我们必须要时刻强大自己。
这个过程虽然不是很平坦但肯定会遇到各种各样的问题,但一旦征服了它那它就是你的东西了,当这样的厚积达到一定程度那你就能享受到薄发那刻的辉煌。