《单片机系统设计》实验报告

合集下载

单片机实验报告

单片机实验报告

单片机实验报告第一篇:单片机实验报告单片机实验报告一、实验目的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. 培养单片机应用系统的设计能力。

4. 提高实际操作能力和团队协作精神。

二、实验内容本次实验实训主要围绕单片机应用系统展开,包括以下内容:1. 单片机最小系统搭建- 熟悉单片机的最小系统组成,包括复位电路、晶振电路、VCC、GND等。

- 掌握电路板焊接和调试方法。

2. LED流水灯实验- 学习使用51单片机进行简单的单片机应用系统硬件设计。

- 掌握单片机GPIO端口的使用方法。

- 通过编程实现LED灯的流水效果。

3. 按键控制LED灯实验- 学习使用按键输入控制LED灯的亮灭。

- 掌握按键去抖动技术。

4. LCD1602显示屏控制实验- 学习使用LCD1602显示屏显示文字和数字。

- 掌握LCD1602的初始化和显示控制方法。

5. 串口通信实验- 学习使用单片机串口进行通信。

- 掌握串口初始化和通信协议。

6. 温湿度传感器实验- 学习使用温湿度传感器获取环境温度和湿度信息。

- 掌握传感器数据读取和温度湿度计算方法。

7. 多功能密码锁实验- 学习使用单片机实现密码锁功能。

- 掌握按键输入、密码存储和匹配方法。

三、实验步骤1. 实验一:单片机最小系统搭建- 根据实验指导书,准备好实验器材,包括51单片机、电路板、焊接工具等。

- 按照电路图焊接电路,确保电路连接正确。

- 上电测试,观察LED灯是否亮起,确认电路工作正常。

2. 实验二:LED流水灯实验- 编写LED流水灯程序,使用51单片机GPIO端口控制LED灯的亮灭。

- 烧录程序到单片机,观察LED灯的流水效果。

3. 实验三:按键控制LED灯实验- 编写按键控制LED灯的程序,使用按键输入控制LED灯的亮灭。

- 烧录程序到单片机,测试按键控制功能。

4. 实验四:LCD1602显示屏控制实验- 编写LCD1602显示屏显示文字和数字的程序。

- 烧录程序到单片机,观察LCD1602显示屏的显示效果。

单片机系统设计实验报告

单片机系统设计实验报告

基于LAB8000的简易计算器程序设计摘要:本文是对基于伟福Lab8000单片机仿真实验系统的一次计简易计算器程序设计的实验进行功能介绍、硬件原理、软件流程、调试过程以及实现效果等方面的叙述和说明。

首先,本文介绍了需要在实验系统上实现的简易计算器的功能,即:十进制的、正整数的、100万以内的、整数的加减乘除运算;其次,本文分别从硬件原理和软件流程两个方面对所要用到的模块以及软件具体实现的流程图进行了阐述;另外,本文还叙述了调试过程中遇到的一些问题;最后,本文对最终实现效果进行了展示,并对整个实验进行了总结。

一、实现功能本实验希望实现的功能是在如图1所示的六段LED显示屏上实现简易的计算器功能。

图1.所谓简易计算器所具备的功能具体细节如下:1.所进行的运算为十进制运算,运算数字范围不超过6位,即所涉及的运算均在100万以下。

2.所涉及的运算数字均为整数,除法运算的结果只取整数部分。

3.在6位LED显示屏上,从左到右依次为从高位到低位;键盘输入的顺序依次是先输入的数字为高位,后输入的数字为低位。

4.所实现的运算种类为:加、减、乘、除四种。

这四种运算的运算符分别对应于键盘上的A,B,E,F。

5.键盘上的0-9数字键用于输入对应的十进制数,C键用于清零,D键对应于等于号。

6.当运算结果出现负数时输出ERROR。

二、实验原理我们接下来分别从硬件原理和软件流程两个方面来对实验原理进行叙述。

1.硬件原理1.1实验所用到的硬件模块本实验所用到的硬件模块有(1)Intel8051芯片(2)74HC374输入控制模块、74HC245读取模块,这两个模块和键盘组成了键盘工作的内驱方式。

电路图如图2所示。

