18个单片机实验报告
单片机实验报告

单片机实验报告第一篇:单片机实验报告单片机实验报告一、实验目的1.熟练使用Keil、Protues两款软件2.通过上机操作,增强个人动手实践能力3.加深对理论知识的理解4.培养运用汇编语言进行初步编写程序的能力二、实验内容1.将片外RAM3050-306FH中数据转移至片内70-8FH中。
要求:可以从Keil或Protues上看到RAM的数据转移结果。
2.设计一个外部中断触发流水灯系统:当外部中断来临时,启动流水灯,即令P2口的LED轮流循环点亮。
要求:开发板或Prrotues演示3.将片内存储器80H中存放的BCD码转换为ASCII码,要求使用表格查询技术。
要求:在Keil或Protues上看到数据转换结果。
4.各使用中断方式和查询方式设计一个方波发生器,频率为50HZ。
要求:Protues使软件间示波器显示方波。
三、实验程序1.将片外RAM3050-306FH中数据转移至片内70-8FH中ORG 0000H AJMP MAIN 上电,转向主程序ORG 0030H 主程序入口MAIN: MOV DPTR,#3050H 数据指针指向地址3050H MOV A,#04H 将立即数04H送A寄存器MOV R0,#20H NEXT: MOVX @DPTR,A INC DPTR 数据指针DPTR自加一DJNZ R0,NEXT 判断是否跳转到NEXT或继续向下执行MOV DPTR,#3050H MOV R0,#70H MOV R2,#20H NEXT1: MOVX A,@DPTR MOV @R0,A INC DPTR INC R0 DJNZ R2,NEXT1SJMP $ 等待END 2.设计一个外部中断触发流水灯系统:当外部中断来临时,启动流水灯,即令P2口的LED轮流循环点亮ORG 0000H SJMP MAIN 上电,转向主程序ORG 0003H 外部中断0向量入口AJMP INSER ORG 0030H 主程序入口MAIN: SETB EX0 SETB IT0SETB EA CPUHERE: SJMP HERE ORG 0200H INSER: MOV R2,#08H MOV A,#01H NEXT: MOV P2,A LCALL DELAY RL A DJNZ R2,NEXT NEXT或继续向下执行RETI DELAY: MOV R3,#0FFH DEL2: MOV R4,#0FFH DEL1: NOP 允许外部中断0中断选择边沿触发方式开中断等待中断设置循环次数赋初值,设置高电平亮将初值送往P2口延时左移一位判断循环次数,是否跳转到中断返回延时程序DJNZ R4,DEL1 DJNZ R3,DEL2 RET END 3.将片内存储器80H中存放的BCD码转换为ASCII码,要求使用表格查询技术 ORG 0000H LJMP MAIN ORG 0030H主程序起始地址 MAIN: MOV 80H,#05H 将立即数50H转送内存单元80H MOV A,80H 将内存单元80H中的内容送寄存器A MOV DPTR,#TAB MOVC A,@A+DPTR A寄存器内容加指针偏移量后送A寄存器 MOV 80H,A RET TAB: DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H 4.1中断方式产生50HZ方波ORG 0000HAJMP MAINORG 0030H 主程序入口 MAIN: MOV TMOD,#10H 设置定时器工作模式为模式1 MOV TH1,#0D8H 装入T1计数初值MOV TL1,#0F0HSETB ET1 开中断SETB EA CPU开中断SETB TR1 启动定时器T1 HERE: SJMP HERE 等待中断ORG 001BH T1中断向量地址CLR TF1 将TF1清零CPL P2.0 P2.0取反输出MOV TH1,#0D8H 重装初值MOV TH0,#0F0HRETI;中断返回END 4.2 查询方式产生50HZ方波ORG 0000HAJMP MAINORG 0030H 主程序入口MAIN: MOV TMOD,#10H 设置定时器的工作模式为模式1 SETB TR1 启动定时器T1 LOOP: MOV TH1,#0D8H 装入T1计数初值MOV TH0,#0F0H JNB TF1,$ T1没有溢出则等待CLR TF1产生溢出,清标志位CPL P2.0 P2.0取反输出SJMP LOOP 循环END四、实验结果截图1.23.4.14.2第二篇:单片机实验报告实验四、中断交通灯实验林立强1000850116一、实验目的1、了解MCS-51单片机的组成、中断原理,中断处理过程、外部中断的中断方式。
单片机实验报告

单片机实验报告一、实验目的本次单片机实验的主要目的是通过实际操作和编程,深入了解单片机的工作原理和应用,掌握单片机系统的设计、开发和调试方法,提高自身的动手能力和解决问题的能力。
二、实验设备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 引脚。
单片机实验报告(相当不错,有具体实验结果分析哦)

学生姓名:学号:专业班级:实验类型:□ 验证□ 综合□ 设计□ 创新实验日期:实验成绩:实验一 I/O 口输入、输出实验地点:基础实验大楼A311一、实验目的掌握单片机P1口、P3口的使用方法。
二、实验内容以P1 口为输出口,接八位逻辑电平显示,LED 显示跑马灯效果。
以P3 口为输入口,接八位逻辑电平输出,用来控制跑马灯的方向。
三、实验要求根据实验内容编写一个程序,并在实验仪上调试和验证。
四、实验说明和电路原理图P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。
因为内部上拉电阻阻值是20K~40K,故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。
本实验需要用到CPU模块(F3区)和八位逻辑电平输出模块(E4区)和八位逻辑电平显示模块(B5区)。
2学生姓名:学号:专业班级:实验类型:□ 验证□ 综合□ 设计□ 创新实验日期:实验成绩:五、实验步骤1)系统各跳线器处在初始设置状态。
用导线连接八位逻辑电平输出模块的K0 到CPU 模块的RXD(P3.0 口);用8 位数据线连接八位逻辑电平显示模块的JD4B 到CPU 模块的JD8(P1 口)。
2)启动PC 机,打开THGMW-51 软件,输入源程序,并编译源程序。
编译无误后,下载程序运行。
3)观察发光二极管显示跑马灯效果,拨动K0 可改变跑马灯的方向。
六、实验参考程序本实验参考程序:;//******************************************************************;文件名: Port for MCU51;功能: I/O口输入、输出实验;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口);;用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。
单片机实验报告范文

单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理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灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
单片机实验报告

