中国石油大学-单片机-实验三—— LED指示灯循环控制
单片机8个led灯循环点亮程序

单片机8个led灯循环点亮程序一、前言单片机是一种非常重要的电子元件,它可以通过编程来实现各种功能。
其中,点亮LED灯是最基础的操作之一。
本文将介绍如何使用单片机8个LED灯循环点亮。
二、硬件准备1. 单片机:STC89C52RC或其他8051系列单片机;2. LED灯:8个;3. 电阻:8个(220欧姆);4. 面包板:1个;5. 杜邦线:若干。
三、程序设计首先,我们需要了解一些基本的概念和知识:1. 端口:单片机的I/O口被称为端口,其中P0、P1、P2、P3四个端口分别对应着不同的引脚。
2. 输出:通过控制端口输出高电平或低电平来控制外部设备。
3. 延时函数:为了让程序在执行时停留一段时间,需要使用延时函数。
接下来,我们开始编写程序。
具体步骤如下:1. 定义引脚首先,我们需要定义每个LED所对应的引脚。
这里我们将8个LED分别连接到P0口的0~7引脚上。
sbit led0=P0^0;sbit led1=P0^1;sbit led2=P0^2;sbit led3=P0^3;sbit led4=P0^4;sbit led5=P0^5;sbit led6=P0^6;sbit led7=P0^7;2. 定义延时函数为了让程序在执行时停留一段时间,我们需要定义一个延时函数。
这里我们使用循环来实现延时。
void delay(unsigned int i){while(i--);}3. 循环点亮LED灯接下来,我们就可以开始循环点亮LED灯了。
这里我们使用for循环来实现。
void main(){while(1){for(int i=0;i<8;i++){switch(i){case 0:led0=1;break;case 1:led1=1;break;case 2:led2=1;break;case 3:led3=1;break;case 4:led4=1;break;case 5:led5=1;break;case 6:led6=1;break;case 7:led7=1;break;}delay(50000);switch(i){case 0:led0=0;break;case 1:led1=0;break;case 2:led2=0;break;case 3:led3=0;break;case 4:led4=0;break;case 5:led5=0;break;case 6:led6=0;break;case 7:led7=0;break;}}}}四、总结通过以上步骤,我们就可以实现单片机8个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清零,这样程序就又回到了基础部分的循序执行。
单片机led循环控制代码

单片机led循环控制代码单片机作为一种重要的嵌入式系统,在各行各业中都扮演着关键的角色。
而其中最为基础和常见的应用之一,就是控制LED灯的循环。
LED灯,作为一种高亮度、低能耗和长寿命的光源,广泛应用于各种电子设备和照明领域。
通过单片机控制LED灯的循环效果,可以实现色彩丰富、动态变化的灯光效果,不仅增加了设备的美观性,还能给人带来愉悦和舒适的感觉。
在单片机中控制LED灯的循环效果,可以采用多种方法。
最常见的是使用循环控制语句,如for循环或while循环。
在循环中,通过改变LED灯的亮度、颜色或灯光模式等参数,可以实现各种不同的灯光效果。
具体的控制代码可以通过单片机的编程语言来实现,如C语言或汇编语言等。
以C语言为例,以下是一段基本的单片机LED循环控制代码:```cinclude <reg52.h> // 单片机头文件sbit LED=P1^0; // 定义LED灯连接的IO口void delay(unsigned int t) // 延时函数{unsigned int i,j;for(i=0;i<t;i++)for(j=0;j<120;j++);}void main(){while(1) // 无限循环{LED=0; // 点亮LED灯delay(500); // 延时500毫秒LED=1; // 熄灭LED灯delay(500); // 延时500毫秒}}```上述代码的思路很简单:通过不断循环控制LED灯的开关状态来实现循环效果。
在代码中,使用了一个延时函数来控制LED灯的亮灭时间,通过调整延时时间可以控制LED循环的速度。
当单片机运行该代码时,LED灯会不断地循环点亮和熄灭,形成一个明暗交替的闪烁效果。
这是一种最基本的LED循环效果,可以通过修改代码中的延时时间或添加其他控制语句来实现更复杂的灯光效果。
除了基本的循环控制代码外,还可以结合其他传感器或外部设备来实现更多样化的LED循环效果。
单片机原理及应用实验报告

