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

合集下载

单片机实验报告

单片机实验报告

单片机实验报告第一篇:单片机实验报告单片机实验报告一、实验目的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. 单片机基本原理单片机是一种集成电路,内部包含了CPU、内存、输入输出端口等功能模块。

通过编程,可以控制这些功能模块的工作,实现各种应用。

2. 温度传感器原理温度传感器是一种能够感知环境温度变化的器件,常见的有热敏电阻、热电偶等。

本次实验使用的是热敏电阻,其电阻值随温度的变化而变化。

实验材料1. 单片机开发板2. 温度传感器3. 液晶显示屏4. 连接线等实验步骤1. 连接电路将单片机开发板与温度传感器、液晶显示屏连接起来,确保电路连接正确无误。

2. 编写程序使用C语言编写单片机的程序,实现温度传感器数据的采集和液晶显示屏的显示。

程序的基本思路是通过单片机的模拟输入端口读取温度传感器的电阻值,然后将电阻值转换为温度值,并将温度值显示在液晶显示屏上。

3. 烧录程序将编写好的程序烧录到单片机开发板上,确保程序能够正常运行。

4. 实验测试将温度传感器放置在不同的环境中,观察液晶显示屏上的温度数值是否能够准确显示,并记录实验结果。

实验结果与分析经过实验测试,我们发现温度传感器能够准确地采集环境温度,并将温度数值显示在液晶显示屏上。

通过对比实际温度和显示温度的差异,我们可以评估温度传感器的准确性和精度。

实验总结通过本次实验,我们深入了解了单片机的基本原理和应用,掌握了单片机的编程方法和电路连接方法。

同时,我们也加深了对温度传感器的原理和应用的理解。

这些知识和技能对于今后的学习和工作都具有重要意义。

单片机实验报告2

单片机实验报告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灯亮,交替点亮。

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

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

短学期实验报告(单片机系统设计)题目:专业:指导教师:学生姓名:学号:完成时间:成绩:基于单片机的交流电压表设计目录1 系统的设计要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯22 系统的硬件要求⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯2 2.1 真有效值转换电路的分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯22.2 放大电路的设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.3 A/D 转换电路的设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯32.4 单片机电路的分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯42.5 显示电路⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯4 3 软件设计⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯53.1 软件的总流程图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯5 3.2 初始化定义与定时器初始化流程图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯5 3.3 A/D 转换流程图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯63.4 数据处理流程图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯63.5 数据显示流程图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯7 4 调试⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯74.1 调试准备⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯74.2 关键点调试⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯74.3 测试结果⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯84.4 误差分析⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯8 5 结束语⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯85.1 总结⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯9 5.2 展望⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯9 附录1 总原理图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯10 附录2 程序⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯10 附录3 实物图⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯14基于单片机的交流电压表设计指导老师:1 设计要求1)运用单片机实现真有效值的检测和显示。

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

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

单片机课程设计实习报告 (2)单片机课程设计实习报告 (2)精选2篇(一)实习报告1. 实习概述在本次实习中,我参与了单片机课程设计项目的开发工作。

该项目的目标是设计并实现一个功能完善的单片机系统,能完成一些常见的任务,如控制LED灯的闪烁、采集温湿度数据等。

2. 实习过程在实习的第一天,我与项目组的其他成员一起讨论了系统的设计方案。

我们决定采用STM32单片机作为硬件平台,并选择了Keil作为开发环境。

然后,我们开始了系统的搭建工作。

在搭建系统的过程中,我主要负责编写程序代码。

我首先学习了STM32单片机的相关知识,并了解了它的编程方式。

然后,我根据系统的需求,编写了一些基本的程序代码,如控制LED灯的闪烁、读取温湿度传感器的数据等。

在编写代码的过程中,我遇到了一些问题。

例如,我发现LED灯无法正常闪烁,经过调试后发现是我在代码中写错了引脚的定义。