单片机实验报告1. 实验背景单片机(Microcontroller Unit,简称MCU)是一种集成了微处理器核心、内存、计时器、I/O接口等功能的集成电路芯片。
它具有体积小巧、功耗低、性能高等优点,在嵌入式系统中应用广泛。
本实验旨在通过对单片机的实际操作,加深对单片机原理及应用的理解。
2. 实验目的本次实验的主要目的是:- 掌握单片机的基础知识,包括单片机的结构、工作原理等;- 学习单片机的编程方法,初步掌握单片机的编程技巧;- 进行简单的单片机应用实验,提高对实际应用的理解。
3. 实验设备与材料实验所需的设备和材料包括:- 单片机开发板;- 计算机;- 连接线等。
4. 实验过程与结果在本实验中,我们使用XXX型单片机开发板作为实验平台,通过连接计算机进行编程。
具体的实验过程如下:4.1 硬件连接将单片机开发板与计算机通过连接线连接,并确保连接正常。
接下来,将我们设计好的电路按照要求连接到开发板的相应引脚上。
4.2 编程使用XXX软件对单片机进行编程。
根据实验要求,编写相应的程序代码,并将代码下载到单片机开发板中。
验证代码是否编译通过,并将运行结果显示在数码管、液晶显示屏等外设上。
4.3 实验结果实验结果根据不同的实验要求而定,可以是对某个外设的控制、信号的采集、数据的处理等。
在实验过程中需记录实验结果,并进行分析。
5. 实验总结通过本次实验,我对单片机的基本原理及应用有了更深入的了解。
掌握了单片机的硬件连接方法和编程技巧,并成功完成了实验要求。
实验结果表明,单片机在各个领域都有广泛的应用前景,对于嵌入式系统的开发起着重要作用。
当然,本次实验只是单片机应用的初步探索,还有很多更深入的研究和应用值得去探索。
在今后的学习与实践中,我将进一步深化对单片机的理解,并将其灵活应用于各种项目中。
6. 参考文献[参考文献1][参考文献2][参考文献3](文章内容仅供参考,具体实验过程和结果以实际情况为准。
)。
单片机实验报告