《单片机原理及应用》实验报告姓名:学号:班级:应用物理指导教师:日期:实验1 计数显示器一、实验目的熟悉51单片机的基本输入输出应用,掌握Proteus模块的原理图绘图方法及单片机系统仿真运行方法二、实验原理由共阴极数码管LED1和LED2、P0口、P2口,上拉电阻RP1及Vcc组成的输出电路;由按钮开关BUT、P3.7和接地点组成的输入电路,该电路在编程软件的配合下,可实现计数显示功能:可统计按钮BUT的按压次数,并将按压结果以十进制数形式显示出来;当显示值达到99后可自动从1开始,无限循环。
三、实验内容(1)观察Proteus模块的软件结构,熟悉菜单栏、工具栏、对话框等基本单元功能(2)学会选择元件、画导线、修改属性等基本操作(3)学会可执行文件加载及程序仿真运行方法(4)验证计数显示器的功能四、实验要求提交实验报告并包括如下内容:电路原理图、电路原理分析、仿真运行截图及实验小结1.实验原理图2.仿真运行截图3.实验小结通过这次实验让我认识了kell和proteus软件的基本功能,学会了用kell编写程序用proteus仿真运行。
在这次实验中同时也遇到了很多问题。
比如因为第一次使用这两个软件对界面还不太熟悉,浪费了很多的时间也产生了很多错误,但之后与同学们的交流过程中,慢慢的对这两个软件有了更深入的了解,在后期仿真的时候才能得心应手的处理问题。
这个计数显示器的实验让我进一步了解了单片机与数码管的魅力,看到了电子元件的神奇之处,只要按动按键就能让数码管的数字逐次加一,这大大激发了我的学习单片机兴趣,这次实验也会成为我以后学习单片机的奠基石,因为它打开了我认识单片机的大门,让我认识到了单片机的魅力,并让我沉浸其中。
实验2 指示灯开关控制器一、实验目的学习51单片机I/O口基本输入输出功能,掌握汇编语言的编程与调试方法。
二、实验原理输入电路由外接在P1口的8只拨动开关组成;输出电路由外接在P2口的8只低电平驱动的发光二极管组成。
实验一LED指示灯循环控制

实验一LED指示灯循环控制一、实验目的1.进一步熟悉编程和程序调试2.学习P1口的使用方法3.学习延时子程序的编写和使用二、实验说明P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据是不正确的。
三、实验步骤及参考例子实验步骤说明:本实验需要用到单片机最小应用系统和十六位逻辑电平显示模块。
用P1口做输出口,接十六位逻辑电平显示,程序功能使发光二极管点亮。
1.使用单片机最小应用系统。
根据实验要求,用proteus仿真软件绘制电路原理图,用数据线连接单片机P1口与LED灯。
2.打开Keil uVision4仿真软件,首先建立本实验的项目文件,输入源程序,进行编译、调试,直到编译无误,生成hex文件。
可通过单步调试,来查看I/O的状态3.在proteus环境中,把.hex文件下载到单片机中,运行观察发光二极管显示情况是否与设计程序中一致。
参考例子:1)点亮板子上的第一个灯L02)点亮板子上的L0、L2、L4、L 6灯,与L 1、L 3、L 5、L 7灯交替闪烁3)流水灯:从L 0—L 7依次点亮四、参考程序1)#include<reg51.h>void main(){P1=0xfe;}2)#include<reg51.h>#define uint unsigned int#define uchar unsigned charvoid delay();void main(){while(1){P1=0xaa;delay();P1=0x55;delay();}}void delay(){uint x,y;for(x=100;x>0;x--)for(y=600;y>0;y--);}3)#include<reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charuchar temp;void delay(uint);void main(){temp=0xfe;while(1){for(num=0;num<8;num++){P1=temp;delay(100);temp=_crol_(temp,1);P1=0xff;delay(100);}}}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=120;y>0;y--);}五、电路图100六、实验内容请在keil环境下编写一下程序,并在proteus仿真环境中实现动画效果:1)点亮最后一个LED2)点亮1、2、5、6这四个LED3)让第三个LED闪烁4)设计出流水灯程序,从L7—L05) 设计出流水灯双向流动程序,从L0-L7-L0反复循环。
单片机实验3LED循环控制灯

