单片机实验——指示灯开关控制器

合集下载

单片机应用技术C语言任务1 开关控制指示灯

单片机应用技术C语言任务1 开关控制指示灯
( 3)开发环境的使用 ①建立新文件
启动伟福集成调试软件WAVE 6000,进入集成环境界 面进入集成环境界面,如图1-12所示 ,选择菜单【文件| 新建文件】功能,或单击快捷工具栏中的“新建文件” 按 钮 ,出现一个文件名为“NONAME1”的源程序窗口, 在 此窗口中输入1.1.2节的控制程序。
下午10时27分24秒 《单片机应用技术》课件制作组
1.1.2 控制程序
//主程序 void main(void) { P1=0xf0; while(1) { D1=S1; D2=S2; D3=S3; D4=S4; Delay (10); } }
//使P1.4~P1.7置为输入口
//取开关状态,开关按下对应的灯点亮
下午10时27分24秒
图1-9 程序的编译与连接
《单片机应用技术》课件制作组
1. Keil C51软件的使用
(4)编译、仿真调试运行程序 ①编译程序
编译当前文 创建目标, 重建所有目 件,即只编 即只编译和 标文件,即 译被激活窗 连接在项目 编译和连接 口中的源程 窗口中修改 项目里登录 序。 过的源程序, 的所有源程 再和已被编 序文件。 译过的文件 进行连接处 理,用于多 种源程序的 情况。
使用C语言能获得极高的程序编写效率,缩 短工程开发周期。但是C语言是面向过程的 高级语言,它对硬件透明,而硬件只能执行 机器码,为此,需要将C语言所描述的对象 语句转换成机器码。 首先C语言要转换成模块文件,通过连接器 与其他模块文件连接之后,编译成与硬件对 应的汇编语言,再通过汇编编译器转换成对 应的机器码,被CPU执行。
下午10时27分24秒
《单片机应用技术》课件制作组
2.伟福单片机仿真实验系统
(3)开发环境的使用

单片机实验——指示灯开关控制器

单片机实验——指示灯开关控制器

中国石油大学(北京)实验报告实验课程:单片机原理及应用实验名称:实验二——指示灯/开关控制器一、实验目的学习汇编語言指令系统的编程与调试方法二、实验内容1、参照教材图A.19完成实验二电路原理图的绘制;2、根据图A.20的程序流程图编写汇编语言程序;3、利用ISIS的汇编工具查找并修正程序的语法错误和逻辑错误;4、观察仿真结果,完成实验报告。

三、实验要求1、电路原理图P1口读取开关状态的工作原理:通过P1的读引脚功能来实现,由于P1口内设上拉电阻,在开关闭合前读取高电平,经过三态门在P1.n输出高电平。

当开关闭合时,由于与地面相连,P1读取低电平,经过三态门在P1.n输出低电平。

P1口输出工作原理:单片机执行写P1,#data时,数据data经过内部总线送入锁存器储存。

当数据为,则该位锁存器输出Q=1,则非Q为0,场效应管截止,从而在引脚P1.n 上输出高电平;反之,如果数据为0,则Q=1,非Q为0,场效应管导通,引脚P1.n上输出低电平。

P2口控制LED灯的原理也是通过P2口的输出原理实现的,程序不断把P1的内容传递给P2。

当给P1口赋初值0或开关闭合时,P1.n输出0,P2口读取0,在引脚P2.n上输出低电平,由原理图中LED的摆放方式知LED灯低电平导通。

同理当给P1口赋初值#FFH 或开关断开时,P1.n输出1,P2口读取1,在引脚P2.n上输出高电平,LED灯截止,灯灭。

图1 实验原理电路图2、汇编源程序图2 汇编源程序3、程序调试过程1.源文件创建与编译(1)建立新的程序文件单击菜单栏“源代码”—“添加/删除源文件”选项,弹出“添加/移除源代码”对话框。

在“代码生成工具”下拉框内部选择“ASEM51”选项。

单击“新建”按钮,在适当文件目录下输入待建立程序的文件名(如text),核实文件类型为*ASM。

单击“打开”按钮,回应创建新文件提示后,系统弹出确认对话框。

单击“确认”按钮,在菜单“源代码”下可看到类似“1.text.ASM”的文件名,单击该文件名后可打开一个空白的文本文件。

单片机实验报告——LED灯控制器

单片机实验报告——LED灯控制器

单片机实验报告——LED灯控制器
实验名称:LED灯控制器设计与实现
实验目的:
1.学习和掌握单片机的基本原理及其应用;
2.熟悉LED灯控制器的工作原理,并能够实现基本的灯光控制功能;
3.提高动手能力和解决实际问题的能力。

实验原理:
本实验基于单片机来控制LED灯的亮灭,通过按键输入来控制LED灯的工作状态。

实验材料和器件:
1.AT89C51单片机开发板;
2.电源适配器;
3.LED灯;
4.电阻、电容、按键等元器件。

实验步骤:
1.连接电路
将AT89C51单片机开发板与电源适配器连接,并将LED灯与单片机开发板上的GPIO引脚连接。

2.编写程序
使用Keil C编写程序,实现按下按钮时,LED灯亮起,再次按下按钮时,LED灯熄灭。

3.烧录程序
将编写好的程序通过编程器烧录到AT89C51单片机中。

4.运行程序
上电后,按下按钮,观察LED灯的亮灭情况,验证程序的正确性。

5.调试和优化
根据实际情况,对程序进行调试和优化,确保LED灯的控制能够稳定可靠。

实验结果:
经过调试和优化后,LED灯控制器工作正常。

按下按钮时,LED灯亮起,再次按下按钮时,LED灯熄灭,实现了基本的灯光控制功能。

实验总结:
通过本次实验,我对单片机的基本原理和应用有了更深入的了解,学会了使用单片机控制LED灯的方法和技巧。

同时,我也提高了动手实践和解决实际问题的能力。

在今后的学习和工作中,我会继续深入学习单片机的应用,不断提升自己的技术水平。

单片机原理实验报告(详细)

单片机原理实验报告(详细)

