单片机实验报告(学期全部实验)
单片机实训实验报告总结

一、实验背景与目的随着科技的不断发展,单片机作为一种微小的计算机系统,在工业控制、智能家居、汽车电子等领域得到了广泛的应用。
为了提高学生的实践能力和创新意识,本实训课程旨在通过实际操作,让学生掌握单片机的原理、编程和调试方法,培养学生的动手能力和团队协作精神。
本次实训以51单片机为核心,结合数码管、LED灯、按键等外围电路,设计了多个实验项目,包括LED流水灯、交通灯控制系统、简易计算器、温湿度监控系统等。
通过这些实验,使学生深入了解单片机的硬件结构和软件编程,提高学生的实际操作能力和问题解决能力。
二、实验内容与过程1. 实验一:LED流水灯(1)实验目的:掌握51单片机的I/O口编程,实现LED灯的流水效果。
(2)实验步骤:① 硬件连接:将LED灯连接到P1口;② 编写程序:使用循环语句和延时函数控制LED灯的流水效果;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察LED灯的流水效果。
2. 实验二:交通灯控制系统(1)实验目的:学习单片机在交通灯控制系统中的应用,实现红黄绿灯的变换及倒计时功能。
(2)实验步骤:① 硬件连接:将LED灯连接到P1口,按键连接到外部中断INT0;② 编写程序:设置定时器中断,实现倒计时功能;编写外部中断程序,实现红黄绿灯的变换;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察交通灯的工作状态和倒计时效果。
3. 实验三:简易计算器(1)实验目的:掌握矩阵键盘扫描原理、LCD1602显示屏控制,实现基本的四则运算。
(2)实验步骤:① 硬件连接:将矩阵键盘和LCD1602显示屏连接到单片机;② 编写程序:实现矩阵键盘扫描、LCD1602显示控制和运算逻辑处理;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察计算器的工作状态和运算结果。
4. 实验四:温湿度监控系统(1)实验目的:学习单片机在温湿度监控系统中的应用,实现温度和湿度的实时显示。
(2)实验步骤:① 硬件连接:将温度传感器和湿度传感器连接到单片机,将LED灯连接到P1口;② 编写程序:实现温度和湿度的实时采集,并根据采集到的数据控制LED灯的亮灭;③ 程序下载:将程序烧录到单片机中;④ 实验验证:观察LED灯的亮灭状态和数码管上的温度、湿度值。
实验报告(单片机实验报告)

1 双字节无符号数加法例1: 双字节无符号数加法(R0 R1)+(R2 R3) → (R4 R5),R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节。
已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h)假设其和不超过16位。
请编程。
org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1, #79hmov R2,#25hmov R3, #0a4hmov A,R1ADD A,R3mov R5,Amov A,R0ADDC A,R2mov R4,Ass: jmp ssend2双字节无符号数减法例2: 双字节无符号数相减(R0 R1)-(R2 R3) → (R4 R5)。
R0、 R2、R4存放16位数的高字节, R1、 R3、 R5存放低字节,已知(R0 R1)=(93h,79h);(R2 R3)=(25h,a4h);请编程。
同学自己可以设置被减数与减数数值org 0000hLjmp startorg 0050hstart:mov R0,#93hmov R1,#79hmov R2,#25hmov R3,#0a4hmov A,R1CLR CSUBB A,R3mov R5,Amov A,R0SUBB A,R2mov R4,Ass: jmp ssend3双字节数乘以单字节数例3: 利用单字节乘法指令,进行双字节数乘以单字节数运算。
若被乘数为16位无符号数, 地址为M1(30H) 和M1+1(31H)(低位先、高位后), 乘数为8位无符号数, 地址为M2(32H), 积由高位到低位存入R2、 R3和R4三个寄存器中。
30H,31H,32H内容 12H,34H,56H ;org 0000hLjmp startorg 0050hstart:mov 30h,#12hmov 31h,#34hmov 32h,#56hmov a,(30h)mov b,(32h)mul abmov R3,bmov R4,amov a,(31h)mov b,(32h)mul abadd A,R3mov R3,Amov A,bADDC A,#00hmov R2,Ass: jmp ssend4. 把8位二进制数转换为3位BCD例4: 利用除法指令把累加器A中的8位二进制数转换为3位BCD 数, 并以压缩形式存放在地址M1、 M2单元中。
电子实习单片机实验报告