中国石油大学(北京)实验报告实验课程:单片机原理及应用实验名称:实验三——LED指示灯循环控制班级:过程10-2班学号:姓名:总学时:48 教师:成绩:实验日期:2012 年10 月23 日一、实验目的熟悉μVision3编译软件、掌握C51编程与调试方法。
二、实验内容1、按照教材P227的图A.32,绘制实验三电路原理图;2、根据功能要求,编写C51程序;3、练习μVision3程序动态调试方法,并最终实现8个LED灯依次点亮的功能:P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→P0.5→┅→P0.0的顺序,无限循环,间隔约50ms;4、观察仿真结果,完成实验报告。
三、实验要求1、采用proteus + Keil联合仿真法运行C51程序,并练习采用单步、断点以及监视窗等手段进行程序调试;2、提交的实验报告中应包括:电路分析及原理图、编程思路及C51源程序、调试过程简述,仿真运行效果以及实验小结。
3、提交实验报告的电子邮件主题及存盘文件名格式如,2005041220马晓明实验三。
1、电路分析及原理图原理图2、编程思路及C51源程序源程序C51源程序:#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;unsigned char led[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80} ;while(1){for(i=0;i<=6;i++){ P0=led[i]; //delay(200);}for(i=6;i>=0;i--){ P0=led[i];delay(200);}}}编程思路,利用数组来循环,循环中加入延时函数,p0从led[0]循环到led[7],led灯从上到下依次点亮,再通过第二次循环从下到上依次点亮,实现P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→P0.5→┅→P0.0的顺序,在放入while(1)中无限循环。
单片机实验之二极管循环点亮

实验一P1口亮灯实验一、实验目的(1)学习P1口的使用方法;(2)学习延时子程序的编写。
二、实验内容P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
三、实验预备知识(1)P1口为准双向口,可定义为输入,也可定义为输出。
(2)本实验中延时子程序采用指令循环来实现,机器周期(12/6MHZ)*指令所需机器周期数*循环次数,在系统时间允许的情况下可以采用此方法。
四、程序框图五、实验步骤1、实验连线P1.0~P1.7用插针连至L1~L82、PC环境在与PC联机状态下,打开桌面图标“MCS-51集成开发环境”,下载PH51\he01.asm,编译、连接、装载,用连续方式运行程序。
3、观察运行结果在连续运行方式下,观察发光二极管闪亮移位情况。
4、终止运行按“暂停图标”或实验箱上的“暂停按钮”,使系统无条件退出该程序的运行返回监控状态。
六、思考修改延时常数,使发光二极管闪亮时间改变。
修改程序,使发光二极管闪亮移位方向改变。
七、实验电路八、实验程序ORG 0790H;----------------------------------------------------------SE18: MOV P1,#0FFH ;送P1口LO34: MOV A,#0FEH ;L1发光二极管点亮LO33: MOV P1,ALCALL SE19 ;延时RL A ;左移位SJMP LO33 ;循环;----------------------------------------------------------SE19: MOV R6,#0A0HLO36: MOV R7,#0FFHLO35: DJNZ R7,LO35DJNZ R6,LO36 ;延时RET;----------------------------------------------------------END教你如何用W ORD文档(2012-06-27 192246)转载▼标签:杂谈1. 问:W ORD 里边怎样设置每页不同的页眉?如何使不同的章节显示的页眉不同?答:分节,每节可以设置不同的页眉。
单片机原理与应用实验报告

单片机原理实验报告实验一计数显示[目的]熟悉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指示灯循环控制