湖南城市学院实验报告2018-2019 学年上学期姓名:***班级学号:******实验课程:单片机原理及应用实验室名称:电子工程实验室湖南城市学院信息与电子工程学院实验中心印制实验项目名称:实验一指示灯和开关控制器实验一、实验目的及要求1、学习51单片机I/O基本输入/输出功能,掌握汇编语言的编程与调试方法;2、熟悉proteus软件,了解软件的结构组成与功能;3、学会在ISIS模块中进行汇编程序录入、编译和调试;4、理解单片机程序控制原理,实现指示灯/开关控制器的预期功能。

二、实验原理实验电路原理图如图1所示,图中输入电路由外接在P3口的8只拨动开关组成;输出电路由外接在P2口的8只低电平驱动的发光二极管组成。

此外,还包括时钟电路、复位电路和片选电路。

图1 实验原理图在编程软件的配合下,要求实现如下指示灯/开关控制功能:程序启动后,8只发光二极管先整体闪烁3次(即亮→暗→亮→暗→亮→暗,间隔时间以肉眼可观察到为准),然后根据开关状态控制对应发光二极管的灯亮状态,即开关闭合相应灯亮,开关断开相应灯灭,直至停止程序运行。

软件编程原理为:(1)8只发光二极管整体闪烁3次亮灯:向P2口送入数值0;灭灯:向P2口送入数值0FFH;闪烁3次:循环3次;闪烁快慢:由软件延时时间决定。

(2)根据开关状态控制灯亮或灯灭开关控制灯:将P3口(即开关状态)内容送入P2口;无限持续:无条件循环。

程序流程图如图2所示。

图2 实验程序流程图三、实验仪器设备及装置(1)硬件:电脑一台;(2)仿真软件:Proteus;(3)编程软件Keil uVision4。

其中,仿真软件ISIS元件清单如表1所示。

表1 仿真软件ISIS元件清单四、实验内容和步骤(一)实验内容:(1)熟悉ISIS模块的汇编程序编辑、编译与调试过程;(2)完成实验的汇编语言的设计与编译;(3)练习ISIS汇编程序调试方法,并最终实现实验的预期功能。

(二)实验步骤:(1)提前阅读与实验相关的阅读材料;(2)参考指示灯/开关控制器的原理图和实验的元件清单,在ISIS中完成电路原理的绘制;(3)参考程序流程图在Keil uVision4中编写和编译汇编语言程序;(4)利用ISIS的汇编调试功能检查程序的语法和逻辑错误;(5)观察仿真结果,检验与电路的正确性。

指示灯开关控制器的实验报告

指示灯开关控制器的实验报告

嘉应学院物理单片机原理及应用基于和实验报告实验项目:实验地点:班级:姓名:座号:实验时间:年月日实验二指示灯开关控制器【实验目的】学习汇编语言的编程与调试方法【实验原理】下图为指示灯开关控制器的电路原理图。

图中输入电路由外接在口的只开关组成;输出电路由外接口的只发光二极管组成。

此外,还包括时钟电路和复位电路。

程序启动后,只发光二极管先整体闪烁次(即亮—暗—亮—暗—亮—暗,间隔时间以肉眼可观察到为准)。

然后根据开关状态控制对应发光二极管的亮灯状态,即开关闭合相应灯亮,反之则相反。

【实验内容】(1)熟悉软件,了解软件的结构组成与功能;(2)学习汇编语言的程序设计方法;(3)学会程序录入、编译和调试;(4)理解单片机程序控制原理,实现指示灯开关控制器的预期功能。

【实验步骤】(1)在中绘制电路原理图,按照表中元件添加到编辑环境中;(2)编写语言程序;(3)利用调试功能检查程序的语法和逻辑环境中;(4)观察仿真结果,检验程序与电路的正确性。

1、启动的模块从开始菜单启动的模块后,可进入该软件的主界面,如图:2、选择元器件单击图中左侧的对象选择按钮“”,可弹出“”元件选择窗口,利用””检索框可查找所需的元器件,例如输入“”,系统会在对象库中进行查找,并将搜索结果显示在“”列表框中,双击元件后,该元件会出现在对象选择列表窗口中里。

利用此方法可继续选择其他元件。

欲退出选择,单击“”按钮,关闭元件选择窗口,返回到主界面。

如图:3、摆放元器件单击对象选择列表中的80C,预览窗口中将会出现80C图形。

在编辑窗口单击,可将80C放置在编辑窗口中。

如需调整元件摆放位置,右击选中对象,并按住左键拖动该对象到合适的位置,然后在编辑窗口的空白处右击,撤销对象的选中状态。

如需调整元件方位,右击选中对象,可使元件旋转或翻转。

依次可将元器件全部摆放到图形编辑窗口中,如图、编辑元器件标签在图形编辑窗口中右击选择对象,继续双击可打开该元件的编辑对话框。

单片机课后实验2 指示灯 开关控制器

单片机课后实验2 指示灯 开关控制器

实验2 指示灯/开关控制器【实验内容】1)熟悉ISIS模块的汇编程序编辑2)完成实验2的汇编语言程序的设计与编译3)练习ISIS汇编程序调试方法,并最终实现实能【实验原理】实验原理如图1输入接口由外接在P3口的8只拨动开关组成,输出接口由外接在P2口的8只低电平驱动的发光二极管组成。

此外,还包括时钟电路、复位电路和片选电路。

图1实现的功能:程序启动后,8只发光二极管整体闪烁3次(即亮-暗-亮-暗-亮-暗,间隔时间以肉眼可观察到的为准),然后根据开关状态控制灯亮或灯灭,即开关闭和灯亮,开关断开灯灭。

编程原理:1)8只发光二极管整体闪烁3次亮灯:向P2口送数值0;灭灯:向P2口送数值0ffh;闪烁3次:循环3次闪烁快慢:由软件延时时间决定2)根据开关状态控制灯亮或灯灭开关控制灯:将P3内容送入P2口;无限持续:无条件循环【实验步骤】1)绘图:如图2,在proteus左边工具栏单击左键选择原件模式,左键单击DEVICES窗口的P打开Pick Devices窗口,关键字一栏输入所需原件的型号(如80C51),左键双击在右边出现的该匹配原件名,原件就选好了。