图2.(3)键盘以及LED七段显示管,电路图可见图2和图1.LED七段数码管字型代码如下表:显示字形g f e d c b a 段码0 0 1 1 1 1 1 1 3fh1 0 0 0 0 1 1 0 06h2 1 0 1 1 0 1 1 5bh3 1 0 0 1 1 1 1 4fh4 1 1 0 0 1 1 0 66h5 1 1 0 1 1 0 1 6dh6 1 1 1 1 1 0 1 7dh7 0 0 0 0 1 1 1 07h8 1 1 1 1 1 1 1 7fh9 1 1 0 1 1 1 1 6fhA 1 1 1 0 1 1 1 77hb 1 1 1 1 1 0 0 7chC 0 1 1 1 0 0 1 39hd 1 0 1 1 1 1 0 5ehE 1 1 1 1 0 0 1 79hF 1 1 1 0 0 0 1 71h1.2键盘的工作方式本实验中键盘工作于内驱方式,关于内驱方式我们说明如下:显示控制的位码通过总线由74HC374输出,经ULN2003反向驱动后,做LED 的位选通信号。

《单片机系统设计》实验报告(DOC)

《单片机系统设计》实验报告(DOC)

短学期实验报告(单片机系统设计)题目:专业:指导教师:学生姓名:学号:完成时间:成绩:基于单片机的交流电压表设计目录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所示。

单片机系统设计报告范文

单片机系统设计报告范文

单片机系统设计报告范文1. 引言本报告介绍了一个基于单片机的系统设计。

本项目旨在设计一个可靠、高效的控制系统,能够实现某一特定功能。

本报告将详细介绍系统的设计目标、硬件设计和软件设计,并对系统进行评估和讨论。

2. 设计目标本项目的设计目标是实现一个智能温湿度控制系统。

系统的主要功能包括实时监测环境的温度和湿度,并根据设定的阈值自动控制温湿度,保持舒适的环境条件。

3. 硬件设计3.1. 主控单元本系统选择了常用的基于单片机的主控单元,采用XMC4500系列单片机。

此单片机具有高性能、低功耗和多种外设接口的特点,非常适合本项目的需求。

3.2. 传感器模块为了实时监测环境的温湿度,我们选择了DHT11温湿度传感器。

该传感器具有较高的精确度和良好的稳定性,可以通过串口和单片机进行数据交互。

3.3. 人机交互模块为了方便用户对系统进行设定和操作,本系统设计了一个人机交互模块。

该模块包括一个液晶显示屏和几个按键,通过显示屏和按键可以实现菜单显示和参数设定功能。

3.4. 控制模块为了控制温湿度,本系统设计了一个控制模块。

该模块通过与主控单元的通信,接收来自传感器模块的数据,并实施相应的控制策略,如开关空调、加湿器等来维持设定的温湿度。

4. 软件设计4.1. 软件架构本系统的软件设计采用了模块化的结构。

主控单元的软件主要分为三个模块:传感器模块、人机交互模块和控制模块。

每个模块都有相应的功能函数,通过调用这些函数来实现不同的功能。

4.2. 传感器模块传感器模块负责实时读取温湿度传感器的数据,并将数据发送给主控单元。

为了增加系统的稳定性,我们设计了数据校验和容错机制。

4.3. 人机交互模块人机交互模块负责显示菜单和接收用户的操作。

用户可以通过按键来选择菜单和设定参数。

我们设计了一个菜单管理器和按键管理器来实现该模块的功能。

4.4. 控制模块控制模块根据传感器模块提供的数据和用户设定的参数,实施相应的控制策略。

例如,当温度超过设定值时,控制模块会发送控制信号给空调,打开空调降低室内温度。

单片机课程设计实验报告

单片机课程设计实验报告

单片机课程设计实验报告实验名称:城市交通管制系统实验要求:设计一单片机系统,满足以下功能:1。

控制两组三色灯的显示,模拟交通灯。

2。

交通灯显示的同时,控制数码管进行实时的配套倒计时显示。

3。

具有紧急管制功能,可以紧急将两个方向的交通灯都切换为红灯。

4。

具有万年历的显示及设置功能。

5。

具有交通灯模式下,红绿黄灯的延时时间的更改功能。

硬件设计部分:系统原理框图:根据以上,设计系统原理框图如下根据以上,设计系统电路原理图,并画出相应的PCB板图,详见随实验报告一同上交的硬件图文件夹或硬件PCB工程文件。

设计思路:1.将两组交通灯分别与单片机的P1.0至P1.5端口连接,通过对P1端口的书写控制交通灯的点亮。

2.将4个功能键与单片机的P3.2至P3.5端口连接,其中:S1接P3.2,作为外部中断0的输入口,下跳沿跳变触发;S2接P3.3,作为外部中断1的输入口,下跳沿跳变触发;S3接P3.4,采用查询法,低电平触发;S3接P3.5,采用查询法,低电平触发;3.将6位七段数码管的位选端分别与单片机的P2.0至P2.5端口连接,通过对P2端口的书写控制数码管的位选通。

4.将6位七段数码管的字段显示输入端与单片机的P0端口连接,字型码直接由P0端口输出,考虑到P0口作为驱动的限制,需要外加74LS驱动,并配备上拉电阻。