一、实验目的1. 理解单片机的基本工作原理和组成结构。
2. 掌握单片机编程的基本方法,包括汇编语言和C语言。
3. 学会使用Keil uVision等集成开发环境进行单片机程序的开发和调试。
4. 通过实验,了解单片机在实际应用中的功能和使用方法。
二、实验仪器设备1. 单片机实验板2. 电脑3. 示波器4. 信号发生器5. 电源6. 电阻、电容、电位器等电子元器件三、实验内容1. 单片机最小系统搭建- 搭建单片机最小系统,包括时钟电路、复位电路、电源电路等。
- 测试单片机是否能够正常工作。
2. LED流水灯实验- 利用单片机的I/O口控制LED灯的亮灭,实现流水灯效果。
- 通过编程实现LED灯的移位控制,观察流水灯的动态效果。
3. 按键输入实验- 设计按键输入电路,实现按键控制LED灯的亮灭。
- 编写程序,实现按键去抖动功能,确保按键信号的稳定性。
4. 定时器实验- 利用单片机的定时器实现定时功能,例如定时闪烁LED灯。
- 编写程序,设置定时器的时间间隔,观察LED灯的闪烁频率。
5. 串口通信实验- 配置单片机的串口通信参数,实现单片机与电脑之间的数据传输。
- 编写程序,实现数据的发送和接收,测试串口通信的稳定性。
四、实验步骤1. 单片机最小系统搭建- 根据实验板说明书,连接时钟电路、复位电路、电源电路等。
- 测试单片机的电源电压和复位功能。
2. LED流水灯实验- 编写程序,初始化I/O口,设置LED灯的移位控制方式。
- 编写延时函数,实现LED灯的动态效果。
- 将程序烧录到单片机中,观察LED流水灯效果。
3. 按键输入实验- 设计按键输入电路,连接到单片机的I/O口。
- 编写程序,实现按键的读取和去抖动功能。
- 将程序烧录到单片机中,测试按键输入功能。
4. 定时器实验- 配置单片机的定时器参数,设置定时器的时间间隔。
- 编写程序,实现定时器的中断处理,控制LED灯的闪烁。
- 将程序烧录到单片机中,观察LED灯的闪烁频率。
单片机实验报告

单片机实验报告一、实验目的本次单片机实验的主要目的是通过实际操作和编程,深入了解单片机的工作原理和应用,掌握单片机系统的设计、开发和调试方法,提高自身的动手能力和解决问题的能力。
二、实验设备1、单片机开发板2、计算机3、编程软件(如 Keil)4、下载器5、示波器6、万用表三、实验内容1、点亮 LED 灯通过编写简单的程序,控制单片机的引脚输出高低电平,从而点亮或熄灭连接在该引脚上的 LED 灯。
这是单片机最基础的操作之一,旨在熟悉单片机的编程环境和引脚控制方式。
2、数码管显示利用单片机驱动数码管,实现数字的显示。
需要了解数码管的工作原理和驱动方式,通过编程控制数码管的段选和位选信号,显示不同的数字。
3、按键输入设计按键电路,通过读取按键的状态,实现对单片机系统的输入控制。
例如,通过按键切换不同的显示模式或控制其他外部设备。
4、定时器/计数器应用使用单片机的定时器/计数器功能,实现定时、计数等操作。
例如,设计一个定时闪烁的 LED 灯,或者通过计数器统计外部脉冲的个数。
5、串口通信实现单片机与计算机之间的串口通信,将单片机采集到的数据发送到计算机上进行显示和处理,或者接收计算机发送的指令对单片机系统进行控制。
四、实验原理1、单片机的基本结构单片机通常由中央处理器(CPU)、存储器(包括程序存储器和数据存储器)、输入输出接口(I/O 口)、定时器/计数器、中断系统等部分组成。
2、编程语言本次实验采用 C 语言进行编程。
C 语言具有简洁、高效、可移植性强等优点,非常适合单片机的开发。
3、引脚功能单片机的引脚分为电源引脚、时钟引脚、复位引脚、I/O 引脚等。
通过对这些引脚的合理配置和控制,可以实现各种功能。
4、数码管驱动原理数码管分为共阴极和共阳极两种类型。
通过控制数码管的段选和位选信号,可以使数码管显示不同的数字和字符。
5、按键检测原理按键通常采用上拉电阻或下拉电阻的方式连接到单片机的I/O 引脚。
单片机实验报告范文