依次选出所有所需原件,其将全部显示在原件模式下的DEVICES窗口。

图2如图3,放置原件并连线,其中,总线放置选择总线模式,电源和地在终端模式中选择,电气连接的标号在“工具—属性设置工具“中(或按快捷键A)设置。

设置好元件的参数后原理图完成。

图32)编程如图4,在”源程序“中左键单击“添加/删除源文件“,在出现的窗口中创建源程序并左键单击”源程序--全部编译“,修改代码错误。

左键单击”调试—开始/重新启动调试“可以单步运行,查看。

源程序如下:mov r5,#3loop1: mov P2,#0acall delaymov P2,#0ffhacall delaydjnz r5,loop1loop2: mov P2,P3sjmp loop2delay: mov r0,#100del0: mov r1,#50del1: mov r2,#25del2: djnz r2,del2djnz r1,del1djnz r0,del0retend图43)运行程序如图5,左键双击画好的原理图中的51单片机,在弹出的”编辑原件“窗口中选择” ”.HEX”文件载入单片机。

单片机指示灯开关控制器

单片机指示灯开关控制器

单片机指示灯开关控制器实验二指示灯开关控制器一、实验目的学习汇编z言指令系统的编程与调试方法二、实验内容1、参照教材图a.19完成实验二电路原理图的绘制;2、根据图a.20的程序流程图编写汇编语言程序;3.使用Isis汇编工具查找并纠正程序的语法和逻辑错误;4.观察模拟结果并完成实验报告。

三、实验要求实验报告应包括以下内容:1。

需要完整的电路原理图来说明P2端口控制LED开关和P3端口读取开关状态的工作原理;2.编译后的汇编源程序要求源程序包含能够解释语句功能的注释段和至少2条伪指令;3.对于汇编程序的调试过程,需要简要描述所使用的调试方法,并显示调试过程的主要屏幕截图;4.为达到模拟操作效果,需提交3~4张操作截图;5.实验总结,说明遇到的主要问题或实验2的经验等。

实验报告的电子邮件主题及存盘文件名的格式为:2021041220马晓明实验2,应采用2021或2021版word文档格式。

1.电路原理图2、汇编源程序org30h;主程序代码从rom30h numequ3开始;循环次数约为100;延迟系数movr5,#num;循环计数器初值loop1:movp2,#0;led亮灯acalldel100;延时100msmovp2,#0ffh;led熄灯acalldel100djnzr5,loop1;循环控制loop2:movp2,p3;根据p2口状态控制ledsjmploop2org100h;延迟子程序代码从rom100h、del100开始:movr0、#circu;三重循环,延迟约0.1sdel0:movr1,#circu/2del1:movr2,#circu/4djnzr2,$djnzr1,del1djnzr0,del0retend3、程序调试过程(1)创建并编译源文件(2)将源代码写入MCU(3)点击仿真运行,将开关一个一个的关闭,查看效果。

4.模拟运行效果关闭2个开关仿真运行效果关闭6个开关,模拟运行效果关闭全部开关仿真运行效果5.实验总结通过本次实验,我了解到了编译软件的结构及使用方法,并且知道也学习了有关软件的结构与功能,认识到要想学好单片机除了在课堂好好听老师讲课外,课外还要在仿真软件上多加练习,不懂的多跟老师和其他同学交流。

单片机模拟开关灯实验,附程序

单片机模拟开关灯实验,附程序

2.模拟开关灯1.实验任务如图4.2.1所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。

2.电路原理图图4.2.13.系统板上硬件连线(1).把“单片机系统”区域中的P1.0端口用导线连接到“流水灯”区域中的L1端口上;(2).把“单片机系统”区域中的P3.0端口用导线连接到“独立键盘”区域中的K1端口上;4.程序设计内容(1).开关状态的检测过程单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。

单片机可以采用JB BIT,REL或者是JNB BIT,REL指令来完成对开关状态的检测即可。

(2).输出控制如图3所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。

5.程序框图图4.2.26.汇编源程序ORG 00HSTART: JB P3.0,LIGCLR P1.0SJMP STARTLIG: SETB P1.0SJMP STARTEND7.C语言源程序#include <A T89X51.H>sbit K1=P3^0;sbit L1=P1^0;void main(void){while(1){if(K1==0){L1=0; //灯亮}else{L1=1; //灯灭}}}。

单片机原理与应用实验报告

单片机原理与应用实验报告

单片机原理实验报告实验一计数显示[目的]熟悉Proteus仿真软件,掌握单片机原理图的绘制方法【实验内容】(1)熟悉Proteus仿真软件,了解软件的结构和功能(2)学习如何使用ISIS模块,学习设置图纸、选择元件、画线、修改属性等基本操作(3)了解如何加载可执行文件和运行程序仿真(4)了解Proteus在单片机开发中的作用,完成单片机电路原理图的绘制[实验步骤](1)观察Proteus软件的基本结构,如菜单、工具栏、对话框等。

(2)Proteus中绘制电路原理图,并根据表A.1将组件添加到编辑环境中(3)在Proteus中,观察仿真结果,检查电路图绘制的正确性【实验示意图】【实验源程序】#include <reg51.h>位 P3_7=P3^7;无符号字符 x1=0;x2=0 ;无符号字符数=0;无符号字符 idata buf[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};无效延迟(int时间){整数 k,j;for(;time<0;time--)for(k=200;k>0;k--)for(j=500;j<0;j--);}无效初始化(){P0=buf[x1];延迟(10);P2=buf[x2];延迟(10);}无效的主要(){在里面();而(1){x1=计数/10;x2=计数%10;P0=buf[x1];延迟(10);P2=buf[x2];延迟(10);如果(P3_7==0)// {延迟(10);而(!P3_7);如果(计数==99)计数=0;别的计数=计数+1;}}}[实验结果]阐明计数器的作用是按下K1后,数码管LED1和LED2会显示按键的按下次数, LED1代表一位, LED2代表十位。

当计数器达到99时,再次按下K1键,显示值再次从0开始。