我还遇到了一些编译错误和逻辑错误,通过查阅资料和与同事的讨论,我逐渐解决了这些问题。

在实习的最后几天,我与项目组的其他成员一起测试了系统的功能,并进行了修复和优化。

我们使用示波器和逻辑分析仪对系统进行了验证,确保系统的稳定性和可靠性。

3. 实习总结通过参与单片机课程设计实习项目,我对单片机的硬件和软件实现有了更深入的了解。

我学会了如何使用Keil编写程序代码,并通过实践掌握了调试和排除故障的技巧。

同时,我也学会了如何与团队成员合作,共同完成一个项目。

通过实习,我不仅提高了自己的技术能力,还培养了解决问题的能力和团队合作能力。

我相信这些经验和技能对我的未来发展将非常有帮助。

4. 改进建议在实习过程中,我发现有些文档和资料的描述不够清晰和详细,对我理解项目的要求和实现方式造成了一些困扰。

因此,我建议在今后的实习项目中,关注文档和资料的编写,确保其准确性和完整性。

另外,我还建议在项目开始之前进行一些充分的准备工作,包括学习相关知识和技术,以及对项目的需求和实现方式进行详细的讨论和规划。

单片机实验报告

单片机实验报告

单片机实验报告《单片机系统实验》实验报告院系:学号:姓名: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灯的位置。

单片机课程设计实验报告

单片机课程设计实验报告

单片机课程设计实验报告一、课程目标知识目标:1. 让学生理解单片机的基本原理和功能,掌握其内部结构及工作流程。

2. 使学生掌握单片机编程的基本语法和编程技巧,能独立完成简单的程序编写。

3. 帮助学生了解单片机在现实生活中的应用,提高对新技术、新领域的认识。

技能目标:1. 培养学生运用单片机进行实验设计和实践操作的能力。

2. 培养学生分析问题、解决问题的能力,提高创新思维和动手实践能力。

3. 提高学生的团队协作和沟通能力,学会在实验过程中相互交流、共同进步。

情感态度价值观目标:1. 激发学生对单片机及电子技术的兴趣,培养主动学习的习惯。

2. 培养学生严谨、细致的实验态度,养成良好的实验操作习惯。

3. 增强学生的自信心和责任感,使他们认识到学习单片机对国家科技发展的意义。

课程性质分析:本课程为单片机课程设计实验,侧重于实践操作和实际应用。

课程要求学生具备一定的电子技术基础和编程能力,通过实验深入了解单片机的工作原理和应用领域。

学生特点分析:本课程面向高年级学生,他们在之前的学习中已掌握了基本的电子技术和编程知识,具备一定的自学能力和动手实践能力。

但学生在单片机应用方面的实践经验不足,需要通过本课程加强实践锻炼。

教学要求:1. 结合课本内容,注重理论与实践相结合,提高学生的实际操作能力。

2. 注重启发式教学,引导学生主动思考、探索,培养学生的创新精神和实践能力。

3. 关注学生的个体差异,给予个别辅导,确保每位学生都能达到课程目标。

二、教学内容1. 单片机基础知识:- 单片机原理与结构- 单片机内部资源及功能- 单片机编程语言(汇编语言、C语言)2. 单片机编程与实验:- 基本输入输出编程- 定时器、中断编程- 模数转换、串行通信编程3. 单片机应用案例:- 实例分析:温度控制器、智能小车等- 创新设计:学生自主选题,设计单片机应用项目4. 实验操作与调试:- 实验步骤与方法- 常用工具与仪器的使用- 故障分析与调试技巧教学大纲安排:第一周:单片机基础知识学习,包括原理、结构、编程语言等第二周:基本输入输出编程,实验一:LED灯控制第三周:定时器、中断编程,实验二:简易电子时钟第四周:模数转换、串行通信编程,实验三:温度传感器数据采集第五周:单片机应用案例分析,学生自主选题,设计单片机应用项目第六周:实验操作与调试,完成设计项目,撰写实验报告教材章节关联:教学内容与教材《单片机原理与应用》相关章节紧密关联,具体包括:- 第一章:单片机概述- 第二章:单片机的结构与原理- 第三章:单片机编程语言- 第四章:单片机内部资源及应用- 第五章:单片机实验与调试教学内容确保科学性和系统性,以培养学生的实际操作能力为目标,注重理论与实践相结合,提高学生的创新能力和实践技能。