单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理1.实验器材:STC89C52单片机、电源、晶振、按键、LED灯、蜂鸣器等。
2.实验原理:单片机是一种微处理器,能够完成各种复杂的功能。
通过学习单片机的工作原理和编程方法,可以控制各种外围设备,实现不同的功能。
三、实验内容及步骤1.实验一:点亮LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,点亮LED灯。
2.实验二:按键控制LED灯步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将按键和LED灯与单片机相连。
(3)编写程序,实现按下按键控制LED灯亮灭。
3.实验三:数码管显示步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)将数码管与单片机相连。
(3)编写程序,将数字输出到数码管上显示。
4.实验四:定时器应用步骤:(1)连接电源和晶振,将STC89C52单片机连接到电路板上。
(2)编写程序,实现定时器功能。
四、实验结果及分析1.实验一:点亮LED灯LED灯成功点亮,证明单片机与外部设备的连接正常。
2.实验二:按键控制LED灯按下按键后,LED灯亮起,松开按键后,LED灯熄灭。
按键控制LED 灯的效果良好,说明单片机的输入输出功能正常。
3.实验三:数码管显示数码管成功显示数字,说明单片机能够实现数字输出功能。
通过程序设计,可以实现数码管显示不同的数字。
4.实验四:定时器应用定时器正常运行,能够实现精确的定时功能。
通过调节定时器的参数,可以实现不同的定时功能。
五、实验总结通过本次实验,我们学习了单片机的基本原理和使用方法。
通过掌握单片机的编程技巧,我们能够实现各种复杂的功能,如控制LED灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
北京理工大学单片机实验报告

北京理工大学实验选修课程《单片机原理与应用》课程实验报告姓名:学号:**********专业:信息工程班级:05111003实验一 P1口基本实验一、实验目的1.掌握如何建立项目,并用Keil C51软件调试程序。
二、实验内容1. P1口基本实验P1口做输出口,接八只发光二极管(如图1-1),编写程序,使发光二极管从左到右依次单个点亮,再从右至左依次单个点亮,以此循环。
各发光二极管的阳极通过保护电阻接到+5V 的电源上,阴极接到接线端口上,因此使其点亮应使相应接线端口为低电平。
三、实验原理1. P1口实验原理P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。
作为输入位时,必须向锁存器相应位写入“1”。
2. 延时原理及计算方法常用的延时程序有两种方法,一种是用定时器中断来实现,另一种是用指令循环来实现。
用C 语言编写的延时子程序,计算延时时间时需转化为汇编语言。
针对不同的编译环境,C51编译后生成的代码不同。
针对本实验系统,若延时时间大于255ms,用C51实现可大致写出如下:unsigned int i;unsigned char j;while(i--){ for(j=0;j<60;j++){;}}若延时时间不大于255ms ,可将循环变量(i,j )定义为unsigned char ,并将内循环体中参数改为75。
四、实验代码#include<reg51.h>unsigned char L; /*L 传递亮灭的数值*/或 unsigned int i, ms; unsigned char j; for(i=0;i<ms;i++) { for(j=0;j<60;j++) {;} }delay(unsigned int ms) /*延时子程序*/{unsigned char j;unsigned int i;for(i=0;i<ms;i++){for(j=0;j<60;j++) /*内循环空操作*/{;}}}void display() /*显示输出子程序*/{P1=~L; /*LED共阳极,L取反输出*/delay(1000); /*延时1秒*/}main(){unsigned char i;L=0xFF; /*全亮*/display();L=0x00; /*全灭*/display();while(1) /*进入死循环,重复执行程序*/{L=0x01; /*LED1亮*/display();for(i=0;i<8;i++) /*LED右移8次点亮*/{L=L<<1; /*L左移1位*/display();}L=0x80; /*LED8亮*/display();for(i=0;i<8;i++) /*LED左移8次点亮*/{L=L>>1; /*L右移1位*/display();}}}五、实验心得通过这次实验我们熟悉了专用的调试环境,并练习了编写代码、编译链接、烧写程序、调试运行等一系列的实验步骤,对C51单片机有了一个初步的直观认识。
单片机项目实训实验报告