实验2指示灯开关控制器[目的]学习如何编程和调试汇编语言【实验内容】(1)熟悉Proteus仿真软件,了解软件的结构和功能(2)学习如何用汇编语言编程(3)ISIS 模块中输入、编译和调试汇编程序(4)了解MCU程序控制原理,实现指示灯/开关控制器的预期功能[实验步骤]( 1 ) 在ISIS中画出电路原理图, 并在编辑环境中添加相应的元器件 .( 2 )在ISIS中编写汇编语言程序( 3 ) 利用ISIS 的汇编调试功能检查程序的语法和逻辑错误( 4 )观察仿真结果,检查程序和电路的正确性【实验示意图】【实验源程序】#include <reg51.h> 无效延迟(int时间){整数 k,j;for(;time<0;time--) {for(k=100;k<0;j--) for(j=500;j<0;j--); }}无效初始化(){P1=0x00;延迟(20);P1=0xff;延迟(20);P1=0x00;延迟(20);P1=0xff;延迟(20);P1=0x00;延迟(20);P1=0xff;延迟(20);}无效的主要(){在里面();P1=0x00;延迟(20);P1=0xff;延迟(20);而(1){P1=P2 ;}}[实验结果]阐明点击运行,8个LED 一起闪烁3次。

单片机实验报告-LED灯控制器.doc

单片机实验报告-LED灯控制器.doc

单片机实验报告-LED灯控制器.doc本文主要介绍了一款基于51单片机的LED灯控制器的设计与实现,讲述了设计过程及原理,并列举了操作方法和应用场景。

一、设计过程1. 系统结构设计本系统主要包括三个模块:单片机模块、按键输入模块和LED控制模块。

单片机模块主要负责控制整个系统的运行,所以选用了AT89C51单片机;按键输入模块通过按键输入来控制LED灯的亮灭和灯光颜色的选择;LED控制模块通过单片机控制LED灯的亮度和颜色。

2. 硬件电路设计按键输入模块主要是通过8个按键输入实现。

通过8个按键分别控制LED的开关和颜色的选择,具体实现原理如下:当按键按下时,对应的IO口从高电平变为低电平,单片机从低电平口读取输入数据,判断按键的状态,并进行相应的操作。

由于按键输入电平不稳定,需要增加一个脉冲抗干扰的电路,以保证按键输入的稳定性。

LED控制模块主要采用的是3路PWM调光电路,配合RGB LED灯实现颜色选择。

该PWM 调光电路是通过改变占空比来实现LED灯的亮度控制,实现原理如下:单片机通过PWM信号控制三个三极管的ON/OFF,以调节LED灯的亮度。

3. 软件程序设计主要实现功能包括:初始化系统、按键读取、LED颜色选择、LED亮度调节等。

初始化系统:主要是对单片机进行初始化,包括IO口配置、定时器/计数器配置等。

按键读取:通过循环扫描的方式,读取按键输入,判断按键状态,根据不同的按键按下情况进行相应的操作。

LED颜色选择:通过按键选择不同的颜色,将对应的PWM输出数字量传递给三联杆TRIAC,实现LED灯颜色的选择。

二、系统实现及测试我们根据以上设计过程,设计出了一个简单的LED灯控制器,通过51单片机控制按键输入和LED亮度和颜色的选择,实现了简单的灯光场景切换。

2. 系统测试经过实际测试,系统可以稳定运行,按键输入灵敏度、LED亮度和颜色切换效果均达到预期目标。

三、操作方法1. 颜色选择按下对应颜色的按钮即可选择对应颜色。

单片机综合实验LED灯控制器

单片机综合实验LED灯控制器

实验名称实验三综合实验-LED灯控制器指导教师专业班级姓名学号联系电话一、任务要求实验目的:加深对定时/计数器、中断、IO端口的理解,掌握定时/计数器、中断的应用编程技术及中断程序的调试方法。

实验内容:利用C8051F310单片机设计一个LED灯控制器主要功能和技术指标要求:1. LED灯外接于P0.0端。

2. LED灯分别按5Hz,1Hz和0.5Hz三种不同频率闪动,各持续20s。

3. 在LED显示器上显示当前模式。

4. 在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。

5. 利用单片机内部定时器定时,要求采用中断方式。

提高要求:1)使用按键(KINT)切换LED灯闪烁频率。

2)在LED显示器上显示当前模式和频率值。

3)其它个性化设计。

二、设计思路利用定时器T0实现0.1s,0.5s和1s的定时,分别对应5Hz,1Hz和0.5Hz三种闪烁方式的半周期,用T0的中断服务程序实现LED信号灯的闪烁和LED显示器显示当前模式,并重新开始计时。

这三种定时时间的定时器计数初值存于工作寄存器中,赋计数初值时取出,一种频率的闪烁结束后通过改变寄存器内的值来改变半周期,接着再赋值取出。

利用另一个工作寄存器来控制闪烁次数,是当前模式运行时间为20s。