单片机课程设计实验总结

单片机课程设计实验总结

单片机课程设计实验总结一、实验目标在本次单片机课程设计中,我们的主要目标是掌握单片机的基本原理和应用,通过实际操作,加深对单片机内部结构和工作原理的理解,同时掌握单片机编程的基本技能。

二、实验原理单片机是一种集成电路芯片,内部集成了计算机的硬件系统,具有体积小、功耗低、可靠性高等优点。

在本次实验中,我们主要学习了单片机的内部结构,包括CPU、存储器、I/O口等,以及单片机的指令系统和工作原理。

三、操作过程1. 硬件搭建:根据实验指导书的要求,我们搭建了单片机的硬件电路,包括电源、晶振、复位等部分,确保电路连接正确无误。

2. 编程环境设置:安装了Keil软件,并设置了单片机型号和编译选项,以便进行单片机的编程。

3. 编写程序:根据实验任务的要求,我们编写了单片机的程序,实现了指定的功能。

4. 调试程序:通过仿真器对程序进行了调试,检查程序的正确性和稳定性。

5. 程序烧写:将调试好的程序烧写到单片机中,观察实际运行效果。

四、问题与解决方案在实验过程中,我们遇到了一些问题,例如程序编译错误、硬件电路故障等。

针对这些问题,我们采取了以下解决方案:1. 对于程序编译错误,仔细检查代码中的语法错误和拼写错误,确保程序正确无误。

2. 对于硬件电路故障,检查电路连接是否正确,元件是否完好,确保电路工作正常。

五、总结与反思通过本次单片机课程设计实验,我们掌握了单片机的基本原理和应用技能,能够独立完成单片机的编程和调试。

同时,我们也意识到了在实验中需要更加细心和耐心,特别是在调试程序和排查故障时需要更加耐心和细致。

在未来的学习和实践中,我们将继续深入学习单片机的相关知识,提高自己的实践能力和综合素质。

单片机设计实验报告简单计算器的设计

单片机设计实验报告简单计算器的设计

目录1.总体方案选择 (2)1.1 实验要求: (2)1.2方案设计 (2)2.硬件原理电路图的设计及分析 (2)2.1主控模块 (2)2.1.1 STC89C52单片机主要特性 (3)2.1.2 STC89C52单片机管脚图 (4)2.1.3 STC89C52单片机的中断系统 (4)2.1.4 STC89C52单片机的定时/计数器 (4)2.2矩阵键盘模块设计: (5)2.2.1矩阵键盘原理介绍 (5)2.2.2矩阵键盘电路设计 (5)2.3 LCD液晶显示器简介 (6)2.3.1液晶模块简介 (6)2.3.2液晶显示部分与89S52的接口 (7)3系统软件设计 (9)3.1系统软件流程图 (9)3.2系统整体原理图 (10)4.系统调试 (11)4.1硬件调试 (11)4.2软件调试 (11)4.3调试结果 (12)5. 心得体会 (13)1.总体方案选择1.1 实验要求:1)通过小键盘实现数据的输入,并在LED数码管上显示2)实现+、-、*、/3)在LED数码管上显示结果4)并有清零,退出功能1.2方案设计本系统以STC89C52单片机为控制核心,对系统进行初始化,主要完成对键盘的响应、液晶显示灯功能的控制,起到总控和协调各模块之间工作的作用。

单片机通过检测键盘读取使用者按下对用功能的按键,然后通过单片机内部运放把运算的结果显示在液晶屏幕上。

