基于单片机的彩灯控制器设计.docx
《基于单片机的彩灯控制器设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的彩灯控制器设计.docx(41页珍藏版)》请在冰豆网上搜索。
基于单片机的彩灯控制器设计
2012届本科生毕业设计
题目:
基于单片机的节日彩灯控制器的设计
作者姓名:
张东香
学号:
2010080115
系(院):
机械与电子工程学院
专业:
电子信息工程
指导教师姓名:
胡波
指导教师职称:
讲师
2012-4-21
SuZhouUniversity
Year2012BachelorGraduationassignmentDesign
Title:
DesignofLanternControllerBasedonSingle-chip
Author:
ZhangDongXiang
StudentID:
2010080115
Department:
MechanicalandElectronicEngineering
Major:
ElectricalInformationEngineering
Instructor:
HuBo
ProfessionalTitle:
LecturerInstructor
Apr.21th.2012
摘 要
随着微电子技术的发展,人民的生活水平不断提高,人们对周围环境的美化和照明已不仅限于单调的白炽灯,彩灯已成为时尚的潮流。
彩灯控制器的实用价值在日常生产实践日常生活中的作用也日益突出。
基于各种器件的彩灯也都出现,单片机因其价格低廉,使用方便,控制简单而成为控制彩灯的主要器件。
目前市场上更多用全硬件电路实现,电路结构复杂,结构单一,一旦制成成品就只能按固定模式,不能根据不同场合,不同时段调节亮度时间,模式和闪烁频率等动态参数,而且一些电路存在芯片过多,电路复杂,功率损耗大,亮灯样式单调缺乏可操作性等缺点,设计一种新型彩灯已迫不及待。
近年来,彩灯对于美化、亮化城市有着不可轻视的重要作用。
因此作为城市装饰的彩灯需求量越来越大,对与彩灯的技术和花样也越来越高。
目前市场上各种式样的LED彩灯多半是采用全硬件电路实现,存在电路结构复杂、功能单一等局限性,因此有必要对现有的彩灯控制器进行改进。
本文介绍了一种简易LED彩灯控制系统的软硬件设计过程,以STC-89C52单片机作为主控核心与辅助硬件电路相结合,利用软件实现对LED彩灯进行控制。
本系统具有电路结构简单、操作容易、硬件少、成本低等特点。
关键词:
LED彩灯 STC-89C52单片机 彩灯控制器
ABSTRACT
Withthedevelopmentofmicroelectronicstechnology,improvepeople'slivingstandard,peopleonthesurroundingenvironment,landscapingandlightingarenotlimitedtomonotonousincandescentlightshavebecomeafashiontrend.Lanterncontrollerpracticalvalueindailyproductionpracticesindailylifehavebecomeincreasinglyprominentrole.Carnivalisalsobasedonavarietyofdeviceshaveemerged,themicrocontrollerbecauseofitslowprice,easytouse,simpletocontrolyourlightscontrollingthemaindevice.
Moreonthemarketwithallthehardwarecircuit,thecircuitstructureiscomplex,singlestructure,oncethefinishedproductscanonlybeafixedpattern,notaccordingtodifferentoccasions,adjustthebrightnessofdifferenttimeperiods,patternsandblinkingfrequencyofthedynamicparameters,andsomecircuitThechiptoomuch,circuitcomplexity,powerconsumptionlarge,LiangDengstylemonotonouslackofoperationandothershortcomings,designanewtypeoflightscannotwait.
Inrecentyears,thelanternforthelandscaping,lightingthecityhasanimportantroleshouldnotbeunderestimated.Sothecitydecoratedwithlanternsasthegrowingdemandfortechnologyandlanternshavebecomemoresophisticatedandsynchronized.CurrentlyonthemarketavarietyofstyleLEDlanternisthemosthardware-widerealizationoftheexistenceofcomplexcircuitstructure,functionsandotherlimitationsofasingle,itisessentialtothecurrentcontrollertoimprovethelantern.ThispaperintroducesasimplecontrolsystemoftheLEDlanterndesignprocessofhardwareandsoftware,withSTC-89C52single-chipmicrocomputerasthemastercoreandsupportingthecombinationofhardwarecircuitry,usingsoftwarecontroloftheLEDlanterns.Thespecialtiesofthissystemaresimplestructure,easycontrol,lesshardware,lowcost,andsoon.
Keywords:
LEDLantern STC-89C52SCM Lanterncontroller
目 录
前 言
现在这个时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代。
单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。
目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。
学习单片机的最有效方法就是理论与实践并重,本文是作者用自制了一款简易的流水灯,重点介绍了其软件编程方法,以期给单片机初学者以启发,更快地成为单片机领域的优秀人才,为国家做出贡献。
随着人们生活环境的不断改善和变化,在许多场合可以看到彩色霓虹灯。
彩灯由于其丰富的灯光色彩,低廉的造价以及控制简单等特点而得到广泛应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。
目前彩灯种类繁多,但有一种趋势,冷光源、低功耗、寿命长的已渐成主流。
在照明工程中推广和普及使用,将为节约我国宝贵的资源,保护我们的环境发挥出巨大的作用。
本文根据单片机原理设计的一种彩灯电路。
本文侧重对彩灯的闪烁频率,亮灯时间及模式进行设计。
导向是软硬件兼使软件为主硬件为辅,很容易实现对彩灯的控制。
本电路没有复杂的结构,更容易让人理解接受。
操作起来更加简单、方便,当然效率也更高。
第1章 单片机的介绍
第1.1节 单片机的简介
单片微型计算机简称单片机,是典型的嵌入式微控制器(MicrocontrollerUnit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。
单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳[1]。
早期的单片机都是8位或4位的。
其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。
此后在8031上发展出了MCS51系列单片机系统。
基于这一系统的单片机系统直到现在还在广泛使用。
随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。
90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。
随着INTELi960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。
而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。
目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端[1]的型号也只有10美元。
当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。
而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。
单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。
事实上单片机是世界上数量最多的计算机。
现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。
手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。
而个人电脑中也会有为数不少的单片机在工作。
汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!
单片机的数量不仅远超过PC机和其他计算的总和,甚至比人类的数量还要多。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。
概括的讲:
一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可……用它来做一些控制电器一类不是很复杂的工作足矣了。
我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影……它主要是作为控制部分的核心部件。
它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。
第1.2节 单片机的发展史
1971年intel公司研制出世界上第一个4位的微处理器;Intel公司的霍夫研制成功世界上第一块4位微处理器芯片Intel4004,标志着第一代微处理器问世,微处理器和微机时代从此开始。
因发明微处理器,霍夫被英国《经济学家》杂志列为“二战以来最有影响力的7位科学家”之一。
1971年11月,Intel推出MCS-4微型计算机系统(包括4001ROM芯片、4002RAM芯片、4003移位寄存器芯片和4004微处理器)其中4004(下图)包含2300个晶体管,尺寸规格为3mm×4mm,计算性能远远超过当年的ENIAC,最初售价为200美元。
1972年4月,霍夫等人开发出第一个8位微处理器Intel8008。
由于8008采用的是P沟道MOS微处理器,因此仍属第一代微处理器。
1973年intel公司研制出8位的微处理器8080;1973年8月,霍夫等人研制出8位微处理器Intel8080,以N沟道MOS电路取代了P沟道,第二代微处理器就此诞生。
主频2MHz的8080芯片运算速度比8008快10倍,可存取64KB存储器,使用了基于6微米技术的6000个晶体管,处理速度为0.64MIPS(MillionInstructionsPerSecond)。
1975年4月,MITS发布第一个通用型Altair8800,售价375美元,带有1KB存储器。
这是世界上第一台微型计算机。
1976年intel公司研制出MCS-48系列8位的单片机,这也是单片机的问世。
Zilog公司于1976年开发的Z80微处理器,广泛用于微型计算机和工业自动控制设备。
当时,Zilog、Motorola和Intel在微处理器领域三足鼎立。
20世纪80年代初,Intel公司在MCS-48系列单片机的基础上,推出了MCS-51系列8位高档单片机。
MCS-51系列单片机无论是片内RAM容量,I/O口功能,系统扩展方面都有了很大的提高。
第1.3节 单片机的工作过程
单片机自动完成赋予它的任务的过程,也就是单片机执行程序的过程,即一条条执行的指令的过程,所谓指令就是把要求单片机执行的各种操作用的命令的形式写下来,这是在设计人员赋予它的指令系统所决定的,一条指令对应着一种基本操作;单片机所能执行的全部指令,就是该单片机的指令系统,不同种类的单片机,其指令系统亦不同。
为使单片机能自动完成某一特定任务,必须把要解决的问题编成一系列指令(这些指令必须是选定单片机能识别和执行的指令),这一系列指令的集合就成为程序,程序需要预先存放在具有存储功能的部件——存储器中。
存储器由许多存储单元(最小的存储单位)组成,就像大楼房有许多房间组成一样,指令就存放在这些单元里,单元里的指令取出并执行就像大楼房的每个房间的被分配到了唯一一个房间号一样,每一个存储单元也必须被分配到唯一的地址号,该地址号称为存储单元的地址,这样只要知道了存储单元的地址,就可以找到这个存储单元,其中存储的指令就可以被取出,然后再被执行[2]。
程序通常是顺序执行的,所以程序中的指令也是一条条顺序存放的,单片机在执行程序时要能把这些指令一条条取出并加以执行,必须有一个部件能追踪指令所在的地址,这一部件就是程序计数器PC(包含在CPU中),在开始执行程序时,给PC赋以程序中第一条指令所在的地址,然后取得每一条要执行的命令,PC在中的内容就会自动增加,增加量由本条指令长度决定,可能是1、2或3,以指向下一条指令的起始地址,保证指令顺序执行。
第1.4节 单片机的应用
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:
(1)在智能仪器仪表上的应用
单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。
采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。
例如精密的测量设备(功率计,示波器,各种分析仪)。
(2)在工业控制中的应用
用单片机可以构成形式多样的控制系统、数据采集系统。
例如工厂流水线的智能化管理芯片,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。
(3)在家用电器中的应用
可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。
(4)在计算机网络和通信领域中的应用
现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。
(5)单片机在医用设备领域中的应用
单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。
(6)在各种大型电器中的模块化应用
某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。
如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理),就需要复杂的类似于计算机的原理。
如:
音乐信号以数字的形式存于存储器中(类似于ROM),由微控制器读出,转化为模拟音乐电信号(类似于声卡)。
在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。
(7)单片机在汽车设备领域中的应用
单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于CAN总线的汽车发动机智能电子控制器,GPS导航系统,abs防抱死系统,制动系统等等[3]。
第1.5节 单片机的学习应用
单片机学习应用的六大重要部分
(1)总线:
我们知道,一个电路总是由元器件通过电线连接而成的,在模拟电路中,连线并不成为一个问题,因为各器件间一般是串行关系,各器件之间的连线并不很多,但计算机电路却不一样,它是以微处理器为核心,各器件都要与微处理器相连,各器件之间的工作必须相互协调,所以需要的连线就很多了,如果仍如同模拟电路一样,在各微处理器和各器件间单独连线,则线的数量将多得惊人,所以在微处理机中引入了总线的概念,各个器件共同享用连线,所有器件的8根数据线全部接到8根公用的线上,即相当于各个器件并联起来,但仅这样还不行,如果有两个器件同时送出数据,一个为0,一个为1,那么,接收方接收到的究竟是什么呢?
这种情况是不允许的,所以要通过控制线进行控制,使器件分时工作,任何时候只能有一个器件发送数据(可以有多个器件同时接收)。
器件的数据线也就被称为数据总线,器件所有的控制线被称为控制总线。
在单片机内部或者外部存储器及其它器件中有存储单元,这些存储单元要被分配地址,才能使用,分配地址当然也是以电信号的形式给出的,由于存储单元比较多,所以,用于地址分配的线也较多,这些线被称为地址总线。
(2)数据、地址、指令:
之所以将这三者放在一起,是因为这三者的本质都是一样的——数字,或者说都是一串‘0’和‘1’组成的序列。
换言之,地址、指令也都是数据。
指令:
由单片机芯片的设计者规定的一种数字,它与我们常用的指令助记符有着严格的一一对应关系,不可以由单片机的开发者更改。
地址:
是寻找单片机内部、外部的存储单元、输入输出口的依据,内部单元的地址值已由芯片设计者规定好,不可更改,外部的单元可以由单片机开发者自行决定,但有一些地址单元是一定要有的(详见程序的执行过程)。
数据:
这是由微处理机处理的对象,在各种不同的应用电路中各不相同,一般而言,被处理的数据可能有这么几种情况:
地址(如MOVDPTR,1000H),即地址1000H送入DPTR。
方式字或控制字(如MOVTMOD,#3),3即是控制字。
常数(如MOVTH0,#10H)10H即定时常数。
实际输出值(如P1口接彩灯,要灯全亮,则执行指令:
MOVP1,#0FFH,要灯全暗,则执行指令:
MOVP1,#00H)这里0FFH和00H都是实际输出值。
又如用于LED的字形码,也是实际输出的值。
理解了地址、指令的本质,就不难理解程序运行过程中为什么会跑飞,会把数据当成指令来执行了。
(3)P0口、P2口和P3的第二功能用法:
初学时往往对P0口、P2口和P3口的第二功能用法迷惑不解,认为第二功能和原功能之间要有一个切换的过程,或者说要有一条指令,事实上,各端口的第二功能完全是自动的,不需要用指令来转换。
如P3.6、P3.7分别是WR、RD信号,当微片理机外接RAM或有外部I/O口时,它们被用作第二功能,不能作为通用I/O口使用,只要一微处理机一执行到MOVX指令,就会有相应的信号从P3.6或P3.7送出,不需要事先用指令说明。
事实上‘不能作为通用I/O口使用’也并不是‘不能’而是(使用者)‘不会’将其作为通用I/O口使用。
你完全可以在指令中按排一条SETBP3.7的指令,并且当单片机执行到这条指令时,也会使P3.7变为高电平,但使用者不会这么去做,因为这通常会导致系统的崩溃。
(4)程序的执行过程:
单片机在通电复位后8051内的程序计数器(PC)中的值为‘0000’,所以程序总是从‘0000’单元开始执行,也就是说:
在系统的ROM中一定要存在‘0000’这个单元,并且在‘0000’单元中存放的一定是一条指令。
(5)堆栈:
堆栈是一个区域,是用来存放数据的,这个区域本身没有任何特殊之处,就是内部RAM的一部份,特殊的是它存放和取用数据的方式,即所谓的‘先进后出,后进先出’,并且堆栈有特殊的数据传输指令,即‘PUSH’和‘POP’,有一个特殊的专为其服务的单元,即堆栈指针SP,每当执一次PUSH指令时,SP就(在原来值的基础上)自动加1,每当执行一次POP指令,SP就(在原来值的基础上)自动减1。
由于SP中的值可以用指令加以改变,所以只要在程序开始阶段更改了SP的值,就可以把堆栈设置在规定的内存单元中,如在程序开始时,用一条MOVSP,#5FH指令,就是把堆栈设置在从内存单元60H开始的单元中。
一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后,而08H到1FH这个区域正是8031的第二、三、四工作寄存器区,经常要被使用,这会造成数据的混乱。
不同作者编写程序时,初始化堆栈指令也不完全相同,这是作者的习惯问题。
当设置好堆栈区后,并不意味着该区域成为一种专用内存,它还是可以象普通内存区域一样使用,只是一般情况下编程者不会把它当成普通内存用了。
(6)单片机的开发过程:
这里所说的开发过程并不是一般书中所说的从任务分析开始,我们假设已设计并制作好硬件,下面就是编写软件的工作。
在编写软件之前,首先要确定一些常数、地址,事实上这些常数、地址在设计阶段已被直接或间接地确定下来了。
如当某器件的连线设计好后,其地址也就被确定了,当器件的功能被确定下来后,其控制字也就被确定了。
然后用文本编辑器(如EDIT、CCED等)编写软件,编写好后,用编译器对源程序文件编译,查错,直到没有语法错误,除了极简单的程序外,一般应用仿真机对软件进行调试,直到程序运行正确为止。
运行正确后,就可以写片(将程序固化在EPROM中)。
在源程序被编译后,生成了扩展名为HEX的目标文件,一般编程器能够识别这种格式的文件,只要将此文件调入即可写片[4]。
第1.6节 几种常见的单片机
STC单片机:
STC公司的单片机主要是基于8051内核,是新一代增强型单片机,指令代码完全兼容传统8051,速度快8~12倍,带ADC,4路PWM,双串口,有全球唯一ID号,加密性好,抗干扰强。
(1)P