三、资源分配R0、R1:当前模式下定时器计数初值R2:循环次数,即闪烁次数四、流程图五、源代码$include (C8051F310.inc)LED BIT P0.0BEEP BIT P3.1KINT BIT P0.1ORG 0000HLJMP MAINORG 0003HLJMP T_KINTORG 001BHLJMP TIME1MAIN: LCALL Init_DeviceMOV R0,#00HCLR LEDCLR BEEPCLR PSW.1CLR PSW.5SETB EASETB EX0SETB IT0MOV TMOD,#10HSETB ET1CHOO: CJNE R0,#02H,LOOPLJMP CASE2LOOP: JC CASE1LJMP CASE3CASE1:MOV R1,#0D7HMOV R2,#14HMOV R7,#0C8HMOV P1,#0SETB P1.6SETB P1.5LJMP STARTCASE2:MOV R1,#83H MOV R2,#63H MOV R7,#28HMOV P1,#0SETB P1.7SETB P1.6SETB P1.4SETB P1.4SETB P1.3SETB P1.1LJMP STARTCASE3:MOV R1,#06H MOV R2,#0C6HMOV P1,#0SETB P1.7SETB P1.6SETB P1.5SETB P1.5SETB P1.4SETB P1.1MOV R7,#14HLJMP START START:LCALL VOICE MOV TH1,R1 MOV TL1,R2MOV A,R7BACK: SETB TR1LOOP1:MOV C,PSW.5JNC LOOP1CLR PSW.5DJNZ R7,BACKMOV C,PSW.1JC THERECJNE A,#28H,LOOP2 LJMP CASE3LOOP2:JC THERELJMP CASE2THERE:LCALL VOICESJMP $VOICE:SETB BEEPMOV TH1,#06HMOV TL1,#0C6HCLR PSW.5SETB TR1LOOP3:MOV C,PSW.5JNC LOOP3CLR BEEPRETT_KINT:SETB PSW.1INC R0CJNE R0,#04H,K_RETCLR PSW.1MOV R0,#00HK_RET: CLR TR1POP SPPOP SPMOV DPTR,#0036HPUSH DPLPUSH DPHRETITIME1: MOV TH1,R1MOV TL1,R2SETB PSW.5CLR TR1CPL LEDRETIPCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #010hmov CKCON, #002hretPort_IO_Init:mov XBR1, #040hretInterrupts_Init:mov IE, #009hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Init retEND六、程序测试方法与结果思考题1.若想实现3种闪烁方式的持续时间在5s-60s范围内可调,且每种方式的持续时间各不相同,应如何设计程序?答:只需将R2的值改成相应的即可。

单片机实验报告实验2指示灯循环控制

单片机实验报告实验2指示灯循环控制

学号姓名专业电气工程及其自动化班级实验2 指示灯循环控制一、实验目的熟悉uVision3编译软件,掌握C51编程与调试方法。

二、实验内容在编程软件的配合下,要求实现如下功能:8只发光二极管做循环点亮控制,且亮灯顺序为D1->D2->D3->…->D8->D7->…->D1,无限循环,两次亮灯的时间间隔约为0.5s。

三、实验设备计算机(已安装Keil和Proteus软件)元器件:80C51, CAP, CAP-ELEC, CRYSTAL, RES, RESPACK-8, LED-YELLOW四、实验硬件电路实验电路:源程序:#include"reg51.h"void delay(unsigned int time){unsigned int j=0;for(time=time;time>0;time--)for(j=0;j<125;j++);}void main(){unsigned char i; //定义1个位于data区的自动无符号字符型变量P0=1; //P0口赋一初值,使D1灯亮,D2-D8灯灭delay(50); //调用函数delay,传入参数值为50(ms)while(1)//采用while结构的无限循环体{for(i=1;i<=7;i++)//由上向下循环控制{P0<<=1; //使P0的数值向左移1位delay(50);}for(i=1;i<=7;i++){P0>>=1; //使P0中的数值向右移1位delay(50);}}}五、实验要求(1)、熟悉uVision3编程软件,了解软件结构与功能。

(2)、掌握在uVision3中进行C51开发的方法。

(3)、根据实验内容设计相应的调试程序,并通过仿真,运行正确。

(4)、认真整理实验报告并按时提交。

六、实验结果及总结让我们知道了如何建立工程文件、编辑源程序文件、将源程序加入到工程中、设置工程配置选项、生成可执行文件以及仿真运行程序。

实验2.指示灯开关控制器

实验2.指示灯开关控制器

实验 2.指示灯/ 开关控制器【实验目的】学习 51 单片机I/O 口基本输入/输出功能,掌握汇编语言的编程和调试方法。

【实验原理】实验电路原理图如图 A.21 所示,图中输入电路由外接在P3 口的 8 只拨动开关组成;输出电路由外接在P2 口的 8 只低电平驱动的发光二极管组成。

此外,还包括时钟电路、复位电路和片选电路。

图 A.21 实验 2 电路原理图在编程软件的配合下,要求实现如下指示灯/ 开关控制功能:程序启动后,8 只发光二极管先整体闪烁 3 次(即亮→暗→亮→暗→亮→暗,间隔时间以肉眼可观察到为准),然后根据开关状态控制发光二极管的亮灯状态,即开关闭合相应灯亮,开关断开相应灯灭,直至停止程序运行。

软件编程原理为:(1)8 只发光二极管整体闪烁 3 次亮灯:向P2 口送入数值0;灭灯:向P2 口送入数值0FFH;闪烁 3 次:循环 3 次;闪烁快慢:由软件延时时间决定。

(2)根据开关状态控制灯亮或灯灭开光控制灯:将P 口(即开光状态)内容送入P口;无限持续,无条件循环。

程序流程图如图 A.22 所示。

【实验内容】(1) 熟悉 ISIS模块的汇编程序编辑、编译与调试过程;图 A.22 实验 2 软件流程图(2) 完成实验 2 的汇编语言程序的设计与编译;(3) 练习 ISIS汇编程序调试方法,并最终实现实验 2 的预期功能。

【实验步骤】(1) 提前阅读与实验相关的阅读材料;(2) 参考图 A.21 和表 A.3,在 ISIS中完成电路原理图的绘制;(3) 参考图 A.22 在 ISIS中编写和编译汇编语言程序;(4) 利用 ISIS的汇编调试功能检查程序的语法和逻辑错误;(5) 观察仿真结果,检验程序与电路的正确性。

【实验要求】提交实验报告并包括如下内容:电路原理图、软件流程分析、汇编源程序(含注释部分)、仿真运行截图和实验小结。

