实验一 单片机彩灯控制器的电路设计与仿真
- 格式:doc
- 大小:57.50 KB
- 文档页数:3
电子制作2009年第6期一、电路仿真软件Multisim10.1电路仿真软件Multisim10.1增加的功能有:自动化API 接口、虚拟NI ELVIS II 、NI ELVIS 仪器、增强Multisim 中的NI 、LabVIEW 仪器、增加部分元器件数据库、扩展Spice 建模能力等。
Multisim10.1提供了一个非常大的元器件数据库,其中包括来自领先制造商美国AD 和德州仪器公司的大约300多个新元器件,这些元件包括运算放大器、比较器、模拟开关和电压参考组件;并提供原理图输入接口、全部的数模Spice 仿真功能、VHDL 、Verilog 设计接口与仿真功能、FPGA 、CPLD综合、RF 设计能力和后处理功能、梯形图仿真。
该软件提供了23种以上虚拟仪器,可以直接通过虚拟仪器观察电路的运行状态。
软件还提供500多个更新的组件以及最新的通用电力仿真部件,这些部件包括Buck 、Boost 、Buck-Boost 、PWM 控制器。
单片机仿真方面,Multisim 10.1内含8051/8052met-aLink 汇编和高级C51精简版编译器。
无需像Proteus 那样捆绑Keil C 软件,目标程序直接就可在Multisim 10.1内生成。
本文介绍的Multisim 10.1软件可以到下列网址下载试用版安装,免费使用30天:/webpage/datum/200807/2008071814363100001.htm 二、彩灯仿真实验图1是我们要仿真的一个8位彩灯电路。
在单图2红外接收电路图组成。
红外接收管收到的红外线信号较小,通过前置选频放大器放大后,再经过比较器比较,送微控制器处理。
对其它频率的干扰信号由于得不到放大而被丢弃。
L1为10mH ,C1为0.01μF ,该LC 谐振回路的谐振频率为f=1/2πL1C1姨=16kHz 。
调整W1可改变谐振回路的Q 值,从而改变前置选频放大器的放大倍数和带宽。
彩灯控制器设计及实验报告三篇篇一:多路彩灯控制器的设计一课程设计题目(与实习目的)(1)题目:多路彩灯控制器(2)实习目的:1.进一步掌握数字电路课程所学的理论知识。
2.熟悉几种常用集成数字芯片,并掌握其工作原理,进一步学会使用其进行电路设计。
3.了解数字系统设计的基本思想和方法,学会科学分析和解决问题。
4.培养认真严谨的工作作风和实事求是的工作态度。
5.作为课程实验与毕业设计的过度,课程设计为两者提供了一个桥梁。
二任务和要求实现彩灯控制的方法很多,如EPROM编程、RAM编程、单板机、单片机等,都可以组成大型彩灯控制系统。
因为本次实习要求设计的彩灯路数较少,且花型变换较为简单,故采用移位寄存器型彩灯控制电路。
(1)彩灯控制器设计要求设计一个8路移存型彩灯控制器,要求:1.彩灯实现快慢两种节拍的变换;2.8路彩灯能演示三种花型(花型自拟);3.彩灯用发光二极管LED模拟;4.选做:用EPROM实现8路彩灯控制器,要求同上面的三点。
(2)课程设计的总体要求1.设计电路实现题目要求;2.电路在功能相当的情况下设计越简单越好;3.注意布线,要直角连接,选最短路径,不要相互交叉;4.注意用电安全,所加电压不能太高,以免烧坏芯片和面包板。
三总体方案的选择(1)总体方案的设计针对题目设计要求,经过分析与思考,拟定以下二种方案:方案一:总体电路共分三大块。
第一块实现花型的演示;第二块实现花型的控制及节拍控制;第三块实现时钟信号的产生。
主体框图如下:方案二:在方案一的基础上将整体电路分为四块。
第一块实现花型的演示;第二块实现花型的控制;第三块实现节拍控制;第四块实现时钟信号的产生。
并在部分电路的设计上与方案一采用了完全不同的方法,如花型的控制。
主体框图如下:(2)总体方案的选择方案一与方案二最大的不同就在,前者将花型控制与节拍控制两种功能融合在一起,是考虑到只要计数器就可以实现其全部功能的原因,且原理相对简单。
实验名称:彩灯控制电路设计与实现实验任务要求:用VHDL 语言设计并实现一个彩灯控制电路,仿真并下载验证其功能。
彩灯有两种工作模式 ,可通过拨码开关或按键进行切换。
(1)单点移动模式:一个点在8个发光二极管上来回的亮(2)幕布式:从中间两个点,同时向两边依次点亮直至全亮,然后再向中间点灭,依次往复设计思路和过程:可以将两种模式分开设计,再用一个控制钮进行切换。
两种模式本质一样,都是循环点亮灯。
可以用状态机设计。
首先明确设计对象的外部特征,输入信号只有时钟信号cp 和切换按钮此处取a;输出为检测的八个彩灯亮暗。
根据设计对象的操作控制步来确定有限状态机的状态。
取初始状态为s0,第一种模式共有14种状态循环,因而可取状态s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13;第二种模式有八种状态,可共用第一种模式中的前八种状态,即为s0,s1,s2,s3,s4,s5,s6,s7。
根据题目要求的循环可以写出各个状态的下一状态,写完整个循环为止。
切换按钮可以用一个If 来总领。
单点移动模式:S0 S5S13 S7S8 S9 S10 S11 S1 S2 S3 S4S12 S6幕布式:流程图:彩灯电路设计语言:library ieee;use ieee.std_logic_1164.all;entity pmd isport(a,cp:in std_logic; %输入信号deng: out std_logic_vector(7 downto 0) %输出灯信号);end pmd;architecture arch of pmd istype all_state is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13);%枚举状态机状态 S0 S7 S6 S1 S5 S4S2 S3signal state:all_state; %状态转换符号begin %开始程序process(cp)beginif (cp'event and cp='1')then %时钟信号开始计数if(a='1')then %单点循环模式case state iswhen s0=> state<=s1;deng<="00000001"; %状态循环when s1=> state<=s2;deng<="00000010";when s2=> state<=s3;deng<="00000100";when s3=> state<=s4;deng<="00001000";when s4=> state<=s5;deng<="00010000";when s5=> state<=s6;deng<="00100000";when s6=> state<=s7;deng<="01000000";when s7=> state<=s8;deng<="10000000";when s8=> state<=s9;deng<="01000000";when s9=> state<=s10;deng<="00100000";when s10=> state<=s11;deng<="00010000";when s11=> state<=s12;deng<="00001000";when s12=> state<=s13;deng<="00000100";when s13=> state<=s0;deng<="00000010";when others =>state<=s0;deng<="00000000";end case;Else %切换为幕布式case state iswhen s0=> state<=s1;deng<="00011000";when s1=> state<=s2;deng<="00111100";when s2=> state<=s3;deng<="01111110";when s3=> state<=s4;deng<="11111111";when s4=> state<=s5;deng<="01111110";when s5=> state<=s6;deng<="00111100";when s6=> state<=s7;deng<="00011000";when s7=> state<=s0;deng<="00000000";when others =>state<=s0;deng<="00000000";end case;end if;end if;end process; end arch;输入波形:添加五十分频后的仿真程序:library ieee;use ieee.std_logic_1164.all;entity cd isport(a,clk:in std_logic;q: out std_logic_vector(7 downto 0));end cd;architecture a of cd istype all_state is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13);signal state:all_state;signal cnt : integer range 0 to 24999999; %50分频状态signal clk_tmp : std_logic;beginprocess(clk)Begin %开始运行分频信号if (clk'event and clk='1') thenif cnt=24999999 thencnt<=0;clk_tmp<= not clk_tmp;elsecnt<=cnt+1;end if;end if;if (clk_tmp'event and clk_tmp='1')then %分频后运行彩灯程序if(a='1')thencase state iswhen s1=> state<=s2;q<="00000010";when s2=> state<=s3;q<="00000100";when s3=> state<=s4;q<="00001000";when s4=> state<=s5;q<="00010000";when s5=> state<=s6;q<="00100000";when s6=> state<=s7;q<="01000000";when s7=> state<=s8;q<="10000000";when s8=> state<=s9;q<="01000000";when s9=> state<=s10;q<="00100000";when s10=> state<=s11;q<="00010000";when s11=> state<=s12;q<="00001000";when s12=> state<=s13;q<="00000100";when s13=> state<=s0;q<="00000010";when others =>state<=s0;q<="00000000";end case;elsecase state iswhen s0=> state<=s1;q<="00011000";when s1=> state<=s2;q<="00111100";when s2=> state<=s3;q<="01111110";when s3=> state<=s4;q<="11111111";when s5=> state<=s6;q<="00111100";when s6=> state<=s7;q<="00011000";when s7=> state<=s0;q<="00000000";when others =>state<=s0;q<="00000000";end case;end if;end if;end process;end a;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity cd isport(a,clk:in std_logic;q: out std_logic_vector(7 downto 0));end cd;architecture a of cd istype all_state is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13); signal state:all_state;beginprocess(clk)beginif (clk'event and clk='1') thenif(a='1') thencase state iswhen s0=> state<=s1;q<="00000001";when s1=> state<=s2;q<="00000010";when s2=> state<=s3;q<="00000100";when s3=> state<=s4;q<="00001000";when s4=> state<=s5;q<="00010000";when s5=> state<=s6;q<="00100000";when s6=> state<=s7;q<="01000000";when s7=> state<=s8;q<="10000000";when s8=> state<=s9;q<="01000000";when s9=> state<=s10;q<="00100000";when s10=> state<=s11;q<="00010000";when s11=> state<=s12;q<="00001000";when s12=> state<=s13;q<="00000100";when s13=> state<=s0;q<="00000010";when others =>state<=s0;q<="00000000";end case;elsecase state iswhen s0=> state<=s1;q<="00011000";when s1=> state<=s2;q<="00111100";when s2=> state<=s3;q<="01111110";when s3=> state<=s4;q<="11111111";when s4=> state<=s5;q<="01111110";when s5=> state<=s6;q<="00111100";when s6=> state<=s7;q<="00011000";when s7=> state<=s0;q<="00000000";when others =>state<=s0;q<="00000000";end case;end if;end if;end process;end a;故障及问题分析:1.编写这个程序时,很自然地想到用一个输入信号控制两种模式的切换,但把这个输入放在哪里,如何放,开始出现了几种想法。
学士学位毕业设计(论文)彩灯控制器的设计与实现学生姓名:xxx学号:xxx指导教师:xxx所在学院:信息技术学院专业:电气工程及其自动化中国·大庆2015年05月摘要摘要本文列出了几种常用单片机并逐个分析其优、缺点。
最终根据设计题目的特点选择了AT89S52单片机作为核心处理器。
显示部分使用32个LED小灯并排列成心形,利用时钟电路延时,加入USB接口作为电源,再把它们用软件编程后发出指令,达到设计要求,实现了利用单片机控制LED小灯完成八种闪烁效果。
关键词:单片机 LED小灯ABSTRACTABSTRACTThis article lists several common microcontroller and individually analyze their advantages and disadvantages. Chose the AT89S52 microcontroller as the core processor according to the design characteristics of the subject. LED display section 32 using a small lamp and arranged in heart shape. After then they send out software programming instructions, meet the design requirements, we can use the MCU to complete the eight LED small light flickering effect.Keywords: SCM LED lights目录摘要................................................... I ABSTRACT .............................................. II 目录................................................. III 前言................................................... V 1 绪论. (1)1.1课题的研究背景及意义 (1)1.2基于单片机的彩色小灯特点 (1)2 系统方案的论证与选择 (2)2.1方案一 (2)2.2方案二 (2)2.3方案三 (2)3 单片机的介绍 (4)3.1单片机的简介 (4)3.2单片机的发展史 (4)3.3单片机的工作过程 (5)3.4单片机的应用 (5)3.5几种常见的单片机 (6)4系统的硬件设计 (8)4.1系统总体框图 (8)4.2单片机最小系统设计 (8)4.3供电电路 (14)4.4LED模块 (14)5系统的软件设计 (16)5.1主程序流程图 (16)5.2闪烁效果实现 (16)结论 (18)参考文献 (19)致谢 (20)附录1 (21)前言现在的时代是个技术不断革新的时代,更多的科技走进了人们的生活。
51单片机彩灯控制器的设计一、设计目的单片机彩灯控制器是一种能够通过控制程序实现RGBLED灯光颜色和亮度变化的设备。
其设计目的是实现LED的多彩灯光效果,丰富室内环境,提高生活品质。
二、硬件设计1.单片机选择在设计彩灯控制器时,我们选择了常用的8051单片机作为控制芯片。
8051单片机拥有丰富的外设资源,易于编程控制,并且具有较高的稳定性和可靠性。
2.RGBLEDRGBLED是一种由红、绿和蓝三个LED灯组成的组合灯,可以通过控制不同颜色的LED来实现丰富多彩的灯光效果。
在设计中,我们选用了高亮度的RGBLED,以确保灯光效果的良好。
3.驱动电路为了驱动RGBLED,我们设计了一套驱动电路,其中包括三个恒流驱动电路和三个PWM调光电路。
恒流驱动电路可以确保LED的电流稳定,而PWM调光电路可以实现LED的亮度调节。
4.控制电路控制电路主要由单片机、按键、显示屏等组成。
通过单片机控制按键输入,并根据用户需求调整LED的颜色和亮度。
同时,显示屏可以实时显示LED的参数信息,方便用户操作。
5.电源彩灯控制器的电源一般采用直流5V供电,可以通过USB接口或者外部电源适配器来供电,以满足不同环境下的使用需求。
三、软件设计1.系统架构我们将彩灯控制器的软件设计分为三个模块:按键输入模块、LED控制模块和显示模块。
按键输入模块负责接收用户的按键输入,LED控制模块根据用户输入控制LED的颜色和亮度,显示模块实时显示LED的参数信息。
2.按键输入模块按键输入模块主要负责检测用户按键的状态,并根据按键的状态进行相应的处理。
例如,当用户按下“颜色+/颜色-”按键时,按键输入模块会向LED控制模块发送指令,控制LED颜色的变化。
3.LED控制模块LED控制模块负责控制RGBLED的颜色和亮度。
当接收到按键输入模块发送的指令时,LED控制模块会根据指令调节LED的PWM值,实现LED 颜色的变化和亮度的调节。
4.显示模块显示模块通过显示屏实时显示LED的参数信息,包括LED的颜色、亮度等参数。
实验一单片机彩灯控制器的电路设计与仿真一、实验要求仿照图1-1在Proteus中绘制一个基于89C51的流水灯控制器电路,开关可以控制流动的方向,拨码开关可以调整流动的快慢。
二、实验目的(1)学会使用Proteus ISIS绘制硬件电路图,掌握加载程序和仿真运行等基本操作。
(2)理解通过程序控制单片机的输人输出。
(3)掌握Keil uVision2软件的启动方法和使用的基本步骤。
(4)了解编译过程中产生的不同类型的文件及其作用。
(5)掌握查看和修改MCS-51单片机内部资源的操作方法。
(6)学习Keil uVision2常用热键的使用。
三、实验步骤1.在Proteus ISIS中设计硬件电路(1)创建新的设计。
建议以文件名“1-1”保存在对应的文件夹下,如“D:\MCU\CH1 \EX1-1"下。
(2)利用关键字或分类检索的方法将电路原理图中需要的元器件挑选至对象选择列表,主要元件可参照表1-1,然后依次选中在设计区单击,放入电路图。
(3)从模型选择工具栏的终端(Terminal)模型中将地线端子(Ground)和电源端子(Power)放置到电路中。
(4)连接电路原理图,可参考图1-1单片机彩灯控制电路。
表1-1 单片机彩灯控制器元器件清单图1-1单片机彩灯控制电路2.编辑源程序,添加源程序并构造目标程序若有现成的目标程序,此步可跳过。
第一种方法(无程序调试软件Keil uVision2时使用):(1)用记事本编辑以下源程序(注意,所有标点均为英文符号,不能用中文标点,分号及其后的注释可以不写,用文件名1-1.asm): (无程序调试软件Keil uVision2时使用):(2)执行“Source”菜单下的“Add”命令添加程序“1-1.asm”,执行“Build All”命令构造目标程序“1-1.hex”。
(3)设置单片机属性。
双击“AT89C51”,在属性中设置“Program File”为目标程序“1-1.hex”。
单片机课程设计报告题目:彩灯控制器的设计专业:电气工程及其自动化班级:电气081学号:3080421034学生姓名:廖诗宇指导老师:王水鱼2010年秋季学期起止时间:2011年1月10日至2011年1月14日平时(10%)任务完成(30%)答辩(30%)课设报告(30%)总评成绩彩灯控制器设计一.系统功能及要求分析1)用8盏LED灯实现至四种以上的彩灯灯光效果。
2)通过输入按钮实现彩灯灯光效果的切换。
3)通过输入按钮实现暂停彩灯效果。
在暂停期间小灯全亮。
4)使用定时器实现通过89C51芯片控制LED。
使其显示出四种彩灯效果:自动先从上到下再从下到上。
自动分为从上到下和从上到下。
闪烁,先亮一.三.五.七,再亮二.四.六.八。
交替亮.,暂停时,小灯全亮。
二.方案设计及其说明以AT-89C51单片机作为主要控制器,与按键.显示器等硬件相结合.利用软件实现对LED彩灯进行控制.该系统特点有极小,硬件少,电路结构简单及容易操作等优点。
我们在实验中采用了一种基于AT-89C51单片机的彩灯控制方案。
本方案以AT-89C51单片机作为控制核心,与显示.驱动等模块组成主要控制模块,在主控模块上没有五个按键和8位LED显示器,根据用户需要可以编写若干种亮灯模式。
利用其内部定时器TD实现一个基本时间的定时中断,根据各种亮灯时间的不同需要,在不同的时刻输出灯亮或者灯灭的控制信号,然后驱动各种颜色的灯亮或者灯灭,整个系统龚做由软件控制运行,根据需要,用户可以在LED彩灯工作时通过主控模块上的按键来设定亮灯的时间和亮灯闪动的频率。
同时通过按键,可以实现工作模式切换的功能。
三.原理线路设计1.)原理线路(见打印图)2)工作原理说明通电后,接通开关1,系统经过初始化,会直接自动进入自动模式,即LED彩灯会自动顺序亮灯,而在自动模式下,用户根据自己需要选择其他手动模式,并且可以改变每种模式下的时间和频率的参数,本实验设定的默认延迟200MS,当开关2接通后会进入手动模式,手动模式下,有两种工作模式,当开关3断开断开时,LED灯会按照从上往下的顺序亮灯,最下方的灯亮后又会回到最上方的灯亮,当开关3接通时,LED灯则会按照从下到上的顺序亮灯。
内蒙古师范大学计算机与信息工程学院《数字电路》课程设计报告设计题目彩灯控制器电路设计指导教师职称讲师姓名学号日期2012/7/5彩灯控制器电路设计计算机信息与工程学院 2010级计科师范汉班柴宁娇 20101102059指导老师张鹏举讲师摘要八路循环彩灯控制器整体电路由三部分组成:脉冲发生电路、移位寄存器、控制电路。
其中用时钟脉冲来启动电路,使其发出不同的频率产生不一样的脉冲,控制发光二极管,使电路更好的工作。
主要采用 74LS194 芯片接成扭环形结构的移位器来实现,最后做到两种花型的彩灯循环控制。
关键词脉冲发生电路;移位寄存器;控制电路;彩灯循环。
1 设计任务及主要技术指标和要求1.1 设计任务要求设计一个能够控制八路彩灯的逻辑电路。
1.2 主要技术指标和要求(1) 要求彩灯组成二种花型。
花型可以自己设置。
例如:花型Ⅰ——由中间到两边对称性依次亮,全亮后由中间向两边依次灭。
花型Ⅱ——8路灯分两半,从左自右顺次亮,再顺次灭。
(2) 要求两种花型交替出现。
2 工作原理要想实现本实验,需要实际时钟产生电路,循环控制电路和彩灯左右移,及全亮全灭输出电路。
时钟脉冲产生电路由脉冲发生器产生连续的脉冲。
循环电路采用74LS161 ,74LS194实现彩灯的循环控制。
具体主要通过两片双向移位寄存器74LS194 来实现彩灯电路控制,通过脉冲发生器来产生连续时钟信号的输入,由74LS161计数器来控制信号的移动方向,实现左移,右移及亮灭的功能。
总体电路原理图如下:时钟信号的产生花型的控制电路(74LS161)花型的显示电路花型演示电路(74LS194)图1:总体电路原理图花型控制电路:由74LS161 4位二进制同步计数器完;花型演示电路:由74LS194双向移位寄存器完成(可左移右移完成花型变化)。
3 基本组成3.1 花型控制信号电路由一片74LS161(两种花型每种显示一遍)计数器。
74LS161芯片用的是同步置数,并清零。
单片机课程设计(论文)-LED彩灯控制器题目:基于单片机的LED彩灯控制器设计与实现摘要:随着科技的不断发展,LED彩灯在现代生活中的应用越来越广泛。
本课程设计旨在设计和实现一种基于单片机的LED彩灯控制器,能够根据用户需求控制LED彩灯的颜色、亮度和模式等参数,实现照明、装饰和氛围营造等多种功能。
关键词:单片机、LED彩灯、控制器、颜色、亮度、模式1. 引言随着人们对照明需求的日益增长,彩色LED灯越来越受到人们的喜爱。
传统的彩色LED灯通常需要手动调节开关和旋钮来改变颜色和亮度,操作不够方便。
因此,设计一种基于单片机的LED彩灯控制器成为了迫切的需求。
2. 设计思路与方法本课程设计采用单片机作为主控制器,通过串口通信与电脑进行数据传输。
通过程序设计,实现用户对LED彩灯的颜色、亮度和模式等参数进行控制。
设计主要包括硬件设计和软件设计两个方面。
2.1 硬件设计硬件设计包括电路图设计和电路元器件的选择。
电路图设计主要包括单片机、LED灯、按键等元器件的连接方式。
根据设计要求,选择适当的电路元器件并进行连线。
2.2 软件设计软件设计主要包括单片机的程序设计和上位机的图形界面设计。
程序设计采用C语言进行编写,利用单片机的定时器和定时中断实现彩灯的颜色和亮度的控制。
上位机的图形界面设计通过GUI软件实现,提供简单直观的操作方式。
3. 实验与结果分析通过实验验证,LED彩灯控制器实现了对彩灯颜色、亮度和模式的控制功能。
用户通过上位机的图形界面,可以选择不同的颜色和亮度,并设置自动模式或手动模式。
实验结果表明,LED彩灯控制器具有良好的实用性和稳定性。
4. 总结与展望本课程设计通过设计和实现了一种基于单片机的LED彩灯控制器,实现了对LED彩灯的颜色、亮度和模式的控制。
该控制器具有操作简便、功能实用等特点,具有很好的应用前景。
在今后的研究中,可以进一步完善LED彩灯控制器的功能,提高其性能和稳定性,以满足用户更多的需求。
节日彩灯控制器一、设计目的1、了解节日彩灯控制器的工作原理2、掌握按键输入的消抖处理程序和延时程序的编写3、掌握电路板的实物焊接二、设计内容1、设计4个按键S17、S18、S19、S20,S17—开始,按此键则灯开始流动(由上而下)。
S18—停止,按此键则停止流动,所有灯为暗。
S19—上,按此键则灯由上向下流动。
S20—下,按此键则灯由下向上流动。
2、由按键控制功能的流水灯,其中的LED采取共阳极接法,通过依次向连接LED 的I/O口送出低电平,可实现题目要求的功能。
3、要求做出实物。
三、电路及连线设计图1电路图1、所需元器件1)电阻:10KΩ(1个)、200Ω(8个)、500Ω(2个)2)电容:10μF(1个)、30pF(2个)3)LED灯(8个)、按钮(4个)、晶振(12MHZ)四、使用说明1、使用5V电源供电2、按启动键S17,开始从右到左依次循环点亮3、按第一个转换键S19,灯变为从左到右依次循环点亮4、按第二个转换键S20, 灯变为从右到左依次循环点亮5、按停止按键S18,灯停止循环,全部熄灭五、流程图设计图2程序流程图六、程序设计如下org 00hljmp startorg 30hstart: mov p3,#0ffhjnb p3.3,kaishisjmp startstop: mov p1,#0ffhsjmp startkaishi: mov p1,#0fehlcall delayloop: mov a,p1rl amov p1,alcall delayjnb p3.2,stopjnb p3.1,kaishi ;判断有没有3号键按下jnb p3.0,fansjmp loopfan: mov p1,#07fhlcall delaylop: mov a,p1rr amov p1,alcall delayjnb p3.2,stopjnb p3.1,kaishi ;判断有没有3号键按下sjmp lopdelay: mov r6,#200 ;(4*250+3)*200+2=0.2sloop2: mov r7,#250loop1: nopnopdjnz r7,loop1djnz r6,loop2retend七、设计总结:感谢学校安排这次单片机小学期,让我们有了将理论与实践同步的机会。
实验一单片机彩灯控制器的电路设计与仿真
一、实验要求
(1)仿照图1-1在Proteus中绘制一个基于89C51的流水灯控制器电路,开关可以控制流动的方向,拨码开关可以调整流动的快慢。
(2)参照给出的程序,编写程序以改变LED闪烁频率和彩灯“流水”流动方向。
(3)选择不同的工作寄存器区,修改R0━R7的内容,观察相应片内RAM内容的变化。
二、实验目的
(1)学会使用Proteus ISIS绘制硬件电路图,掌握加载程序和仿真运行等基本操作。
(2)理解通过程序控制单片机的输入输出。
(3)掌握Keil uVision2软件的启动方法和使用的基本步骤。
(4)了解编译过程中产生的不同类型的文件及其作用。
(5)掌握查看和修改MCS-51单片机内部资源的操作方法。
(6)学习Keil uVision2常用热键的使用。
三、实验步骤
1.在Proteus ISIS中设计硬件电路
(1)创建新的设计。
建议以文件名“1-1”保存在对应的文件夹下,如“D:\MCU\CH1\EX1-1"下。
(2)利用关键字或分类检索的方法将电路原理图中需要的元器件挑选至对象选择列表,主要元件可参照表1-1,然后依次选中在设计区单击,放入电路图。
(3)从模型选择工具栏的终端(Terminal)模型中将地线端子(Ground)和电源端子(Power)放置到电路中。
(4)连接电路原理图,可参考图1-1单片机彩灯控制电路。
表1-1 单片机彩灯控制器元器件清单
图1-1单片机彩灯控制电路
2.编辑源程序,添加源程序并构造目标程序
若有现成的目标程序,此步可跳过。
第一种方法(无程序调试软件Keil uVision2时使用):
(1)用记事本编辑以下源程序(注意,所有标点均为英文符号,不能用中文标点,分号及其后的注释可以不写,用文件名1-1.asm): (无程序调试软件Keil uVision2时使用):
(2)执行“Source”菜单下的“Add”命令添加程序“1-1.asm”,执行“Build All”命令构造目标程序“1-1.hex”。
(3)设置单片机属性。
双击“AT89C51”,在属性中设置“Program File”为目标程序“1-1.hex”。
(4)仿真运行。
单击仿真工具,启动电路仿真,并用鼠标操作电路中的开关,观察程序运行结果,初步认识单片机是如何工作的。
第二种方法(有程序调试软件Keil uVision2时使用):
(1)启动Keil uVision2软件,创建新工程:P1-1,CPU选择Atmel 89C51或89C52。
(2)对工程的属性进行设置:目标属性中选择“生成HEX文件”。
(3)编写源程序,以asm为扩展名保存在工程文件夹中。
(4)将源程序加入源程序组:鼠标右键单击源程序组图标,加入文件组。
(5) 构造工程:使用热键<F7>或构造工具进行构造。
期间可能需要修改源程序,直到没有语法错误为止。
(6)调试:进入调试状态,打开相应窗口,运行程序,观察云行结果。
(7)启动Proteus ISIS,打开电路图“1-1.DSN”,单片机属性中选择目标文件P1-1.HEX,然后进行仿真运行,操作电路中的开关,观察运行结果。
;流水灯控制程序
MAIN:
MOV SP,#5FH
MOV A,#0FEH
LOOP:
MOV P0,A
MOV R7,P1
CALL DELAY ;延时
JB P3.7,LEFT;二分支,若P3.7=1,则跳转
RR A ;右移1位
SJMP LOOP
LEFT:
RL A ;左移1位
SJMP LOOP
DELAY: MOV R6,#0;延时子程序
L1: NOP
NOP
DJNZ R6,L1
DJNZ R7,DELAY
RET
END。