熟悉uVision4编译软件、掌握C51编程与调试方法二、实验原理实验电路原理图如所示,图中8只LED指示灯接于P0口,切都有上拉电阻。
时钟电路、复位电路、片选电路与前面的实验电路相同。
在编程软件的配合下,要求实现如下功能:8只发光二极管做循亮控制,且亮灯顺序为D1-D2-D3…-D8-D7…-D1,无限循环,两次亮灯的时间间隔约为0.5s,软件编程原理为:首先使P0.0-1,其余端口-0,这样可使D1灯亮,其余灯灭;软件延时0.5s后,使P0口整体左移1位,得到P0.1-1,其余端口-0,这样可使 D2灯亮其余全灭;照此思路P0整体左移7次,再又移7次,如此无限往复即可实现上述功能。
编程思路1,P0口赋一初值,使D1灯亮,D2~D8灯灭2.调用函数delay,传入参数值为50(ms)3.采用while结构的无限循环体4,由上向下循环控制(变量i的初值为1,终值小于等于7,增量为+1),5使P0中的数值向左移1位6调用函数delay,传入参数值为50(ms)7返回第二部继续进行1、了解软件结构与功能,2、根据功能要求,编写C51程序;3、写程序,并生成可执行文件4、通过仿真运行检验编程的正确性,四、实验要求实验步骤(1)在ISIS中绘制电路原理图,按照表A4.1将元件添加到编译环境中;2)在uVision3中编写C51程序;1.打开keil uvision软件,新建一个文件,在文件中输进计数器程序的源代码,保存该文件,在其文件后应加上扩展名(*.c)2.单击“Project”下的“New project”菜单,在出现的对话框中输入要建立的工程的名字,不需要扩展名。
单击保存按钮对话框,将出现如下对话框,在这个对话框中选择Atmel公司的89C51芯片。
再点击“ok”按钮回到主页面,写源程序利用uVision3的编译调试功能检查语法和逻辑错误;3)下载可执行文件,在Proteus中观察仿真结果,检查程序的正确性。
【免费下载】单片机实训报告8个LED指示灯循环移动