【参考图表】表A.3 实验 2 的元件清单元件类别电路符号元件名称Microprocessor ICs U1 80C51Miscellaneous X1/12MHz CRYSTALCapacitors C2~C3/30pF CAPCapacitors C3/22μF CAP-ELECResistors R1/10k RESResistors R2~R9/200ΩRES Optoelectronics D1~D8 LED-REDSwitches& Relays SW1~SW8 SWITCH【实验程序】/* 指示灯、开光控制器程序*/#include <reg51.h>void delay(unsigned char c); // 声明延时函数void main(){/* 以下程序实现LED闪烁的功能*/unsigned inti=3;// 闪烁 3 次while(i--){P2 = 0x00; // 灯亮delay(50); // 延时 0.5sP2 = 0xff; // 灯灭delay(50); // 延时 0.5s}/* 以下函程序实现开关控制灯的功能*/while(1){P2 = P3; // 将 P3 口的值赋值给P2 口}}/* 以下为延时函数,当 c 为 1 时延时10ms*/void delay(unsigned char c){unsigned char a, b;for (;c>0;c--){for (b=38;b>0;b--){for (a=130;a>0;a--);}}}【仿真截图】略【实验小结】经过这次实验我进一步熟悉了Keil C的结构及使用方法,并且知道也学习了有关软件的结构与功能,同时也认识到要想学好单片机除了在课堂好好听老师讲课外,课外还要在仿真软件上多加练习才是最重要的。

单片机设计模拟开关灯 单片机应用 单片机电路原理图 单片机开关灯程序

单片机设计模拟开关灯 单片机应用 单片机电路原理图 单片机开关灯程序

模拟开关灯1.实验任务如图4.2.1所示,监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态,如果开关合上,L1亮,开关打开,L1熄灭。

2.电路原理图图4.2.13.系统板上硬件连线(1).把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上;(2).把“单片机系统”区域中的P3.0端口用导线连接到“四路拨动开关”区域中的K1端口上;4.程序设计内容(1).开关状态的检测过程单片机对开关状态的检测相对于单片机来说,是从单片机的P3.0端口输入信号,而输入的信号只有高电平和低电平两种,当拨开开关K1拨上去,即输入高电平,相当开关断开,当拨动开关K1拨下去,即输入低电平,相当开关闭合。

单片机可以采用JB BIT,REL或者是JNB BIT,REL指令来完成对开关状态的检测即可。

(2).输出控制如图3所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮;我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。

5.程序框图图4.2.26.汇编源程序 ORG 00HSTART: JB P3.0,LIGCLR P1.0SJMP STARTLIG: SETB P1.0SJMP STARTEND7. C语言源程序#include <AT89X51.H>sbit K1=P3^0;sbit L1=P1^0;void main(void){while(1){if(K1==0){L1=0; //灯亮}else{L1=1; //灯灭}}}3.多路开关状态指示1.实验任务如图4.3.1所示,AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,P1.4-P1.7接了四个开关K1-K4,编程将开关的状态反映到发光二极管上。

《单片机原理与应用》单片机控制LED灯点亮实验

《单片机原理与应用》单片机控制LED灯点亮实验

《单片机原理与应用》单片机控制LED灯点亮实验一、实验目的和要求1、熟悉protues软件的使用和protues和Keil软件的联调2、学习P1口的使用方法3、学习延时子程序的编写和使用二、实验内容和原理单片机的IO口是准双向口,它作为输出口时与一般的双向口使用方法相同,由准双向口结构可知当IO口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。

1、在Protues软件中完成单片机最小应用系统和LED指示灯显示电路2、打开Keil uVision2仿真软件,首先建立本实验的项目文件,输入源程序(课前预习程序),进行编译,直到编译无误,生成hex文件3、实现protues和keil的在线联调,完成LED灯的闪烁(亮1秒,灭1秒)。

三、主要仪器设备电脑、keil c51、Protues软件四、操作方法与实验步骤(1)提前阅读与实验2相关的阅读材料;(2)参考实验2电路原理图和元件清单,在ISIS中完成电路原理图的绘制;(3)加载可执行文件,观察仿真结果,检验电路图绘制的正确性。

五、实验数据记录和处理Keil代码:电路图:六、实验结果与分析仿真结果:上板实操结果:实验分析:1.如上图,实现了protues和keil的在线联调,完成LED灯的闪烁(亮1秒,灭1秒)。

2.硬件电路分析关于51单片机P0双向I/O口使用:P0口为双向IO口,驱动负载能力强,因此本实验采用P0作为八位共阴极数码管的段选口。

但是其输出时为漏极开路输出,需要加一个上拉电阻六、讨论和心得经过本次单片机实验,我熟悉了protues软件的使用和protues和Keil软件的联调,掌握了P1口的使用方法以及延时子程序的编写和使用.在这次实验中我认为最宝贵的还是让我学会了解决问题,突破瓶颈的方法。

将理论知识合理应用到实践中,才是我们学习的目标。

单片机红绿灯的设计实验报告

单片机红绿灯的设计实验报告

单片机红绿灯的设计实验报告一、实验目的1.了解单片机的基本功能与使用方法;2.学习使用Keil C51 编译器和Proteus仿真软件;3.掌握单片机编程语言C语言的基本语法和直接控制IO口的方法;4.通过设计红绿灯控制系统,加深对单片机的理解并培养自己的创新意识。

二、实验基本原理1.单片机的基本组成①微处理器是主要控制计算机系统工作的核心部件,包括指令寄存器、程序计数器、通用寄存器、测试和调试功能等。

②存储器存储程序和数据,常见的有ROM、EPROM、RAM等。

③输入输出端口把微处理器与外部器件相连,常见的有通用输入输出口I/O口、定时器/计数器、串行通信口等。

2.单片机的编程基础C语言是单片机编程最常用的编程语言之一,其基本语法与PC编程语言相同,但要了解单片机IO口的使用和编程方法。

3.红绿灯系统的设计本系统采用双向流量控制时相同步控制灯光,主要由四个模块组成:(1)计数器模块计数器模块是用来设置红绿灯系统时间的基本模块,通过定时器,定时器溢出时计数器加1,灯开始切换。

(2)红灯亮模块红灯亮模块是用来控制红灯亮起的模块,主要是通过配置P1.0口来实现,当P1.0输出1时亮红灯,P1.0输出0时灯灭。

(3)绿灯亮模块绿灯亮模块是用来控制绿灯亮起的模块,主要是通过配置P1.1口来实现,当P1.1输出1时亮绿灯,P1.1输出0时灯灭。

(4)黄灯亮模块黄灯亮模块是用来控制黄灯亮起的模块,主要是通过配置P1.2口来实现,当P1.2输出1时亮黄灯,P1.2输出0时灯灭。