一、实验目的1. 熟悉单片机的硬件组成和基本工作原理。
2. 掌握单片机最小系统的搭建方法。
3. 学习使用单片机编程软件进行程序编写和调试。
4. 通过实际操作,加深对单片机应用的理解。
二、实验环境1. 实验设备:MCS-51单片机实验板、电源模块、面包板、连接线、LED灯、蜂鸣器、按键等。
2. 软件环境:Keil uVision5、Proteus仿真软件。
三、实验内容1. 点亮LED灯(1)实验目的:掌握单片机I/O口的使用,实现LED灯的点亮。
(2)实验步骤:① 将LED灯的阳极连接到单片机的P1.0口,阴极连接到GND。
② 在Keil uVision5中新建工程,编写程序如下:```cvoid main() {while (1) {P1 = 0xFF; // 点亮LED灯delay(500000); // 延时P1 = 0x00; // 熄灭LED灯delay(500000); // 延时}}③ 将程序编译并下载到单片机中,观察LED灯的点亮效果。
2. 蜂鸣器控制(1)实验目的:掌握单片机I/O口的使用,实现蜂鸣器的控制。
(2)实验步骤:① 将蜂鸣器的正极连接到单片机的P1.1口,负极连接到GND。
② 在Keil uVision5中编写程序如下:```cvoid main() {while (1) {P1 = 0x02; // 使能蜂鸣器delay(100000); // 延时P1 = 0x00; // 禁止蜂鸣器delay(100000); // 延时}}```③ 将程序编译并下载到单片机中,观察蜂鸣器的鸣叫效果。
3. 按键扫描(1)实验目的:掌握单片机I/O口的使用,实现按键的扫描和识别。
(2)实验步骤:① 将两个按键分别连接到单片机的P1.2和P1.3口。
② 在Keil uVision5中编写程序如下:void main() {while (1) {if (P1 & 0x04) { // 检测按键1是否按下// 执行按键1按下后的操作}if (P1 & 0x08) { // 检测按键2是否按下// 执行按键2按下后的操作}}}```③ 将程序编译并下载到单片机中,观察按键的扫描和识别效果。
单片机实训实验报告

一、实验名称单片机原理及应用实验二、实验目的1. 熟悉单片机的基本结构和原理,了解单片机在电子系统中的应用。
2. 掌握单片机编程语言C的基本语法和编程技巧。
3. 学会使用单片机进行简单控制,实现LED流水灯、数码管显示等基本功能。
4. 提高动手实践能力,培养团队合作精神。
三、实验仪器与设备1. 单片机实验箱:包括单片机、电源、按键、LED灯、数码管等。
2. 电脑:用于编程和仿真。
3. 编程软件:Keil uVision5或IAR EWARM等。
四、实验原理单片机是一种集成度高、功能强大的微控制器,具有运算速度快、功耗低、体积小等优点。
本实验以51单片机为例,介绍其基本原理和编程方法。
51单片机主要由以下几个部分组成:1. 中央处理器(CPU):负责执行指令,控制整个单片机系统。
2. 存储器:包括程序存储器(ROM)和数据存储器(RAM),用于存储程序和数据。
3. 输入/输出接口:用于与外部设备进行数据交换。
4. 定时器/计数器:用于实现定时和计数功能。
5. 中断系统:用于处理中断事件。
本实验主要涉及以下几个方面:1. 单片机基本结构和工作原理。
2. 单片机编程语言C的基本语法和编程技巧。
3. 单片机I/O口的使用和驱动能力。
4. 定时器/计数器的使用和编程。
5. 中断系统的使用和编程。
五、实验内容1. 实验一:LED流水灯(1)实验目的:掌握单片机I/O口的使用,实现LED流水灯效果。
(2)实验原理:通过单片机I/O口输出高低电平,控制LED灯的亮灭,实现流水灯效果。
(3)实验步骤:① 连接实验箱电路,将LED灯连接到单片机的P1口。
② 编写程序,设置P1口为输出模式,通过循环改变P1口输出电平,实现LED流水灯效果。
③在电脑上编译、下载程序,观察实验效果。
2. 实验二:数码管显示(1)实验目的:掌握单片机I/O口的使用,实现数码管显示功能。
(2)实验原理:通过单片机I/O口输出高低电平,控制数码管显示数字。
单片机实验报告4

单片机实验报告4第一篇:单片机实验报告4单片机实验报告(实验一)一、实验目的: 1.掌握stm8的时钟切换。
2.熟悉汇编语言的指令系统。
3.加深对stm8功能的理解,掌握去其使用方法。
二、实验仪器:stm8s105c6单片机、杜邦线、单片机开发试验仪、三、实验内容:1、步骤:1)2)3)按照正确的方法将单片机与电脑连接。
通过转接板将单片机与单片机试验仪连接,用一根杜邦线将PB0与一个LED连接起来创建工程文件,编写代码,编译运行,如果程序没有错误,就将程序下载到单片机里,观察LED的状态。
2、主程序(要有注释):intel;系统复位后,时钟为内部RC振荡器,16Mhz,8分频,实为2Mhz.;LD1闪烁10次ld a,#10;10次bset PB_DDR,#0 bset PB_CR1,#0 bres PB_CR2,#0 ;初始化PB 口,将其定义为推挽输出next1 bres PB_ODR,#0 call delay bset PB_ODR,#0 call delay dec a jrne next1;修改时钟为外部16Mhz时钟.;LD1闪烁10次mov CLK_ECKR,#01h;允许外部高速振荡器工作 wait_hse_ready ld a,CLK_ECKR and a,#02h jreq wait_hse_ready;等待外部高速振荡器准备好bset CLK_CSSR,#0;CSEEN<-1,时钟安全系统使能mov CLK_SWCR,#02h;SWEN <-1mov CLK_SWR,#0b4h;选择芯片外部的高速振荡器为主时钟wait_clk_switch ld a,CLK_SWCR and a,#08h jreq wait_clk_switch;等待切换成功next2 bres PD_ODR,#0 call delay bset PD_ODR,#0 call delay dec a jrne next2jra $;;定义一个延时函数 delaypush ccldw y,#10 loop1 ldw x,#0ffffh loop decw xjrne loopdecw yjrne loop1pop ccret3、注意事项:1)2)注意线路的连接是否正确。
单片机实验报告汇总

单片机实验报告汇总一、引言单片机是一种嵌入式系统中的重要组成部分。
通过单片机可以实现各种控制功能,包括自动控制、测量和数据处理等。
在本次实验中,我们就对单片机进行了一系列实验,包括基本IO口控制、定时器和中断、串口通信等内容。
通过这些实验的学习和掌握,我们对单片机的原理和应用有了更深入的理解。
二、实验目的1.掌握单片机的基本操作和编程方法;2.理解单片机的IO口控制原理;3.学习单片机的定时器和中断功能;4.掌握单片机的串口通信原理和操作方法。
三、实验过程与结果1.基本IO口控制实验在此实验中,我们使用单片机控制LED灯的亮灭。
首先,将LED灯连接到单片机的一个IO口上,然后编写相应的程序来控制该IO口的电平变化。
实验结果显示,当程序中对该IO口输出高电平时,LED灯亮起;反之,当输出低电平时,LED灯熄灭。
2.定时器和中断实验定时器和中断是单片机的重要功能之一、在此实验中,我们使用定时器和中断来实现一个简单的计数器。
我们先设置定时器的计数周期,然后在中断函数中对计数器进行加一操作。
实验结果表明,LED灯随着时间的推移不断闪烁,计数器的值也在不断增加。
3.串口通信实验串口通信是单片机与外部设备进行数据交换的一种通信方式。
在此实验中,我们通过串口通信将单片机与计算机相连,并实现数据的发送与接收。
我们使用UART通信协议来建立通信连接,并编写相应的程序来控制通信的发送与接收。
实验结果显示,当单片机向计算机发送数据时,计算机会接收到相应的数据,并进行处理;反之,当计算机向单片机发送数据时,单片机也能够正确接收并进行相应的操作。
四、实验总结通过本次实验,我们对单片机的基本操作和编程方法、IO口控制、定时器和中断、串口通信等内容有了更深入的了解和掌握。
我们通过实践操作,对单片机的原理和应用有了更为直观的认识。
通过编写程序,我们实现了对LED灯的控制、计数器的实现以及与计算机的数据交互等功能。
这些实验不仅提升了我们的动手能力,也加深了我们对单片机技术的理解。
单片机原理实验报告

单片机原理实验报告班级:姓名:学号:实验日期:成绩:实验一基本操作实验目的:熟悉伟福仿真机软件的基本操作,熟悉MCS-51指令。
实验内容A:数据传送程序实验程序:实验步骤:(1)从起始地址开始全速运行程序Ⅰ,检查运行结果, 外部数据窗口中7000H~700FH单元的内容皆为00H;(2)按要求修改程序如Ⅱ,用单步/跟踪运行程序, 查看寄存器和外部数据窗口;(3)在PLUS处设置断点,从起始地址开始全速运行程序,查看寄存器和外部数据窗口;(4)清除断点,用运行到当前行方式将程序运行到PLUS的下一条指令,查看运行结果是否正确。
实验内容B: 1 , 当X>0时求符号函数Y= 0 , 当X=0时-1 , 当X<0时实验程序:实验步骤:(1)准备好三个有代表性的数据,分三次用单步/跟踪方式运行程序,注意PC指针的变化;当(40H)= _____(X>0) 时,ACC.7= 0 , 运行后(41H)= _01H_____(Y= 1),当(40H)= _00H____(X=0) 时,ACC.7= 0 , 运行后(41H)= __00H____(Y= 0),当(40H)= _____(X<0) 时,ACC.7= 1 , 运行后(41H)= FFH (Y=﹣1)(2)思考:能否用“JC POSI ”指令替代“JB ACC.7, POSI ”指令, 修改运行程序,验证结果。
注意“CJNE A, #00H, NZEAR”执行后CY位为0/1 ?单片机原理实验报告班级:姓名:学号:实验日期:成绩:实验二输入/输出控制实验实验目的:掌握单片机I/O口输入输出的控制方法,学会编写数码管的显示程序。
实验内容A:P1 口做输出口,接8只发光二极管L1~L8(高电平时发光二极管点亮),编写程序,使L1~L8流水闪烁。
ORG 0000HSTART: MOV A,#01HMOV R2,#08HLOOP:MOV P1,ALCALL DELAYRL ADJNZ R2,LOOPAJMP STARTDELAY:MOV R5,#40 ;延时1秒D1:MOV R6,#50D2:MOV R7,#248D3:DJNZ R7,D3DJNZ R6,D2DJNZ R5,D1RETEND实验内容B:P1 口做输入口,接拨动开关K1~K8。
单片机电子实习实验报告

一、实验目的1. 掌握单片机的基本工作原理和编程方法。
2. 熟悉常用单片机的硬件结构和接口。
3. 学习使用单片机进行简单的电子系统设计。
4. 培养动手能力和解决实际问题的能力。
二、实验仪器与设备1. 单片机实验板(含8051单片机、电源、按键、LED灯等)2. 示波器3. 万用表4. 电阻、电容、二极管等电子元件5. 编译器及调试软件三、实验内容1. 单片机最小系统搭建- 目的:学习单片机最小系统的构成和作用。
- 实验步骤:1. 将单片机插入实验板。
2. 连接电源、按键、LED灯等元件。
3. 使用示波器检测单片机的时钟信号。
- 实验结果:成功搭建单片机最小系统,时钟信号正常。
2. 按键控制LED灯- 目的:学习按键的读取和LED灯的控制。
- 实验步骤:1. 编写程序实现按键的读取。
2. 根据按键读取结果控制LED灯的亮灭。
- 实验结果:按键按下时LED灯亮,松开时LED灯灭。
3. 定时器中断控制LED闪烁- 目的:学习定时器中断的应用。
- 实验步骤:1. 编写程序设置定时器中断。
2. 在中断服务程序中控制LED灯闪烁。
- 实验结果:LED灯按照设定的频率闪烁。
4. 串口通信实验- 目的:学习串口通信的原理和应用。
- 实验步骤:1. 编写程序实现串口发送和接收。
2. 使用串口调试助手进行数据传输。
- 实验结果:成功实现串口通信,发送和接收数据。
5. 温度检测实验- 目的:学习使用温度传感器进行温度检测。
- 实验步骤:1. 连接温度传感器。
2. 编写程序读取温度传感器数据。
3. 将温度数据显示在LCD显示屏上。
- 实验结果:成功读取温度数据,并在LCD显示屏上显示。
四、实验总结通过本次单片机电子实习实验,我掌握了以下知识和技能:1. 单片机的基本工作原理和编程方法。
2. 常用单片机的硬件结构和接口。
3. 使用单片机进行简单的电子系统设计。
4. 串口通信、定时器中断、温度检测等应用。
在实验过程中,我遇到了一些问题,如程序调试、硬件连接等,通过查阅资料和请教老师,最终成功解决了这些问题。
单片机实验报告范文

单片机实验报告范文一、实验目的本实验旨在通过实际操作和实践,使学生掌握单片机的基本原理和编程方法,培养学生分析问题和解决问题的能力,并能够通过编程实现各种功能。
二、实验器材1.STC89C52单片机开发板2.LED灯3.电阻4.电源5.连接线三、实验内容1.实验一:LED灯闪烁实验本实验利用单片机控制LED灯的亮灭,使LED灯以一定的频率交替闪烁。
2.实验二:数码管显示实验本实验利用单片机控制数码管的显示,实现0-9的数字显示功能,并通过编程实现数字的递增和递减。
四、实验步骤实验一:LED灯闪烁实验1.将LED正极连接到开发板的P0端口,将LED负极连接到GND端口。
2. 使用Keil C编译器编写程序,编写程序实现LED灯闪烁功能。
4.打开电源,观察LED灯的闪烁情况,检查实验结果是否正确。
实验二:数码管显示实验1.将数码管的A-G引脚连接到开发板的P0.0-P0.6端口,将数码管的共阳极连接到开发板的VCC端口。
2. 使用Keil C编译器编写程序,编写程序实现数码管的显示功能。
4.打开电源,观察数码管的显示情况,通过按键实现数字的递增和递减功能,检查实验结果是否正确。
五、实验结果实验一:LED灯闪烁实验实验结果符合预期,LED灯以一定的频率交替闪烁。
实验二:数码管显示实验实验结果符合预期,数码管能够正确地显示0-9的数字,并且可以通过按键实现数字的递增和递减。
六、实验总结通过本次实验,我对单片机的原理和编程方法有了更深入的了解。
通过编写程序,我成功地实现了LED灯的闪烁和数码管的显示功能,并且通过按键实现了数字的递增和递减功能。
实验过程中,我也遇到了一些问题,但通过查找资料和向同学请教,我成功地解决了这些问题。
通过实验,我发现单片机的编程控制功能非常强大,可以实现各种各样的功能,这对我以后的学习和工作都具有重要的意义。
七、实验心得通过本次单片机实验,我不仅学习了单片机的基本原理和编程方法,还锻炼了自己的动手能力和解决问题的能力。
单片机实验报告总结

单片机实验报告总结
《单片机实验报告总结》
在本次单片机实验中,我们学习了单片机的基本原理和应用,并进行了一系列的实验操作。
通过这些实验,我们对单片机的工作原理有了更深入的了解,同时也掌握了一些基本的单片机编程技巧。
在第一个实验中,我们学习了单片机的基本结构和工作原理,了解了单片机的各个部分的功能和作用。
我们通过实际操作,对单片机的输入输出端口、定时器、中断等功能有了更直观的认识。
在接下来的实验中,我们学习了单片机的编程方法和技巧。
我们掌握了单片机的汇编语言和C语言编程方法,学会了如何编写简单的单片机程序,包括IO 口控制、定时器中断、串口通信等功能的实现。
通过这些实验,我们不仅学会了单片机的基本原理和编程方法,还掌握了一些实际应用技巧。
我们能够利用单片机实现一些简单的控制功能,比如LED灯的控制、蜂鸣器的控制、数码管的显示等。
总的来说,本次单片机实验让我们对单片机有了更深入的了解,提高了我们的动手能力和实际操作能力。
希望在今后的学习和工作中,能够将所学到的知识和技能应用到实际中,为我们的科研和工程项目提供有力的支持。
单片机实验报告

一、实验目的1、熟练单片机的结构组成及原理;2、软硬兼施,采用硬件电路的焊接搭建和软件的设计调试、下载,亲自动手,对硬件系统加深了解的同时,软件编程也能得心应手;3、了解如何从硬件和软件上分析问题,排除故障。
二、实验内容MCS-51/MCS-52单片机的跑马灯硬软件设计、键盘控制及键号显示电路的软硬件设计、直流电机转速电路的软硬件设计、转速计数控制电路的软硬件设计、步进电机转速的硬软件设计三、实验器材与工具实验器材:多功能电路板、AT89S52单片机、电解电容、瓷片电容、电阻、二极管、集成芯片、插槽、八段共阴数码管、发光二极管、三极管、12MHz晶振、小按钮开关、光电开关、直流电机、步进电机主要工具PC机、下载器、电烙铁、焊锡丝、导线、尖嘴钳、斜口钳、剥线钳、数字万用表、透明胶带等。
四、实验原理1-1 MCS-51/MCS-52单片机的跑马灯的硬软件设计1 MCS-51/MCS-52单片机跑马灯的硬件电路的设计。
如图1-1是一个利用51单片机设计的跑马灯电路,51单片机的第9引脚为复位电路,单片机上电之初,使用C-R充电过程使得第9脚保持10ms以上的高电位,使机器复位。
复位开关K可使之做到随机复位。
51单片机的第18,19引脚为外接晶振,接一个12M的晶振,同51单片机内部电路配合,上电后产生12兆的晶振频率和1兆的机器周期频率。
因为89S52机片内含8K程序存储器,机器运行程序将下载其中,故89S51的引脚EA接电源VCC。
51单片机第32—39引脚为P0口,分别对应P0.7—P0.0,P0口外接10KΩ的上拉排阻。
P0口的P0.0—P0.7与74HC573的D0—D7一一对应相连,74HC573的Q0—Q7为输出,分别经220Ω电阻后接于发光二极管(跑马灯)的D0—D7上。
74HC573为8位锁存器,其1脚为输出使能端OE,低电平有效。
本电路将其接地,所以74HC573的8位Q端为直通输出。
单片机 实验报告

单片机实验报告单片机实验报告引言单片机是一种集成电路芯片,具有微处理器、存储器、输入输出接口等功能,广泛应用于各个领域。
本实验报告将介绍我在单片机实验中的学习和实践经验,包括实验目的、实验步骤、实验结果以及实验心得。
实验目的本次实验的目的是通过使用单片机,学习和掌握单片机的基本原理、编程方法和应用技巧。
具体目标包括了解单片机的基本构成、学习单片机的编程语言、掌握单片机的输入输出操作等。
实验步骤1. 实验准备:在实验开始前,我们首先准备了所需的硬件和软件工具。
硬件方面,我们使用了一块开发板和一片单片机芯片。
软件方面,我们使用了一款单片机开发软件。
2. 硬件连接:将单片机芯片插入开发板的插槽中,并通过连接线将开发板与计算机相连。
3. 编写程序:使用单片机开发软件,编写程序代码。
在本次实验中,我们选择了一个简单的LED灯闪烁的程序作为示例。
4. 烧录程序:将编写好的程序通过编程器烧录到单片机芯片中。
5. 运行程序:将烧录好的芯片插入开发板后,通过电源供电,运行程序。
LED灯将按照程序中设定的频率进行闪烁。
实验结果经过以上实验步骤,我们成功地实现了LED灯的闪烁。
通过调整程序中的参数,我们还可以改变闪烁的频率和模式。
这次实验不仅让我们掌握了单片机的基本编程方法,还让我们对单片机的应用有了更深入的了解。
实验心得通过本次实验,我深刻认识到了单片机在现代电子技术中的重要性和广泛应用。
单片机不仅可以用于控制各种电子设备,还可以应用于嵌入式系统、自动化控制等领域。
掌握单片机的编程和应用技巧,对于我们今后的学习和工作都具有重要意义。
在实验过程中,我遇到了一些困难和问题,但通过查阅资料、与同学讨论等方式,我都得到了解决。
这让我意识到在学习和实践中,积极主动地寻求帮助和解决问题的能力是非常重要的。
此外,我还发现了单片机编程的乐趣。
通过编写程序,我可以控制各种设备的运行,实现自己的创意和想法。
这种创造性的过程给我带来了很大的满足感和成就感。
单片机实验报告(学期全部实验)

单片机程序设计实验报告姓名:学号:专业班级:第二节课:实验一: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次后全部的灯亮,最后定义整个循环。
单片机实验报告汇总

计时器1#include <reg52.h>#include <stdio.h>#include <intrins.h>sbit pausebutton =P3^2;sbit countbutton =P3^3;bit int0_Mark;unsigned char HEXtoBCD (unsigned char hex) {return ((hex/10)*16+(hex%10));}void main ( void){unsigned char uc10ms=0, uc1s=0,uc60s=0;TMOD=0x01;IE=0x82;while(1){countbutton =1;uc10ms=0, uc1s=0;P1=HEXtoBCD(uc10ms);P2=HEXtoBCD(uc1s);while(countbutton);while(!countbutton); while(pausebutton){int0_Mark=1;TH0=0xDC;TL0=0x00;TR0=1;EA=1;while(int0_Mark);EA=0;TR0=0;uc10ms++;if(uc10ms==100){uc10ms=0;uc1s++;}P1=HEXtoBCD(uc10ms);if(uc1s==60){uc1s=0;uc60s++;}P2=HEXtoBCD(uc1s);if(!pausebutton){while(!pausebutton);while(pausebutton){if(countbutton)break;}}}}}void timer0( void) interrupt 1 {EA=0;int0_Mark=0;TR0=0;TH0=0x28;TL0=0x00;TR0=1;EA=1;}2#include<reg52.h>#define uchar unsigned charbit into_mark;uchar HEXtoBCD (uchar hex){return((hex/10)*16+(hex%10));}void main (void){uchar uc10ms=0,uc1s=0;IE=0x87;// EA=1;打开总中断EX0=1;EX1=1;打开外部中断0、1 ET0=1;打开定时器0中断TCON=0x05;// IT0=1;IT1=1;//脉冲触发TMOD=0x01; //设置定时器0为工作方式1uc10ms=0,uc1s=0;P1=HEXtoBCD(uc10ms);P2=HEXtoBCD(uc1s);while(1){into_mark=1;while(into_mark); // 等待10ms定时到uc10ms++;if(uc10ms==100){uc10ms=0;uc1s++;}P1=HEXtoBCD(uc10ms);if(uc1s==60){uc1s=0;}P2=HEXtoBCD(uc1s);}}void extInterrupt0(void) interrupt 0 //停止{EA=0;TR0=0;EA=1;}void extInterrupt1(void) interrupt 2 // 启动{EX1=0;TR0=1;//打开定时器0,也可以是ET0=1;EA=1;}void timer0(void) interrupt 1{EA=0;into_mark=0;TR0=0;TH0=0xDC;TL0=0x00;TR0=1;EX1=1; //要在此打开外部中断1,不然的话外部中断会不再起作用的EA=1;}串口通信1#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intbit flag=1;bit into_mark;sbit SEND_RECI_CTRL=P3^7;void initUart();void time(uint ucMs);void send();void receive();uchar count1();uchar count2();void main (){IE=0x87;TCON=0x05;TMOD=0x01;P1=0x00;P2=0x00;initUart();time(10);if(SEND_RECI_CTRL)send();elsereceive();}void send( ){while(1){P2=count1();SBUF=count1();while(TI==0);TI=0;P1=count2();SBUF=count2();while(TI==0);TI=0;}}uchar count1(){static uchar uc10ms=0;while(1){into_mark=1;TH0=0xDC;TL0=0x00;EA=1;while(into_mark);uc10ms++;if(uc10ms==100){uc10ms=0;flag=0;}return (uc10ms/10)*16+(uc10ms%10);}}uchar count2(){static uchar uc1s=0;while(1){if(flag==0){uc1s++;flag=1;}if(uc1s==60){uc1s=0;}return((uc1s/10)*16+(uc1s%10));}}void receive(){while(1){while(RI==0){}RI=0;P2=SBUF;while(RI==0){}RI=0;P1=SBUF;}}void extInterrupt0(void) interrupt 0{EA=0;TR0=0;EA=1;}void extInterrupt1(void) interrupt 2{EA=0;TR0=1;EA=1;}void timer0(void) interrupt 1{EA=0;into_mark=0;TR0=0;TH0=0xDC;TL0=0x00;TR0=1;EA=1;}void initUart(void){SCON=0x50;TMOD=0x20;PCON=0x0;TH1=0xfd;TCON=0x40;}void delay_5us(void){_nop_();_nop_();}void delay_50us(void){unsigned char i;for(i=0;i<4;i++){delay_5us();}}void delay_100us(void){delay_50us();delay_50us();}void time(uint ucMs){uchar j;while(ucMs>0){for(j=0;j<10;j++) delay_100us();ucMs--;}}2#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar uc10ms,uc1s,Shi,Ge;unsigned char code LEDValue[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,};sbit SEND_RECI_CTRL=P3^7;/*发送接收控制端口*/ void initUart();/*串口初始化*/void time(uint ucMs);/*延时*/void send();/*发送*/void receive(); /*接收*//***********主函数***************/void main (){//IE=0x87;/*除了ET1之外,其他中断全开*///TCON=0x05;//TMOD=0x01;initUart();time(10);uc10ms=0;uc1s=0;if(SEND_RECI_CTRL)send();elsereceive();}/***********发送***************/void send( ){do{P2=0x06;//个位P1=0x06;//十位time(50);SBUF=0x06; /*发送联络信号*/while(TI==0){}TI=0;/*TI为发送中断标识,TI=1表示发完SBUF中的数据*/while(RI==0){}RI=0;/*RI为接收中断标识,RI=1表示收到发送过来的数据,放入SBUF*/}while((SBUF^0x5b)!=0); /*乙机未准备好,继续联络*/P2=SBUF;P1=SBUF;time(50);while(1){Ge=LEDValue[uc1s%10];Shi=LEDValue[uc1s/10];P2=Ge;SBUF=Ge;//看不明白while(TI==0);TI=0; //P1=Shi;SBUF=Shi;while(TI==0);TI=0;}}/**********接收***************/void receive(){do{while(RI==0){}RI=0;P2=SBUF;P1=SBUF;time(50);}while((SBUF^0x06)!=0); /*判甲机请求否*/ P2=0x5b;P1=0x5b;//什么意思、time(50);SBUF=0x5b; /*发应答信号*/while(TI==0){}TI=0;while(1){while(RI==0){}RI=0;P2=SBUF;while(RI==0){}RI=0;P1=SBUF;}}/************暂停**************/void extInterrupt0(void) interrupt 0{EA=0;TR0=0;EA=1;}/***********开启***************/void extInterrupt1(void) interrupt 2{EA=0;TR0=1;EA=1;}/**********定时器0中断****************/void timer0(void) interrupt 1{EA=0;TH0=0xDC;TL0=0x00;uc10ms++;if(uc10ms==100)/*定时器0溢出一次的时间是0.01s,100次就是1s*/{uc10ms=0;uc1s++;}if(uc1s==60)uc1s=0;TR0=1;EA=1;}/*********初始化串口波特率*****************/void initUart(void){SCON=0x50; /*串口工作在方式1(10位UART),REN=1允许接收,波特率可以设定(通过定时器)P212 */TMOD=0x21; /*定时器2处于方式2作为波特率发生器使用(方式2有自动加载功能,不用重复赋初值)*/PCON=0x00; /*SMOD=0,波特率不增倍*/TH1=0xfd; /*初值设定,波特率为9600可以参考P217和P219、220*/ TCON=0x45; /*TR1=1,定时器2开*/IE=0x87;}/**********延时****************/void delay_5us(void){_nop_();_nop_();}void delay_50us(void){unsigned char i;for(i=0;i<4;i++){delay_5us();}}void delay_100us(void){delay_50us();delay_50us();}void time(uint ucMs){uchar j;while(ucMs>0){for(j=0;j<10;j++) delay_100us();ucMs--;}}。
单片机实验报告

单片机实验报告实验一一、实验目的:利用外部中断实现时钟计数0-9999(跑马灯)。
二、实验代码:#include<ht46c24.h>#define uchar unsigned char#define uint unsigned int//定义中断如何函数#pragma vector int_4 @0x4#pragma vector timer0_8 @0x8#pragma vector timer1_c @0xcvoid int_4()//外部中断函数{}void timer0_8()//定时器0中断函数{}void timer0_c()//定时器1中断函数{}//函数声明void system_init(void); //单片机初始化void AddOne();//计时函数void Display(unsigned long i);//LED显示void Delay(unsigned long i);// 延时unsigned long time;void main(){system_init();while(1){Delay(5);//0.5sAddOne();Display(time);}} void system_init(void){_intc0=0;_intc1=0;_tmr0c=0;_tmr1c=0;_pac=0;// output mode_pbc=0;_pcc=0;//显示0000_pc=0;//data_pb=0;//bit_selecttime=0;}void AddOne(){if(time<9999)time++;elsetime=0;}void Display(unsigned long i) {uchar temp1;uint temp2;//秒低位temp1=i%10;temp2=i/10;_pc&=0xf0;//pc3-pc0_pc|=temp1;_pb|=0x0f;//pb0_pb&=0xfe;三、实验心得:由于之前并没有学习过单片机的知识,在做此试验时只能对着程序和电路图慢慢学习相关知识。
2018-单片机实验报告 (1000字)-优秀word范文 (15页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==单片机实验报告 (1000字)单片机实验报告实验二并行口输入输出实验——循环彩灯控制任务一1. 实现的功能:P1 口接 8 个开关,P0 口接 8 个灯,每个开关对应一个灯,实时读取开关状态,开关闭合时,灯亮。
开关断开时,灯灭。
2. 硬件原理图:3. 流程图:4. 程序:ORG 0000H //程序入口AJMP MAIN //跳转到主程序ORG 0040H //主程序初始地址MAIN: MOV P1,#0FFH //将P1口设置成输入状态MOV P0,P1 //将P1口输入的状态传输给P0口输出AJMP MAIN //返回主程序,循环执行主程序,保证实时 END //结束任务二1.实现的功能:用 5 个开关 K0-K4,控制 P2 口所接 8 个灯的循环,各开关的功能要求如下:(1)K1,K2 分别选择灯的四种闪动方式;(2)K3 用于控制灯的循环方式(顺时针或逆时针);(3)K4 用于选择灯的两种循环速度(4)K0 用于引发外部中断,在外部中断子程序中,读取通过 K1-K4 所设定的循环彩灯的工作方式,并按所设定的工作方式控制彩灯运行。
2.硬件原理图:3.流程图:4.程序:ORGLJMPORGLJMPORGMAIN: MOVSETBSETBSETBMOVJBJB 0000H MAIN 0003H PINT0 0100H SP,#40H EA EX0 IT0 P1,#0FFH P1.0,MP1.1,M2 //外部中断0入口 //设置栈底 //打开中断允许位 //打开外部中断0允许位 // //将P1口设置成输入状态 //判断P1.0(K1)和P1.1(K2)状态选择闪动方式 //M1: MOVAJMPM2: MOVAJMPM: JBM3: MOV AJMPM4: MOV NEXT1: MOV MOVMOVMOVNEXT2: JB L: MOVRLMOVAJMPR: MOVRRMOVNEXT3: JB LCALLS2: LCALL SJMPORGPINT0: JB JBMO1: MOVAJMPMO2: MOVAJMPMO: JBMO3: MOVAJMPMO4: MOVNEXT4: MOVMOVMOVMOVRETIDELAY: MOVLOOP1: MOVLOOP2: MOVLOOP3: NOP P2,#01H NEXT1 P2,#03H NEXT1 P1.1,M4 P2,#07H NEXT1 P2,#0FH C,P1.2 PSW.2,C C,P1.3 PSW.6,C PSW.2,R A,P2 A P2,A NEXT3 A,P2 A P2,A PSW.6,S2 DELAY DELAY NEXT2 0200H P1.0,MO P1.1,MO2 P2,#01H NEXT4P2,#03H NEXT4 P1.1,MO4 P2,#07H NEXT4 P2,#0FH C,P1.2 PSW.2,C C,P1.3 PSW.6,CR5,#05H R6,#64H R7,#0FFH //闪动方式1,1个灯循环移动 // //闪动方式2,2个灯循环移动 // // //闪动方式3,3个灯循环移动 // //闪动方式4,4个灯循环移动 // //将P1.2(K3)的状态送给PSW.2 // //将P1.3(K4)的状态送给PSW.6 //判断PSW.2(K3)状态选择循环方向 // // // // // // // //判断开关PSW.6(K4)状态选择闪动速度 // // //循环执行闪动程序 //中断程序 //判断P1.0(K1)和P1.1(K2)状态选择闪动方式// //闪动方式1,1个灯循环移动 // //闪动方式2,2个灯循环移动 // // //闪动方式3,3个灯循环移动// //闪动方式4,4个灯循环移动 // //将P1.2(K3)的状态送给PSW.2 // //将P1.3(K4)的状态送给PSW.6 //返回主程序 //延时程序,延时0.5sNOP DJNZ DJNZ DJNZ RET END R7,LOOP3 R6,LOOP2 R5,LOOP1 //返回实验三七段LED数码管控制实验1.实现的功能:实验采用 4 位一体的数码管,用 P1 口通过驱动芯片控制段码输出信号线,P0 口通过驱动芯片控制位选线,自主选择驱动芯片,设计实现电路,并实现以下功能:(1)当开关 K0 接低电平时,第一位依次显示 0~F,然后第二位、第三位、第四位,再循环回第一位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一流水灯实验 (2)实验二数码管静态显示实验 (5)实验三按键输入与数码管静态显示实验 (9)实验四数码管动态显示实验一 (12)实验五数码管动态显示实验二 (16)实验六键盘扫描实验 (20)实验七外部中断实验一 (23)实验八外部中断实验二 (26)实验九定时器实验一 (29)实验十定时器实验二 (33)实验十一定时器实验三 (36)实验十二串口实验一 (41)实验十三串口实验二 (43)实验十四串口实验三 (45)实验十五 AD实验 (50)实验十六 DA实验 (54)实验十七点阵屏显示实验 (56)实验十八 LCD1602显示实验 (59)实验一流水灯实验一、实验要求1.在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路2.继续在Proteus软件中绘制电路,将P1口做输出口,接八只发光二极管3.在Keil软件中编写程序,实现功能,间隔1S点亮一个发光二极管,顺序从P1.0到P1.7依次点亮。
二、实验目的1.学习Proteus软件的使用方法2.学习Keil软件的使用方法3.学习端口输出的使用方法4.掌握延时程序的设计三、实验说明(条理清晰,含程序的一些功能分析计算)该电路是单片机的P1作为输出口分别在P1.0到P1.7口接LED灯,开启电路后从P1.0到P1.7口的LED灯会依次以每隔1s时间一个一个的亮过去,并且当亮到P1.7的LED灯时会回到P1.0口的LED灯亮,一直循环下去。
当按下复位按钮时,电路会被复位,LED灯会重新从P1.0口的LED灯开始亮。
在Proteus软件中按照要求把电路连好,再利用Keil软件按需要实现的功能编写c程序,生成hex文件,把hex文件导到Proteus软件中进行仿真。
在编写程序时需要延时1s,一个机器周期包含12个时钟脉冲,而我们用的是12MHz晶振,每一个时钟脉冲的时间是1/12us,所以一个机器周期为1us。
程序中子函数void delay_ms(int x)中x为1是可延时1ms,以此类推可的1s=1000sm,当x=1000时刚好延时1s。
四、硬件原理图及程序设计(一)硬件原理图设计电路见图流水灯。
电路中P1.0到P1.7为LED控制口,排阻RP1阻值为330Ω,AT89c51单片机的9脚(RST)为复位引脚,当RST为高电平的时间达到2个机器周期时系统就会被复位;31引脚(EA)为存取外部存储器使能引脚,当EA为高电平是使用单片机内部存储器,当EA为低电平时单片机则使用外部存储器。
18、19引脚是接晶振脚。
因为Proteus软件已经把单片机的电源和接地引脚接好了,所以我们不用接。
(二)程序流程图设计程序开始后给P1口赋初值为0xff让LED灯全部处于熄灭状态。
给LED赋0xff使第一个灯亮起并延时1m,再进行左移并延时1s,最后判断是否左移七次,如果有七次就重新点亮第一个灯再左移;如果没有就再次左移。
(三)程序设源代码#include<reg51.h> //定义8051寄存器头文件#define LED P1 //定义P1为LED控制口void delay_ms(int x); //声明延时函数main() //主函数的开始{ int m; //定义变量m为整型LED=0xff; //P1口置1,赋初值while(1) //无限循环{LED=0xfe; //让P1.0口的LED亮delay_ms(1000); //调用延时函数,并延时1sfor(m=0;m<7;m++) //循环7次{LED=(LED<<1)|0x01; //将P1口数据左移1位并与0x01或运算delay_ms(1000); //调用延时函数,并延时1s}}}/*********延时函数*********/void delay_ms(int x){int i,j;for(i=0;i<x;i++)for(j=0;j<120;j++);}五.实验总结因为是第一次使用Proteus软件和Keil软件,在使用软件是速度很慢,导致效率很低,后来我多用了几次Proteus软件和Keil软件慢慢的就熟悉了那些软件的使用方法,使我可以熟练使用软件。
在第一遍编写完程序后,放到Proteus软件中进行仿真时发现LED灯不亮,我检查了下原理图没错,就开始检查程序,发现在程序左移是或上0x01后输出的值会全是0xff,我就在前面加了句LED=0xfe让P1.0的LED先亮,在进行左移循环。
再次编译后仿真发现LED灯可以流水式从P1.0到P1.7亮一次,可是只能亮一次,于是我就在程序中加了一句while(1)让程序无限循环下去,编译完后再仿真就成功了。
通过此次实验让我懂得了Proteus软件和Keil软件的使用方法,让我知道怎样用Proteus 软件来验证程序是否有误。
让我明白了我们编写程序时要认真,不能丢三落四的,要先通过思考。
我觉得对这次流水灯实验我们还可以进行一些拓展,比如在LED灯做流水运动的同时让它渐灭渐亮,或者让它往不同的方向流动等等。
那样我们就可以在一个不同的单片机板上玩出很多新花样,也能让我们更加灵活的应用单片机。
图流水灯实验二数码管静态显示实验一、实验要求1.在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路2.在电路中增加一个7段数码管(共阳/共阴自选),将P2口作数据输出口与7段数码管数据引脚相连3.在Keil软件中编写程序,采用静态显示法,实现数码管循环显示数字0~9,显示数字延时间隔1秒钟二、实验目的1.巩固Proteus软件和Keil软件的使用方法2.学习端口输入输出的高级应用3.掌握7段数码管的连接方式和静态显示法4.掌握查表程序和延时等子程序的设计三、实验说明(条理清晰,含程序的一些功能分析计算)该电路是单片机的P2口作为数据输出口,与七段数码管(共阳)的七个数据输入引脚相连。
当启动电路后,七段数码管会依次循环显示从0~9的数字,并且没个数字只显示1s。
当按下复位按钮后,电路会被复位,七段数码管会重新从0开始显示。
利用Proteus软件按要求把电路搭好,在Keil软件上编写实现功能的程序。
因为要显示0~9数字,所以在编写程序时要添加显示0~9的数组代码,又要进行循环显示,因为是10个数循环,所以可以用for语句让它循环10次,就可以实现0~9循环一次,再在10次循环上加上while(1)可以让它无限循环。
四、硬件原理图及程序设计(一)硬件原理图设计图见图静态数码管该电路的P2口为数据输出口,在数码管的数据输入端串上电阻,用来限流,因为用的是共阳数码管,所以要把数码管的公共端接电源。
AT89c51单片机的9脚(RST)为复位引脚,当RST为高电平的时间达到2个机器周期时系统就会被复位;31引脚(EA)为存取外部存储器使能引脚,当EA为高电平是使用单片机内部存储器,当EA为低电平时单片机则使用外部存储器。
18、19引脚是接晶振脚。
因为Proteus软件已经把单片机的电源和接地引脚接好了,所以我们不用接。
(二)程序流程图设计程序开始后先把P2口拉高,给a赋值为0.。
让数码管显示,再对a进行自增1;判断a 是否小于10,如果小于10,就让数码管显示a的值,如果不小于10,就把a赋值为0,再给数码管显示。
(三)程序设源代码#include <reg51.h> //定义8051寄存器头文件#define SEG7P P2 //定义七段数码管接在P2口unsigned char TAB[]={ 0xc0,0xf9,0xa4,0xb0,0x99, //数字0~4的码值0x92,0x83,0xf8,0x80,0x98 }; //数字5~9的码值void delay_ms(int x); //声明延时子函数int a; //定义整型变量amain() //主程序的开始{ SEG7P=0xff; //灭数码管while(1) //无限循环{for(a=0;a<10;a++) //循环10次,并且a自增{SEG7P=TAB[a]; //给SEG7P赋值delay_ms(1000); //延时1s}}}/******延时函数******/void delay_ms(int x){int i,j;for(i=0;i<x;i++)for(j=0;j<120;j++);}五.实验总结通过此次实验使我对Proteus软件和Keil软件更加熟悉了,但是在做实验时还是会出现一些问题。
我搭好电路和编完程序进行仿真时发现七段数码会乱码,后来我认真检查了一下电路,与书本的对了一下发现我连接电路时七段数码管的顺序被我连错了,我改过来以后再次仿真,终于成功了。
此次实验使我知道了我们连接电路时要认真,连接之前要知道电路怎么连,元件的连接方法。
我觉得我们要多做一些像这样的实验,来提高我们对单片机软件的使用技术,也能让我们更加了解单片机程序的编写方法,让我们巩固了上课的知识,使我们记得更加牢固。
静态数码管实验三按键输入与数码管静态显示实验一、实验要求1.在Proteus软件中画好51单片机最小核心电路,包括复位电路和晶振电路;2.在电路中增加一个7段数码管(共阳/共阴自选),将P2口作数据输出口与7段数码管数据引脚相连;3.在P3.0和P3.1分别连接一个按键,当按键弹起时引脚为高电平,当按键按下时引脚为低时平;4.在Keil软件中编写程序:实现数码管循环显示数字0~9,程序一开始数码管显示0,当按下P3.0引脚对应按键时,显示数字加一;当按下P3.1引脚对应按键时,显示数字减一;(注意按键采用电平扫描方式识别,不采用外部中断方式识别)二、实验目的1.巩固Proteus软件和Keil软件的使用方法2.学习端口输入输出的高级应用3.掌握7段数码管的连接方式和静态显示法4.掌握按键输入识别与去抖动程序设计三、实验说明(条理清晰,含程序的一些功能分析计算)该电路是单片机的P2口作为数据输出口,与七段数码管(共阳)的七个数据输入引脚相连;单片机的P3^0接按键(Key1),按下再放开后会使数码管数字加一;单片机的P3^0接按键(Key2),按下在放开后会使数码管数字减一。
利用Proteus软件按实验要求把电路搭好如图按键输入与数码管静态,在Keil软件上编写实现功能的程序。
要实现电平扫描,所以用if语句进行判断按键是否按下,当按键下后为了不重复使数字多加,所以加了等待按键放开语句,当单键放开后使变量m加1;最后用数码管读取m的值。
四、硬件原理图及程序设计(一)硬件原理图设计图见图按键输入与数码管静态。
该电路的P2口为数据输出口,在数码管的数据输入端串上电阻,用来限流,因为用的是共阳数码管,所以要把数码管的公共端接电源。