河南理工单片机程序设计实验报告 精品
- 格式:doc
- 大小:35.01 KB
- 文档页数:3
单片机实验报告引言:单片机是一种集成了处理器、存储器和输入输出设备的微型计算机,广泛应用于电子设备中。
本实验通过对单片机的学习和实践,探索了其原理和应用。
一、实验目的本次实验的目的是熟悉单片机的基本原理和操作方法,掌握单片机的编程语言和开发工具,实现简单的实时控制和数据采集。
二、实验装置及材料1. 单片机:我们选择了常用的51系列单片机,拥有较好的性能和兼容性。
2. 开发板:用于实验中运行和调试所写的程序。
3. 传感器:温度传感器、光照传感器等,用于实现数据采集。
4. LED灯和蜂鸣器:用于实现实时控制和输出。
5. 连接线:将单片机与传感器、开发板等连接起来。
三、实验过程和结果1. 单片机的编程语言:单片机主要使用汇编语言和C语言进行编程。
汇编语言能够直接操作硬件资源,灵活性较高;而C语言则更易于理解和编写,可提高开发效率。
我们选择了C语言进行编程。
2. 开发工具:为了编写和调试单片机程序,我们使用了KeilC51和Proteus软件进行开发。
Keil C51提供了编译器和调试器,可对程序进行编译和调试;Proteus能够模拟开发板的运行情况,方便我们验证程序的正确性。
3. LED控制实验:我们首先进行了LED控制实验,通过单片机的I/O口来控制LED的开灭。
编写程序后,在开发工具中进行仿真,确保程序和电路无误后,将程序下载到单片机上进行实际运行。
实验结果显示,当程序指定LED灯为高电平时,LED灯亮起;当程序指定为低电平时,LED灯熄灭。
4. 数据采集实验:接下来,我们进行了数据采集实验,利用温度传感器和光照传感器采集环境温度和光照强度。
将传感器与单片机连接后,编写相应程序进行数据读取。
实验结果显示,我们能够通过单片机读取到精确的温度和光照数值。
5. 实时控制实验:为了验证单片机的实时控制能力,我们使用蜂鸣器进行了实时报警实验。
通过编写程序,设置蜂鸣器的开关状态,当某个条件满足时,蜂鸣器会发出警报声。
河南理工大学《单片机应用与仿真训练》设计报告基于单片机的出租车计价器的设计姓名:学号:专业班级:指导老师:所在学院:电气工程与自动化2014年3月11日摘要本设计的是一个基于单片机AT89S52的出租车自动计费设计,附有复位电路,时钟电路,键盘电路等。
复位电路是单片机的初始化操作,除了正常的初始化外,为摆脱困境,通过复位电路可以重新开始。
时钟电路采用12MHz的晶振,作为系统的时钟源,具有较高的准确性。
在上电时四位共阴极5461AS数码管显示最初的起步价,里程收费,等待时间收费三种收费,通过按键可以调整起步价,里程收费,等待时间收费。
通过按键模拟出租车的运行,暂停,停止。
在5461AS液晶上可以显示运行的时间,运行时暂停的时间,通过计算可以得出总共的费用和总的路程。
在这里主要是以AT89S52单片机为核心控制器,P0口接5461AS液晶显示模块,P1口接按键的,通过按键输入。
关键词:单片机AT89C51;AT89S52;5461AS液晶;出租车计费器;- 1 -河南理工大学大学课程设计说明书目录前言 ............................................................................................................................................. - 2 -第一章出租车计价系统的设计要求与设计方案....................................................................... - 3 -1.1出租车计价器设计要求 (3)1.2系统主要功能 (3)1.3方案论证与比较 (3)第二章出租车计价系统的硬件设计.......................................................................................... - 5 -2.1 振荡电路 (5)2.2 复位电路设计 (5)2.3 键盘接口电路 (6)2.4 显示电路 (7)2.5 路程测量部分 (7)2.6 单片机各引脚功能说明 (8)2.7 5461AS液晶的简介 (9)第三章出租车计价系统的软件设计........................................................................................ - 12 -3.1单片机资源使用 (12)3.2中断子函数 (12)3.3判键子函数 (13)3.4显示子程序 (13)3.5总程序流程框图 (15)第四章PROTEUS的简介 ............................................................................................................. - 16 -4.1P ROTEUS介绍 . (16)第五章设计体会与小结........................................................................................................... - 17 -参考文献 ..................................................................................................................................... - 18 -附录 ......................................................................................................................................... - 19 -一.源程序 (19)二.设计总图 (25)- 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口输出高低电平,控制数码管显示数字。
单片机课程设计实验报告单片机课程设计实验报告引言单片机是嵌入式系统中常见的一种计算机芯片,具有体积小、功耗低、成本低等优势。
本次实验旨在通过单片机的应用设计,加深对单片机原理和应用的理解,并提升解决问题的能力。
实验目的本次实验的目的是设计一个简单的温度监测系统,通过单片机采集温度传感器的数据,并将数据显示在液晶显示屏上。
通过这个实验,我们可以掌握单片机的基本编程和电路连接方法,同时加深对温度传感器的原理和应用的理解。
实验原理1. 单片机基本原理单片机是一种集成电路,内部包含了CPU、内存、输入输出端口等功能模块。
通过编程,可以控制这些功能模块的工作,实现各种应用。
2. 温度传感器原理温度传感器是一种能够感知环境温度变化的器件,常见的有热敏电阻、热电偶等。
本次实验使用的是热敏电阻,其电阻值随温度的变化而变化。
实验材料1. 单片机开发板2. 温度传感器3. 液晶显示屏4. 连接线等实验步骤1. 连接电路将单片机开发板与温度传感器、液晶显示屏连接起来,确保电路连接正确无误。
2. 编写程序使用C语言编写单片机的程序,实现温度传感器数据的采集和液晶显示屏的显示。
程序的基本思路是通过单片机的模拟输入端口读取温度传感器的电阻值,然后将电阻值转换为温度值,并将温度值显示在液晶显示屏上。
3. 烧录程序将编写好的程序烧录到单片机开发板上,确保程序能够正常运行。
4. 实验测试将温度传感器放置在不同的环境中,观察液晶显示屏上的温度数值是否能够准确显示,并记录实验结果。
实验结果与分析经过实验测试,我们发现温度传感器能够准确地采集环境温度,并将温度数值显示在液晶显示屏上。
通过对比实际温度和显示温度的差异,我们可以评估温度传感器的准确性和精度。
实验总结通过本次实验,我们深入了解了单片机的基本原理和应用,掌握了单片机的编程方法和电路连接方法。
同时,我们也加深了对温度传感器的原理和应用的理解。
这些知识和技能对于今后的学习和工作都具有重要意义。
一、实训目的通过本次单片机程序设计实训,使学生掌握单片机程序设计的基本方法和步骤,提高学生的实际操作能力和编程技巧,培养学生在电子工程领域中的实践能力。
同时,通过实训加深对单片机原理、指令系统、接口技术等方面的理解,为后续单片机技术课程的学习打下坚实基础。
二、实训内容1. 实训环境本次实训采用Keil C51软件进行单片机程序设计,仿真平台为Proteus。
2. 实训任务(1)熟悉单片机硬件结构及指令系统;(2)掌握单片机C语言编程技巧;(3)熟练运用Proteus进行仿真实验;(4)设计并实现以下功能:①控制LED灯闪烁;②实现按键输入,控制LED灯点亮或熄灭;③实现定时器中断,控制LED灯以一定频率闪烁。
三、实训过程1. 熟悉单片机硬件结构及指令系统在实训过程中,我们首先学习了单片机的硬件结构,包括CPU、存储器、输入/输出接口等。
同时,我们掌握了8051单片机的指令系统,包括数据传送、算术运算、逻辑运算、控制转移等指令。
2. 掌握单片机C语言编程技巧在实训过程中,我们学习了单片机C语言的语法规则,掌握了变量声明、数据类型、运算符、函数等基本概念。
通过编写简单的程序,我们熟悉了单片机C语言编程的基本技巧。
3. 熟练运用Proteus进行仿真实验Proteus是一款功能强大的仿真软件,能够模拟单片机的硬件电路和程序运行。
在实训过程中,我们学会了如何使用Proteus创建电路图、添加元器件、设置仿真参数等操作。
通过仿真实验,我们验证了程序的正确性,提高了编程能力。
4. 设计并实现以下功能(1)控制LED灯闪烁设计思路:使用定时器中断,每隔一定时间改变LED灯的状态。
程序代码:```c#include <reg51.h>void Timer0_Init() {TMOD = 0x01; // 设置定时器模式为模式1TH0 = 0xFC; // 设置定时器初值TL0 = 0x18; // 设置定时器初值ET0 = 1; // 使能定时器0中断EA = 1; // 使能全局中断}void main() {P1 = 0xFF; // 初始化LED灯状态Timer0_Init(); // 初始化定时器while (1) {// 主循环}}void Timer0_ISR() interrupt 1 {TH0 = 0xFC; // 重新装载定时器初值TL0 = 0x18; // 重新装载定时器初值P1 ^= 0x01; // 切换LED灯状态}```(2)实现按键输入,控制LED灯点亮或熄灭设计思路:使用外部中断,检测按键状态,控制LED灯点亮或熄灭。
摘要本次设计是以单片机为核心,温度传感器为外扩来实现对环境温度的实时监测。
单片机是一个集成在一块芯片上完整的计算机系统。
它具有优异的性能:价格比较低、集成度高、体积小、可靠性高、控制功能强、低电压、低功耗等特点。
单片机广泛应用于我们生活的各个领域,现今几乎很难找到哪个领域没有单片机踪迹:办公自动化领域、商业营销领域、汽车及通信、计算机外部设备、模糊控制等各领域中。
DS18B20是常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。
DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。
DS18B20采用一线通信接口,在使用时应完成ROM设定,否则记忆和控制功能将无法使用。
LCD液晶显示器的构造是在两片平行的玻璃基板当中放置液晶盒,下基板玻璃上设置TFT(薄膜晶体管),上基板玻璃上设置彩色滤光片,通过TFT上的信号与电压改变来控制液晶分子的转动方向,从而达到控制每个像素点偏振光出射与否来显示信息的目的。
设计将用AT89C51单片机作为核心来构建测量周围温度的数字显示系统。
用DS18B20智能温度传感器作为检测元件;用LCD数码只读显示温度。
通过模块的设计将各个部分不同功能的硬件组合起来达到最终目的。
具体步骤主要包括:体设计,系统模块,程序编写与分析,实验仿真,硬件电路连接。
该数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,可以用于对测温要求比较高的场所。
目录1 概述1.1 单片机简介 (3)1.2 DS18B20初识 (3)1.3 浅谈LCD (3)2 系统总体方案及硬件设计2.1 主控制器 (4)2.2 温度传感器 (5)2.3 显示电路 (6)3 软件设计3.1 程序流程图 (6)3.2 温度读取程序 (7)3.3 温度转换程序 (7)3.4 温度计算程序 (7)3.5 数据显示及更新程序 (8)4 Proteus软件仿真4.1 Protues简介 (8)4.2 仿真电路图 (9)5课程设计体会 (10)6参考文献 (11)附录1 (12)附录2 (17)概述1.1单片机简介单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。
实验一并行输入输出口的使用一、实验目的:学会设计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语句,可直接处理并行多分支选择问题,从匹配表达式的括号开始执行,不再进行判断。
单片机实验报告范文单片机(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. 掌握单片机的编程方法和调试技巧;3. 通过实际操作,加深对单片机原理的理解和应用。
二、实验内容1. 单片机基本原理实验;2. 单片机编程实验;3. 单片机接口实验。
三、实验器材1. 单片机实验板;2. 编程器;3. 调试器;4. 仿真软件;5. 实验指导书。
四、实验步骤1. 单片机基本原理实验(1)搭建单片机最小系统,包括电源、晶振、复位电路、时钟电路等;(2)观察单片机的基本引脚功能,如P1、P2、P3等;(3)了解单片机的存储器结构,包括ROM、RAM、特殊功能寄存器等;(4)学习单片机的指令系统,如数据传送指令、算术逻辑运算指令、控制指令等。
2. 单片机编程实验(1)使用Keil uVision5软件,编写单片机程序;(2)学习C51语言编程,掌握数据类型、运算符、控制结构等;(3)编写程序实现点亮LED灯,观察程序运行效果;(4)编写程序实现按键输入,读取按键状态。
3. 单片机接口实验(1)学习单片机的外设接口,如串口、I2C、SPI等;(2)使用单片机串口通信,实现单片机与PC机的数据传输;(3)编写程序实现I2C通信,读取EEPROM数据;(4)编写程序实现SPI通信,读取传感器数据。
五、实验结果与分析1. 单片机基本原理实验通过搭建单片机最小系统,观察了单片机的基本引脚功能,了解了单片机的存储器结构和指令系统。
实验过程中,掌握了单片机的基本工作原理,为后续编程实验打下了基础。
2. 单片机编程实验使用Keil uVision5软件,编写了点亮LED灯的程序,实现了按键输入读取按键状态。
通过编程实验,掌握了C51语言编程方法,提高了编程能力。
3. 单片机接口实验通过串口、I2C、SPI等接口实验,实现了单片机与PC机的数据传输,读取EEPROM 数据和传感器数据。
实验过程中,了解了单片机的外设接口原理,提高了实际应用能力。
六、实验心得与体会1. 实验过程中,掌握了单片机的基本原理和编程方法,提高了自己的动手能力;2. 通过实验,加深了对单片机原理的理解,为以后的学习和工作打下了基础;3. 在实验过程中,学会了如何查找资料、解决问题,提高了自己的独立思考能力;4. 认识到理论与实践相结合的重要性,只有将所学知识应用于实际,才能真正掌握。
单片机实验报告单片机实验报告引言单片机是一种集成电路芯片,具有微处理器、存储器、输入输出接口等功能,广泛应用于各个领域。
本实验报告将介绍我在单片机实验中的学习和实践经验,包括实验目的、实验步骤、实验结果以及实验心得。
实验目的本次实验的目的是通过使用单片机,学习和掌握单片机的基本原理、编程方法和应用技巧。
具体目标包括了解单片机的基本构成、学习单片机的编程语言、掌握单片机的输入输出操作等。
实验步骤1. 实验准备:在实验开始前,我们首先准备了所需的硬件和软件工具。
硬件方面,我们使用了一块开发板和一片单片机芯片。
软件方面,我们使用了一款单片机开发软件。
2. 硬件连接:将单片机芯片插入开发板的插槽中,并通过连接线将开发板与计算机相连。
3. 编写程序:使用单片机开发软件,编写程序代码。
在本次实验中,我们选择了一个简单的LED灯闪烁的程序作为示例。
4. 烧录程序:将编写好的程序通过编程器烧录到单片机芯片中。
5. 运行程序:将烧录好的芯片插入开发板后,通过电源供电,运行程序。
LED灯将按照程序中设定的频率进行闪烁。
实验结果经过以上实验步骤,我们成功地实现了LED灯的闪烁。
通过调整程序中的参数,我们还可以改变闪烁的频率和模式。
这次实验不仅让我们掌握了单片机的基本编程方法,还让我们对单片机的应用有了更深入的了解。
实验心得通过本次实验,我深刻认识到了单片机在现代电子技术中的重要性和广泛应用。
单片机不仅可以用于控制各种电子设备,还可以应用于嵌入式系统、自动化控制等领域。
掌握单片机的编程和应用技巧,对于我们今后的学习和工作都具有重要意义。
在实验过程中,我遇到了一些困难和问题,但通过查阅资料、与同学讨论等方式,我都得到了解决。
这让我意识到在学习和实践中,积极主动地寻求帮助和解决问题的能力是非常重要的。
此外,我还发现了单片机编程的乐趣。
通过编写程序,我可以控制各种设备的运行,实现自己的创意和想法。
这种创造性的过程给我带来了很大的满足感和成就感。
单片机实验报告
一、定时器或实时时钟实验
1、实验目的
1)数码管动态显示技术
2)定时器的应用
3)按键功能定义
2、完成功能要求
1)通过按键可以设定定时时间,启动定时器,定时时间到,让12个发光二极管闪烁,完成定时器功能。
2)实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别显示分钟和秒)。
上述二个功能至少完成一种功能。
#include <STC10.h>
#define uint unsigned int
#define uchar unsigned char
uchar code a[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //段码组合,共阴极uchar ms,s,min;
//======按键定义=========
sbit H1=P3^6;
sbit L1=P0^5;
sbit L2=P0^6;
sbit L3=P0^7;
//============延时函数ms========
void delay_ms(uint x)
{
uchar i;
while(x--) for(i=0;i<120;i++);
}
//===========数码管显示函数=============
void display(void)
{
P0=0xfe,P1=a[min/10]; //显示分钟的十位
delay_ms(20);
P0=0xfd,P1=a[min%10]; //显示分钟的个位
delay_ms(20);
P0=0xfb,P1=a[s/10]; //显示秒的十位
delay_ms(20);
P0=0xf7,P1=a[s%10]; //显示秒的个位
delay_ms(20);
}
void main(void)
{
uchar i;
TMOD=0x01;
TH0=0x28;
TL0=0x00;
ET0=1;
TR0=1;
EA=1;
P1M0=0XFF;
P1M1=0X00;
while(1)
{ display();
H1=0;
if(!L1)
{
delay_ms(10);
if(!L1)
{
// while(!L1)
// display();
min--; //判断1键按下,分钟减1
if(min==255)
min=59;
while(!L1)
display();
}
}
if(!L2)
{
delay_ms(10);
if(!L2)
{
// while(!L2)
// display();
min++; //判断2键按下,分钟加1
if(min>=60)
min=0;
while(!L2)
display();
}
}
if(!L3) i++;
if(i%2==1) TR0=0;
else TR0=1; //3键控制启停
}
}
void timer0(void) interrupt 1
{
TH0=0x28;
TL0=0x00;
ms++;
if(ms==20)
{
ms=0;
s++;
if(s==60)
{
s=0;
min++;
if(min==60) min=0; //分秒显示}
}
}。