图1-1系统结构框图本系统结构如图1-1所示,本设计可分为以下模块:单片机主控模块、键盘模块、功率放大模块、闹铃模块、按键设置模块。

下面对各个模块的设计方案逐一进行论证分析。

2.硬件原理电路图的设计及分析2.1主控模块STC89C52有40个引脚,4个8位并行I/O口,1个全双工异步串行口,同时内含5个中断源,2个优先级,2个16位定时/计数器。

STC89C52的存储器系统由4K的程序存储器(掩膜ROM),和128B的数据存储器(RAM)组成。

STC89C52单片机的基本组成框图见图2-1。

单片机设计实验报告

单片机设计实验报告

单片机设计实验报告摘要:本实验主要是通过单片机进行控制和设计,探究单片机在实际工程应用中的功能和效果。

实验主要包括数字电子钟的设计和实现,通过单片机的高精度计时功能和驱动功能,实现了数字电子钟的显示和计时功能。

实验结果表明,单片机在数字电子钟设计中具有高效、稳定、精准的特点,能够满足实际工程应用的需求。

关键词:单片机、数字电子钟、设计、实验一、引言单片机是一种集成度高、功耗低、功能强大的微型计算机芯片,广泛应用于各种控制系统和电子产品中。

在工程领域中,单片机常常用于实现各种功能的设计和控制,如数字电子钟、温度控制系统等。

本实验通过数字电子钟的设计和实现,探究了单片机在实际工程应用中的功能和效果。

二、实验目的1.理解单片机的基本结构和工作原理;2.掌握单片机的高精度计时功能;3.熟悉单片机的IO端口控制和驱动功能;4.能够设计和实现一个基本的数字电子钟。

三、实验原理数字电子钟是一种常见的电子产品,其主要功能是显示当前的时间,并能够进行时间的计时和设置等操作。

数字电子钟的实现离不开单片机的计时功能和IO端口的控制功能。

单片机的计时功能主要通过定时器和计数器实现。

我们可以通过设置定时器的频率、工作模式和计数值,来实现不同精度的计时功能。

常见的定时器有TMR0、TMR1等,我们可以根据实际需求选择合适的定时器。

同时,通过设置计数器的初值和使能信号,可以实现计时的开始和暂停。

单片机的IO端口功能主要用于控制外部设备的驱动,如LED数码管的显示、按钮的检测等。

通过设置IO端口的输出状态和输入状态,可以实现数码管的显示和按钮的检测。

四、实验步骤1.确定实验需求和功能,设计数字电子钟的显示和计时方式;2.接线,将单片机与数码管和按钮等外部设备连接,设置IO端口的连接方式;3.编写单片机的程序代码,包括时钟显示和计时功能的实现;4.进行实验测试,验证程序的正确性和实验的有效性;5.总结实验结果,对实验进行评估和改进。

单片机综合设计实验报告

单片机综合设计实验报告

单片机综合设计实验报告《单片机综合设计实验报告》一、实验目的本实验旨在综合应用单片机的知识与技巧,设计并完成一个功能完备的电路系统,提升学生对单片机的综合应用能力。

二、实验原理与设计思路本次实验我们设计了一个温湿度测量系统。

系统分为两部分,温度测量子系统和湿度测量子系统。

温度测量子系统监测环境温度并通过串口将数据发送给上位机;湿度测量子系统监测环境湿度并通过数码管显示当前湿度值。

温度测量子系统的设计思路如下:1.通过传感器获取环境温度数据。

2.使用模拟转换模块将传感器数据转换为数字信号。

3.使用单片机读取模拟转换模块输出的数字信号,并进行相应的处理。

4.使用串口将处理后的温度数据发送给上位机。

湿度测量子系统的设计思路如下:1.通过传感器获取环境湿度数据。

2.使用模拟转换模块将传感器数据转换为数字信号。

3.使用单片机读取模拟转换模块输出的数字信号,并进行相应的处理。