三、实验步骤1. 确定系统方案,设计电路图;2. 编写程序代码;3. 进行仿真并调试代码;4. 进行实际验收,验收并记录实验结果。

四、实验步骤详解1.系统电路图设计本次实验采用晶振频率为12MHz的AT89S52单片机来控制红绿灯顺序切换。

其电路原理图如下所示:其中,SW1、SW2分别连接到P2.0、P2.1口,模拟车辆通过;LED1、LED2、LED3接到P1.0、P1.1、P1.2口,表示红灯、黄灯、绿灯。

单片机节日彩灯控制器

单片机节日彩灯控制器

单片机原理及接口技术节日彩灯控制器设计2016-XX-XX XX大学xx xx xx xx xx姓名学号指导老师学院专业:::::1、任务目的:以单片机为核心,设计一个节目彩灯指示器。

要求:在单片机的P0口接有8个发光二极管作为指示灯,P1.0~P1.3接有4个按键开关,当不同脚上的按键按下时实现如下的功能:(1)按下P1.0脚的按键——8只灯全亮然后全灭,再全亮然后全灭,交替闪烁。

(2)按下P1.1脚的按键——按此键则停止点亮8只灯,所有灯全灭。

(3)按下P1.2脚的按键——LED指示灯由上向下流动点亮。

(4)按下P1.3脚的按键——LED指示灯由下向上流动点亮。

2、硬件电路设计本文仅依据任务目的及要求进行设计时钟电路、按键模块、LED输出模块。

原理图如下:3、程序设计按照任务要求设计程序,以C51标准进行编写。

程序如下:#include<reg51.h>#include<intrins.h>#define uchar unsigned charuchar key,led=0xfe;void delay(uchar a){uchar i,j;for(i=0;i<a;i++)for(j=0;j<120;j++);}main(){while(1){key=P1&0x0f;switch(key){case 0x0e://P1.0P0=0xff;delay(200);P0=0x00;delay(200);break;case 0x0d://P1.1P0=0xff;break;case 0x0b://P1.2P0=led;led=_crol_(led,1);//左移delay(100);break;case 0x07://P1.3P0=led;led=_cror_(led,1);//右移delay(100);break;default:break;}}}编译程序并输出HEX文件。

单片机实验报告——LED灯控制器

单片机实验报告——LED灯控制器

《微机实验》报告LED灯控制器指导教师:专业班级:姓名:学号:联系方式:一、任务要求实验目的:加深对定时/计数器、中断、IO端口的理解,掌握定时/计数器、中断的应用编程技术及中断程序的调试方法。

实验内容:利用C8051F310单片机设计一个LED灯控制器主要功能和技术指标要求:1. LED灯外接于P0.0端。

2. LED灯分别按2Hz,1Hz和0.5Hz三种不同频率闪动,各持续10s。

3. 在LED灯开始和停止闪烁时蜂鸣器分别鸣响1次。

4. 利用单片机内部定时器定时,要求采用中断方式。

提高要求:使用按键(KINT)控制LED灯闪烁模式的切换。

二、设计思路C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz ,输入时钟信号为48个机器周期,所以T1定时器采用定时方式1,单次定时最长可以达到的时间为1.027s,可以满足0.5Hz是的定时要求。

基础部分:给TMOD赋值10H,即选用T1定时器采用定时方式1,三种频率对应的半周期时间为0.25s、0.5s、1s。

计算得需给TH1和TL1为C1H、B1H;83H、63H;06H、C6H。

要使闪烁持续10s,三种模式需要各循环40、20、10次。

用LOOP3:MOV C,PSW.5 ;PSW.5为标志位,进定时器中断后置一JNC LOOP3代替踏步程序等待中断,以便中断完后回到主程序继续向下执行。

为了减少代码长度,可以采用循环结构,循环主题中,将R1、R2分别赋给TH1、TL1,R7为循环次数(用DJNZ语句实现);定时中断里,重新给TH1、TL1赋值时同理。

这样,循环时只要把定时时间和循环次数赋给R1、R2、R7即可,达到减少代码长度的效果。

蜂鸣器也采用T1定时方式1,定时一秒。

提高部分:采用外部中断0,下降沿触发。

外部中断程序里置标志位PSW.1和R0,PSW.5用于判断执行完一种模式后,是否跳出循环结束。

R0用于判断执行何种模式,每按一次后RO加一,第四次时就将R0和PSW.5清零,这样程序就又回到了基础部分的循序执行。

指示灯开关的中断控制单片机实验报告

指示灯开关的中断控制单片机实验报告

嘉应学院物理与光信息科技学院单片机原理及应用实验学生实验报告实验项目:指示灯/数码管的中断控制实验地点:工A310班级:姓名:座号:指导老师:老师实验时间:年月日一、实验目的掌握外部中断原理,学习中断编程与程序调试方法。

二、实验原理实验原理图如图所示:图中按键K1和K2分别接于P3.2和P3.3,发光二极管D1接于P0.4,共阴极数码管LED1接于P2口。

时钟电路、复位电路、片选电路忽略。

在编程软件的配合下,要求实现如下功能:程序启动后,D1处于熄灯、LED1处于黑屏状态;单击K1,可使D1亮灯状态反转一次;单击K2,可使LED1显示值加1,并按十六进制数显示,达到F后重新从1开始。

编程原理为:K1和K2的按键动作分别作为INT0和INT1的中断请求,在中断函数中进行指示灯与数码管的信息处理。

初始化后,主函数处于无限循环状态,等待中断请求。

三、实验内容:(1)熟悉μVision3的软件调试方法;(2)完成实验4的C51语言编程;(3)掌握在μVision3与ISIS的联机仿真方法。

四、实验步骤1、提前阅读与实验4相关的阅读材料;2、参考书本实验4,在ISIS中完成电路原理图的绘制:(1).启动ISIS模块从Windows的“开始”菜单中启动Proteus ISIS模块,可进入仿真件的主界面,如图所示可以看出,ISIS的编辑界面是标准的Windows软件风格,由标准工具栏、主菜单栏、绘图工具栏、仿真控制工具栏、对象选择窗口、原理图编辑窗口和预览窗口等组成。