counter=0; TR0=1; if(direct&&!speak) {
//定义 P1.3 引脚 //主函数 //T0 计数方式 1 //定时 50ms //开 T0 中断 //启动 T0 //等待中断
//输出取反
P1=i; i++;
if(i==8) {
j++; if(j==4) {
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内 纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
单片机综合实验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的值改成相应的即可。
单片机 三色灯的控制

三、实验程序
ORG 0100H
MAIN:MOV P1,#0FFH
MOV A,P1
ANL A,#00000001B
CJNE A,#1,didianping
RED: MOV P2,#06h
ACALL DELAY1
YELLOW: MOV R1,#9
MOV P2,#05H
ACALL DELAY1人人网仅提供信息存储空间仅对用户上传内容的表现方式做保护处理对用户上传分享的文档内容本身不做任何修改或编辑并不能对任何下载内容负责
单片机上机实验报告
姓名:学号:时间:
三色灯的控制
一、实验目的
红黄绿三个发光二极管共阳极连接,在p1.0为低电平时,全灭;高电平时,红灯先亮,持续一段时间。然后黄灯闪烁5次,再绿灯亮,并持续一段时间。
DJNZ R7,D低电平有效。
2.实现LED灯的闪烁时要加上延时,方便实验结果的观察。
SHAN:CPL P2.1
ACALL DELAY1
DJNZ R1,SHAN
GREEN: MOV p2,#03h
ACALL DELAY1
didianping:MOV A,#07H
MOV P2,A
AJMP MAIN
DELAY1: MOV R7,#07H
DL1: MOV R6,#07H
DL2: DJNZ R6,DL2
单片机应用技术LED循环点亮控制

课时(学时) 终极目地 促成目地 教学重点 教学难点 学内容
教学手段 教学方法设计
项目二 LED 循环点亮控制
一零学时 一.能完成单片机地输入输出电路设计; 二.能应用 C 语言程序完成单片机输入输出控制,实现对 LED 循环点亮 控制地设计,运行及调试。
一. 掌握 P 零,P 一,P 二与 P 三功能及应用技能; 二. 掌握内部数据存储器地地址分配及特殊功能寄存器; 三. 掌握 C 语言数据类型,常量与变量; 四. 会利用单片机 I/O 口实现开关控制 LED 循环点亮与步电机控制 一. STC 八九 C 五二单片机 P 零,P 一,P 二与 P 三功能; 二.内部数据存储器地地址分配及特殊功能寄存器; 三.C 语言数据类型,常量与变量; 四.开关控制 LED 循环点亮。 一.电路图地设计 二.五一单片机地内存空间地址分配
单片机实验报告实验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)、认真整理实验报告并按时提交。
六、实验结果及总结让我们知道了如何建立工程文件、编辑源程序文件、将源程序加入到工程中、设置工程配置选项、生成可执行文件以及仿真运行程序。
实验三——LED指示灯循环控制

中国石油大学(北京)实验报告实验课程:单片机原理及应用实验名称:实验三——LED指示灯循环控制总学时:48 教师:林立成绩:实验日期:2013 年10 月24 日一、实验目的熟悉μVision3编译软件、掌握C51编程与调试方法。
二、实验内容1、按照教材P227的图A.32,绘制实验三电路原理图;2、编写C51程序,实现8个LED灯依次点亮的功能:P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→P0.5→┅→P0.0的顺序,无限循环,间隔约50ms;3、观察仿真结果,完成实验报告。
三、实验要求1、采用两种加载并运行可执行文件的方法,即proteus独立运行和proteus + Keil联合运行,体会其中的差异和意义;2、练习采用单步、断点以及监视窗等手段进行程序调试的方法;3、观察仿真结果,完成实验报告:绘制的电路原理图、编程思路分析及C51源程序、调试过程简述,仿真运行效果以及实验小结。
4、提交实验报告的电子邮件主题及存盘文件名格式如,2005041220马晓明实验三。
1、电路原理图图1 实验原理2、编程思路及C51源程序编程思路:本次实验目的是实现8个LED灯的自上而下,自下而上循环亮起。
指示灯的一次亮起通过在两个亮起的动作间加上一个肉眼可辨别的延时动作来实现,可编写一个延时程序来完成。
指示灯的自上而下亮起或自下而上亮起,将这个动态的过程截成一个个单独的状态,找出各个状态下各P0.n的状态值,经观察发现可通过左移或右移数值1来实现。
根据这一思路,可编写以下程序:图2 源程序3、调试过程简述1.建立工程文件单击菜单“Project”—“New project”选项,在“Create New Project”中输入文件名称,文件自动保存为.uv2格式。
2.选择单片机工程文件保存后,在弹出的“Select Device for ‘Target1’中选择intel下的80C51BH型单片机。
实验三—— LED指示灯循环控制

实验课程:单片机原理及应用实验名称: 实验三——LED指示灯循环控制实验日期: 2013 年 4 月10 日一、实验目的熟悉μVision3编译软件、掌握C51编程与调试方法。
二、实验内容1、按照教材P227的图A.32,绘制实验三电路原理图2、根据功能要求,编写C51程序3、练习μVision3程序动态调试方法,并最终实现8个LED灯依次点亮的功能: P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→P0.5→┅→P0.0的顺序,无限循环,间隔约50ms4、观察仿真结果,完成实验报告。
三、实验要求1、采用proteus + Keil联合仿真法运行C51程序,并练习采用单步、断点以及监视窗等手段进行程序调试2、提交的实验报告中应包括:电路分析及原理图、编程思路及C51源程序、调试过程简述,仿真运行效果以及实验小结。
3、提交实验报告的电子邮件主题及存盘1、电路分析及原理图图1 LED指示灯循环控制电路原理图图中LED指示灯外接于P0口。
由于P0口作为I/O口使用时是漏极开路的,需要外接上拉电阻因而图中还加有8只100的电阻。
此外,还包括时钟电路和复位电路图中的时钟电路和复位电路与实验1计数显示器相同。
2、编程思路及C51源程序编程要求:程序启动后8只发光二极管做循环点亮控制其中灯亮顺序为P0.0→P0.1→P0.2→P0.3→……P0.7→P0.6→P0.5→……→P0.0无限循环两次LED 灯亮的时间间隔约为0.5秒。
根据题目要求程序中应该有一个延时子程序用来每次延时0.5秒还要有两个循环结构分别控制由上到下和由下到上还应该有一个控制LED发光的数据。
LED指示灯循环控制程序如下:#include"reg51.h" //预处理命令单片机头文件char led[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //LED灯花样数据void delay(unsigned int time) //延时函数delay声明{unsigned int j=0; //定义无符号整形变量初值为0 for(;time>0;time--) //采用for结构的外层循环for(j=0;j<125;j++); //采用for结构的内层循环}void main() //主函数{char i;while(1) //采用while结构的无限循环体{for(i=0;i<=7;i++) //由上向下循环控制{P0=led[i];delay(200); //调用函数delay延时50ms }for(i=7;i>=2;i--) //由下向上循环控制{P0=led[i-1];delay(200); //调用函数delay延时50ms}}3、调试过程简述采用proteus + Keil联合仿真法运行C51程序基本方法:输入源程序→建立工程→对工程进行详细设置→将源程序变为目标代码→运行调试。
单片机三个发光二极管的循环点亮

三个发光二极管的循环点亮1611020110陈珏本一,系统设计分析本系统为最小单片机系统+三个LED核心处理器采用c51系列单片机AT89C51。
整个系统在系统软件的控制下工作。
开始时将P1端口全部置1,在单片机内,经识别、延迟等环节实时发出控制LED1、2、3闪烁的控制信号。
左侧电路使起完成相应的动作。
二,系统原件AT89C51、CAP 30pf、CRYSTAL 12MHZ、RES、BUTTON、LED三,系统原理图设计四,源程序设计ORG 0030HMOV A,#0FFHMOV P1,A LOOP:CLR P1.0LCALL DELAYCPL P1.0CLR P1.1LCALL DELAYCPL P1.1CLR P1.2LCALL DELAYCPL P1.2LCALL DELAYAJMP LOOPDELAY:MOV R7,#200D1:MOV R6,#248D2:DJNZ R6,$DJNZ R7,D1RETEXIT:NOPEND五,keil仿真创建“三个发光二极管的循环点亮”项目,选择单片机型号为AT89C51,输入汇编语言程序,保存为“三个发光二极管的循环点亮.asm”。
将源程序添加到项目中,编译源程序,创建“三个发光二极管的循环点亮.hex”。
六,prutues仿真成果图七,调试结果分析第一次仿真失败,请教王初韩同学后找出问题,是我使用了另外一个之前做的HEX文件,修改后三展灯循环点亮,实验成功。
八,想对老师说的话老师您好,是这样的,这次实验的编程语言我是从网上搜的,因为我完全不会编程语言,但是我的确照着网上的步骤一步步的把实验做成功了,也算是花了一番心血,至于其他的缺陷的部分,我会在之后的日子里向同学请教也好一点点的学的,希望老师给个高点的分数(注:可编辑下载,若有不当之处,请指正,谢谢!)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中国石油大学(北京)
实
验
报
告
实验课程:单片机原理及应用
实验名称:实验三——LED指示灯循环控制
总学时:48 教师:林立成绩:
实验日期:2012 年10 月23 日
一、实验目的
熟悉μVision3编译软件、掌握C51编程与调试方法。
二、实验内容
1、按照教材P227的图A.32,绘制实验三电路原理图;
2、根据功能要求,编写C51程序;
3、练习μVision3程序动态调试方法,并最终实现8个LED灯依次点亮的功能:P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→P0.5→┅→P0.0的顺序,无限循环,间隔约50ms;
4、观察仿真结果,完成实验报告。
三、实验要求
1、采用proteus + Keil联合仿真法运行C51程序,并练习采用单步、断点以及监视窗等手段进行程序调试;
2、提交的实验报告中应包括:电路分析及原理图、编程思路及C51源程序、调试过程简述,仿真运行效果以及实验小结。
3、提交实验报告的电子邮件主题及存盘文件名格式如,2005041220马晓明实验三。
1、电路分析及原理图
图1 为LED指示灯循环控制电路原理图
图1 LED指示灯循环控制电路原理图
图中LED指示灯外接于P0口。
由于P0口作为I/O
8只100的电阻。
此外,还包括时钟电路和
复位电路,图中的时钟电路和复位电路与实验1计数显示器相同。
2、编程思路及C51源程序
编程要求:程序启动后8只发光二极管做循环点亮控制,其中灯亮顺序为P0.0→P0.1→P0.2→P0.3→……P0.7→P0.6→P0.5→……→P0.0,无限循环,两次LED 灯亮的时间间隔约为0.5秒。
根据题目要求,程序中应该有一个延时子程序用来每次延时0.5秒,还要有两个循环结构分别控制由上到下和由下到上,还应该有一个控制LED发光的数据。
LED指示灯循环控制程序如下:
#include"reg51.h" //预处理命令,单片机头文件char led[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //LED灯花样数据
void delay(unsigned int time) //延时函数delay声明
{
unsigned int j=0; //定义无符号整形变量初值为0
for(;time>0;time--) //采用for结构的外层循for(j=0;j<125;j++); //采用for结构的内层循}
void main() //主函数
{
char i;
while(1) //采用while结构的无限循环体
{
for(i=0;i<=7;i++) //由上向下循环控制
{
P0=led[i];
delay(200); //调用函数delay,延时50ms }
for(i=7;i>=2;i--) //由下向上循环控制
{
P0=led[i-1];
delay(200); //调用函数delay,延时50ms }
}
}
3、调试过程简述
采用proteus + Keil联合仿真法运行C51程序基本方法:输入源程序→建立工程→对工程进行详细设置→将源程序变为目标代码→运行调试。
(1)建立工程文件
点击“Project->New Project… ”菜单,在编缉框中输入一个名字。
选择目标CPU(Intel系列的80C51BH)。
(2)源文件的建立
点击新建文件按钮打开一个新的文本编缉窗口,输入程序源代码,以*.c保
存该文件。
(3)添加源程序(右击“Source Group1” →点击“Add file to Group”Source Group1” →添加生成的.c文件)如图2。
图2添加源程序
(4)工程设置
右击Project 窗口的Target 1→选择“Project->Option for target ‘target 1’” →工程设置对话框, 设置对话框中的OutPut 页面(勾选“Creat Hex file”)如图3 , 设置对话框中的Debug 页面(选中Use和下拉框“PROTEUS VSM Simulator”)如图4。
图3设置对话框中的OutPut 页面
图4 设置对话框中的Debug 页面
(5)在Keil软件里控制Proteus仿真运行下载()→运行→停止。
也可以用调试工具栏分步调试。
4、仿真运行效果
LED指示灯循环控制仿真运行效果如图5、图6。
图5 LED指示灯循环控制仿真运行效果
图6 LED指示灯循环控制仿真运行效果
程序启动后8只发光二极管做循环点亮控制,其中灯亮顺序为P0.0→P0.1→P0.2→P0.3→……P0.7→P0.6→P0.5→……→P0.0,无限循环,两次LED灯亮的时间间隔约为0.5秒。
达到了实验的要求。
5、实验小结
通过本次实验,我熟悉uVision3编译软件,了解软件的结构组成与功能,学习C51语言的程序设计方法,学会在uVision3中进行C51程序录入、编译、和调试,理解Proteus与Keil联合的仿真原理,实现LED指示灯循环控制功能。
更好的将C语言和C51语言联系在了一起,学到的知识能准确的利用了出来,这次实验不仅是动手能力的锻炼,更是脑力的锻炼,经过这次实验,让我们对单
片机这门课有了更充分的认识。