4.使用数码管显示处理后的湿度数据。

三、实验过程与步骤1.按照原理图将电路连接好,并将相关模块与单片机连接。

2.编写单片机程序,包括温度测量子系统和湿度测量子系统的代码。

3.运行程序,监测温度和湿度数据是否准确。

4.将温度数据通过串口发送给上位机并通过终端查看数据是否正确。

5.将湿度数据通过数码管显示,查看数据是否正确。

四、实验结果与分析经过实验,我们成功地设计并实现了一个功能完备的温湿度测量系统。

在温度测量子系统中,通过串口我们能够准确地获取到环境温度数据,并通过上位机进行查看。

在湿度测量子系统中,数码管能够正确地显示当前的湿度数值。

五、实验心得体会通过本实验,我对单片机的应用有了更深入的理解。

在实验过程中,我学习到了如何将传感器的模拟信号转换为数字信号,并通过单片机进行处理和显示。

同时,我也进一步提高了自己的电路设计和编程能力。

通过实际操作与调试,我对于单片机的各个模块有了更深入的了解,也锻炼了自己的动手能力和问题解决能力。

通过本次实验,我不仅加深了对单片机应用的理解,也明白了综合设计实验的重要性。

单片机课程设计报告[5篇]

单片机课程设计报告[5篇]

单片机课程设计报告[5篇]第一篇:单片机课程设计报告《单片机课程设计报告》学校:专业:班级:姓名:学号:指导教师:摘要由于单片机体积小、成本低、使用方便,所以被广泛地应用于仪器仪表、现场数据的采集和控制。

通过本次课程设计掌握单片机硬件和软件方面的知识,更深入的了解单片机的实际应用。

关键词单片机,程序,流水灯,数码管,温度计,键盘扫描,定时器等。

实验内容一、课程设计的目的以本学期对单片机的学习和认识,并通过本次课程设计加以应用,从而达到一个对所学知识的巩固、更深一步的理解,面对一个电子设计,应对出系统的方案,分析出各个板块来,再对各个板块进一步的具体的设计,先进行硬件电路设计,此时一定要考虑好要用什么元件、各个元件的具体参数、是否能实现应有功能,从而得到一个完整的硬件电路。

在根据该电路设计出软件的功能模块、从而完成程序流程图,在根据流程图完成程序的设计,并通过反复的调试、运行、更正,直至完成既定功能为止,最后将软件、硬件结合进行调试、运行,对其功能进行最终测试,并反复思考其测试中遇到相应问题的原因,并将其一一处理,从而完成本次设计的实验要求,以及本次课程设计的最终目的。

实验一:键盘操作实验实验要求:通过本次实验实现对键盘的控制,操作数码管的显示数字。

