单片机显示接口实验报告范文
单片机数码管显示实验总结
单片机数码管显示实验总结单片机数码管显示实验总结一、实验目的本次实验旨在通过单片机控制数码管显示,掌握数码管的工作原理、编程控制方法以及单片机与数码管的接口技术。
通过实验,提高自己的动手能力和编程技能,为今后的学习和实际工作打下坚实的基础。
二、实验原理数码管是一种常用的电子显示器件,它由多个LED组成,通过控制各个LED的亮灭来显示不同的数字或字符。
本次实验采用的是共阴极数码管,它由8个LED组成,通过单片机控制每个LED的亮灭状态来显示不同的数字或字符。
三、实验步骤1.硬件准备(1)选择合适的单片机开发板,如Arduino、STM32等。
(2)购买数码管及相应的驱动电路。
(3)准备杜邦线、电阻、电容等电子元件。
2.硬件连接(1)将数码管与单片机开发板连接起来。
(2)根据数码管驱动电路的要求,连接电源、地线和控制信号线。
(3)连接电源后,打开开发板电源,观察数码管的显示效果。
3.编程控制(1)在开发板上编写程序,控制数码管显示不同的数字或字符。
(2)使用相应的编译器将程序编译成可执行文件,上传到开发板上。
(3)观察数码管的显示效果,调试程序,使其达到预期效果。
4.测试与评估(1)在不同情况下测试数码管的显示效果,如按键输入、传感器数据等。
(2)对程序进行优化和改进,提高程序的效率和稳定性。
(3)总结实验过程中的问题和解决方法,为今后的学习和实际工作提供参考。
四、实验结果及分析1.实验结果在实验过程中,我们成功地实现了对数码管的编程控制,使其能够根据不同的输入显示不同的数字或字符。
同时,我们也发现了一些问题,如数码管的亮度不够、显示的数字不清晰等。
经过调试和改进,我们解决了这些问题,使数码管的显示效果更加理想。
2.结果分析通过本次实验,我们深入了解了数码管的工作原理和编程控制方法,掌握了单片机与数码管的接口技术。
同时,我们也发现了一些问题,如数码管的亮度不够、显示的数字不清晰等。
这些问题的出现可能与硬件连接、编程控制等方面有关。
单片机数码管显示实验报告
单片机数码管显示实验报告单片机数码管显示实验报告引言:数码管是一种常用的显示器件,广泛应用于各种电子设备中。
本实验旨在通过使用单片机控制数码管的亮灭来实现数字的显示,以及通过编程控制数码管显示不同的数字和字符。
1. 实验目的本实验的主要目的是通过使用单片机控制数码管的显示,了解数码管的工作原理,以及掌握单片机编程技巧。
2. 实验材料本实验所需材料包括:单片机(如STC89C52)、数码管、电阻、面包板、杜邦线等。
3. 实验原理数码管是一种由多个发光二极管组成的显示器件,通常由7个发光二极管和一个小数点组成,可以显示0-9的数字和一些字母。
每个发光二极管的亮灭与单片机输出的电平有关,通过控制单片机的输出口,可以实现数码管上不同数字和字符的显示。
4. 实验步骤4.1 连接电路首先,将单片机和数码管通过杜邦线连接在一起。
将数码管的共阳极连接到单片机的输出口,将数码管的每个段连接到单片机的不同IO口。
同时,为了保护数码管和单片机,还需要在数码管的每个段与单片机之间串联一个适当的电阻。
4.2 编写程序使用C语言编写程序,通过控制单片机的输出口,实现数码管上不同数字和字符的显示。
程序的主要逻辑是通过改变单片机输出口的电平来控制数码管的亮灭。
根据数码管的接线方式和编码规则,可以通过设置不同的输出口电平组合来显示不同的数字和字符。
4.3 烧录程序将编写好的程序通过编程器烧录到单片机中。
4.4 运行实验将单片机连接到电源,观察数码管上的显示效果。
通过改变程序中的输出口电平设置,可以实现不同数字和字符的显示。
5. 实验结果通过实验,我们成功地实现了通过单片机控制数码管的显示。
通过改变程序中的输出口电平设置,可以实现数码管上不同数字和字符的显示。
实验结果表明,单片机可以灵活地控制数码管的亮灭,实现多种显示效果。
6. 实验总结通过本次实验,我们深入了解了数码管的工作原理,掌握了单片机编程技巧。
数码管作为一种常用的显示器件,在电子设备中有着广泛的应用。
单片机的显示实验报告
一、实验目的本次实验旨在通过学习单片机显示技术,掌握单片机控制数码管显示的基本原理和方法。
通过实验,加深对单片机基本原理和实际应用的理解,提高动手实践能力。
二、实验内容1. 硬件设备(1)单片机:AT89C51(2)晶振:12MHz(3)电容:22pF(两个)(4)复位电路:10K电阻与10F电容实现自动复位(5)显示器:7段共阳级数码管2. 软件环境(1)仿真软件:Proteus 7.8(2)编程软件:Keil 4.223. 实验步骤(1)搭建实验电路根据实验要求,利用Proteus软件搭建单片机实验电路,包括单片机、晶振、电容、复位电路和7段共阳级数码管。
(2)编写程序利用Keil 4.22编程软件编写控制数码管显示的程序,实现以下功能:1)数码管显示0-9循环显示2)数码管显示自定义字符3)数码管显示时间(小时、分钟、秒)(3)编译程序将编写的程序编译生成HEX文件。
(4)仿真运行在Proteus软件中加载HEX文件,观察数码管显示效果。
三、实验结果与分析1. 数码管显示0-9循环显示通过编写程序,实现数码管显示0-9循环显示的功能。
程序中,首先定义一个数组,存储0-9的数字编码;然后通过循环遍历数组,控制数码管显示对应的数字。
2. 数码管显示自定义字符为了实现数码管显示自定义字符,需要设计字符编码。
根据字符形状,将字符编码存储在数组中。
程序中,通过改变数组指针,控制数码管显示不同的字符。
3. 数码管显示时间实现数码管显示时间功能,需要设计一个计时器。
程序中,通过定时器中断,更新时间数据。
当定时器溢出时,更新数码管显示的时间。
四、实验总结通过本次实验,掌握了单片机控制数码管显示的基本原理和方法。
具体收获如下:1. 熟悉了Proteus和Keil软件的使用,提高了编程能力。
2. 加深了对单片机基本原理和实际应用的理解。
3. 学会了数码管显示程序的设计和调试。
4. 提高了动手实践能力。
五、拓展实验1. 实现多个数码管的连接和显示2. 设计一个可编程的字符编码表,实现更多字符的显示3. 利用数码管显示复杂图形,如动画效果4. 将数码管显示与其他功能结合,如温度、湿度显示等通过以上拓展实验,可以进一步提高单片机显示技术的应用水平。
数码显示控制实验报告(3篇)
第1篇一、实验目的1. 熟悉数码显示模块的结构和工作原理;2. 掌握51单片机控制数码显示模块的方法;3. 学会使用移位寄存器实现数码显示的动态扫描;4. 提高单片机编程能力和实践操作能力。
二、实验原理数码显示模块是一种常见的显示器件,主要由7段LED组成,可以显示0-9的数字以及部分英文字符。
51单片机通过控制数码显示模块的段选和位选,实现数字的显示。
移位寄存器是一种常用的数字电路,具有数据串行输入、并行输出的特点。
在本实验中,使用移位寄存器74HC595实现数码显示的动态扫描。
三、实验仪器与材料1. 51单片机实验板;2. 数码显示模块;3. 移位寄存器74HC595;4. 电阻、电容等电子元件;5. 电路连接线;6. 编译软件Keil uVision;7. 仿真软件Proteus。
四、实验步骤1. 电路连接(1)将51单片机的P1口与数码显示模块的段选端相连;(2)将74HC595的串行输入端Q(引脚14)与单片机的P0口相连;(3)将74HC595的时钟端CLK(引脚11)与单片机的P3.0口相连;(4)将74HC595的锁存端LR(引脚12)与单片机的P3.1口相连;(5)将数码显示模块的位选端与74HC595的并行输出端相连。
2. 编写程序(1)初始化51单片机的P1口为输出模式,P3.0口为输出模式,P3.1口为输出模式;(2)编写数码显示模块的段码数据表;(3)编写74HC595的移位和锁存控制函数;(4)编写数码显示模块的动态扫描函数;(5)编写主函数,实现数码显示模块的循环显示。
3. 编译程序使用Keil uVision编译软件将编写的程序编译成hex文件。
4. 仿真实验使用Proteus仿真软件进行实验,观察数码显示模块的显示效果。
五、实验结果与分析1. 编译程序后,将hex文件下载到51单片机实验板上;2. 使用Proteus仿真软件进行实验,观察数码显示模块的显示效果;3. 通过实验验证,数码显示模块可以正常显示0-9的数字以及部分英文字符;4. 通过实验,掌握了51单片机控制数码显示模块的方法,学会了使用移位寄存器实现数码显示的动态扫描。
单片机实验报告——LED数码管显示实验
单⽚机实验报告——LED数码管显⽰实验(此⽂档为word格式,下载后您可任意编辑修改!)《微机实验》报告LED数码管显⽰实验指导教师:专业班级:姓名:学号:联系⽅式:⼀、任务要求实验⽬的:理解LED七段数码管的显⽰控制原理,掌握数码管与MCU的接⼝技术,能够编写数码管显⽰驱动程序;熟悉接⼝程序调试⽅法。
实验内容:利⽤C8051F310单⽚机控制数码管显⽰器基本要求:利⽤末位数码管循环显⽰数字0-9,显⽰切换频率为1Hz。
提⾼要求:在4位数码管显⽰器上依次显⽰当天时期和时间,显⽰格式如下:yyyy (年份)mm.dd(⽉份.⽇).asm;Description: 利⽤末位数码管循环显⽰数字0-9,显⽰切换频率为1Hz。
;Designed by:gxy;Date:2012117;*********************************************************$include (C8051F310.inc)ORG 0000H ;复位⼊⼝AJMP MAINORG 000BH ;定时器0中断⼊⼝AJMP TIME0MAIN: ACALL Init_Device ;初始化配置MOV P0,#00H ;位选中第⼀个数码管MOV R0,#00H ;偏移指针初值CLR PSW.1 ;标志位清零SETB EA ;允许总中断SETB ET0 ;允许定时器0中断MOV TMOD,#01H ;定时器0选⼯作⽅式1MOV TH0,#06HMOV TL0,#0C6H ;赋初值,定时1sLOOP: MOV A,R0ADD A,#0BH ;加偏移量MOVC +PC ;查表取,段码MOV P1,A ;段码给P1显⽰SETB TR0 ;开定时LOOP1: JNB PSW.1,LOOP1 ;等待中断CLR PSW.1INC R0 ;偏移指针加⼀CJNE R0,#0AH,LOOP3MOV R0,#00H ;偏移指针满10清零AJMP LOOP ;返回DB 0FCH,60H,0DAH,0F2H,66H ;段码数据表:0、1、2、3、4 DB 0B6H,0BEH,0E0H,0FEH,0F6H; 5、6、7、8、9 ;***************************************************************** ; 定时器0中断;***************************************************************** TIME0: SETB PSW.1 ;标志位置⼀MOV TH0,#06H ;定时器重新赋值MOV TL0,#0C6HLOOP3: CLR TR0 ;关定时RETI;***************************************************************** ;初始化配置;***************************************************************** PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #001hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 -Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Open-Drain, Digital ; P0.7 - Unassigned, Open-Drain, Digital ; P1.0 - Unassigned, Open-Drain, Digital ; P1.1 - Unassigned, Open-Drain, Digital ; P1.2 - Unassigned, Open-Drain, Digital ; P1.3 - Unassigned, Open-Drain, Digital ; P1.4 - Unassigned, Open-Drain, Digital ; P1.5 - Unassigned, Open-Drain, Digital ; P1.6 - Unassigned, Open-Drain, Digital ; P1.7 - Unassigned, Open-Drain, Digital ; P2.0 - Unassigned, Open-Drain, Digital ; P2.1 -Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digital mov XBR1, #040hretInterrupts_Init:mov IE, #002hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initretend提⾼部分:;*********************************************************;Filename: shumaguan2.asm;Description:在4位数码管显⽰器上依次显⽰当天时期和时间,显⽰格式如下:; 2012 (年份); 12.07(⽉份.⽇); 12.34(⼩时.分钟);Designed by:gxy;Date:2012117;*********************************************************$include (C8051F310.inc)ORG 0000HAJMP MAINORG 000BHAJMP TIME0MAIN: ACALL Init_DeviceMOV R0,#00H ;⽤于位选MOV R1,#00H ;⽤于段选MOV R2,#22H ;置偏移量,⽤于控制模式MOV R4,#8MOV R5,#250CLR PSW.1 ;标志位清零SETB EA ;允许总中断SETB ET0 ;允许定时器0中断MOV TMOD,#01H ;定时器0选⼯作⽅式1MOV TH0,#0FFHMOV TL0,#0C0H ;定时器赋初值1msBACK: MOV P0,R0 ;位选MOV A,R0ADD A,#40H ;选下⼀位MOV R0,AMOV A,R1ADD A,R2 ;加偏移量MOVC +PC ;查表取段码MOV P1,A ;段码给P1显⽰LOOP: SETB TR0 ;开定时HERE: JNB PSW.1,HERE ;等待中断CLR PSW.1DJNZ R5,BACKMOV R5,#250DJNZ R4,BACKMOV R4,#8 ;循环2000次(2s)MOV A,R2ADD A,#04H ;偏移量加04H,到下⼀模式段码初值地址 MOV R2,ACJNE R2,#2EH,LOOP2MOV R2,#22H ;加三次后偏移量回到初值LOOP2: AJMP BACK ;返回进⼊下⼀模式;段码数据表:DB 0DAH,60H,0FCH,0DAH ; 2102DB 0E0H,0FCH,61H,60H ; 701. 1DB 66H,0F2H,0DBH,60H ; 432. 1;*****************************************************************; 定时器0中断;***************************************************************** TIME0: MOV TH0,#0FFH MOV TL0,#0C0HCLR TR0SETB PSW.1INC R1 ;偏移指针加⼀CJNE R1,#04H,LOOPMOV R1,#00H ;偏移指针满04H清零RETI;***************************************************************** ; 初始化配置;***************************************************************** PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #001hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital; P0.1 - Unassigned, Open-Drain, Digital; P0.2 - Unassigned, Open-Drain, Digital; P0.3 - Unassigned, Open-Drain, Digital; P0.4 - Unassigned, Open-Drain, Digital; P0.5 - Unassigned, Open-Drain, Digital; P0.6 - Unassigned, Open-Drain, Digital; P0.7 - Unassigned, Open-Drain, Digital; P1.0 - Unassigned, Open-Drain, Digital; P1.1 - Unassigned, Open-Drain, Digital; P1.2 - Unassigned, Open-Drain, Digital; P1.3 - Unassigned, Open-Drain, Digital; P1.4 - Unassigned, Open-Drain, Digital; P1.5 - Unassigned, Open-Drain, Digital; P1.6 - Unassigned, Open-Drain, Digital; P1.7 - Unassigned, Open-Drain, Digital; P2.0 - Unassigned, Open-Drain, Digital; P2.1 - Unassigned, Open-Drain, Digital; P2.2 - Unassigned, Open-Drain, Digital; P2.3 - Unassigned, Open-Drain, Digitalmov XBR1, #040hretInterrupts_Init:mov IE, #002hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initretend六、程序测试⽅法与结果、软件性能分析软件调试总体截图:基础部分:软件运⾏时,我们发现P0端⼝为00H,P1端⼝以依次为FCH、60H、DAH、F2H、66H、B6H、BEH、E0H、FEH、F6H。
单片机LCD显示实验报告
单片机LCD显示实验报告实验目的:本实验旨在通过使用单片机控制LCD进行显示,掌握单片机与外围设备的交互操作,学习并理解LCD显示原理。
实验器材:1. 单片机开发板2. LCD1602液晶显示屏3. 杜邦线若干4. 电阻若干实验原理:液晶显示原理是在液晶材料施加电场的作用下,通过改变传输光的偏振状态来实现图像显示。
本实验使用的LCD1602是一种16×2的字符型液晶显示模块,其中每个字符由5×8的点阵构成。
实验步骤:1. 连接电路:将LCD1602与单片机开发板通过杜邦线连接。
一般来说,液晶显示屏的引脚布局如下:- VSS: 接地- VDD: 供电(一般为5V)- V0:对比度控制端(通过电位器调节)- RS:数据/指令选择端(通常连接到单片机的I/O口)- RW:读写选择端(连接至地)- E:使能端(通常连接到单片机的I/O口)- D0-D7:数据线(连接到单片机的I/O口)- A:背光灯正极(连接5V)- K:背光灯负极(连接至地)2. 编写程序:根据实验要求,使用相应的单片机编程语言编写程序。
在程序中,需要调用相关的LCD1602命令来实现字符的显示。
3. 烧录程序:使用相应的烧录工具将编写好的程序下载到单片机开发板中。
4. 实验验证:将开发板上电,通过观察LCD1602的显示情况来验证程序的正确性。
实验结果与分析:在本次实验中,我使用单片机控制LCD1602成功实现了字符的显示。
实验结果表明,编写的程序能够正确地将字符显示在液晶屏上,并且显示效果良好。
实验中遇到的问题及解决方法:在实验过程中,我遇到了一些问题,例如LCD1602无显示、乱码或显示异常等情况。
针对这些问题,我采取了以下解决方法:1. 检查接线是否正确:确保LCD1602的引脚与单片机开发板之间的连接准确无误。
2. 检查电源供应:确认LCD1602的电源供应是否正常,电源电压是否稳定。
3. 调整对比度:通过旋转电位器调整LCD1602的对比度,以适应不同环境下的显示效果要求。
单片机接口技术实验报告
单片机接口技术实验报告班级:姓名:学号:指导老师:廖平中南大学机电工程学院实验一定时器实验一、实验目的1.学习89C51内部计数器的使用和编程方法2.进一步掌握中断处理程序的编写方法二、实验说明关于内部计数器的编程主要是定时常数的设置和有关控制寄存器的设置。
内部计数器在单片机中主要有定时器和计数器两个功能。
本实验使用的是定时器,定时为一秒钟。
CPU运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。
定时器有关的寄存器有工作方式寄存器TMOD和控制寄存器TCON。
TMOD用于设置定时器/计数器的工作方式0-3,并确定用于定时还是用于计数。
TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。
内部计数器用作定时器时,是对机器周期计数。
每个机器周期的长度是12个振荡器周期。
因为实验系统的晶振是12MHZ,本程序工作于方式2,即8位自动重装方式定时器, 定时器100uS中断一次, 所以定时常数的设置可按以下方法计算:机器周期=12÷12MHz=1uS(256-定时常数)×1uS=100uS定时常数=156。
然后对100uS中断次数计数10000次,就是1秒钟。
在本实验的中断处理程序中,因为中断定时常数的设置对中断程序的运行起到关键作用,所以在置数前要先关对应的中断,置数完之后再打开相应的中断。
三、实验内容及步骤本实验需要用到单片机最小应用系统模块(F1区)和十六位逻辑电平显示模块(I4区)。
1.使用单片机最小应用系统模块,用导线将P1.0接到十六位逻辑电平显示的任意一只发光二极管上。
2.用串行数据通信线连接计算机与仿真器,把仿真头插到模块的单片机插座中,打开模块电源,插上仿真器电源插头(USB线)。
3.打开Keil uVision2仿真软件,首先建立本实验的项目文件,接着添加“TH10_定时器.ASM”源程序,编译无误后。
4.全速运行程序,发光二极管隔一秒点亮一次,点亮时间为一秒。
单片机显示接口实验报告总结
单片机显示接口实验报告总结
单片机显示接口实验是一种基础的实验,通过该实验可以学习并了解单片机与显示设备的连接和通讯方式,同时也加深了我们对单片机工作原理的理解。
下面是对单片机显示接口实验报告的总结:
本次单片机显示接口实验是一项基础性实验,其主要目的是学习单片机与显示设备之间的连接与通讯方式。
实验中我们采用了常用的连接方式,即采用IO口直接驱动数码管或者使用IIC 总线来驱动OLED屏幕。
在实验过程中,我们通过调节单片机的IO口输出高低电平以及更新显示缓存区中的数值来实现7段LED数码管的显示效果。
同时我们还学习了BCD码的转换方式以及了解了BCD码的原理,使得我们可以将数字转化为相应的BCD码再传输给数码管进行显示。
在使用IIC总线连接OLED屏幕时,我们需要先编写相应的IIC通信程序,然后将其应用至OLED 显示屏的初始化和数据传输上。
通过这种方式,我们成功地实现了单片机与OLED显示屏之间的数据传输和显示。
在实验过程中,我们需要理解并掌握相应的实验步骤和技能,而不仅是单纯地进行实验操作。
通过本次实验,我们将理论知识和实际操作相结合,从而更好地理解了单片机与显示设备之间的通讯方式及其相关操作方法。
总之,本次单片机显示接口实验是一次非常有益的实践活动,不仅深化了我们对单片机原理的理解,同时也为我们今后的学习打下了坚实的基础。
51单片机数码管显示实验报告
51单片机数码管显示实验实验内容:1)编写程序让8只数码管初始显示0,每隔大约1s加1显示(可以用延时函数实现),到数码管显示9后,再从0开始显示,如此循环反复。
2)C语言程序#include<reg52.h>#define uint unsigned intvoid display();void num();int i;unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e}; //共阳极数码管0-F编码表void delayms(uint);void main(){while(1){num();display();}}void display(){P2=0xff;//消隐P0连接段选,P1节位选P1=0x00;//8个数码管同时显示P2=table[i];//数码管显示数码0 delayms(1000);//延时5ms}void num(){if(i<9)i++;elsei=0;}void delayms(uint x){uint i,j;for(i=0;i<x;i++)for(j=0;j<110;j++);}3)汇编语言:ORG 0000HLJMP MAINORG 0100H;P2连接段选,P1节位选MAIN: MOV P1,#00H ;所有的数码管都显示MOV R2,#00H ;从0开始显示LOOP: MOV A,R2 ;为下面的基址加变址寄存器寻址方式做准备MOV DPTR,#TAB1 ;把数组的首地址赋给DPTRMOVC A,@A+DPTR ;取数组中的数字MOV P2,A ;把取得的值送给P0口显示ACALL DELAY ;延时一会INC R2 ;为取下一个数加一CJNE R2,#10,LOOP ;只要数小于10就继续循环显示MOV R2,#00H ;如果加到10后重新从0开始LJMP LOOP ;进入循环函数;****************************************** TAB1: DB 0C0H,0F9H,0A4H,0B0H,99H; 数组DB 92H,82H,0F8H,80H,90HRET;****************************************** DELAY: MOV R3,#3 ;延时函数DE1: MOV R4,#0FFHDE2: MOV R5,#0FFHDJNZ R5,$DJNZ R4,DE2DJNZ R3,DE1RET;*************************************************END(3)编写程序学习数码管的动态显示,让8只数码管从从左往右显示1、2、3……8。
单片机数码管动态显示实验报告
单片机数码管动态显示实验报告单片机数码管动态显示实验程序(汇编)单片机数码管动态显示实验程序org 00hajmp headorg 0030hhead:mov sp,#0070hnum equ p0 ;p0口连接数码管reset:mov dptr ,#tabmov r0,#4sh:acall show_tabcall dptr_adddjnz r0,shmov r0 ,#4sjmp resetdptr_add:inc dptrinc dptrinc dptrinc dptrrettab :db0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH;;;;;;;;;;;;;;;;;;;;; 函数的功能是用来动态显示dptr上的四个数据 ;;;;;;;;;;;;;;;;;;;;;; show_tab:clr amov r2,#0mov r3,#148mov p2,#238loop:movc a,@a+dptrmov num ,aacall delay_5msinc r2mov a,r2;调用片选函数前注意A的变化acall select_movcjne r2,#4,loopmov r2,#0clr adjnz R3,loopret;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;select_mov:;p2的初值238push 0e0hmov a,p2rl amov p2,apop 0e0hretdelay_5ms:mov r6,#5signed_5ms:call delay_1msdjnz r6,signed_5msret篇二:单片机动态数码显示设计实验报告微机原理与接口技术实验报告实验题目:指导老师:班级:计算机科学与技术系姓名:动态数码显示设计2014年 12月3日实验十三动态数码显示设计一、实验目的1.掌握动态数码显示技术的设计方法。
单片机原理及接口技术实验报告
单片机原理及接口技术实验报告一、引言单片机(Microcontroller)是一种集成为了处理器、存储器和各种接口电路的微型计算机系统。
它具有体积小、功耗低、成本低等优点,广泛应用于嵌入式系统、自动化控制、电子设备等领域。
本实验旨在深入了解单片机的原理和接口技术,并通过实验验证相关理论。
二、实验目的1. 理解单片机的基本原理和结构。
2. 掌握单片机与外部器件的接口技术。
3. 进一步培养实际操作能力和解决问题的能力。
三、实验仪器与材料1. 单片机开辟板2. 电脑3. 串口线4. LED灯5. 蜂鸣器6. 数码管7. 按键开关8. 电阻、电容等元件四、实验内容与步骤1. 单片机原理实验1.1 单片机的基本结构单片机由中央处理器(CPU)、存储器(RAM、ROM)、输入输出接口(I/O)、定时器/计数器、串行通信接口等组成。
通过学习单片机的基本结构,我们可以了解各个部份的功能和作用。
1.2 单片机的工作原理单片机的工作原理是指单片机在不同工作模式下的内部状态和运行规律。
通过学习单片机的工作原理,我们可以更好地理解单片机的工作过程,为后续的实验操作提供基础。
2. 单片机接口技术实验2.1 LED灯接口实验将LED灯与单片机相连,通过控制单片机的输出口电平,控制LED灯的亮灭。
通过实验,我们可以学习到单片机的输出接口的使用方法。
2.2 蜂鸣器接口实验将蜂鸣器与单片机相连,通过控制单片机的输出口电平和频率,控制蜂鸣器的声音。
通过实验,我们可以学习到单片机的输出接口的使用方法。
2.3 数码管接口实验将数码管与单片机相连,通过控制单片机的输出口电平和数据,显示不同的数字。
通过实验,我们可以学习到单片机的输出接口和数码管的使用方法。
2.4 按键开关接口实验将按键开关与单片机相连,通过检测单片机的输入口电平,实现按键的功能。
通过实验,我们可以学习到单片机的输入接口的使用方法。
五、实验结果与分析1. 单片机原理实验结果通过学习单片机的基本结构和工作原理,我们深入了解了单片机的内部组成和工作过程,为后续的接口技术实验打下了基础。
单片机原理及接口技术实验报告书 (1)
学生学号实验课成绩学生实验报告书实验课程名称单片机原理及接口技术开课学院物流工程学院指导教师姓名学生姓名学生专业班级2018 -- 2019 学年第 1 学期实验课程名称:_单片机原理及接口技术_原理图4.系统控制程序的设计要求包括内容:控制程序的工作流程图,控制程序的源代码,及其控制程序的重点说明。
#include<reg51.h>#define uint unsigned int#define uchar unsigned charuchar keycode,DDram_value=0xc0;sbit RS=P2^0;sbit RW=P2^1;sbit E =P2^2;sbit speaker=P2^3;uchar code table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x20};uchar code table_designer[]="JIANG SHAO YONG";void lcd_delay();void delay(uint n);void lcd_init(void);void lcd_busy(void);void lcd_wr_con(uchar c);void lcd_wr_data(uchar d);else if(buff==0xb0){liehao=0;}keyvalue=hanghao+liehao;while(P1!=0xf0);return(keyvalue);}}5.系统的调试和结果要求包括内容:系统调试的方法,系统正确运行的照片或图片(必须包括整个工作过程的图片检查电路是否正确连接,向单片机烧录hex文件,检查反复调试。
6.实验过程中所遇到的问题,解决方法和建议在实验过程中,编的程序出现了很多问题,除了字符错误,还出现了逻辑错误以及过定义。
将程序分块可以解决很多错误;增加注释,提高程序的可读性,。
《单片机与接口技术》实验报告[精选五篇]
《单片机与接口技术》实验报告[精选五篇]第一篇:《单片机与接口技术》实验报告《单片机与接口技术》实实验报告SUNES59PA班班级:____________________ 学学号:____________________ 姓姓名:____________________ 得得分:____________________ 指指导:____________________ 日日期:____________________合肥工业大学宣城校区实验一XXXXXXXXXXXXX一、实验目的二、实验设备三、实验内容四、实验步骤五、实验现象六、实验程序(必须带注释)第二篇:《单片机与接口技术》实验报告1实验六D/A转换(脱机:HW10)一、实验目的(1)了解D/A转换芯片DAC0832的性能及编程方法;(2)了解单片机系统中扩展D/A转换芯片的基本方法。
二、实验内容利用DAC0832芯片输出一个从0V开始逐渐升至5V再降至0V 的可变电压。
三、实验步骤四、实验现象解释五、实验程序第三篇:单片机接口技术与实验课程总结《单片机接口技术与实验》课程总结姓名:史慧学号:年级:专业:电气工程及其自动化1226409016 2009级2011年秋季学期实验一1.功能要求本实验要求向芯片中写入 10 个字节,然后再读出显示。
2.硬件设计思路P2引脚连接8LED灯,显示读出的数据。
3.软件程序流程其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。
这就允许在同一总线上连接多个SPI设备成为可能。
接下来就负责通讯的3根线了。
通讯是通过数据交换完成的,这里先要知道SPI是串行通讯协议,也就是说数据是一位一位的传输的。
这就是SCLK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。
数据输出通过 SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。
实验四单片机原理及应用实验报告——SPI按键显示接口设计
if(ms==0)
ZLG7289_Flash(0xe0); //当计时完成后数码管闪烁
}
}
/*
定义函数jian(),处理定时计时
*/
void jian()
{
if(ms==0)
{
TR0=0;
}
else
{
ms--;
}
min=ms/6000;
s=ms%6000/100;
}
/*
当输入按键为5时,表示输入定时初值的秒部分
*/
else if(j==5)
{
if(s>=59)
{
s=0;
}
else
{
s++;
}
/*
调用jiafa()函数,将输入的按键值计算加入总的10ms的值
*/
jiafa();
ZLG7289_Download(1,3,0,s/10);
ZLG7289_Download(1,4,0,s%10);
*/
if(j==3)
{
q=!q;
while(!ZLG7289_pinINT);//等待按键释放
}
/*
当按下按键0而且T0未开启,表示计数开始,开启T0
*/
if(j==0&&TR0==0)
{
TR0=1;
while(!ZLG7289_pinINT);//等待按键释放
}
/*
当按下按键1,表示暂停计时,定时器T0停止计数
{
min=0;
}
else
{
min++;
}
/*
单片机接口技术实训报告
一、实训背景随着科技的不断发展,单片机在各个领域得到了广泛的应用。
为了提高学生的实践能力,本实训课程旨在让学生深入了解单片机接口技术,掌握单片机与外部设备进行数据交换的原理和方法。
通过本次实训,使学生能够熟练运用单片机接口技术,设计并实现简单的控制系统。
二、实训目的1. 熟悉单片机接口技术的基本原理和常用接口类型。
2. 掌握单片机与外部设备进行数据交换的方法和技巧。
3. 学会使用常用接口电路,如串行通信接口、并行通信接口等。
4. 提高学生的动手实践能力和创新意识。
三、实训内容1. 实训环境本次实训使用STC89C52单片机作为核心控制单元,通过编程实现与外部设备的数据交换。
实验设备包括STC89C52单片机开发板、数码管、按键、蜂鸣器、串行通信模块等。
2. 实训步骤(1)搭建实验电路根据实训要求,搭建单片机与外部设备的连接电路,包括数码管显示电路、按键输入电路、蜂鸣器驱动电路、串行通信电路等。
(2)编写程序使用C语言编写程序,实现以下功能:1)数码管显示:显示单片机内部计数值;2)按键输入:读取按键状态,控制数码管显示数字;3)蜂鸣器驱动:根据按键输入,控制蜂鸣器发出不同频率的声波;4)串行通信:通过串行通信模块实现单片机与其他设备的数据交换。
(3)调试程序使用Keil uVision软件对程序进行编译、调试,确保程序运行正确。
(4)测试程序将调试好的程序烧录到单片机中,观察数码管显示、按键输入、蜂鸣器驱动和串行通信等功能是否正常。
四、实训结果与分析1. 实训结果通过本次实训,成功实现了单片机与数码管、按键、蜂鸣器和串行通信模块的连接与数据交换。
数码管能够显示单片机内部计数值,按键输入能够控制数码管显示数字,蜂鸣器能够根据按键输入发出不同频率的声波,串行通信模块能够实现单片机与其他设备的数据交换。
2. 实训分析(1)数码管显示数码管显示功能通过单片机的P0口输出数据,控制数码管显示相应数字。
程序中使用了定时器/计数器实现计数功能,并通过查表法将计数值转换为数码管显示的段码。
51单片机接口实验报告(桂电)
接口实验报告一、实验目的及意义(1)用微控制器实现对温度数据的采集;(2)对采集数据进行控制与显示;(3)将采集数据发送给PC机,学会用VC编写相应界面进行数据处理和显示;二、试验内容及方案论证在实际应用中,经常会遇到一些突发信号,需要对其进行高速采集,这种情况下采用高速的A/D自然成为首选。
AD7862是AD公司推出的一个高速,低功耗,双12位的A/D转换,单+5V供电,功率为60mW。
它包含两个4us的延时的ADC,两个锁存器,一个内部的+2.5V参考电压和一个高速并行输出端口。
有四个模拟输入通道,分为两组,由A0选择。
每一组通道有两个输入(V A1 & V A2 or VB1 & VB2),它们能同时的被采样和转化,保存相对的信号信息。
它可以接受+10v的输入电压范围(AD7862-10),+2.5(AD7862-3)和0-2.5v(AD7862-2)。
对模拟电压输入,具有过电保护功能,相对地,允许输入电压到达+17v,+7v,+7v,而不会造成损害,本实验选用AD7862-10。
其具有以下主要特点:1、4通道模拟输入,2路同时转换(内置2个可同时工作的12位集成AD转换器);2、4us转换时间,250ksps采样速率;3、可选模拟量输入±10V(AD7862-10);4、高速12位并行总线输出;5、内部提供+2.5V参考电压或者由外部提供参考电压;;6、单一电源工作。
本实验采用的微处理器是STC89C52RC单片机。
STC89C52RC单片机使用方便,它与AT89S52单片机具有相同的内核,内部有256 Bytes片内RAM、8K Flash ROM,支持串口下载,易于在线编程调试,故采用这种单片机来做处理器。
由于A/D的输出位数是12位,单片机的寄存器是8位的,所以要分成两次才能读得A/D 转换的结果。
本设计中,只需将单片机的两个IO口(P2、P0)分别与AD7862的DB0-DB11相连,即可完成数据采集基本硬件设计。
51单片机数码管显示实验报告
51单片机数码管显示实验报告实验目的:1.学习51单片机的编程方法和硬件连接方法;2.掌握使用51单片机驱动数码管显示的方法。
实验器材:1.51单片机开发板;2.公共阳极共阳向数码管一个;3.若干杜邦线。
实验原理:数码管是一种数字显示器件,由7个发光二极管和若干个选通器件构成。
每个发光二极管可以发出两种颜色的光,通常使用红色和绿色。
这篇实验报告以共阳数码管为例,共阳数码管的每个发光二极管的阳极都连接到电源VCC上,而七个阴极分别用来选择一些数字进行显示。
当要选择一些数码管显示时,需要对对应的阴极进行低电平使能,而使能其他阴极保持高电平,这样就可以通过控制每个数码管的阴极低电平使能来选择要显示的数字。
实验步骤:1.将51单片机开发板上的数码管连接到51单片机开发板的P1口和P0口上,连接方式如下图所示:```-----------------VCC-P0.0--,a,-----------------P0.1--,b,------P0.2--,c,---,数字2P0.3--,d,------P0.4--,e,------P0.5--,f,---,数字1P0.6--,g,------P0.7--,h,-----------------------P1.0P1.1```2. 在Keil µVision中新建工程,编写程序。
3.利用P0口控制数码管的阴极,利用P1口选择数码管要显示的数字。
4.在主程序中循环选择每个数码管,并通过P0口设置要显示的数字。
实验结果:```---------------------------------P1.0P1.1P0.6P0.7空空数字2数字1abcdefgh---------------------------------```实验结论:通过本次实验,学习了51单片机的编程方法和硬件连接方法,并掌握了使用51单片机驱动数码管显示的方法。
同时,还了解了数码管的工作原理和编程的基本步骤。
单片机计数显示器实验报告
单片机计数显示器实验报告实验报告:单片机计数显示器一、实验目的本实验旨在通过单片机编程,设计并实现一个计数显示器电路。
通过实现计数功能,掌握单片机的IO口操作、延时函数的使用及LED数码管的驱动原理。
二、实验器材1.单片机开发板2.数码管3.连接线三、实验原理本实验使用的单片机开发板上有8个LED数码管和相应的IO口,我们可以通过控制IO口状态,来驱动数码管显示数字。
数码管是7段共阳极结构,即每个数字都是由7个发光二极管组成。
我们可以通过控制每个发光二极管的通断状态,来显示不同的数字。
数码管的7个段分别命名为a、b、c、d、e、f、g,表示显示数字的不同部分。
每个IO口控制一个发光二极管的通断,例如P0口控制a段,P1口控制b段,以此类推。
四、实验步骤1.设计电路连接:将单片机开发板的IO口与数码管的各段和各位连接起来。
2.编写程序代码:使用C语言编写单片机的程序代码,实现计数及显示功能。
4.运行程序:观察数码管显示的效果,检查是否符合预期。
五、实验结果与分析经过以上步骤,我们成功地实现了单片机计数显示器电路。
通过设置不同的数值,数码管会显示相应的数字,实现了计数功能。
六、实验心得体会通过本次实验,我学到了单片机的IO口操作、延时函数的使用及LED数码管的驱动原理。
在实验中,我遇到了一些困难,如如何控制不同位的数码管显示不同的数字,并且在显示不同数字时存在闪烁现象。
通过调试程序,我解决了这些问题,并对单片机的使用更加熟悉了。
总的来说,本次实验让我对单片机有了更深入的了解,通过实际操控硬件并编写程序,使我对计算机硬件与软件的关系有了更直观的认识。
同时,通过解决问题,我也提高了自己的动手能力和问题解决能力。
七、实验改进设想在实验过程中,我注意到数码管在显示数字时会有闪烁现象,这可能是由于程序中的延时时间不够长引起的。
后续改进可以通过增加延时时间来减少闪烁现象的发生。
另外,本实验只实现了基本的计数功能,除了数字0-9的显示外,还可以扩展显示其他字符或符号。
单片机动态显示实验报告
单片机实验报告姓名:林康班级:1120603学号:201120060325实验题目:实验五动态显示一.实验任务及要求(1)使用单片机并行口做动态数码显示,把片内30H~32H单元的内容静态显示来。
二. 编程思路(1)动态显示是一位一位地轮流点亮各位的数码管,因此需要分时送出段选码和位选码,每次控制一个数码管显示,而且是先送段选码锁存后在送位选码点亮相应的数码管。
通过调节延时程序能够控制数码管显示数据的间隔,其余的和静态显示基本相似。
三. 实验电路及连线方法动态显示连线方法:电路由2 片74LS573,1 个六字一体的共阴数码管组成。
由U15 输出段选码,U16做位选码,与单片机的采用I/O 口连接方式,短路片J22 连接P2.0,J23 连接P2.3,做输出信号锁存。
(实际电路连d7-d6-d5-d4-d3-d2-d1-d0→h-c-d-e-g-b-a-f)。
PW12 是电源端。
开始初始化((R0))→A,取A低四位,查其笔型码送入P0口P2.0置1,然后清零通过74LS573输入段选码,把位选码送入P0口P2.1置1,然后清零延时1毫秒((R0))→A,取A高四位,查其笔型码送入P0口P2.0置1,然后清零通过74LS573输入段选码,把位选码送入P0口P2.1置1,然后清零延时1毫秒R0自加1R7自减1R7=0?结束ORG 0000LP3: MOV 32H,#12HMOV 31H,#34HMOV 30H,#56HMOV R0,#30HMOV R6,#0DFHMOV R7,#03MOV DPTR,#TABCLR P2.0CLR P2.1LP0: CLR AMOV A,@R0ANL A,#0FHMOVC A,@A+DPTRMOV P0,ASETB P2.0CLR P2.0MOV P0,#00MOV A,R6MOV P0,ASETB P2.1CLR P2.1RR AMOV R6,ADEL0: MOV R5,#250LP1: NOPNOPDJNZ R5,LP1CLR AMOV A,@R0ANL A,#0F0HSWAP AMOVC A,@A+DPTRMOV P0,ASETB P2.0CLR P2.0 MOV P0,#00MOV A,R6MOV P0,ASETB P2.1CLR P2.1RR AMOV R6,AINC R0DEL1: MOV R5,#250LP2: NOPNOPDJNZ R5,LP2DJNZ R7,LP0SJMP LP3TAB: DB77H,44H,3EH,6EH,4DH,6BH,7BH,46H,7FH,6FH,5FH,79H,33H,7CH,3BH,1BH END六.调试结果30H-32H单元依次输入12,34,56,数码管从左到右依次显示6 5 4 3 2 1 结果与预期符合。
单片机显示接口实验报告范文
单片机显示接口实验报告范文一、实验目的1.了解温度传感器电路的工作原理2. 了解温度控制的基本原理3. 掌握一线总线接口的使用二、实验说明这是一个综合硬件实验,分两大功能:温度的测量和温度的控制。
1.DALLAS最新单线数字温度传感器DS18B20简介Dallas 半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V~5.5V的电压范围,使系统设计更灵活、方便。
DS18B20测量温度范围为 -55°C~+125°C,在-10~+85°C范围内,精度为±0.5°C。
DS18B20可以程序设定9~12位的分辨率,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。
DS18B20内部结构DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列如下:DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端(在寄生电源接线方式时接地)。
光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。
光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机显示接口实验报告范文
一、实验目的
1. 了解温度传感器电路的工作原理
2. 了解温度控制的基本原理
3. 掌握一线总线接口的使用
二、实验说明这是一个综合硬件实验,分两大功能:温度的测量和温度的控制。
1.DALLAS最新单线数字温度传感器D S18B20简
介
Dallas半导体公司的数字化温度传感器DS1820是世界
上第一片支持“一线总线”接口的温度传感器。
现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。
适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
与前一代产品不同,新的产品支持3V〜5.5V的电压范围,使系统设计更灵活、方便。
DS18B20测量温度范围为-55 ° C〜+125 ° C,在-10〜+85° C 范围内,精度为土0.5 ° C o DS18B20可以程序设定9〜12位的分辨率,及用户设定的报警温度存储在EEPROM K
掉电后依然保存。
DS18B20内部结构
DS18B20内部结构主要由四部分组成:64位光刻ROM 温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20的管脚排列如下:
DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电
电源输入端(在寄生电源接线方式时接地)。
光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。
64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20 自身的序列号,最后8 位是前面56 位的循环冗余校验码
(CRC=X8+X5+X4+)光刻ROM的作用是使每一个DS18B20 都各不相同,这样就可以实现一根总线上挂接多个DS18B20
的目的。
DS18B20中的温度传感器可完成对温度的测量,以12位
转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625 C /LSB形式表达,其中S为符号位。
这是12 位转化后得到的12 位数据,存储在18B20 的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这 5 位为0,只要将测到的数值乘以0.0625
即可得到实际温度;如果温度小于0,这5 位为1,测
到的数值需要取反加1 再乘以0.0625 即可得到实际温度。
例如+125 C的数字输出为07D0H +25.0625 C的数字输出为0191H, -25.0625 C的数字输出为
DS18B20温度传感器的存储器
DS18B20温度传感器的内部存储器包括一个高速暂存
RAM和一个非易失性的可电擦除的E2RA M后者存放高温度和
低温度触发器TH、TL和结构寄存器。
暂存存储器包含了8 个连续字节,前两个字节是测得的
温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的
高八位。
第三个和第四个字节是TH、TL 的易失性
拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。
第六、七、八个字节用于内部计算。
第九个字节是冗余检验字节。
低五位一直都是1 ,TM是测试模式位,用于设置DS18B20 在工作模式还是在测试模式。
在DS18B20出厂时该位被设置
为0,用户不要去改动。
R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)
根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进
行复位,复位成功后发送一条ROh指旨令,最后发送RAM指令,
这样才能对DS18B20进行预定的操作。
复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16〜60微秒左右,后发出60〜240微秒的存在低脉冲,主CPU攵到此信号表示复位成功。
2. 本实验在读取温度的基础上,完成类似空调恒温控制的实验。
用加热电阻代替加热电机。
温度值通过LED静态显
示电路以十进制形式显示出来,制冷采用自然冷却。
三、实验内容及步骤
本实验需要用到单片机最小应用系统(F1 区)、串行静态显示(I3 区)和温度传感器模块(C3 区)。
1. DS18B20的CONTRO接最小应用系统P1.4 , OUT接最小应用系统P
2.0,最小系统的P1.0 , P1.1接串行静态显示
的DIN, CLK端。
2. 用串行数据通信线连接计算机与仿真器,然后将仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。
3. 打开Keil uVision2 仿真软件,首先建立本实验的项目文件,接着添加TH44_ DS18B20.ASM源程序,进行编译,直到编译无误。
4. 编译无误后,全速运行程序。
程序正常运行后,按下自锁开关‘控制’SIC o LED数显为“ XX”为十进制温度测量值,
“ XX’为十进制温度设定值,按下自锁开关“控制” SIC 则加热源开始加热,温度也随着变化,当加热到设定的控制温度时如40度时,停止加热。
5. 也可以把源程序编译成可执行文件,用ISP 烧录器烧录到89S52/89S51芯片中。
(ISP烧录器的使用查看附录二)
四、源程序
; 单片机内存分配申明!
TEMPER_LEQU 29H ; 用于保存读出温度的低8 位
TEMPER_H EQU 28H用于保存读出温度的高8位FLAG1 EQU
38H ;是否检测到DS18B20标志位A_BIT EQU 20H ;数码管个位数存放内存位置B_BIT EQU 21H ; 数码管十位数存放内存位置LEDBUF EQU 30HTEMPEQU 55HDIN BIT P1.0CLK BIT P1.1 ORG0000HLJMPSTARTORG0100H START: SETBP1.4 MAIN: LCALL GET_TEMPE调用读温度子程序
; 进行温度显示, 这里我们考虑用网站提供的两位数码管来显示温度; 显示范围00 到99 度, 显示精度为1 度
; 因为12 位转化时每一位的精度为0.0625 度, 我们不要求显示小数所以可以抛弃29H的低4位
;将28H中的低4位移入29H中的高4位,这样获得一个新字节,这个字节就是实际测量获得的温度
; 这个转化温度的方法可是我想出来的哦~~非常简洁无
需乘于0.0625 系数
MOV A,29H
MOV C,40H;将28H 中的最低位移入CRRC AMOV C,41HRRC AMOV C,42HRRC AMOV C,43HRRC AMOV 29H,A
LCALL DISPLAYRESULT
LCALL DISPLAYLED;调用数码管显示子程序LCALL DELAY1 AJMP MAIN
;这是DS18B20复位初始化子程序INIT_1820:SETB
P2.0NOPCLR P2.0
; 主机发出延时537 微秒的复位低脉冲MOV R1,#3 TSR1:MOV R0,#107DJNZ R0,$DJNZ R1,TSR1
SETB P2.0; 然后拉高数据线NOPNOPNOPMOR0V,#25H TSR2:
JNB P2.0,TSR3;等待DS18B20回应DJNZ R0,TSR2
LJMP TSR4 ; 延时TSR3:
SETB FLAG1;置标志位,表示DS1820 存在LJMP TSR5
TSR4:
CLR FLAG1 ;清标志位,表示DS1820不存在单片机显示接口实验报告范文。