(2).元件和电源的选取、摆放及属性编辑,总线与标签的画法等内容元件的选取:单击左侧绘图工具栏中的“元件模式”按観和对象选择按観“P”,弹出“Pick Devices”元件选择窗口,如图:摆放元件:单击对象选择列表中的元件名称,预览窗口中出现的图形单击编辑窗口,元件以红色轮廓图形出现(选中状态),拖动鼠标使元件轮廓移动到所需位置,再次单击可固定摆放位置,同时也撤销选中状态(变为黑色线条图形)。

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

中国石油大学(北京)




实验课程:单片机原理及应用
实验名称:实验二——指示灯/开关控制器
一、实验目的
学习汇编语言指令系统的编程与调试方法
二、实验内容
1、参照教材图完成实验二电路原理图的绘制;
2、根据图的程序流程图编写汇编语言程序;
3、利用ISIS的汇编工具查找并修正程序的语法错误和逻辑错误;
4、观察仿真结果,完成实验报告。

三、实验要求
1、电路原理图
P1口读取开关状态的工作原理:通过P1的读引脚功能来实现,由于P1口内设上拉电阻,在开关闭合前读取高电平,经过三态门在输出高电平。

当开关闭合时,由于与地面相连,P1读取低电平,经过三态门在输出低电平。

P1口输出工作原理:单片机执行写P1,#data时,数据data经过内部总线送入锁存器储存。

当数据为,则该位锁存器输出Q=1,则非Q为0,场效应管截止,从而在引脚上输出高电平;反之,如果数据为0,则Q=1,非Q为0,场效应管导通,引脚上输出低电平。

P2口控制LED灯的原理也是通过P2口的输出原理实现的,程序不断把P1的内容传递给P2。

当给P1口赋初值0或开关闭合时,输出0,P2口读取0,在引脚上输出低电平,由原理图中LED的摆放方式知LED灯低电平导通。

同理当给P1口赋初值#FFH或开关断开时,输出1,P2口读取1,在引脚上输出高电平,LED灯截止,灯灭。

图1 实验原理电路图
2、汇编源程序
图2 汇编源程序
3、程序调试过程
1.源文件创建与编译
(1)建立新的程序文件
单击菜单栏“源代码”—“添加/删除源文件”选项,弹出“添加/移除源代码”对话框。

在“代码生成工具”下拉框内部选择“ASEM51”选项。

单击“新建”按钮,在适当文件目录下输入待建立程序的文件名(如text),核实文件类型为*ASM。

单击“打开”按钮,回应创建新文件提示后,系统弹出确认对话框。

单击“确认”按钮,在菜单“源代码”下可看到类似“的文件名,单击该文件名后可打开一个空白的文本文件。

(2)打开已有城区文件
如需对已经保存的程序文件进行处理,可单击添加/删除源代码对话框的“源代码文件名”下拉框,找到已存在的程序文件名,单击“确定”按钮便可打开使用。

(3)编译源程序
程序文件录入后或编辑后,单击菜单“源文件”—“全部编译”选项,待后台编译结束后,可弹出结果对话框。

如果存在错误,提示框会指出错误存在的原因。

如果没有错误,提
示框将报告编译通过。

图3 汇编程序调试
说明:本次汇编程序调试并非一次成功,第一次调试时程序出现的错误较多,但立刻意识到源程序中可能存在非英文的冒号,逗号或分号。

在认真改正之后,再次调试程序,依旧出现一个错误,根据对话框中提示“发现了未定义的符号”,经过检查发现错将源代码(见图2)中第16行的“DEL1”写成了“DLE1”。

再次调试,出现图3所示调试成功的对话框。

2.逻辑错误检测
图 4 运行状态图一
说明:源程序对P2赋值#0,在CPU寄存器的P0下显示“00”,在特殊功能寄存器的A0中黄色框标注的首位显示当前状态“00”。

图 5 运行状态图二
说明:源程序对P2赋值#FFH,在CPU寄存器的P0下显示“FF”,在特殊功能寄存器的A0中黄色框标注的首位显示当前状态“FF”。

经过反复观察运行过程,并未发现逻辑错误。

4、仿真运行效果
图6 运行截图一
说明:运行刚开始,P2口处开关全部断开,P1口处的8个LED灯连续闪烁三次。

图7 运行截图二
说明:LED三次闪烁结束后,仅闭合处开关,仅处的LED灯亮。

图8 运行截图三
说明:分别闭合~处的开关,在P2口处,对应的LED灯依次亮起。

图9 运行截图四
说明:在截图三的操作基础上,断开和的开关,P2口对应的D2和D4熄灭。

由以上截图可以确定,本次试验达到了预期的试验运行结果。

在开始运行之后,所有LED灯连续闪烁三次,在此过程中灯的亮灭不受P1口开关控制。

三次闪烁结束后,灯的状
态与其相对应的P2口开关的状态有关(开关闭合灯亮,开关断开灯灭)。

5、实验小结
本次是实验是在学过汇编语言后的第一次实战演习,由于实验一的基础,本次实验在绘制实验原理图的过程中并未出现大问题。

此外,还学会了一种自动递增产生标注的方式,提高了标号的效率。

绘制电路时,需要注意LED的放置方式,摆放状态的不同会影响导通条件。

本次实验最重要的内容是源程序的书写,源代码的编译,加载和运行。

本次实验的源程序是根据老师所给流程图的步骤来书写的,由于汇编程序的指令较多,具体的含义还要参照表格才能看懂,写程序的过程还很费精力的。

当然,问题的主要原因还是因为课余下的功夫不够。

在进行程序编译时,我通过不断的改正和调试,进一步认识到了汇编语言的形式。

与此同时,在调试可执行文件时,将源代码,CPU寄存器,SFR的相关状态对话框同时调出,使我更加直观地了解到51单片机在执行指令时,内部的状态变化。

总体来说,本次实验还是比较顺利的。

实验的过程,让我更直观的认识到单片机的工作原理,增添了对学习单片机的兴趣和信心。

相关文档
最新文档