实验程序:#include #include #include #include #define WR273 XBYTE[0XC000] #define RD244 XBYTE[0XC000] #define uchar unsigned char #define uint unsigned int sbit DQ =P1^0;uint count=0,x,buf[20],tim,flag;uchar fen,shi;uchar codetable_16_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80 ,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};uchar codetable_16_2[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x0 0,0x10,0x08,0x03,0x46,0x21,0x06,0x0e};voidled_clc(void){ XBYTE[0X8000]=0XFF;XBYTE[0X9000]=0XFF;XBYTE [0XA000]=0XFF;XBYTE[0XB000]=0XFF;}void delay(unsigned int i){ while(i--);} void delay_1ms(uint z){ uint i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);} uchar key_test(){ WR273=0XF0;if((RD244&0X0F)!=0X0F)return 1;else return 0;}void time_init(){ TMOD=0X01;TH0=(65536-46080)/256;TL0=(65536-46080)%256;TR0=1;ET0=1;EA=1;} void time_display(){if(count==10000)count=0;XBYTE[0X8000]=table_16_1[coun t%10];XBYTE[0X9000]=table_16_1[count%100/10];XBYTE[0XA00 0]=table_16_1[count%1000/100];XBYTE[0XB000]=table_16_1[co unt/1000];} void TIME_SET(){ uchar a,b,c,d,key;while(flag==1){ led_clc();while(!key_test());a=keyscan();XBYTE[0XB000]=table_16_1[a];while(!key_test());b=keyscan();XBYTE[0XA000]=table_16_2[b];while(!key_test());c=keyscan();XBYTE[0X9000]=table_16_1[c];while(!key_test());d=keyscan();XBYTE[0X8000]=table_16_1[d] ;while(!key_test());key=keyscan();if(key==11){shi = a*10+b;fen = c*10+d;flag=0;} } } void TIME_DIS(){if(tim==60){ fen++;tim=0;if(fen==60){ shi++;fen=0;if(shi==24)shi=0;} } XBYTE[0X8000]=table_16_1[fen%10];XBYTE[0X9000]=table_16_1 [fen/10];XBYTE[0XA000]=table_16_2[shi%10];XBYTE[0XB000]=ta ble_16_1[shi/10];} void main(){ uint temp;led_clc();// serial_init();time_init();while(1){ temp=keyscan();if(temp==10)fla g=1;TIME_SET();//XBYTE[0X8000]=table_16_1[temp];//time_display();TIME_DIS();} } void time()interrupt 2 { uchar m;TH0=(65536-46080)/256;TL0=(65536-46080)%256;m++;if(m==20){ m=0;count++;tim++;} } void serial()interrupt 4 { if(RI==1){ x=SBUF;RI=0;} put_char(x);delay_1ms(5);}实验心得体会:通过本次实验,让我对单片机实验有了更深的了解,认为这个实验还是比较容易的,没有花太多的时间。

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

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

《单片机系统设计》实验报告实验名称:单片机系统设计实验目的:1.学习如何使用单片机进行系统设计与控制;2.掌握单片机的基本原理和工作方式;3.熟悉单片机的编程和程序设计;4.进一步深入了解嵌入式系统的应用。

实验器材:1.单片机开发板;2.电脑;3.适配器;4.传感器模块;5.组合电路板;6.连接线等。

实验步骤:1.连接单片机开发板和电脑,并确保电源供应正常;2.将传感器模块与单片机开发板连接,并进行相关设置;4.运行程序,观察传感器模块采集的数据,并进行相应的控制操作;5.根据实验要求进行数据分析和结果处理;6.将实验结果记录在实验报告中;7.调试相关问题,并进行实验总结。

实验结果:通过本次实验,我们成功地使用单片机进行了系统设计与控制,并实现了相应的功能。

通过连接传感器模块和编写相关程序,我们能够获取传感器采集的数据,并通过单片机控制输出。

在实验过程中,我们还进行了数据分析和结果处理,得到了较为准确的结果。

实验总结:本次实验从理论到实践,使我们更加深入地了解了单片机系统设计的原理和方法。

通过编写控制程序和连接相应模块,我们能够实现对系统的准确控制和数据采集。

同时,我们也学会了如何调试和处理实验中遇到的问题,在实践中不断提高了自己的动手操作能力和问题解决能力。

通过本次实验,我们体会到了嵌入式系统在现代科技中的重要性和广泛应用。

嵌入式系统已经渗透到许多领域,包括家用电器、工业自动化、交通控制等。

掌握嵌入式系统的设计和应用,对我们未来的工作和学习具有重要意义。

通过本次实验的学习,我们不仅提高了自己的动手实践能力和问题解决能力,也培养了我们团队合作意识。

在实验中,我们要求互助互助、相互配合,共同解决实验中遇到的问题,并取得了较好的实验结果。

总之,本次实验在知识理论与实践操作相结合的基础上,通过团队合作完成了实验任务。

实验结果表明,通过单片机系统设计,能够实现对系统的准确控制和数据采集。

实验对我们今后的学习和工作具有重要的指导意义。

  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 实物图。

相关文档
最新文档