《单片机系统设计》实验报告(DOC)
东大单片机实验报告三
东南大学生物科学与医学工程学院单片机系统设计与应用实验报告第三次实验实验名称:数据传送实验专业:生物医学工程姓名:学号:同组人员:学号:实验室: 医用电子技术实验中心(综合楼716)实验时间:评定成绩:审阅教师:目录一、实验题目 (3)二、实验目的 (3)三、实验器材 (3)四、实验内容 (3)1.实验方案 (3)1.1方案流程图 (3)1.2源程序 (5)2.实验结果及分析 (12)2.1方案一结果 (12)2.2方案二结果 (12)2.3课上更改程序结果 (13)3. 程序调试 (14)五、心得体会 (14)六、参考文献 (14)一、实验题目1.将指定内存中的数按正负数分别存放于内存和外部RAM中,并对负数进行求补后再放入内存指定单元。
二、实验目的1.进一步掌握程序的编辑、汇编及调试方法;2.掌握单片机内部RAM和外部RAM的数据操作;3.了解单片机系统地址分配概念。
三、实验器材1、G6W仿真器一台2、MCS—51实验板一台3、PC机一台4、电源一台四、实验内容1.以数据表格形式在ROM中建立一个含有正数和负数的表格,数据长度为16个字节,要求放置八个正数、八个负数,正、负数应离散随机放置,不允许三个以上同类型数据连续放置,数据的具体内容自行确定;2.编制程序,将数据表格中的数据读出并按正、负数归类,正数送入首地址为40H的内部RAM中;负数送入首地址为0B000H的外部RAM中;3.将首地址为0B000H的外部RAM中的数据取出并求其绝对值,然后送入内部RAM 的48H~4FH单元。
1.实验方案1.1方案流程图1.2源程序本次试验,我先后写了两个程序,基本原理相似。
⑴先初始化,将各地址存入寄存器中,便于操作。
⑵查表取数,判断数的正负,将正负数分别存放在指定地址。
注意地址指针的入栈保护。
⑶判断数是否取完,取完后对存放在外RAM中的负数取出求补放入指定内存。
方案一ORG 0000HAJMP MAINORG 0030HMAIN:MOV SP,#70H ;设置堆栈指针MOV A,#10H ;保存个数MOV DPTR,#0E00H ;表地址MOV R0,#0B0H ;负数存放地址MOV 12H,#00HMOV R1,#40H ;正数存放地址START:PUSH A ;入栈保护PUSH DPHPUSH DPLMOV A,#00H ;寄存器A初始化MOVC A,@A+DPTR ;取表中数至寄存器A判断正负MOV 11H,A ;11H暂存数RLC A ;取标志位JC FUZHENG:MOV A,11HMOV @R1,A ;送至正数地址单元INC R1 ;正数地址加1POP DPLPOP DPHPOP AINC DPL ;指向表中下一个数DEC A ;个数减一JNZ START ;不为0继续操作JMP DO1 ;否则到DO1FU:MOV A,11HMOV DPH,R0 ;DPTR改为指向负数地址MOV DPL,12HMOVX @DPTR,A ;负数送外RAM中的负数地址中INC 12H ;指向下一个地址POP DPLPOP DPHPOP AINC DPL ;指向下一个地址DEC A ;个数减一JNZ STARTDO1:MOV A,#08H ;负数个数MOV DPTR,#0B000H ;指向负数所在首地址DO:PUSH AMOVX A,@DPTR ;取负数CPL A ;取反加1INC AMOV @R1,A ;送入48H地址INC R1INC DPTRPOP ADEC A ;个数减一JNZ DO ;没做完则重复SJMP $ORG 0E00H ;表TABLE:DB 17H,10H,81H,25HDB 0B2H,0A4H,30H,08HDB 0D6H,54H,01H,8FHDB 0C0H,27H,0CDH,0B1H方案二ORG 0000HAJMP MAINORG 0030HMAIN:MOV R0,#0F0H ;R0存放表的高位地址MOV R2,#00H ; R2存放表的低位地址MOV R1,#40H ; R1存放正数地址MOV R3,#10H ;R3存放数的个数MOV DPTR,#0B000H;外部RAM地址PUSH DPHPUSH DPLSTART:MOV DPH,R0 ;取表地址MOV DPL,R2CLR AMOVC A,@A+DPTR ;取数MOV R4,A ;数暂存于R4RLC A ;循环左移得标志位JC FU ;判断正负,若为负数则到FU ZHENG:MOV A,R4MOV @R1,A ;正数放入正数地址单元INC R1 ;地址加一INC R2DJNZ R3,START ;数没有取完则转STARTJMP END1 ;否则转END1FU:MOV A,R4POP DPLPOP DPHMOVX @DPTR,A ;取数INC DPTR ;地址加一PUSH DPHPUSH DPLINC R2DJNZ R3,START ;判断是否取完END1:MOV DPTR,#0B000H ;指向外部RAMMOV R5,#08H ;负数个数DO:MOVX A,@DPTR ;取数CPL A ;求补INC AMOV @R1,AINC R1INC DPTRDJNZ R5,DOORG 0F000H ;表DB 18H, 30H, 0A0H, 50HDB 87H, 0B2H, 1CH, 0D6HDB 28H, 8FH, 0C3H, 10HDB 1CH, 0CDH, 68H, 0D6H课上根据老师的要求,改变了外RAM地址,正数地址以及负数地址,程序如下。
《单片机系统设计技术》实验指导
《单片机系统设计技术》实验指导书适用专业: 电气、自动化、信息等编写单位: 电气信息学院编写人: 曹 林审核人:审批人:批准时间:年月日目 录实验1 IO控制LED流水灯实验 (3)实验2 IO控制数码管动态扫描实验 (5)实验3 外部中断实验 (8)实验4 定时器应用控制实验 (10)实验5 UART实验 (12)实验6 键盘扫描输入编程 (14)实验7 UART与PC对话实验 (17)实验8 ADC数据采集实验 (19)实验1 IO控制LED流水灯实验1.实验目的1)、熟悉KEIL编程环境和调试环境。
2)、掌握单片机汇编语言和指令的用法。
3)、理解简单的IO控制程序,延迟子程序,并对其修改,使其功能改变。
2.实验设备硬件: PC 机,单片机教学实验开发平台;软件: KEIL集成开发环境、STC ISP程序下载软件。
3.实验内容使用P0口控制8个LED 进行流水灯显示。
4.实验预习要求和实验准备要求预习教科书关于单片机硬件架构内容、IO口的内容,特殊寄存器内容。
预习汇编程序编写、MCS-51指令表。
带上教科书、U盘、具备二进制和十六进制转换的科学计算器。
5.实验原理和步骤1)实验原理(1)实验原理图图1 P0口连接的8盏LED灯从图1中可以看出:如果需要把LED点亮有两个条件,其一是需要用短接帽把J1的2脚和3脚短接,在PCB上就是将电路板左上角LED和VCC短接起来;其二是P0.X口给出低电平,让电流从VCC开始流经限流电阻、LED后进入单片机的P0.X口,最后到单片机内部的地线上。
因此,简单地说就是在短接帽接好的前提下,向P0.X口写0则LED将点亮,写1则LED将熄灭。
图中网络标识PORT0_0、PORT0_1……PORT0_7和单片机P0.0、P0.1……P0.7连接,可观察原理图上单片机P0口的网络标识也是PORT0_0、PORT0_1……PORT0_7。
2)实验步骤(1)启动KEIL集成开发环境,按照《KEIL使用方法》中描述步骤进行工程建立、汇编源程序文件添加。
单片机实验报告
单片机实验报告一、实验目的本次单片机实验的主要目的是通过实际操作和编程,深入了解单片机的工作原理和应用,掌握单片机系统的设计、开发和调试方法,提高自身的动手能力和解决问题的能力。
二、实验设备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 引脚。
单片机实验报告
单片机实验报告班级:09050541学号:0905054116姓名:王昆鹏实验1 P1口实验一、实验目的:1.学习P1口的使用方法。
2.学习延时子程序的编写和使用。
二、实验设备:CPU挂箱、8051CPU模块三、实验内容:1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
四、实验原理:P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。
作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。
软件延时,如果用c编程时,通过使用keil的软件模拟,调试观察子函数(delay)延时时间。
(具体延时可以自行设定)使用汇编语言的软件延时,可以计算其指令的周期数,大概估算其软件延时。
五、实验原理图:P1口输出、输入实验六、实验步骤:执行程序:P1.0~P1.7接发光二极管L1~L8。
七、程序框图:循环点亮发光二极管(具体延时可以自行设定)八、程序代码NAME T1_1ORG 0000HLJMP STARTORG 0030HSTART: MOV A,#0FEH //将1111 1110赋给A LOOP: RL A //A循环左移MOV P1,A //把A赋给端口P1LCALL DELAY //延时0.16sJMP LOOP //循环;延时函数DELAY: MOV R1,#200DEL1: MOV R2,#200DEL2: DJNZ R2,DEL2DJNZ R1,DEL1RETEND实验2 中断口实验一、实验目的:1.学习外部中断技术的基本使用方法。
2.学习中断处理程序的编程方法。
二、实验设备:CPU挂箱、8051CPU模块三、实验内容:通过设定两个中断使能和触发方式,并编写相应的中断服务子函数,改变led灯的变化情况。
当按下KEYBOARD的按键时8个led都灭,当把k1向上拉再复位后,4个led亮,4个灭。
四、实验原理:参考《单片机原理及接口技术》第三版,北京航空航天大学出版社。
单片机实验报告范文
单片机实验报告范文一、实验目的本实验的目的是通过学习单片机的基本原理和使用方法,掌握单片机在各个实际应用中的基本技能。
二、实验器材及原理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灯、按键控制、数码管显示等。
这些技能对于日常生活和工程设计都具有很大的实用性。
在实验过程中,我们遇到了各种问题,如电路连接错误、程序编写错误等。
单片机课程设计实验报告
课程设计报告学号: 1328403028姓名:张帅华班级: 13电子信息工程指导老师:邓晶苏州大学电子信息学院2016年4月摘要随着时代的进步和发展,单片机技术已经成为一种比较成熟的技术,普及到我们生活、工作、科研等各个领域。
本次课程设计包含四个基于STC89C52单片机的设计,分别是:基于单总线数字式温度传感器DS18b20的数字温度计的设计;基于2K位串行CMOS 的EEPROM AT24C02的数字密码锁的设计;基于SPI 接口实时时钟芯片DS1302的电子日历的设计以及基于无线收发芯片nrf24L01的简单无线通讯系统的设计。
关键词:单片机 DS18B20 AT24C02 DS1302 NRF24L01目录摘要 (1)目录 (2)第1章基于DS18B20的数字温度计设计 (3)1.1 设计要求 (3)1.2 系统组成 (3)1.3 系统设计 (3)1.3.1 硬件设计 (3)1.3.2软件设计 (4)1.4 设计结果 (6)第2章基于AT24C02的电子密码锁设计 (7)2.1 设计要求 (7)2.2 系统组成 (7)2.3 系统设计 (8)2.3.1 硬件设计 (8)2.3.2 软件设计 (9)2.4 设计结果 (9)第3章基于DS1302的电子日历的设计 (11)3.1 系统功能 (11)3.2 系统组成 (11)3.3 系统设计 (11)3.3.1 硬件设计 (11)3.3.2 软件设计 (13)3.4 设计结果 (14)第4章基于NRF24L01的无线通信系统的设计 (15)4.1 系统功能 (15)4.2 系统组成 (15)4.3 系统设计 (15)4.3.1 硬件设计 (15)4.3.2 软件设计 (16)4.4 设计结果 (16)总结 (17)第1章基于DS18b20的数字温度计设计1.1 设计要求(1)采用DS18b20与单片机STC89C52相结合设计数字温度计,实现液晶屏实时显示当前温度;(2)读取并显示DS18B20的序列码。
单片机实验报告
1、二进制,十进制,十六进制的转换。
2、原码,反码,补码的表示。
3、触发器,触发器是计算机记忆装置的基本单元。
触发器有:R-S触发器,D触发器,J-K触发器4、寄存器,寄存器是由触发器组成的,一个触发器就是一个1位寄存器,多个触发器就可以组成一个多位寄存器。
常见的寄存器有:缓冲寄存器,移位寄存器,计数器等。
5、触发器,寄存器,及存储器之间有什么关系?存储器是由大量缓冲寄存器组成的,其中的每一个寄存器称为一个存储单元。
6、80C51系列单片机的存储器结构与一般通用计算机不同。
一般通用计算机通常只有一个逻辑空间,即程序存储器和数据存储器是同一编制的。
访问存储器时,同一地址对应唯一的存储空间,可以是ROM,也可以是RAM,并用同类访问指令,这种存储器结构称为“冯诺依曼结构”;80C51系列单片机的程序存储器和数据存储器在物理结构上是分开的,这种结构称为“哈佛结构”。
80C51系列单片机的存储器在物理结构上可以分为如下4个存储空间:片内程序存储器,片外程序存储器,片内数据存储器和片外数据存储器。
7、程序储存器的入口地址,7个0000H:程序入口地址0003H:外部中断0入口地址000BH:定时器0溢出中断入口地址0013H:外部中断1入口地址001BH:定时器1溢出中断入口地址0023H:串行口中断入口地址002BH:定时器2溢出中断入口地址8、程序状态字寄存器psw 的各标志位作用位0 P——奇偶标志位位3、4 RS0、RS1——工作寄存器组选择位RS0、RS1对工作寄存器组的选择:RS1 RS0 寄存器组片内RAM地址0 0 第0组00H~07H0 1 第1组08H~0FH1 0 第2组10H~17H 1 1 第3组18H~1FH 9、双数据指针寄存器DPTR0/1。
为了便于对16位地址的片内、片外存储器和外部扩展的I/O器件进行访问,在AT89S51/S52中设置了2个16位的数据指针寄存器:DPTR0和DPTR1。
8051单片机最小系统设计与制作
常熟理工学院单片机实验报告实验名称:8051单片机最小系统设计与制作班级:电科121小组:第7组姓名:050212127 张勇050212129 周飞翔050212123 姚尧050212131 朱陶实验时间:2014.10.10一.实验目的1、掌握采用Keil uVision集成开发环境下单片机程序的编辑、编译、连接方法;2、掌握程序的下载(烧写);3、熟悉器件,掌握单片机最小系统的设计与制作二.实验仪器面包板 1单片机编程器 1示波器 1开关 3电源 1万用表 1晶振 1二极管8三.实验内容进行两个按键控制8个发光二极管的跑马灯控制相关硬件与软件设计,并完成制作与调试。
四.实验步骤:1.硬件部分图1如图1:主要包括复位开关,晶振,开关按钮,二极管4个部分2.软件部分在Keil 环境下编写程序,生成.hex文件,并通过Proteus进行功能仿真,测试电路是否可以满足实验要求。
程序代码如下:#include"reg51.h"#define DELAY_1S 25000void delay(unsigned int n){unsigned int i;for(i=0;i<n;i++);}void main(){ unsigned char d[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};char i;while(1){if((P1&0x01)==0) //S1按下循环左移{ i=0;while((P1&0x02)!=0) //当S0按下时停止左循环{P2=~d[i];delay(DELAY_1S);i++;if(i==8)i=0;}}else if((P1&0x02)==0) //S0按下循环右移{ i=7;while((P1&0x01)!=0) //当S1按下停止右循环{P2=~d[i];delay(DELAY_1S);i--;if(i==-1)i=7;}}}}3.调试采用编程器进行程序烧写,并将烧写好的芯片放到设计系统中进行实物验证本组成员所连面包板实物图,如图2图2按下S1,二极管从左依次点亮,按下S0,二极管向右依次点亮。
单片机课程实验报告
《单片机原理及应用》课程设计报告课题:单片机多功能系统设计班级电子1071班学号 1071205236学生姓名张亮亮专业电子信息工程系别电子与电气工程学院指导教师朱霞,付丽辉淮阴工学院电子信息工程系20010年9月目录一. 设计目的及意义。
(2) 二.设计过程。
(2) 三.硬件电路总体设计。
(3) 3.1 系统硬件总框图。
(3)3.2 系统设计原理3、2、1 系统处理器。
(3)3、2、2 LED流水灯。
(4)3、2、3 扬声器模块。
(5)3、2、4数码管。
(6) 四.硬件Proteus仿真图。
(7) 五.软件流程框图。
(8) 六.程序清单及注释。
(9) 七.软件调试。
(13) 八.心得体会。
(14) 九.参考文献。
(15)一、设计目的及的意义《单片机原理及应用》课程设计是一项重要的实践性教育环节,是学生在校期间必须接受的一项工程训练。
在课程设计过程中,在教师指导和同学帮助下,应用工程的方法,通过一个简单课题的设计练习,可使学生初步体验单片机应用系统的设计过程、设计要求、完成的工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。
通过课程设计,能加强我们多项能力的培养:(1)独立工作能力和创造力;(2)综合运用专业及基础知识,解决实际工程技术问题的能力;(3)查阅图书资料、产品手册和各种工具书的能力;(4)工程绘图的能力;(5)编写技术报告和编写技术资料的能力。
二、设计过程(1)认真研究设计任务书,明确设计要求、条件、内容和步骤;复习课程有关内容,熟悉有关单元电路的设计方法和步骤;搜集、分析、消化相关资料、软件等;掌握微型计算机应用系统软件设计方法;准备好设计需要的图书、资料和工具;拟定设计计划等;(2)系统总体及功能设计,制定总体方案及元器件的选择;(3)硬件设计,完成硬件结构图设计、系统电路图设计和绘制及电路模块的连接;(4)软件设计,完成软件流程图的设计、程序设计与调试;(5)系统程序调试;(6)设计工作总结;(7)写出设计报告。
单片机实验报告
单片机应用系统设计报告题目单片机应用系统设计学院信息学院专业电气工程及自动化班级12电气升本学生姓名朱婉婉学号7月16日至7月28日共11天13年7月18日(单片机应用系统设计)设计任务书学院:信息学院班级:12电气升本学生姓名:朱婉婉学号指导教师:时间:2013年7月16日到2013年7月26日摘要数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便。
由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
尽管目前市场上已有现成的数字钟集成电路芯片出售,价格便宜、使用也方便,但鉴于单片机的定时器功能也可以完成数字钟电路的设计,因此进行数字钟的设计是必要的。
在这里我们将已学过的比较零散的数字电路的知识有机的、系统的联系起来用于实际,来培养我们的综合分析和设计电路,写程序、调试电路的能力。
单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。
基于这种情况,我们课程设计小组两人多方查阅资料,反复论证设计出了这款既简单实用,又价格便宜的——单片机电子时钟。
关键词:单片机时钟计时目录1、总体功能 (1)2、实验要求 (1)二、硬件电路图及说明 (3)1、硬件电路图 (3)2、12864LCD液晶显示屏 (3)3、按键功能 (3)4、实时时钟芯片S-3530A (3)三、电路及程序设计 (7)四、设计特点 (16)五、调试 (17)1、主循环程序流程 (3)2、关于3530读出数据的更改 (3)3、关于秒表的设置 (3)4、关于时间的设置 (3)5、遇到的具体问题 (3)6、注意事项 (3)六、总结及体会 (19)七、使用说明书 (21)八、程序及简单注解 (22)1、 (3)2、 (3)3、 (3)一、概述1、总体功能本次设计时钟电路,使用了STC89C51单片机芯片控制电路,单片机控制电路简单且省去了很多复杂的线路,使得电路简明易懂,使用键盘键上的按键来调整时钟的时、分、秒,用一扬声器来进行定时提醒,同时使用C语言程序来控制整个时钟显示,使得编程变得更容易,这样通过四个模块:键盘、芯片、扬声器、显示屏即可满足设计要求。
单片机实验报告(相当不错,有具体实验结果分析哦)
学生姓名:学号:专业班级:实验类型:□ 验证□ 综合□ 设计□ 创新实验日期:实验成绩:实验一 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口)。
单片机实验报告二 单片机IO口实验
南昌大学实验报告学生姓名:学号:专业班级:实验类型:⃞验证⃞综合⃞设计⃞创新实验日期:2019.4.16 实验成绩:实验二单片机I/O口实验(一)实验目的1.掌握单片机最小系统的构成,学习如何控制I/O口来驱动发光二极管,掌握移位和软件延时程序的编写。
2.熟练掌握STC型开发板的使用方法和注意事项。
3.掌握应用STC_ISP烧录过程;(二)设计要求利用51单片机及4个LED发光二极管,设计一个单片机流水灯程序,P4.7 /P4.6/ P1.6/ P1.7 来演示跑马灯。
其中流水灯的变化形式多样。
(三)实验原理STC实验箱单片机型号为IAP15W4K32S4-Student,其在线编程与在线仿真可由Keil uVision4集成开发环境和STC系列单片机在线可编程(ISP)电路实现:1.设置STC仿真器:运行STC-ISP在线编程软件,选择“keil 仿真设置”选项,如图1所示,单击“添加型号和头文件到keil中/ 添加STC仿真器驱动到keil中”,弹出“浏览文件夹”对话框,在浏览文件夹中选择keil的安装目录,单击“确定”按钮即完成添加。
根据所用芯片,单击“将IAP15W4K32S4-Student设置为仿真芯片”。
图12.Keil uVision4环境设置:选择菜单命令Project →Options for Target →Debug,选中“STC Monitor-51 Driver”,勾选“Load Application at Startup”选项和“Run to main()”选项,如图2所示。
单击图2右上角的“settings”按钮,弹出硬件参数设置对话框,如图2所示,根据仿真电路所使用的串口号(本机所用为串口5)选择串口端口,如图3所示:图2图33.STC15单击串口TTL电平通信模块结构如图4所示,P1.6、P1.7、P4.6、P4.7所连接的LED灯为共阳极LED,控制对应I/O口为低电平即可点亮LED。
单片机实验报告2
《单片机应用系统设计》实验报告院系:仪器科学与工程学院专业:测控技术与仪器实验室:机械楼5楼同组人员:评定成绩:审阅教师:硬件实验一I/O口输入/输出及控制实验Ⅰ、I/O口输入/输出实验一、实验目的1、学习单片机I/O口的使用方法2、学习延时子程序的编写和使用二、实验内容1、I/O口输出:P1口做输出口,接八只发光二极管,编写程序让发光二极管循环点亮。
2、I/O口输入/输出:P1.0、P1.1做输入口接两个拨动开关;P1.2、P1.3做输出口,接两个发光二极管。
编写程序读取开关状态,将此状态在发光二极管上显示出来。
编程时应注意P1.0、P1.1作为输入口时应先置1,才能正确读入值。
三、实验步骤1、I/O口输出硬件连接连线连接孔1 连接孔21 P1.0 L02 P1.1 L13 P1.2 L24 P1.3 L35 P1.4 L46 P1.5 L57 P1.6 L68 P1.7 L7MCS51的P1口循环点灯2、I/O口输入/输出硬件连接连线连接孔1 连接孔21 K4 P1.02 K5 P1.13 P1.2 L44 P1.3 L5MCS51的P1口输入/输出3、实验说明(1)对于MCS51,P1口是准双向口。
它作为输出口时与一般的双向口使用方法想同;但准双向口用作输入口时,因其结构特点必须对它置“1”,否则读入的数据容易产生错误。
(2)8051延时子程序的延时计算问题,对于程序DELAY:MOV R6, #0HMOV R7, #0HDELAYLOOP:DJNZ R6, DELAYLOOPDJNZ R7, DELAYLOOPRET查指令表可知MOV和DJNZ指令均需两个指令周期,在12MHz晶振时,一个机器周期时间为:12/12MHZ=1ms,该延时子程序延时:(256X255+2)X2X1us=130ms。
4、分别连接硬件并执行相关程序,记录结果。
四、提高要求修改I/O口输出程序,先1、3、5、7灯亮,延时后2、4、6、8灯亮,交替点亮。
单片机C51程序设计实验报告书(word文档良心出品)
实验一并行输入输出口的使用一、实验目的:学会设计proteus 7仿真电路,学习P1口的使用方法和延时子程序的编写用Keil uVision 3编程实现发光二极管的流水点亮。
二、实验原理:P1口为8位准双向I/O口,它的每一位都可以分别定义为输入线或输出线(作为输入时,口锁存器必须置1)。
P1口作为输出,接8个发光二极管D1~D8经限流电阻分别接至8个引脚。
本实验仿真电路图、流程图如下:三、实验代码:#include<reg51.h>#include<intrins.h> //移位库函数包含于此头文件中void delay(unsigned int d) //定义延时子函数{ while(--d>0);}void main(){ unsigned char i,sel;while(1){ sel=0xfe;for(i=0;i<=8;i++){ P1=sel; //显示变量赋给P1口delay(50000); //延时sel=_crol_(sel,1); //改变显示变量}}}四、实验结论:用while语句实现发光二极管循环流水点亮,从上到下一次点亮。
实验二C51分支程序设计一、实验目的:学习多分支选择结构和switch语句,了解循环的嵌套。
二、实验原理:do while 循环先执行后判断是否循环,switch括号中的表达式的值与某case后的常量表达式的值相同时,就执行它后面的语句,遇到break语句则退出switch语句。
本实验仿真电路图、流程图如下:(仿真电路图)(流程图)三、实验代码:#include <reg51.h>void main(){ char a;do{ P1=0xff;a=P1;a=a&0x03;switch(a){ case 0:P2=0x0e;break;case 1:P2=0x0d;break;case 2:P2=0x0b;break;case 3:P2=0x07;break;}}while(1);}四、实验结论:多分支选择的switch/case语句,可直接处理并行多分支选择问题,从匹配表达式的括号开始执行,不再进行判断。
c51单片机实验报告
c51单片机实验报告
《C51单片机实验报告》
C51单片机是一种广泛应用于嵌入式系统中的微控制器,具有高性能、低功耗和丰富的外设接口,因此在各种电子设备中得到了广泛的应用。
本次实验将以C51单片机为研究对象,通过实验验证其性能和功能。
实验一:LED灯控制实验
首先,我们将C51单片机与LED灯连接起来,通过程序控制LED灯的亮灭。
实验结果表明,C51单片机可以准确地控制LED灯的亮度和闪烁频率,具有良好的稳定性和可靠性。
实验二:蜂鸣器控制实验
接着,我们将C51单片机与蜂鸣器连接起来,通过程序控制蜂鸣器的发声。
实验结果显示,C51单片机可以精准地控制蜂鸣器的音调和音量,具有较高的音频输出质量。
实验三:温湿度传感器实验
最后,我们将C51单片机与温湿度传感器连接起来,通过程序读取并显示温湿度数值。
实验结果表明,C51单片机可以准确地读取传感器的数据,并通过显示屏输出,具有良好的数据处理能力。
通过以上实验,我们验证了C51单片机在LED灯控制、蜂鸣器控制和温湿度传感器应用方面的性能和功能。
C51单片机具有较高的稳定性、可靠性和可编程性,适用于各种嵌入式系统的设计与开发。
希望本次实验报告能够对C51单片机的应用和研究提供一定的参考价值。
单片机实验报告范文
单片机实验报告范文单片机(Microcontroller)是指一种封装了微处理器(Microprocessor)、存储器和各种输入输出接口电路功能的集成电路。
单片机在电子设计与开发中有广泛应用,可以用于控制和监测各种系统和设备。
本实验报告将介绍在实验中使用单片机所进行的实验步骤和实验结果。
实验目的:1.理解单片机的基本工作原理和功能。
2.掌握单片机的编程和调试方法。
3.应用单片机实现简单的控制功能。
实验仪器和材料:1.单片机开发板2.计算机B数据线4.电源适配器5.LED灯6.麦克风模块7.温度传感器实验步骤:1.准备工作:将单片机开发板与计算机连接,接通电源适配器。
2.熟悉开发工具:安装单片机开发软件,并了解软件的基本功能。
3.学习编程语言:了解单片机的编程语言,例如C语言或汇编语言,并编写简单的程序。
4.硬件连接:将LED灯、麦克风模块和温度传感器连接至开发板的相应引脚。
5.编程实现:根据实验要求,编写相应的程序,控制LED灯、获取麦克风模块的声音信号或获取温度传感器的温度值。
7.实验结果:根据实验要求,记录LED灯的亮灭状态、麦克风模块的声音信号强度或温度传感器的温度数值。
实验结果:通过实验,我们成功地控制了LED灯的亮灭状态,获取了麦克风模块的声音信号强度和温度传感器的温度数值。
在编程实现过程中,我们学会了使用单片机编程语言,了解了一些常用的语法和函数。
在调试测试中,我们可以通过相关的输出或显示结果来判断程序的正确性,及时发现和修复错误。
实验总结:本实验通过单片机开发板和相应的硬件以及编程实现了简单的控制和监测功能。
通过实验,我们深入了解了单片机的基本工作原理和功能,并掌握了一些基本的编程和调试方法。
实验结果表明,我们成功实现了实验要求,并对单片机的应用有了更加深入的理解。
通过这次实验,我们不仅提高了动手实践能力,也增加了对科技发展的看法。
单片机实验报告(完整版)
单片机原理与应用实验报告学院(部):专业:学生姓名:班级:学号:最终评定成绩:实验一存储器读写一、实验目的:1、掌握寄存器、存储器读写等汇编指令;2、掌握编程软件编辑、编译、调试等基本操作。
二、实验仪器设备1.PC机,1台2.WAVE软件开发系统三、实验内容及步骤:1、将下面的汇编程序输入到W A VE集成开发软件中ORG 0000HSJMP STARTORG 0030HSTART:MOV R0,#07HMOV 70H,#08HMOV R1,#70HMOV DPTR,#2000HLOOP:MOVX A,@R1MOVX A,@DPTRINC R1INC ADJNZ R7,LOOPSJMP $END2、选择菜单“仿真器”→“仿真器设置”,按下图所示完成软件初始设置。
3、选择菜单“项目”下“编译”,编译通过后,选择“单步运行”,观察记录寄存器(R0、R1)、累加器(A)、程序状态字(PSW)、外部存储器(2000H单元)、I/O端口(P1)的数据变化。
四、源程序源程序:ORG 0000H ;定义起始地址SJMP STARTORG 0030HSTART:MOV R0,#07HMOV 70H,#08H ;给内部RAM的70H单元赋初值MOV R1,#70H ;使R1指向内部70H单元MOV DPTR,#2000H ;定义外部存储器开始单元LOOP:MOVX A,@R1 ;将R1所指向的70H的内容赋给AMOVX @DPTR,A;将A的内容赋给外部存储器单元INC R1 ;内部RAM地址加1INC DPTR ;外部存储器地址加1DJNZ R7,LOOP ;循环,直到RAM中70H~7FH;单元的内容全部相应赋给;外部2000H~2007H单元SJMP $END3、记录下程序单步运行时,寄存器(R0、R1)、累加器(A)、程序状态字(PSW)、外部存储器(2000H单元)、I/O端口(P1)的数据变化。
五、仿真效果图实验二I/O端口操作一、实验目的:1、掌握I/O端口读写等基本汇编指令;2、掌握单片机最小系统硬件电路设计及仿真软件PROTEUS仿真、调试等基本操作方法。
单片机实验报告
单片机实验报告《单片机系统实验》实验报告院系:学号:姓名:2017年12月一、实验目的1.了解32位单片机(STM32系列)原理及其应用,熟悉单片机的资源,掌握单片机的最小系统设计及扩展技术,掌握单片机的编程语言。
2.通过本实验了解LCD液晶工作原理,能通过编程操作液晶的显示。
二、实验设备STM32实验系统一套,PC机一台。
三、实验原理(1)I/O口及定时器实验:STM32的GPIO口控制4个发光二极管,了解其硬件连接方式,学会使用STM32的一个定时器,掌握对定时器计时方式的编程。
编写程序循环点亮4个发光二极管,控制点亮时间为1秒钟闪烁。
(2)外部中断实验:掌握STM32单片机外部中断的用法,学会设置中断优先级,在实验(1)的基础上完成,如果有外部中断发生改变发光二极管的发光规律。
(如,仅其中2个灯亮,再次触发外部中断后,发光二极管重新变成4个灯循环点亮。
)(3)串行口通信实验:掌握STM32单片机与计算机之间的硬件连接方式,了解二者之间的传输协议,进行数据传输。
(4)LCD实验:掌握STM32单片机与液晶之间的硬件连接方式,单片机如何驱动液晶进行显示。
四、内容与步骤1.学会使用IAR或KEIL的编译链接调试环境,熟悉有关STM32使用到的库,并能顺利建立包含各种库文件的工程。
(2学时)2.I/O口实验:在建立工程的基础上能点亮发光二极管。
(2学时)3.定时器实验:循环定时(用定时器做)点亮4个灯,即每1秒闪烁点亮一个灯,循环往复(或叫跑马灯实验)。
(2学时)4.外部中断实验:按键作为触发外部中断的条件,中断发生时,改变发光二极管的点亮规律。
(2学时)5.串行口通信实验:编写串行口通信实验程序,能在计算机与STM32系统间进行ASCII码的传输。
(2学时)6.LCD实验:通过自行编写库文件和了解液晶显示字库,能在液晶上显示“北京航空航天大学机械工程及自动化学院”字样。
(6学时)五、关键代码1.I/O口及定时器实验/*通过定时器3中断函数实现跑马灯,现象为每个LED灯依次点亮1秒后熄灭*/void TIM3_IRQHandler(void){extern uint8_t LED_Status[5];if(TIM3->SR&0X0001)//溢出中断{if(LED_Status[1]==0){LED1_ON;LED2_OFF;LED3_OFF;LED4_OFF;LED_Status[1]=1;}else if(LED_Status[1]==1){LED1_OFF;LED2_ON;LED3_OFF;LED4_OFF;LED_Status[1]=2;}else if(LED_Status[1]==2){LED1_OFF;LED2_OFF;LED3_ON;LED4_OFF;LED_Status[1]=3;}else if(LED_Status[1]==3){LED1_OFF;LED2_OFF;LED3_OFF;LED4_ON;LED_Status[1]=0;}}TIM3->SR&=~(1<<0);//清除中断标志位}2.外部中断实验/*LED灯的发光规律有两种:一种是每个LED灯依次点亮1秒后熄灭,另一种是每次2个LED灯同时点亮,持续1秒后向前移动1个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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
短学期实验报告(单片机系统设计)题目:专业:指导教师:学生姓名:学号:完成时间:成绩:基于单片机的交流电压表设计目录1系统的设计要求 (2)2系统的硬件要求 (2)2.1真有效值转换电路的分析 (2)2.2放大电路的设计 (3)2.3A/D转换电路的设计 (3)2.4单片机电路的分析 (4)2.5显示电路 (4)3 软件设计 (5)3.1 软件的总流程图 (5)3.2 初始化定义与定时器初始化流程图 (5)3.3 A/D转换流程图 (6)3.4 数据处理流程图 (6)3.5 数据显示流程图 (7)4 调试 (7)4.1 调试准备 (7)4.2 关键点调试 (7)4.3 测试结果 (8)4.4 误差分析 (8)5结束语 (8)5.1 总结 (9)5.2 展望 (9)附录1 总原理图 (10)附录2 程序 (10)附录3 实物图 (14)基于单片机的交流电压表设计****学院 ****专业 姓名指导老师:*******1 设计要求(1)运用单片机实现真有效值的检测和显示。
(2)数据采集使用中断方式,显示内容为有效值与峰值交替进行。
2 硬件设计本系统是完成一个真有效值的测量和显示,利用AD737将交流电转换成交流电压的有效值,用ADC0804实现模数转换,再通过单片机用数码管来显示。
系统原理框图如图2-1所示。
系统框图由真有效值转换电路、放大电路、A/D 转换电路、单片机电路、数码管显示电路五部分。
图2-1 原理框图2.1 真有效值转换电路真有效值转换电路主要是利用AD737芯片来实现真有效值直流变换的,即将输入的交流信号转换成直流信号的有效值,其原理图如图2-2所示。
图2-2 真有效值转换电路由于AD737最大输入电压为200mV, 所以需要接两个二极管来限制输入电压,起到限幅的作用。
如图中D1、D2,由IN4148构成,电容C6是耦合电容,电阻R1是限流电阻。
2.2 放大电路设计放大电路主要是利用运放uA741来进行放大,电路原理图如图2-3所示。
A/D 转换单片机 电路显示 电路转换 电路交流 信号放大 电路图2-3 放大电路原理图由于AD737可接受的信号有效值为0~200mV。
而ADC0804、单片机的电源电压都需要0~5V,因此需要一个放大电路,将AD737输出的200mV的电压提升至5V,所以放大电路的放大倍数最低需要25倍。
该放大电路采用集成芯片u A741,连接成一个同相比例运放,输入电阻采用3.3K,反馈电阻用100K的滑动变阻器,当滑动变阻器处于最大值时,放大倍数处于最大,为A Vf=(1+R3/R2)≈31.3。
放大倍数可以根据滑动变阻器的滑动而改变。
2.3 A/D转换电路A/D转换电路采用ADC0804实现,其原理图如图2-4所示。
图2-4 A/D转换电路原理图此电路考虑到做单片机系统时,需数据采集,而数据采集能通过I/O口扩展接口电路得到,但51单片机大多不带A/D转换器,所以模拟量的采集必须靠A/D实现。
所谓A/D转换就是将输入的模拟信号转换成数字信号输出。
改该电路采用ADC0804芯片,其最快转换时间为100us,时钟频率f=1/(C5*R9),可对0~5V之间的电压进行转换;输入基准电压为实际基准电压的1/2;若输入基准电压为 2.56V,其输入模拟电压为(DATA/256)*2,DATA为转换数字量。
转换结束信号输出到单片机外中断1,如图2-4所示。
/RD为外部读取转换结果的控制输出信号。
/RD为HI时,DB0~DB7为高阻抗;/RD为LO时,数据才输出。
/WR用来启动转换控制输入,相当于ADC转换开始(/CS=0时),当/WR由HI变为LO时,转换器被清除;当/WR为HI时开始转换。
CLK IN,CLK R:接振荡电路,振荡频率为1/(1.1RC),如图中R9、C6,ADC0804的最大输入电压为5V,提供基准电压。
根据ADC0804原输出转换值为0~255,R5、R11组成分压电路,为VREF理图,将输入模拟值转换成数字值后由P0口输出。
2.4 单片机电路单片机电路主要是单片机的最小系统,其原理图如图2-5所示。
图2-5 单片机电路原理图该部分电路主要由89S51、晶振和复位电路组成其原理图如2-6所示。
采用12M的晶振,机器周期为0.1us;上电复位;信号输入到外中断0,在中断中启动AD转换;AD转换结束标志作为外中断1的中断源,在中断1中读取数据并保存;P1口为数码管提供断码;P0.0~P0.7分别为AD的启动信号、AD的读取信号和数码管的扫描信号。
2.5 显示电路显示电路采用数码管来显示。
如图2-6所示。
图2-6 显示电路原理图该部分电路采用3位数码管来交替显示所测电压的有效值和峰值,同时数码管采用动态显示,每1ms 刷新一位,用3个8550的PNP 型三极管来片选。
图中smg0~smg7与单片机P0口相连接,三极管的集电极分别与共阳数码管9脚相连接,基极分别与单片机的P2.1~P2.3相连接。
3 软件设计3.1 总软件流程总软件流程图如图3-1所示:图3-1 总软件流程图3.2 初始化程序初始化程序主要是定义主程序中要用的变量和定时器的初始化。
变量定义如下: unchar dat; //AD 采样数据变量unchar tab[3]; //显示数据各个位存储数组 定时器初始化流程图如图3-2所示:图3-2 定时器初始化流程图3.3 AD 采样程序AD 采样主要是根据ADC0804的时序进行对外部数据的采用读取。
其中包括AD程序初始化定时AD 采样初始化中断更新AD 标志位1S 定时AD 有效值更新显示初始化时序和AD 数据读取程序。
AD 时序图3-3所示:图3-3 AD 时序图根据3-3图所示时序,写出AD 程序流程图,如图3-4所示开始结束AD 初始化延时1ms读取数据图3-4 AD 程序流程图3.4 数据处理程序对AD 采样的数据必须进行处理才能正常地显示。
首先的要把十六进制数的AD 值转换成十进制数,然后进行值处理,求出有效值,峰值,接着分别求出数据中的各个位上的数字,以便显示。
其程序流程图如图3-7所示。
图3-7 数据处理程序流程图3.5 数据显示程序数据显示主要是用数码管动态扫描的方法。
其程序流程图如土3-8所示入口返回送显示段码选择数码管1关闭数码管1送显示段码选择数码管2关闭数码管2送显示段码选择数码管3关闭数码管3图3-8 数据显示程序流程图4 调试4.1 调试准备调试所用到的仪器有万用表、直流稳压电源、示波器、信号发生器。
运用万用表来测量电阻、电压,直流稳压电源接正负Vs 和地,信号发生器产生信号,示波器显示输出波形和峰值。
4.2 关键点调试(1)、放大电路调试前要先进行调零,即将运放的2个输入端(同相输入端和反向输入端)对地短路,用万用表测输出电压,调节滑动变阻器R1,使输出电压为0,如果不进行调零,则会导致输出电压有偏差。
(2)、注意输入A/D的基准电压为1/2vef,同时最合适的基准电压为2.56V,以便计算时方便。
4.2.1 放大波形(1)、理论波形(2)、实际波形4.2.2 显示电路4.3 测试结果输入 Vpp 输入信号有效值测量值(有效值)1.04 3 4 4.68 0.3031.0621.4131.630.301.051.401.661.22.30 2.81 4 0.5201.141.362.090.5241.161.352.121.04 22.52 4.680.280.5630.771.330.270.5600.561.354.4 误差分析(1)放大电路的放大倍数会因输入电阻,反馈电阻与理论值有偏差而存在一定的误差,放大倍数过大会波形互失真;(2)当ADC0804的基准电压为2.56V时,其最小分辨率为20mv,因此测量值会有±20mv 的偏差;(3)输入信号存在干扰和波动;(4)偏置电压引起的误差。
5 结束语5.1 总结通过本次短学期的实验,使我对很多芯片有了一定的了解和巩固,对它们的功能有了一定的熟悉和掌握。
如AD737,该芯片可以用来将交流电转换成真有效值的直流电,如ADC0804芯片可实现数模转换,同时对真有效值的转换、放大等电路的设计有了进一步的理解和掌握。
在电路设计中必须注意电路中各元件值的选择会影响电路最终的结果。
当在设计放大电路时,输入电阻、反馈电阻的不同就会使放大倍数有所不同,根据题目要求和芯片的资料,必须保证最低放大倍数25,因此如放大倍数太小则不能满足要求,而太大则会导致输出波形的失真。
因此,要合理选择各元件的值。
在电路调试时,应该分模块进行调试,及时发现问题解决问题,等所有模块都调试成功再进行总体的调试。
最后要根据自己所测的结果,进行分析,尤其对测试出的结果与理论结果进行比较,是否有误差,并分析形成误差的原因,如何减少误差。
5.2 展望虽然该电路已经基本能实现对真有效值的测量和显示,但测量结果还存在着较大的误差,电路设计还有待于进一步的完善,各部分电路的稳定性也有待于进一步的提高,希望通过更进一步的研究和学习,实现用更少的元件,设计出更加合理、更高效的电路。
附录:1 总原理图2 程序清单主程序模块#include<reg51.h>#include<math.h>#include"adc0804.h"#include"smgdis.h"#define unchar unsigned char#define unint unsigned intunchar count=0;unchar ID=0; //任务ID,时间片分配ID#define a 0.5static unchar y;static time_init(){TMOD=0x01;/*定时器T0方式1(16位计数器)*//*公式为:x=65536-fosc/12*t 65536-50000=15536其中x为定时初值,fosc为晶振频率,t为定时时间*/ TH0=15536/256; /*定时器高位*/TL0=15536%256; /*定时器低位,定时时间为50ms ,20次为1s */ ET0=1;/*允许定时器T0中断*/TR0=1;/*开定时器T0*/EA=1;/*开总中断*/}void main(){unchar dat;unchar tab[3];time_init();while(1){dat=get_adc_value();value_done(dat,tab,ID);led_display(tab[0],tab[1],tab[2]);}}void timer0() interrupt 1{TR0=0;TH0=15536/256;TL0=15536%256; /*重装初值*/count++; /*计数,累加中断次数*/if(count==20) /*判断是否到10次,即0.5s*/{count=0;ID++; /*转换下一个显示*/if(ID==3) ID=0;}TR0=1;}A/D转换模块:(头文件)#ifndef __ADC0804_H__#define __ADC0804_H__#ifndef unchar#define unchar unsigned char#endif#ifndef unint#define unint unsigned int#endif#define adc_databus P1 //the databus of ADCsbit cs_adc=P2^0; //to choose the chip ADC0804 sbit wr=P3^6; //wr# signalsbit rd=P3^7; //rd# signalvoid value_done(unint tvdata,unchar led[],unchar ID) {unint temp;//temp=(unint)(tvdata*1.0/255*500);temp=(unint)(tvdata*2);switch(ID){case 0: //有效值break;case 1: //峰值temp*=sqrt(2);break;default: //其他情况break;}led[0]=(temp/100)%10;//最高位led[1]=(temp/10)%10;led[2]=temp%10; //最低位if(led[0]>10||led[0]<0) led[0]=11;if(led[1]>10||led[1]<0) led[0]=11;if(led[2]>10||led[2]<0) led[0]=11;}unchar get_adc_value(void){unchar k;unint tvdata;//----adc0804 start----//cs_adc=0; k=k; //nopwr=0; k=k;wr=1; k=k;cs_adc=1; k=k;k=k;k=k;//----read value of adc0804----//adc_databus=0xff;cs_adc=0; k=k;rd=0; k=k;tvdata=adc_databus;rd=1; k=k;cs_adc=1; k=k;return tvdata;}#endif显示模块(头文件)#ifndef __SMGDIS_H__#define __SMGDIS_H__#ifndef unchar#define unchar unsigned char#endif#ifndef unint#define unint unsigned int#endif/*全局变量定义*/#define DataBus P0 //数据口定义sbit c0=P2^1; //数码管0控制脚sbit c1=P2^2; //数码管1控制脚sbit c2=P2^3; //数码管2控制脚void delay(void){unchar i;unchar t=1;while(t--)for(i=0;i<125;i++);}void led_display(unchar a,unchar b,unchar c){/*共阳数码管数字码0~9+全暗码*/Unchar code tab0[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0x86};DataBus=(tab0[a]&0x7f);/*送显示码,由a控制*/c0=0; /*选通数码管0*/delay();DataBus=0xff;c0=1;DataBus=tab0[b];/*送显示码,由b控制*/c1=0; /*选通数码管1*/delay();DataBus=0xff;c1=1;DataBus=tab0[c];/*送显示码,由c控制*/c2=0; /*选通数码管2*/delay();DataBus=0xff;c2=1;}#endif3 实物图。