一、实验背景与目的随着科技的发展,单片机作为嵌入式系统的重要组成部分,广泛应用于各个领域。
为了提高学生的实践能力和创新精神,我们选择了单片机项目实训作为实验课程。
本次实训旨在让学生掌握单片机的基本原理,熟悉其硬件和软件设计,并通过实际项目实践,提高学生的动手能力和解决问题的能力。
二、实验内容与步骤本次实训项目为设计一款基于ATmega16单片机的简易计算器。
该计算器能够实现基本的四则运算,并通过矩阵键盘和LCD1602显示屏进行人机交互。
1. 实验内容(1)设计计算器的硬件电路,包括ATmega16单片机、矩阵键盘、LCD1602显示屏等。
(2)编写计算器的软件程序,实现四则运算功能。
(3)测试计算器的功能,确保其正常运行。
2. 实验步骤(1)硬件设计根据实验要求,设计计算器的硬件电路。
主要包括以下步骤:1)选择合适的ATmega16单片机开发板。
2)设计矩阵键盘电路,包括按键布局和连接方式。
3)设计LCD1602显示屏电路,包括数据线和控制线。
4)将以上电路连接到ATmega16单片机开发板上。
(2)软件设计编写计算器的软件程序,实现以下功能:1)初始化ATmega16单片机,设置时钟频率。
2)初始化LCD1602显示屏,显示“0”作为初始值。
3)编写矩阵键盘扫描程序,检测按键状态。
4)根据按键输入,执行相应的四则运算。
5)将运算结果显示在LCD1602显示屏上。
6)实现清零、退格等功能。
(3)测试与调试1)将编写好的程序烧录到ATmega16单片机中。
2)连接计算器硬件电路,进行功能测试。
3)针对测试过程中发现的问题,进行调试和修改。
4)确保计算器能够正常运行,实现预期功能。
三、实验结果与分析经过实际操作和调试,我们成功设计并实现了一款基于ATmega16单片机的简易计算器。
该计算器能够实现基本的四则运算,并通过矩阵键盘和LCD1602显示屏进行人机交互。
以下是实验结果分析:1. 硬件设计方面,我们选择了合适的ATmega16单片机开发板,并设计了简洁的矩阵键盘和LCD1602显示屏电路。
51单片机实验报告