系统功能设置:交通灯模式控制表:表中红绿灯组采用共阴极接法,输入1表示灯亮,输入0表示灯灭。

按键功能设置:经综合比较,对系统工作模式及按键功能做一下设计。

S0:硬件复位S1:紧急管制键,正常交通灯模式运行中,按下后紧急将两个方向的交通灯都切换为红灯,持续时间由MODE6确定。

该按键仅在MODE1下是有效的。

S2:工作模式循环切换可切换的工作模式有:MODE1:正常交通灯和倒计时显示模式。

MODE2:正常万年历显示模式。

MODE3:修改当前万年历数据。

此模式下红-绿-黄灯发生闪烁以提示,且待修改位的数字发生闪烁以提示。

单片机课程设计实验报告

单片机课程设计实验报告

单片机课程设计实验报告## 一、实验目的本次实验的目的是使用单片机来控制一个按键的开关的LED灯闪烁,以掌握单片机端口的工作状态,理解单片机程序的控制,增强信息处理能力。

## 二、实验仪器及配件实验所需仪器及配件如下:(1)电路仿真软件KIT3.1 ;(2)Stc89系列单片机(3)LED灯(4)按键(5)把手(6)七段数码管(7)电路芯片## 三、实验原理1. 电路中的Stc89单片机首先将端口0的电平置为低电平,将端口1的电平置为高电平,从而使LED灯点亮。

2. 按下按键,按键的端口被连接到Stc89单片机的端口0,以低电平信号输入,则端口0将电平改为高电平,此时Stc89单片机将端口1电平置为低电平,从而使LED灯熄灭。

3. 本实验通过Stc89系列单片机编程,将LED灯的开关、控制状态显示在七段数码管上。

## 四、实验步骤1. 打开KIT3.1电路仿真软件,设计电路,首先,将半导体元件插入电路图,设定端口,给所有的端口赋值。

2. 选择单片机的型号,进入Program Editor界面,编写控制程序,程序主要包括四个部分:按键检测部分、LED灯控制部分、七段数码管控制部分和延时程序,具体程序如下:3. 编译程序,将程序转换成Stc89单片机芯片可运行的代码,完成后,在仿真窗口中调用Star Simulation开始仿真,观察LED灯的闪烁及七段数码管的变化,仿真结果正确无误,表明电路和程序设计正确。

4. 下载程序至单片机,并将电路芯片、按键连接到指定端口,接通电源,按下按键,观察LED灯的闪烁及七段数码管的变化,结果与仿真一致,实验成功完成。

## 五、实验结论本次实验,我们使用KIT3.1电路仿真软件,设计并编写单片机的程序,通过按下按键来控制LED灯的开关,并将控制状态显示在七段数码管上,实现了按键控制LED灯的功能。

通过本次实验,掌握了单片机的端口的工作状态,也更加加深了对单片机程序的控制,增强了自己的信息处理能力。

单片机课程设计实习报告实习报告

单片机课程设计实习报告实习报告

单片机课程设计实习报告实习报告
实习报告
一、实习目标
本次实习的目标是设计一个基于单片机的系统,通过实践运用单片机的基本知识和技能,提升对单片机的理解和应用能力。

二、实习内容
1. 确定项目
根据个人的兴趣和实际需求,选择一个合适的项目来设计实习内容。

本次实习中,我选择了设计一个智能温湿度监控系统。

2. 硬件设计
根据项目需求,确定所需要的硬件设备,并进行硬件设计。

包括选择合适的单片机,传感器,显示屏等,并进行电路设计和布线。

3. 软件设计
根据项目需求,确定所需要的软件功能,并进行软件设计。

包括编写单片机的驱动程序,设计用户界面,实现温湿度数据的采集和显示等。

4. 系统调试
对系统进行调试和测试,确保系统的稳定运行和功能完善。

三、实习结果
经过一段时间的努力学习和实践,我成功设计并实现了一个智能温湿度监控系统。

该系统能够实时监测环境的温度和湿度,并将数据显示在LCD屏幕上。

同时,系统还可以根据设定的阈值进行报警,并向用户发送短信提醒。

四、实习心得
通过本次实习,我深刻理解了单片机的工作原理和应用场景。

通过实践运用,提升了自己的单片机设计和编程能力。

同时,也对整个系统的设计和调试流程有了更加深入的了解和认识。

总之,本次实习是一次非常有意义和收获的实践经历,我通过实际操作锻炼了自己的实际动手能力,同时也掌握了更多的专业知识和技能。

对于今后的学习和工作,将会有很大的帮助。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 实物图。

相关文档
最新文档