51单片机实验报告51单片机是一款非常流行的单片机芯片,被广泛应用于各种电子产品中。
在这篇文章中,我们来探讨一下51单片机的一些实验,以及对于这些实验的理解和体会。
第一部分:实验内容我们进行的51单片机实验主要包括以下几个方面:1. 闪烁LED灯实验:这个实验是入门级别的,主要是为了熟悉51单片机的基本操作和编程方法。
在这个实验中,我们使用了一块51单片机开发板和几个LED灯,通过控制单片机的IO口信号来实现LED灯的闪烁。
2. 按键控制LED实验:这个实验是在闪烁LED实验的基础上进一步延伸的,主要是为了了解如何通过外部按键来控制单片机的输出。
在这个实验中,我们运用了单片机的外部中断和定时器等功能,实现了按键控制LED灯的亮灭。
3. LCD1602显示屏实验:这个实验是为了让我们熟悉如何在51单片机中使用LCD1602液晶显示屏。
在这个实验中,我们使用了I2C总线来与LCD1602进行通信,通过向LCD1602发送命令和数据来实现字符的显示。
4. 电机驱动实验:这个实验是让我们了解如何使用51单片机来控制电机的运转。
在这个实验中,我们运用了单片机的PWM控制功能,通过改变PWM波的占空比来控制电机的转速和方向。
第二部分:实验体会通过这些实验,我对于51单片机有了更深刻的理解和体会。
在这里,我想分享一下我的一些体会。
首先,我认为51单片机具有非常强大的控制能力和灵活性。
通过编写程序,我们可以控制单片机的各种IO口、定时器、PWM输出等功能,从而实现各种复杂的控制任务。
同时,由于其能够直接操作硬件,所以可以快速响应各种外部事件,对实时性要求较高的应用场景有很好的适应性。
其次,我发现在51单片机开发中,良好的软硬件结合非常重要。
由于51单片机具有丰富的外部中断、定时器等功能,因此我们可以很好地利用这些硬件资源来实现各种功能。
同时,在编写程序时,我们也需要充分发挥51单片机的硬件优势,例如使用定时器来完成计时任务,使用外部中断来完成输入检测等等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机程序设计实验报告姓名:学号:专业班级:第二节课:实验一:1357,2468位置的灯交替闪烁一实验要求1357,2468位置的灯交替闪烁。
二硬件连接图与结果三原理简述程序直接控制LED各位置的灯亮灭,时间间隔简单的用了一个延时的语句。
四程序#include<reg51.h>main (){int i;P0=0XAA; //1357四个灯亮for (i=0;i<=25000;i++); //延时程序P0=0X55; //2468四个灯亮for (i=0;i<=25000;i++); //延时程序}五所遇问题与解决方式程序比较简单,没有遇到问题。
实验二:流水灯一实验要求流水灯,一个接一个的灯亮,亮到最后一个后,全部的灯亮,然后重头开始。
二硬件连接图与结果三原理简述程序定义第一个位置的灯亮,通过一个时间间隔,运用一个循环移位程序转移到下一个灯,移位7次后全部的灯亮,最后定义整个循环。
时间间隔简单的用了一个延时的语句。
因为移位时是直接补0,发送低电平不亮,所以直接移位达到要求。
四程序//流水灯#include<reg51.h>main (){int i,j;while(1){P0=0X01; //第1个灯亮for (i=0;i<=30000;i++); //延时程序for(j=0;j<=7;j++) //移位循环程序{P0=P0<<1; //移位for (i=0;i<=30000;i++); //延时程序}P0=0xff; //全亮for (i=0;i<=30000;i++); //延时程序}}五所遇问题与解决方式程序比较简单,没有遇到问题。
实验三:跑马灯一实验要求一个接一个的灯亮,前面亮过的等依旧亮,直到最后一个灯,最后重新开始,循环。
二硬件连接图与结果三原理简述程序定义第一个位置的灯亮,通过一个时间间隔,运用一个循环移位程序转移到下一个灯,移位7次后全部的灯亮,最后定义整个循环。
时间间隔简单的用了一个延时的语句。
因为移位时是直接补0,为了使之前的灯依旧亮,所以我们用了一个取反,让新补入的0位保持灯亮,达到要求。
四程序#include<reg51.h>main (){int i,j,m;while(1){m=0Xfe;P0=~m; //第1个灯亮for (i=0;i<=30000;i++); //延时程序for(j=0;j<=7;j++) //移位循环程序 {m=m<<1; //移位P0=~m;for (i=0;i<=30000;i++); //延时程序}P0=0xff; //全亮for (i=0;i<=30000;i++); //延时程序}}五所遇问题与解决方式程序比较简单,没有遇到问题。
第三节课:实验四:矩阵按键控制数码管显示数字一实验要求通过矩阵键盘控制数码管的显示对应数字。
二硬件连接图与结果三原理简述通过程序定义键位码,对应到显示数码管的位。
然后通过扫描程序得出键盘键码,通过程序让数码管显示数字。
四程序#include<reg51.h>#define uchar unsigned char#define unit unsigned intvoid dlms(void);uchar kbscan(void);unsigned char i;unsigned char code out[16]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char tab[16]={0xdb,0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};//主程序void main (void){uchar key;while(1){ key=kbscan();dlms();for(i=0;i<16;i++){if(key==tab[i]){P0=out[i];}}}}//延时程序void dlms (void){uchar i;for (i=200;i>0;i--){}}//扫描程序uchar kbscan(void){uchar sccode,recode;P2=0xf0; //高四位输入1,低四位输入0if ((P2&0xf0)!=0xf0) //有按键时{dlms();if((P2&0xf0)!=0xf0){sccode=0xfe;while ((sccode&0x10)!=0){ P2=sccode;if((P2&0xf0)!=0xf0){ recode=P2&0xf0;sccode=sccode&0x0f;return(sccode+recode);}elsesccode=(sccode<<1)|0x01;}}}return(0);}五所遇问题与解决方式程序比较简单,没有遇到问题。
第四节课实验五:数码管显示停电了,做的是数码管的程序,由于下个实验的时候也用了数码管,在数码管的基础上进行的,所以没有补做。
第五节课实验六:独立按键控制灯的亮灭一实验要求通过独立按键来控制LED灯的亮灭,用中断程序控制。
二硬件连接图与结果(控制单个灯的图丢了,所以用了后面加深实验的图)三原理简述中断程序定义一个等待,通过独立按键发送信号,执行程序,控制灯的亮灭。
四程序//K1中断程序控制LED灯亮灭#include <reg51.h>sbit led=P0^5;int0()interrupt 0{led=~led;}main(){led=1;IT0=0;EA=1;EX0=1;while(1);}五所遇问题与解决方式问题:按键会抖动接触不太好,总是不能每次人工按下时只变化一次。
解决方式:在程序里加了延时程序,让它在延时时间后再重新执行中断程序,这样可保证每次按下时不会跳变。
实验七:通过数码管显示按键次数一实验要求利用中断程序,写出按键程序,用数码管显示所按次数。
二硬件连接图与结果三原理简述中断程序定义一个等待,通过独立按键发送信号,执行数码管的显示程序,程序计数每按一次加1,数码管显示。
四程序//数码管计数中断次数#include <reg51.h>char i=0;int j;unsigned char code tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88};int0()interrupt 2{i=i+1;if(i<11){P2=tab[i];for(j=0;j<=30000;j++);}else{i=0;P2=0x3F;}}main(){IT1=0;EA=1;EX1=1;while(1);}五所遇问题与解决方式问题:按键会抖动接触不太好,总是不能每次人工按下时只变化一次。
解决方式:在程序里加了延时程序,让它在延时时间后再重新执行中断程序,这样可保证每次按下时不会跳变。
第6节课实验八:定时器控制LED灯1S闪烁一实验要求利用定时程序计时,控制小灯每隔1S闪烁。
二硬件连接图与结果三原理简述通过定时程序写一个定时时间,每到一次计时直接控制LED灯亮灭。
四程序//定时器控制LED灯1S闪烁#include<reg51.h>#define uchar unsigned charuchar num = 0;sbit led = P1^0;void main(){TMOD = 0x01;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;EA=1;ET0=1;TR0=1;led = 1;while(1){if(num == 20){num = 0;led = ~led;}}}void T0_time()interrupt 1{TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;num++;}五所遇问题与解决方式验证程序,问题不多。
实验九:定时器控制两个灯以不同周期闪烁一实验要求用定时器1工作方式1控制两个LED以不同周期。
说明:设计一个LED以200ms为周期闪烁,另一个为800ms闪烁,设计定时器1每50ms产生一次中断,由两个变量分别对中断次数计数,其中一个变量计数两次,即100ms,控制LED亮灭,另一个变量计数8次即400ms,控制LED亮灭。
二硬件连接图与结果三原理简述通过定时程序写一个50ms的定时,一个灯运行计时2遍变化一次,另一个灯在上一个灯的计时基础上计数4次再变化,从而控制LED灯亮灭。
四程序//用定时器1工作方式1控制两个LED以不同周期//说明:设计一个LED以200ms为周期闪烁,另一个为800ms闪烁//设计定时器1每50ms产生一次中断,由两个变量分别对中断次数计数,//其中一个变量计数两次,即100ms,控制LED亮灭//另一个变量计数8次即400ms,控制LED亮灭#include<reg51.h>#define uchar unsigned charuchar num = 0; //4uchar n = 0; //16sbit led1 = P1^0;sbit led2 = P1^2;void main(){TMOD = 0x01;TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;EA=1;ET0=1;TR0=1; //计时开始led1 = 1;led2 = 1;while(1){if(num==2){num = 0;led1 = ~led1;n++;}if(n==4){led2=~led2;n=0;}}}void T0_time()interrupt 1 {TH0 = (65536-50000)/256;TL0 = (65536-50000)%256;num++;}五所遇问题与解决方式问题:第一次执行的时候闪烁频率太高。
解决方式:重新检查了工作方式并定义。