c51单片机实习报告

2024-04-08

c51单片机实习报告(精选6篇)

篇1:c51单片机实习报告

基于单片机实现短距离无线通信设计 引言

短距离无线传输具有抗干扰性能强、可靠性高、安全性好、受地理条件限制少、安装灵活等优点,在许多领域有着广泛的应用前景。低功耗、微型化是用户对当前无线通信产品尤其是便携产品的实际需求,短距离无线通信逐渐引起广泛关注。常见的短距离无线通信有基于802.11的无线局域网WLAN、蓝牙(blueTooth)、HomeRF及欧洲的HiperLAN(高性能无线局域网),但其硬件设计、接口方式、通信协议及软件堆栈复杂,需专门的开发系统,开发成本高、周期长,最终产品成本也高。因此这些技术在嵌入式系统中并未得到广泛应用。普通RF产品不存在这些问题,且短距离无线数据传输技术成熟,功能简单、携带方便,使其在嵌入式短程无线产品中得到了广泛应用。

PTR2000引脚简介及设计

2.1 PTR2000器件引脚功能

PTR2000是基于nRF401器件的无线数据传输模块,采用低发射频率、高灵敏度设计。该器件使用433 MHz频段,是真正的单片UHF无线收发一体器件,其工作模式包括工作频道的设置和发送、接收、待机状态,由TXEN、CS、PWM 3个引脚共同决定,其工作模式设置如表1所示。

2.2 PrR2000模块设计

该器件外围的主要电路有以下两个:

(1)与单片机的连接电路单片机AT89C52的RXD和TXD引脚与PTR2000模块的DO和DI引脚直接相连。PTR2000的模式控制引脚与单片机的控制引脚相连。

(2)与PC机的连接电路采用MAX202器件对PTR2000模块和计算机串口进行RS-232和TTL电平转换,将PTR2000与MAX202的输入和输出信号连接,转换后的信号与计算机的串口连接。

硬件设计

在无法使用有线传输的场合,采用无线数据传输模块和单片机相结合进行数据传输是较合理的方案。PTR2000利用串口进行数据传输,而单片机和PC机均带有串口,因此,可利用PTR2000作为单片机和PC机之间数据传输的无线接口,其硬件结构框图如图1所示。

该采集系统主要以AT89C52单片机为控制处理核心。由它完成对数据的采集处理以及控制数据的无线传输。AT89C52单片机具有快速8051内核、8 KB Flash E2PROM、256字节RAM。为实现无线数据传输,采用无限收发一体数据传送MODEM模块PTR2000器件,该器件内部集成高频接收、PLL合成、PSK调制/解调、参量放大、功率放大、频道切换等功能,完全符合无线数据通信的硬件要求。为降低成本,在最小硬件设计的基础上,利用C51高级C语言编程,系统的功能尽可能用软件程序实现。

3.1 单片机的时钟电路和复位电路设计

单片机时钟电路设计中,选择晶振频率11.059 2 MHz,约定PC机和单片机的通信速率为9 600 b/s,并选择相应电容与单片机的时钟引脚相连构成时钟回路。在复位电路设计中,采用复位引脚和相应的电容、电阻构成复位电路。单片机与PTR2000接口原理电路如图2所示。

3.2 单片机与PTR2000接口电路的设计

在图2中,AT89C52单片机主要完成数据的采集和处理,向PTR2000模块发送数据,并接收由PC机通过PTR2000传送的数据。和单片机相连的PTR2000模块主要将单片机的待传数据调制成射频信号,再发送到PC机端的PTR2000模块,同时接收PC机端的PTR2000模块传送的射频信号,并调制成单片机可识别的TTL信号送至单片机。单片机的RXD和TXD引脚分别和PTR2000的DO和DI引脚连接,实现串行数据传输;决定PTR2000模块工作模式的TXEN、CS、PWR 3个引脚分别和单片机I/O控制口的P2.0~P2.2相连,PTR2000工作时,由单片机中的运行控制程序实时控制其工作模式。

3.3 PC机与PTR2000接口电路的设计

该接口电路设计首先需进行电平转换。PC机的串口支持RS-232标准,而PTR2000模块支持TTL电平,选择MAX232器件进行两者间的电平转换,接口电路如图3所示。PTR2000模块进行串行输入、输出,引脚DI、DO通过电平转换器件和PC机串口相连;PTR2000的低功耗控制引脚。PWR接高电平VCC,即PTR2000固定工作在正常工作状态;频道选择引脚CS接GND低电平,即采用固定通信频道1,固定工作在433.92 MHz;PC机串口的RTS信号控制TXEN引脚,以决定PTR2000模块何时为接收和发射状态。PC机和串口的传输速率设定为9 600 b/s,和单片机保持一致。软件设计

无线通信系统的软件设计包括单片机端和PC机端两部分,两部分软件相互配合,设置各自的PTR2000模块的工作状态。

4.1 PTR2000模块程序设计

单片机和PC机端软件配合设置PTR2000的状态(发射或接收),选择固定的通信频道1(CS=0),并让PTR2000模块一直处于正常工作状态(PWM=1)。无线通信实现过程如下:

(1)发送在发送数据之前,应将PTR2000模块置于发射模式,即TXEN=1。然后等待至少5 ms后(接收到发射的切换时间)才可发射数据。发送结束后,应将模块置于接收状态,即TXEN=0。

(2)接收应将PTR2000置于接收模式,即TXEN=0。单片机不发送的绝大部分时间都处于接收状态。当单片机端发送时,PC机端应为接收;当PC机端发送时,单片机端应为接收。

4.2 串行无线通信协议设计

无线通信中,由于外部环境的干扰,通常误码率较高,因此通信协议的设计对保证通信的可靠性十分重要。协议的设计主要是帧结构的设计,在该无线通信系统中,存在指令帧和数据帧。数据帧的内容包括起始字节、数据长度字节、数据字节、结束字节和校验和字节,如表2所示。

起始字节定义为“$”字符,其数值为0x24;结束字节定义为“*”字符,其数值为0x2A。

采用校验和的方法进行帧的校验,将所有字节相加,然后将结果截短到所需的位长。发送端对待发送的数据进行校验和计算,将校验和值放在数据后一起发送;在接收端,对接收到的数据进行校验和计算,然后与收到的校验和字节比较,进行误码判断。

对于单片机,指令帧主要有3种:PC机发送给单片机的请求发送指令、错误/超时重发指令、单片机发给PC机的发送完毕指令。在该系统设计中指令帧采用数据帧的格式,将其中的。数据字节固定为一个字节,根据定义的字节判断数据状态。

4.3 程序流程

单片机开始需将无线数据传输模块PTR2000设置处于接收状态,通过串口中断识别由PC机通过无线信道传输来的指令,根据接收指令的内容采集数据并启动发送。发送前需将PTR2000模块设置为发射状态,且等待5 ms才可发送,发送完毕后,向PC机端发送“发送结束指令”,并将PTR2000模块重设为接收状态。图4为系统软件设计流程图。结束语

单片机无线通信系统设计基于PTR2000无线数据传输解决方案,可实现小于300 m的短距离通信,通过实验验证该无线数据传输系统运行良好,单片机控制得相当准确。在应用时将系统作为一个模块可方便地移植,以便构建更为复杂的无线通信网络,可应用于小型无线网络、无线抄表、小区传呼、工业数据采集系统、安全防火系统等领域,具有一定实用价值。

篇2:c51单片机实习报告

系(部):电子与通信工程系

课题名称 交通灯程序设计

设计内容及要求(1)课题内容:

以单片机为核心,设计一个简单交通灯控制系统,用于十字路口车辆交通管理,东西、南北两个方向分别设置红、绿、黄3种通行指示灯,计时牌显示路口通行转换剩余时间,另外,在特种车辆如119、120通过路口时,系统可转为特种车辆放行,其他车辆禁止通行的状态,15s后系统恢复正常管理。

发挥部分:东西、南北两个方向通行的时间可以通过键盘设置。

(2)要求:完成该系统的硬件和软件的设计,在Proteus软件上仿真通过后,下载到单片机进行硬件验证。最后就课程设计本身提交一篇课程设计说明书。

设计工作量

1、汇编或C51语言程序设计;

2、程序调试;

3、在Proteus上进行仿真后,进行下载;

4、提交一份完整的课程设计说明书,包括设计原理、程序设计、程序分析、仿真分析、调试过程,参考文献、设计总结等。

进度安排 起止日期(或时间量)设计内容(或预期目标)备注

第一天 课题介绍,答疑,收集材料,C51介绍

第二天 设计方案论证,练习编写C51程序

第三天~第六天 程序设计

第六天~第八天程序调试、仿真

第九天~第十天 系统测试并编写设计说明书

交通灯程序设计

摘要

本次单片机课程设计选择的题目是交通灯程序设计,主要是根据本学期所学的《单片机原理和接口技术》的知识,编写交通灯的控制程序,在WAVE6000集成调试软件上进行编译,并在Proteus 7 Professional软件上进行仿真,观看结果。在经过多次的调试和电路上的修改,实现了所需要的结果(达到了设计任务书上的要求)。主要涉及的内容包括倒计时、中断等,使用芯片80C51进行程序控制。

关键词

AT89C51LED显示交通灯

目录

1、交通灯程序 62、交通灯仿真电路 93、结论与心得 104、存在的不足及建议 10

参考文献 101、交通灯程序

#include

//#include //??

#define ucharunsigned char

#define uintunsigned int

uchar h;

uint r=0;

uint s;

uchar codedis[]={ 0Xc0,0Xf9,0Xa4,0Xb0,0X99,0X92,0X82,0Xf8,0X80,0X90,0Xff};void delay(uint c)

{

uint i,j;

for(i=0;i

for(j=0;j<100;j++);

}

//interrupt

1void t0(void)interrupt 0 using 1

{

delay(2);

if(INT0==0)

{

P1=0xdb;

P0=0xff;

}

for(h=15;h>0;h--)

{

for(s=248;s>0;s--)

{

P0=0xff;

P2=0x01;

P0=dis[h/10];

delay(1);

P0=0xff;

P2=0x02;

P0=dis[h%10];

delay(1);

P0=0xff;

P2=0x04;

P0=dis[h/10];

delay(1);

P2=0x00;

P0=0xff;

P2=0x08;

P0=dis[h%10];

delay(1);

}

}

}

void main(void)

{

EA=1;

EX0=1;

while(1)

{

P1=0xeb;

for(h=15;h>0;h--)

{

for(s=248;s>0;s--)

{if(h<=3)

P1=0xfb;

if(s<=124)

P1=0xeb;

P0=0xff;

P2=0x01;

P0=dis[h/10];

delay(1);

P0=0xff;

P2=0x02;

P0=dis[h%10];

delay(1);

P0=0xff;

P2=0x04;

P0=dis[(h+3)/10];

delay(1);

P2=0x00;

P0=0xff;

P2=0x08;

P0=dis[(h+3)%10];

delay(1);

}

}

P1=0xf3;

for(h=3;h>0;h--)

{ delay(120);

P0=0xff;

P2=0x0a;

P0=dis[h%10];

delay(900);

}

delay(248);

P1=0xdd;

for(h=10;h>0;h--)

{

for(s=248;s>0;s--)

{

if(h<=3)

P1=0xdf;

if(s<=124)

P1=0xdd;

P0=0xff;

P2=0x01;

P0=dis[(h+3)/10];

delay(1);

P0=0xff;

P2=0x02;

P0=dis[(h+3)%10];

delay(1);

P0=0xff;

P2=0x04;

P0=dis[h/10];

delay(1);

P0=0xff;

P2=0x08;

P0=dis[h%10];

delay(1);

}

}

P1=0xde;

for(h=3;h>0;h--)

{

delay(120);

P0=0xff;

P2=0x0a;

P0=dis[h%10];

delay(900);

}

delay(248);

}

}

2、交通灯仿真电路

3、结论与心得

本次单片机程设计收获颇丰,不仅对于WAVE6000集成调试软件和Proteus 7 Professional软件有了进一步的熟悉,使用WAVE6000集成调试软件进行了C语言的程序编写与编译,也再次的复习了本学期所学的知识。

本学期学习了《单片机原理与接口技术》这门功课,主要学习了使用汇编语言进行编写程序,利用单片机实现其功能。这次的课程设计,根据所学知识,包括LED的显示、倒计数器、中断等,进行交通灯程序的设计,对于软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高,也对单片机的使用有了更深刻的了解。遗憾的是没有作出实物,只是在Proteus 7 Professional软件进行仿真,看到了所编程序所实现的功能,完全达到了课程设计的要求。也通过这次的课程设计,对使用C语言进行程序编写,在AT89C51上实现功能,有了更多的了解与认识,也因为学习过C语言,所以很快就摸清了门路。整个设计过程很顺利。

通过这次的课程设计,对《单片机原理与接口技术》所学的知识有了更进一步的了解,也看到单片机的优点。收获颇丰。

4、存在的不足及建议

由于实验室机器的落后,电脑的病毒太多,导致多次劳动的成功打了水漂。实验室电脑不能连网,交流不便。

参考文献

篇3:用C51单片机设计报警接收装置

单片机是单片微型计算机的简称。微型计算机具有体积小,功耗低,价格低,可靠性高,开发使用简便等一系列优点,自问世以来得到了非常广泛的应用。其发展逐步形成两大分支,一是PC机,PC机主要用于高速数据处理,兼顾控制功能。二就是单片机,单片机主要用于控制。

C51单片机含有以下功能部件:一个8位CPU,一个片内振荡器和时钟电路,4KB ROM,128B内RAM,可寻址64KB的外ROM和外RAM控制电路,两个16位定时/计数器,21个特殊功能寄存器,4个8位并行I/O口,一个可编程全双工串口,5个中断源。

2 报警系统一般知识

一般的报警系统由前端探测器、信号和电源传输和中心报警接收控制三个部分组成。如图1所示。

1)前端探测器

前端探测器实现对需要保护的现场的环境状况如温度、压力、烟雾浓度的检测和对震动、物体移动或异常开启等现象的监测。报警系统常用的前端探测器有被动红外探测器、红外幕帘探测器、门磁窗磁探测器、紧急按钮、主动红外探测器、振动探测器、燃气泄漏探测器、烟感探测器等等。

2)传输部分

传输部分含电源供应和信号传输两部分。电源供应主要给前端探测器供应工作电源,一般为直流12V电源,可以由控制中心集中供应电源,也可以在前端就近供应电源。信号传输则实现将前端探测器的探测信号传输给报警主机,由报警主机进行接收和处理。可以直接连接报警主机,也可以经调制后送给报警主机。

3)中心报警接收控制

控制中心安装报警主机,用于接收前端探测器的报警信号并进行处理。通过报警主机的键盘或按键实现对系统的设防、撤防、系统配置等。当有报警发生时,通过报警输出模块发出声光报警,并可与其它设备联动。

由于目前的前端探测器当探测到警情后,其输出信号一般都为一个开关量。所以本设计采用C51单片机的P2口的8条端线来连接前端探测器,提供8个防区,检测由前端探测器送回的开关量信号变化。

2 用C51单片机设计的报警接收装置设计

1)系统结构框图

设计的报警接收装置由C51单片机为主控部分。报警信号输入接口部分负责接收前端探测器送来的开关量信号,送给C51单片机进行判断和处理。控制按键部分有三个按键,布防按键使装置进到布防状态,只有在布防状态下,该装置才能对前端探测器的探测信号作出反应。撤防按键则使装置退出布防状态,此时即使前端探测器被触发,装置也不作出反应。清除按键可以清除上一次报警的信息。显示指示部分用于显示装置目前的工作状态及报警情况,有系统电源指示绿灯、布防状态红色指示灯和用于显示被触发的防区号的LED单位数码管。报警输出部分由一个蜂鸣器组成,在报警时发出声音提示。报警接收装置结构框图如图2所示。

2)硬件电路连接图

装置硬件电路设计如图3所示。

本设计采用C51单片机的P2口的8条端线来连接前端探测器,提供8个防区,检测由前端探测器送回的开关量信号。用P1口连接一个单位的数码显示管,用于显示发生报警的防区号。用P0口的P0.0、P0.1、P0.2连接三个按键,分别起布防、撤防和清除作用。用P0.3连接电源工作指示绿灯,开机后绿灯亮。P0.4连接布防状态和报警状态显示红灯,布防时红灯亮,报警时红等闪烁。用P0.5连接一个蜂鸣器,当有报警发生时发出报警声音。以上连接电路都是在C51单片机最小系统的基础上工作的,C51单片机最小系统由C51单片机加上上电复位电路、外部时钟电路构成。外部时钟电路的振荡频率为6MHZ,每个机器周期为2微秒。由于只使用C51的内部4KB ROM,所以将C51第31脚EA信号拉高。

3)C51单片机程序设计

(1)程序流程图

程序流程图如图4。

(2)程序设计

用汇编语言编写的程序设计如下:

3 总结

用C51单片机设计的报警接收装置结构简单、生产成本低且性能稳定,非常适合需要长时间工作的场合。随着人们生活水平的提高,人们的安全意识也逐步提高,让住宅或工作场所更加安全正成为人们新的追求。除了人为的防范外,更多的是依靠安全防范技术类产品来实现,报警设备正是为满足人们的这个需求而设计的。目前市场上安全防范技术类的产品很多,但价格一般都较高。用C51单片机设计的报警接收装置由于具有成本低、性能稳定的特点,相信会有一定的市场空间。

考虑到节省成本,该装置没有设计数码键盘和报警联动输出等功能。由于水平有限,设计中错误和不足之处难免,敬请批评指正!

参考文献

[1]张志良.单片机原理与控制技术[M].北京:机械工业出版社,2006.

篇4:c51单片机实习报告

关键词:C51单片机优化性能项目超市

[中图分类号]G642 文献标识码:A 文章编号:

0.前言

单片机具有实践性强、软硬兼施的鲜明特点,造成“难学、难教”的困境,毕业生难以满足用人单位的需求[1]。针对单片机特别强调动手实践的特点,应该设计覆盖知识点较为齐全的项目案例组成项目超市,为学生提供充足的实践训练的机会。但是,大部分学生所学的C语言只是应付计算机等级考试的技巧,缺乏真正的编程能力,在项目超市的实践训练中举步维艰。因此,要使得实践顺利开展,首先就要加强学生的编程能力。

1.全面采用C51开展教学

目前国内高校的单片机教学基本上为51[2],而各种单片机的原理和学习方法大同小异,因此下面以51为例展开讨论。51的编程语言主要有2种,也就是汇编语言和C语言版本的C51。其中,汇编语言是用文字助记符来表示机器码的语言,具有面向硬件、占用体积小、执行速度快的优势。但是,汇编语言的学习门槛较高,非专业人员不易涉足,学生难以在短时间内熟练掌握[3]。现在,C51的性能、体积已经接近汇编[4],网上的资源日趋丰富。因此,不能拘泥于传统教材,而应该与时俱进、全面采用C51开展教学,从而降低学生的学习难度,提高学习效率。当然,传统的C语言与单片机存在较大脱节的现象[5]。C51面向的是单片机,有其独特之处,因此需要在教学中特别注意优化的问题。

2.对C51内容的优化

C语言的内容很多,如果按照C语言的模式学习C51,会花费太多时间。实际上,单片机设计中只需要其中的一小部分知识,因此需要对内容进行优化。从实际应用来看,C51最关键的内容有如下几点:常量,变量,数组,if,for,while。只要抓住这几点,大部分的C51程序都能迎刃而解。通过内容精简,极大减轻教学负担,使得学生能够更好更快的学习如何围绕硬件进行编程。从时间看,这几点内容所需花费的时间较少,极大缩短了学习周期。从难度看,这几点均为基础内容,有效的降低了C51的进入门槛。至于那些较为复杂的内容,完全可以通过其他技术替代。例如,指针功能强大,但是学生不易理解,使用也容易出错,普遍对其有抵触情绪。此时,改为数组实现就能较好的解决这个难题。

3.对C51运行性能的优化

在计算机中,用户很难感觉出1us和1ms的速度差异。但是,在单片机中,控制时序相差一两个us就有可能造成系统无法正常工作。不少老师沿用面向计算机的方法去教,学生也沿用传统C语言的方法去学,存在很大问题。因此,在教学中需要特别注意性能优化。

3.1 尽量采用char,少用int

C语言最常用的变量类型是int,学生们也习惯了这个用法。但是,51是8位的,使用16位的int性能很低。此时,应该尽量使用char。下面分别编写了两段小代码,其中无符号int和char分别用了ui和uc的宏定义。

代码1:uc i,j; for(i=250;i>0;i--){for(j=250;j>0;j--);}

代码2:ui k; for(k=62500;k>0;k--);

两段代码都实现了62500次的循环,其中后者的写法更为简洁。进入Keil C51,设置单片机为12MHz的AT89S52,编写程序,编译和调试后,发现两段代码初始化的时间都是389us。但是,它们的结束时间并不一样。其中,char代码所消耗的运行时间为126140-389=125,735us,而int代码为500635-389=500,246us,两者相差3.98倍,如图1所示。由此可见,沿用int并不是一个好习惯。

图1两段代码的运行时间比较3.2 尽量采用i--,少用i++

学生们素闻C++的大名,也习惯了i++的写法,对i--不以为然甚至觉得多余。但是,在C51中情況发生了逆转。

代码3:uc i,j; for(i=0;i<250;i++){for(j=0;j<250;j++);}

该代码的运行时间为188,752us,约为i--的1.5倍。代码1和代码3都是char,为什么还会出现如此明显的差距呢?关键就在于51单片机的DJNZ指令能够实现减1并判断是否为0。而i++需要对累加器A预处理,然后通过INC和CJNE两条指令才能完成。对于这个知识点,如果学生基础一般,可以一笔带过;如果学生兴趣浓厚,则可以引导他们深入学习51的内部结构和指令集,使得学生的理解更加透彻。

3.3 尽量采用for,少用while

for和while都是C语言中的经典循环结构。其中,while更加简洁和易用。下面定义了两段功能相同的代码。

代码4:for(i=255;i>0;i--);

代码5:i=255; while(k--);

测试结果显示,while所消耗的时间为for的3倍多。因此,应该引导学生尽量使用for。

以上是典型的性能优化问题,此外还有多用移位少用乘除法、多用if少用switch等。

4.对C51进行面向硬件的优化

单片机的RAM和ROM一般处于几百B、几十KB级别,硬件资源相当有限。因此,教学时必须注意面向硬件的优化。①尽量采用small的内存模式。单片机有small、compact、large共3种内存模式,分别指向片内RAM、片外8位RAM、片外16位RAM,其容量由小到大,其速度由快到慢。②尽量减少变量,尽量采用局部变量以增加内存单元的利用率。③尽量优化代码结构,减少对ROM的占用。例如,从图1的指令可以看出代码1占用8B,代码2占用14B,存在较大差别。④充分利用IO引脚并进行扩展。单片机所有的工作都依赖IO引脚,而引脚的数量非常有限。因此,应该在教学中引导学生多使用573锁存器,164、595串并转换器,138译码器,以及I2C、SPI总线进行扩展。

5.实践与效果

长期以来,钦州学院的单片机课程一直沿用汇编语言开展教学,学生普遍感到难学,效果很不理想。到了2008年广西大学生电子设计竞赛,教师们发现汇编语言的使用比较困难,编写的程序冗长、难以阅读和理解,无法快速解决问题。经过研究,决定全面转入C51,并在此后几年,针对单片机的特点不断研究C51优化的教学。

经过几年的实践研究,学生普遍感到学习门槛降低了,上手更快了,设计系统的性能和实用性都有了较大进步。在此基础上,钦州学院单片机教学团队根据十几年来积累的丰富资源,设计了面向C51的大量案例,建成了覆盖知识点较广、数量较多、种类齐全的省级课题项目超市,使得学生在掌握C51的基础上,获得大量实践训练的机会[6]。近年来,学生的课程设计、毕业设计的水平,在大学生电子竞赛、大学生创新项目中的成绩稳步提高,并在2013年的电子竞赛中取得了全国奖项的零突破。目前,电子信息工程、自动化等专业毕

业生的动手能力不断增强,受到了用人单位的欢迎,就业率稳步提高并保持在92%以上。

6.结束语

不拘泥于传统教材的汇编,摒弃C语言习惯用法,全面采用C51开展教学,精简优化教学内容,在教学过程中注重性能和面向硬件的优化,大大减低学生的进入门槛,减轻了学生的学习负担,使得学生能够快速上手,并掌握实用性较强编程能力。实践表明,基于C51优化的解决方案效果良好。

参考文献:

[1]荆蕾.单片机实践教学方法的研究[J].大学教育,2012,(6):68-69.

[2]许景辉,张成凤,李宗利.“单片机原理及应用”课程改革实践和探索[J].中国电力教育,2013,35:74-75+82.

[3]陈少明.C51开发单片机应用软件初学者必須突破的几个问题[J].廊坊师范学院学报(自然科学版),2010,10(3):26-28.

[4]贺敬凯,刘德新,管明祥.单片机系统设计、仿真与应用[M].西安:西安电子科技大学出版社,2011:30-32.

[5]陈景波,陈飞,李智超.“C语言”课程中融入“单片机”内容的教学研究[J].中国电力教育,2013,29(26):71-72.

[6]包敬海,张大平,陆安山等.浅谈面向应用型人才培养的单片机课程的改革[J].钦州学院学报,2013,28(8):20-23.

基金项目:广西教育厅教改课题,基于项目超市的单片机实训平台的建设,2013JGB258。

篇5:89C51单片机课程设计

摘 要: 随着现代工农业技术的发展及人们对生活环境要求的提高,人们也迫切需要检测与控制温度。本文通过采用蜂鸣器作为电声元件的温度报警器的设计,阐明了该装置进行设计与制作的具体过程及方法。这种温度报警器结构简单,可操作性强,应用广泛。工作时,温度测量范围为5—38ºC。当前环境温度若超过设定的高温临界温度,由单片机发出报警信号,从而防止带来的不必要的损失。

造成高温火灾有:电气线路短路、过载、接触电阻过大等引发高温或火灾;静电产生高温或或火灾;雷电等强电侵入导致高温或火灾;最主要是机房内电脑、空调等用电设备长时间工作,导致设备老化,空调发生故障,而不能降温;因此机房内所属的电子产品发热快,在短时间内机房温度升高超出设备正常温度,导致系统瘫痪或产生火灾,这时温度报警系统就会发挥应有的功能。

关键词:STC89C51单片机,数字控制,温度计,DS18B20

目 录

摘要.....................................................错误!未定义书签。1 设计要求与方案论证......................................................3 1.1 设计要求..........................................................3 1.2 基本方案..........................................................3 1.2.1 单片机芯片的选择.............................................3 1.2.2 温度传感器设计...............................................3 2 主要元件介绍........................................................2.1 STC89C51介绍..................................................2.1.1 STC89C51引脚介绍........................................2.1.2 单片机最小系统:.............................................5 2.2 DS18B20传感器介绍.................................................5 2.2.1 DS18B20引脚介绍.............................................6 2.2.2 DS18B20的内部结构...........................................6 2.3 数码管介绍........................................................7 2.3.1 数码管概述...................................................7 3 软件部分................................................................8 3.1程序流程图........................................................8 3.2 程序.............................................................8 结论.....................................................................15 参考文献.................................................................16 附录 原理图..............................................................17

主要元件介绍

2.1 STC89C51介绍

2.1.1 STC89C51引脚介绍 ① 主电源引脚(2根)

VCC(Pin40):电源输入,接+5V电源 GND(Pin20):接地线 ②外接晶振引脚(2根)

XTAL1(Pin19):片内振荡电路的输入端 XTAL2(Pin20):片内振荡电路的输出端 ③控制引脚(4根)

RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号

EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。

④可编程输入/输出引脚(32根)

STC89C51单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。

P0口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7 P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7 P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7 P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7

2.2.1 DS18B20引脚介绍

图3:DS18B20引脚

各引脚功能为:I/O为数据输入/输出端(即单线总线),它属于漏极开路输出,外接上拉电阻后,常态下呈高电平。UDD是可供选用的外部电源端,不用时接地,GND为地,NC空脚。

2.2.2 DS18B20的内部结构

DS18B20的内部结构主要包括7部分:寄生电源、温度传感器、64位激光(loser)ROM与单线接口、高速暂存器(即便筏式RAM,用于存放中间数据)、TH触发寄存器和TL触发寄存器,分别用来存储用户设定的温度上下限值、存储和控制逻辑、位循环冗余校验码(CRC)发生器。

图4:DS18B20内部结构

LED 数码显示器是一种由LED发光二极管组合显示字符的显示器件,它使用了8个Led发光二极管,其中七个用于显示字符,一个显示小数点,所以通称为七段发光二极管数码显示器。4位一体数码管,其内部段已连接好,引脚如图所示(数码管的正面朝自己,小数点在下方)。a、b、c、d、e、f、g、dp为段引脚,S1、S2、S3、S4分别表示四个软件设计

3.1 程序流程图

图6:程序流程图

3.2 程序

#include #define uint unsigned int #define uchar unsigned char //宏定义 #define SET P3_1

//定义调整键 #define DEC P3_2

//定义减少键 #define ADD P3_3

//定义增加键 #define BEEP P3_6

//定义蜂鸣器 #define ALAM P1_2

//定义灯光报警

dat>>=1;DQ = 1;// 给脉冲信号 if(DQ)dat|=0x80;Delay_DS18B20(4);} return(dat);} /*****写一个字节*****/ void WriteOneChar(unsigned char dat){ unsigned char i=0;for(i=8;i>0;i--){ DQ = 0;DQ = dat&0x01;Delay_DS18B20(5);DQ = 1;dat>>=1;} } /*****读取温度*****/ unsigned int ReadTemperature(void){ unsigned char a=0;unsigned char b=0;unsigned int t=0;float tt=0;Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作 WriteOneChar(0x44);//启动温度转换 Init_DS18B20();WriteOneChar(0xCC);//跳过读序号列号的操作 WriteOneChar(0xBE);//读取温度寄存器 a=ReadOneChar();//读低8位 b=ReadOneChar();//读高8位 t=b;t<<=8;t=t|a;tt=t*0.0625;t= tt*10+0.5;//放大10倍输出并四舍五入 return(t);} //======================================

{ P0 = ~0x98;//显示C P2 = 0x7F;Delay(400);P0=~LEDData[n];//显示个位

P2 = 0xDF;Delay(400);P0 =~LEDData[m%10];//显示十位

DIAN = 0;//显示小数点

P2 = 0xF7;Delay(400);P0 =~LEDData[m/10];//显示百位

P2 = 0xFD;Delay(400);P2 = 0xff;//关闭显示 } /*****显示报警温度子程序*****/ void Disp_alarm(uchar baojing){ P0 =~0x98;//显示C P2 = 0x7F;Delay(200);P0 =~LEDData[baojing%10];//显示十位

P2 = 0xDF;Delay(200);P0 =~LEDData[baojing/10];//显示百位

P2 = 0xF7;Delay(200);if(set_st==1)P0 =~0xCE;else if(set_st==2)P0 =~0x1A;//上限H、下限L标示

P2 = 0xFD;Delay(200);P2 = 0xff;//关闭显示 } /*****报警子程序*****/ void Alarm(){ if(x>=10){beep_st=~beep_st;x=0;} if((m>=shangxian&&beep_st==1)||(m

BEEP=0;

ALAM=0;} else

if(x>=10){shanshuo_st=~shanshuo_st;x=0;} if(shanshuo_st){Disp_alarm(shangxian);} } else if(set_st==2){ BEEP=1;//关闭蜂鸣器 ALAM=1;EX0=1;//开启外部中断0 EX1=1;//开启外部中断1 if(x>=10){shanshuo_st=~shanshuo_st;x=0;} if(shanshuo_st){Disp_alarm(xiaxian);} } } }

/*****定时器0中断服务程序*****/ void timer0(void)interrupt 1 { TH0=0x3c;TL0=0xb0;x++;} /*****外部中断0服务程序*****/ void int0(void)interrupt 0 {

EX0=0;//关外部中断0 if(DEC==0&&set_st==1){ do{

Disp_alarm(shangxian);} while(DEC==0);shangxian--;if(shangxian

Disp_alarm(xiaxian);} while(DEC==0);xiaxian--;if(xiaxian<0)xiaxian=0;

参考文献

篇6:c51单片机实习报告

单片机实训报告

专 目:基于STC89C52的智能小车设计 名:刘

象 号:20110302113 业:电子信息工程技术

指导老师:何

俐 日

期:2013-01-06

信息工程系电信教研室

目录

引言...............................................................................................................................3 一 整体方案设计.........................................................................................................4 1.1整体方案设计的思路............................................4 1.2整体方案的流程图..............................................4 二 智能小车系统概况.................................................................................................4 2.1恒压恒流桥式2A驱动芯片L298N...................................................................4 2.2直流电机简介..................................................5 2.3显示模块的综合概括............................................7 三 模块方案比较与论证:.........................................................................................9 3.1 电机模块的选择..............................................9 3.2 电机驱动模块的选择..........................................9 3.3 控制器模块的选择............................................9 四 系统硬件电路设计...............................................................................................11 4.1 显示模块的设计.............................................11 4.2 直流电机的驱动模块.........................................12 五 软件的简单介绍...................................................................................................14 5.1 KEIL的简介..................................................14 5.2 PROTUES的简介................................................14 5.3 STC_ISP_V483的简介.........................................15 六 结论.......................................................................................................................18 七 致谢.......................................................................................................................18 参考文献.....................................................................................................................19 附录一:实物图.........................................................................................................20 图1实物图.................................................................................................................20 图2实物图.................................................................................................................21 附录二:总程序.........................................................................................................21

第 1 2 页

湖北轻工职业技术学院

引言

随科学技术的进步,智能化和自动化技术越来越普及,也广泛应用于机器人玩具制造领域,使智能机器人越来越多样化。智能机器人是一个多种高新技术的集成体,它融合了机械、电子、传感器、计算机硬件、软件、人工智能等许多学科的知识,涉及到当今许多前沿领域的技术。而随着社会的不断发展,智能设备的不断出现,无线遥控的运用也越来越广泛。无线遥控器由于控制距离远,抗干扰性强,已越来越多的出现在生活的各个方面。本文使用了一款通用的无线遥控电路,基于STC89C52作为控制核心,采用专用编码解码电路,由于其体积小、功能强大,因此可非常方便的移植到遥控机器人、遥控小车上等,并实现远距离控制。在早期,遥控小车并不少见,但大多产品制造简单,实现的功能少,往往只有一些简单的功能,例如左转右转,前进后退等,大多采用红外控制,外加一些复杂的电路组合而成。遥控小车的使用者针对的是小孩子,但笨重的设备和昂贵的价格往往让许多小孩的甜美梦想落空。在现在,用单片机进行无线遥控小车的方案,利用较少的外设实现了基本的功能。其较强的抗干扰性使得该遥控器具有很好的通用性其功能也日趋完善。其中包括防撞防爆系统和基本的方向控制,另外在行进中可以尽享柔美的音乐,看美丽的灯光随音律而闪烁,让孩子玩得更开心!此外,电路的简化,材料的减少使得价格也降低了不少,真的是物美价廉,可以为孩子的童年再添一些笑语。

第 3 1 页

湖北轻工职业技术学院

一 整体方案设计

1.1整体方案设计的思路

利用红外线传感器发射和接收信号模块来控制单片机,让单片机翻译传输指令,从而实现相应的功能。具体的过程如下:四路红外传感器,每一路发射一个信号,检测接收到的信号,若出现高电平,则说明该方向前方有障碍物,则单片机控制电机正转和反转,从而实现绕开障碍物继续前行。同时还增加一个无线发射和无线接收模块控制单片机,让单片机翻译传输指令,从而实现相应的功能。无线发射模块发出指令,无线接收模块接收信号后,传递给单片机,单片机翻译接收到信号后,传输给驱动电路驱动电机旋转,从而实现让小车的前进、后退、左转和右转。1.2整体方案的流程图

基于单片机STC89C52整体设计的智能小车,根据原来设计的思路上画出了相对应的流程路,由于是整体结构图,就只是画出了大致的结构流程,而细节将在后面做出介绍。

图1整体方案的流程图 二 智能小车系统概况

2.1恒压恒流桥式2A驱动芯片L298N L298是SGS公司的产品,比较常见的是15脚Multiwatt封装的L298N,内部同样包含4通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO

第 4 页

湖北轻工职业技术学院

口提供信号;而且电路简单,使用比较方便。

L298N可接受标准TTL逻辑电平信号VSS,VSS可接4.5~7 V电压。4脚VS接电源电压,VS电压范围VIH为+2.5~46 V。输出电流可达2.5A,可驱动电感性负载。1脚和15脚下管的发射极分别单独引出以便接入电流采样电阻,形成电流传感信号。L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动一台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB连接控制使能端,控制电机的停转。表1是L298N功能逻辑图。In3,In4的逻辑图与表1相同。由表1可知EnA为低电平时,输入电平对电机控制起作用,当EnA为高电平,输入电平为一高一低,电机正或反转。同为低电平电机停止,同为高电平电机刹停。等。

图2单片机利用L298控制电机的原理图

15脚是输出电流反馈引脚,其它与L298相同。在通常使用中这两个引脚也可以直接接地。上图是其与51单片机连接的电路图 2.2直流电机简介 2.2.1直流电机的应用

电动机简称电机,是使机械能与电能相互转换的机械,直流电机把直流电能变为机械能。作为机电执行元部件,直流电机内部有一个闭合的主磁路。主磁通在主磁路中流动,同时与两个电路交联,其中一个电路是用以产生磁通的,称为激磁电路;另一个电路是用来传递功率的,称为功率回路或电驱回路。现行的直流电机都是旋转电驱式,也就是说,激磁绕组及其所包围的铁芯组成的磁极为定子,带换向单元的电驱绕组和电驱铁芯结合构成直流电机的转子。直流电机有以下4方面的优点:

1)调速范围广,且易于平滑调节。

第 5 页

湖北轻工职业技术学院

2)3)4)过载、启动、制动转矩大。易于控制,可靠性高。调速时的能量损耗较小。

所以,在调速要求高的场所,如轧钢机、轮船推进器、电机、电气铁道牵引、高炉送料、造纸、纺织、拖动、吊车、挖掘机械、卷扬机拖动等方面,直流电机均得到广泛的应用。

2.2.2直流电机的基本工作原理

直流电机工作原理:当电刷A,B接在电压为U的直流电源上时,若电刷A是正电位,B是负电位,在N极范围内的导体ab中的电流是从a流向b,在S极范围内的导体cd中的电流是从c流向d。载流导体在磁场中要受到电磁力的作用,因此ab与cd两导体都受到电磁力的作用。根据磁场方向和导体中的电流方向,利用电机左手定则判断,ab边受力的方向是向左的,而cd边则是向右的。由于磁场是均匀的,导体中流过的又是相同的电流,所以ab边和cd边所受电磁力的大小相等。这样,线圈上就受到了电磁力的作用而按逆时针转动。当线圈转到磁极的中性面上时,线圈中的电流等于零,电磁力等于零,但是由于惯性的作用,线圈继续转动。线圈转过半周之后,虽然ab与cd的位置调换了,ab边转到S极范围内,cd边转到N极范围内,但是由于换向片和电刷的作用,转到N极下的cd边中电流方向也变了,是从d流向c,在s极下的ab边中的电流则是从b流向a。因此电磁力的方向仍然不变,线圈仍然受力按逆时针方向转动。可见,分别处在N,S极范围内的导体中电流方向总是不变的,因此线圈两个边的受力方向也不变,这样线圈就可以按照受力方向不停地旋转,通过齿轮或皮带等机构的传动,便可以带动其他机械工作。

从以上分析可以看到,要使线圈按照一定的方向旋转,关键问题是当导体从一个磁极范围转到另一个异性磁极范围时(也就是导体经过中性面后),导体中电流的方向也要同时改变,换向器和电刷就是完成这一任务的装置。在直流电机中,换向器和电刷把输入的直流电变为线圈中的交流电。可见,换向器和电刷是直流电机中不可缺少的关键部件。

当然,在实际的直流电机中,不只有一个线圈,而是有许多线圈牢固地嵌在转子铁芯槽中,当导体中通过电流在磁场中因受力而转动时,就带动整个转子旋转,这就是直流电机的基本工作原理。2.2.3直流电机的参数

转矩-电机得以旋转的力矩,单位为㎏•m或N•m。

转矩系数-电机所产生转矩的比例系数,一般表示每安培电驱电流所产生的转矩大小。

摩擦转矩-电刷、轴承、换向单元等因摩擦而引起的转矩损失。

第 6 页

湖北轻工职业技术学院

启动转矩-电机启动时所产生的旋转力矩。

转速-电机旋转的速度,工程单位为r/min,即转每分。在国际单位制中为rad/s,即弧度每秒。

电枢电阻-电枢内部的电阻,在有刷电机里一般包括电刷与换向器之间的接触电阻,由于电阻中流过电流时会发热,因此总希望电枢电阻尽量小。

电枢电感-因为电枢绕组由金属线圈构成,必然存在电感,从改善电机运行性能的角度来说,电枢电感越小越好。

电气时间常数-电枢电流从零开始达到稳定值的63.2%时所经历的时间。测定电气时间常数时,电机应处于堵转的状态并施加阶跃性质的驱动电压。工程上,常常利用电动机转子的转动惯量J、电枢电阻Ra、电机反电动势系数Ke和转矩系数Kt求出机械时间常数:

Tm(J*Ra)(/Ke*Kt)„1-1 转动惯量-具有质量的物体维持其固有运动状态的一种性质。

反电动势系数-电机旋转时,电枢绕组内部切割磁力线所感应的电动势相对于转速的比例系数,也称发电系数或感应电动势系数。

功率密度-电机每单位质量所能获得的输出功率值。功率密度越大,电机的有效材料的利用率就越高。

转子-rotor;定子-stator;电枢-armature;励磁-excitation。2.3显示模块的综合概括

显示模块包括:LCD1602,温度传感器DS18B20,时钟芯片DS1302三个部分组成。

2.3.1LCD1602的简介

1602B可以显示2行16个字符,有8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光。该模块也可以只用D4-D7作为四位数据分两次传送。这样的话可以节省MCU的I/O口资源。1602B引脚说明如下:

表2.3 LCD液晶显示器各引脚功能及结构

编号 1 2 3 4 符号 VSS VDD VL RS

引脚说明 电源地 电源正极 对比度调节 数据/命令选择

编号 9 10 11 12

符号 D2 D3 D4 D5

引脚说明 双向数据口 双向数据口 双向数据口 双向数据口

第 7 页

湖北轻工职业技术学院 6 7 8 R/W E D0 D1

读/写选择 模块使能端 双向数据口 双向数据口 14 15 16

D6 D7 BLK BLA

双向数据口 双向数据口 背光源地 背光源正极

注意事项:从该模块的正面看,引脚排列从右向左为:15脚、16脚,然后才是1-14脚(线路板上已经标明): VDD:电源正极,4.5-5.5V,通常使用5V电压;

VL:LCD对比度调节端,电压调节范围为0-5V。接电源的正极时对比度最弱,接地电源时对比度最高,但对比度过高时会产生“鬼影”,因此通常使用一个10K的电位器来调整对比度,或者直接串接一个电阻到地;

RS:MCU写入数据或者指令选择端。MCU要写入指令时,使RS为低电平;MCU要写入数据时,使RS为高电平;

R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据; E:LCD模块使能信号控制端。写数据时,需要下降沿触发模块。D0-D7:8位数据总线,三态双向。如果MCU的I/O口资源紧张的话,该模块也可以只使用4位数据线D4-D7接口传送数据。本充电器就是采用4位数据传送方式;

BLA:LED背光正极。需要背光时,BLA串接一个限流电阻接VDD,BLK接地,实测该模块的背光电流为50mA左右;

BLK:LED背光地端。

第 8 页

湖北轻工职业技术学院

三 模块方案比较与论证:

3.1 电机模块的选择

方案1:采用步进电机作为该系统的驱动电机。由于其转过的角度可以精确的定位,可以实现小车前进路程和位置的精确定位。虽然采用步进电机有诸多优点,步进电机的输出力矩较低,随转速的升高而下降,且在较高转速时会急剧下降,其转速较低,不适用于小车等有一定速度要求的系统。经综合比较考虑,我们放弃了此方案。

方案 2:直流电机:直流电机的控制方法比较简单,只需给电机的两根控制线加上适当的电压即可使电机转动起来,电压越高则电机转速越高。对于直流电机的速度调节,可以采用改变电压的方法,也可采用PWM调速方法。PWM调速就是使加在直流电机两端的电压为方波形式,通过改变方波的占空比实现对电机转速的调节。

基于以上分析,我们选择了方案二,使用直流电机作为电动车的驱动电机。3.2 电机驱动模块的选择

方案 1:采用SM6135W电机遥控驱动模块。SM6135W是专为遥控车设计的大规模集成电路。能实现前进、后退、向右、向左、加速五个功能,但是其采用的是编码输入控制,而不是电平控制,这样在程序中实现比较麻烦,而且该电机模块价格比较高。

方案 2:采用电机驱动芯片L298N。L298N为单块集成电路,高电压,高电流,四通道驱动,可直接的对电机进行控制,无须隔离电路。通过单片机的I/O输入改变芯片控制端的电平,即可以对电机进行正反转,停止的操作,非常方便,亦能满足直流减速电机的大电流要求。调试时在依照上表,用程序输入对应的码值,能够实现对应的动作。表1是其使能、输入引脚和输出引脚的逻辑关系。

表3.2 L298N的引脚和输出引脚的逻辑关系

EN A(B)

H H H L

IN1(IN3)

H L 同IN2(IN4)

X

IN2(IN4)

L H 同IN2(IN4)

X

电机运行情况

正转 反转 快速停止 停止

基于以上分析,我们选择了方案二,用L298N来作为电机的驱动芯片。3.3 控制器模块的选择

方案1:采用凌阳的SPCE061A小板作为主控制芯片,而且可以采用凌阳的小车模组,可以很快的完成其基本功能,当是用该小板存在一定的局限性,较难

第 9 页

湖北轻工职业技术学院

扩张功能,而且各个模块的拼凑,没有比集成在一块板的稳定性高。

方案2:采用STC89C52作为主控制芯片,该芯片有足够的存储空间,可以方便的在线ISP下载程序,能够满足该系统软件的需要,该芯片提供了两个计数器中断,对于本作品系统已经足够,采用该芯片可以比较灵活的选择各个模块控制芯片,能够准确的计算出时间,有很好的实时性。

基于以上分析,我们选择了方案二,用STC89C52作为电机的主控制芯片。

第 10 页

湖北轻工职业技术学院

四 系统硬件电路设计

系统采用存储空间较大的STC89C52作为主控制芯片,电动车电机驱动芯片采用L298N;并利用直流电机驱动小车,能较有效的控制其在特定位置转弯及行驶出错处理,该系统无论在结构和技术上都具有较好的科学性。4.1 显示模块的设计

4.1.1 显示模块的仿真图

显示模块中主要考虑的是显示什么,综合考虑后,我想到的首先是时间的显示,于是我采用时钟芯片DS1302来实现时间的显示,单纯的显示时间似乎很无趣,于是我加入了温度的显示,温度传感器DS18B20结构完善,连接简单,功能齐全,易于控制。合并以上的思路,我确定出了显示的模块,具体的仿真图如下:

图3 显示模块的电路原理图

4.1.2 显示模块的流程

显示模块是智能小车额外增加的功能,但它仍然是重要的组成部分,显示模块是如何工作的呢?其实,先是由按键控制时钟芯片DS1302,进行时间的调节,在调节的过程中,信号传递给STC89C52,单片机将其翻译后发送信号给时钟芯片DS1302,时钟芯片DS1302会将时间的改变显示在LCD1602上,同样的道理,温度传感器DS18B20也是先将检测到的信号传递给单片机,单片机再传递给LCD1602

第 11 页

湖北轻工职业技术学院

4.2 直流电机的驱动模块

4.2.1 直流电机驱动模块的仿真图

图4 直流电机驱动模块的仿真图

4.2.2 直流电机驱动模块的流程图

电机驱动模块的核心是电机的驱动芯片及电机,电机选择了直流电机,这样可以方便控制,而电机的驱动芯片L298可以同时控制两个直流电机,其中芯片中连接单片机的5引脚和7引脚用于控制直流电机1,而芯片中的10引脚和12引脚用于控制直流电机2.电机1接的是小车的左轮,电机2接的是小车的右轮,当两个电机一起正向转动时,小车前进;当两个电机一起反向转动时,小车后退;当电机1正转,电机2反转时,小车右转;当电机1反转,电机2正转时,小车左转。由于无线模块只能控制锁存的4条线路,不能将功能都进行有效控制,只能控制前进和后退,所以额外采用按键来控制左转和右转。

第 12 页

湖北轻工职业技术学院

图5 直流电机驱动模块的流程图

第 13 页

湖北轻工职业技术学院

五 软件的简单介绍

在这次研究中,主要用到了keil,protues,proter和STC_ISP_V480等软件 5.1 Keil的简介

单片机开发中除必要的硬件外,同样离不开软件,我们写的C语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。5.2 protues的简介

Protues软件是英国Lab center electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。Protues软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:(1)原理布图(2)PCB自动或人工布线(3)SPICE电路仿真。

支持当前的主流单片机,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。软件仿真功能如下:1)提供软件调试功能 2)提供丰富的外围接口器件及其仿真RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。这样很接近实际。在训练学生时,可以选择不同的方案,这样更利于培养学生。3)提供丰富的虚拟仪器,利用虚拟仪器在仿真过程中可以测量外围电路的特性,培养学生实际硬件的调试能力。4)具有强大的原理图绘制功能。电路功能仿真特点如下:在PROTUES绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTUES的原理图中看到模拟的实物运行状态和过程。PROTUES 是单片机课堂教学的先进助手。PROTUES不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。

第 14 页

湖北轻工职业技术学院

它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。

课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTUES提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台。

随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中PROTUES也能获得愈来愈广泛的应用。

软件缺点:器件库溃乏,库中缺少很多重要芯片,严重影响电路仿真软件出错或乱码,此时仿真效果不及硬件仿真。5.3 STC_ISP_V483的简介

在运行STC_ISP_V483下载软件之前,应该先给出ISP的C程序源代码ISP.C.要注意的是:此程序是在Keil-C中要建立工程文件,包含IAP.C函数,并且在IAP.C和ISP.C中都要保留STC的定义.传入用户代码时,需要与计算机进行通信,一般采用RS232串行通信,数据协议采用简单协议。具体的使用方法:

一、先把学习实验板和计算机连接好(接好串口线和电源)

二、打开STC-ISP v483,在MCU Type栏目下选中单片机,如STC89C52RC:根据您的9针的数据线连接情况选中COM端口,最好把波特率适当下调一些,按图示选中各项:

第 15 页

湖北轻工职业技术学院

图6STC-ISP v483的界面图

三、先确认硬件连接正确,按下图点击“打开文件”并在对话框内找到您要下载的HEX文件:

四、选中两个条件项,这样可以使您在每次编译KEIL时HEX代码能自动加载到STC-ISP,点击“Download/下载”:

五、手动按下电源开关便即可把可执行文件HEX写入到单片机内,下图是正在写入程序截图:

第 16 页

湖北轻工职业技术学院

图7 单片机程序下载截图

第 17 页

湖北轻工职业技术学院

六 结论

根据本次设计要求,我们认真分析了设计课题的需求,还系统学习了51系列单片机的工作原理及其使用方法,并独自设计智能小车的整个项目。

虽然条件艰苦,但经过不懈钻研和努力,购买到了所有所需的元器件,并系统的进行了多项试验,最终做出了整个小车的硬件系统,然后结合课题任务和小车硬件进行了程序的编制,本系统能够基本满足设计要求,能够较快较平稳的是小车沿引导线行驶,但由于经验能力有限,该系统还存在着许多不尽人意的地方有待于进一步的完善与改进。

通过本次课题设计,不仅是对我们课本所学知识的考查,更是对我的自学能力和收集资料能力以及动手能力的考验。本次毕业设计使我们对一个项目的整体设计有了初步认识,还认识了几种传感器。本次毕业设计使我们意识到了实验的重要性,在硬件制作和软件调试的过程中,出现了很多问题,最终都是通过实验的方法来解决的。还有以前对程序只是一个很模糊的概念,通过这次的课题设计使我对程序完全有了一个新的认识,并能使用Keil软件熟练的进行编程了。通过本次课题设计,极大的锻炼了我们的思考和分析问题的能力,并对单片机有了一个更深的认识。

总之,在课题设计的过程中,无论是对于学习方法还是理论知识,我们都有了新的认识,受益匪浅,这将激励我们在今后再接再厉,不断完善自己的理论知识,提高实践运作能力。

七 致谢

本设计能够顺利完成,还承蒙何老师以及身边的组队同学的指导和帮助。在设计过程中,何老师给予了悉心的指导,最重要的是给了我们组队解决问题的思路和方法,并且在设计环境和器材方面给予了大力的帮助和支持,在此,我对何老师表示最真挚的感谢!同时感谢所有帮助过我的同学!

第 18 页

湖北轻工职业技术学院

参考文献

[1]康华光.电子技术基础模拟部分[M].(第四版).北京:高等教育出版社,1999.[2]康华光.电子技术基础数字部分[M].(第四版).北京:高等教育出版社,2000.[3]陈大钦.电子技术基础实验[M].(第二版).北京:高等教育出版社,2000.[4]谢自美.电子线路设计•实验•测试[M].(第三版).武汉:华中科技大学出版社,2006.[5]胡乾斌 李光斌 李玲等.单片微型计算机原理与应用[M].(第二版).武汉:华中科技大学出版社,2006.[6]郭天祥.新概念51单片机C语言教程[M].电子工业出版社,2009.[7]谭浩强.C语言设计[M].(第三版).清华大学出版社,2005.[8]崔炳哲.电子控制入门[M].北京:科学出版社,2003.[9]樊昌信 曹丽娜.通信原理[M].(第六版).北京:国防工业出版社,2009.[10]全国大学生电子设计竞赛组委会编.全国大学生电子设计竞赛[M].北京理工大学出版社,1999.[11]郭强.液晶显示应用技术[M].北京:电子工业出版社,2003.[12]郁有文 常健 程继红.传感器原理及工程应用[M].(第二版).武汉:西安电子科技大学出版社,2006.[13]许纪倩.机械工人速成识图[M].(第二版).北京:机械工业出版社,2009.[14]高军.电动智能小车[D].http:/// [15]Zhi-HongJiang.51MCU technology and application development case selection[M].Tsinghua University Press 2008.第 19 页

湖北轻工职业技术学院

附录一:实物图

图1实物图

第 20 页

湖北轻工职业技术学院

图2实物图

附录二:总程序

}

void dianji1(){

for(j=10;j--;j>0)left2=0;#include #define uchar unsigned char #define uint unsigned int uchar num=1,num1=1,m,m1,i,j;sbit zxun=P0^0;sbit yxun=P0^1;sbit left=P1^5;sbit right=P1^6;sbit left1=P3^0;sbit left2=P3^1;sbit left3=P3^2;sbit left4=P3^3;void dianji2(){ for(i=10;i--;i>0){

if(num>=10)

num=0;

else

{

if(num<=m1)

left=1;

else if(num<10)

left=0;

}

}

{

}

}

void run(){ m=2;

m1=2;left1=1;

left3=1;left4=0;

}

void zuo(){

m=0;m1=1;left1=1;left2=0;left3=1;}

left4=0;void you()

第 21 页

if(num1>=10)num1=0;else {

if(num1<=m)

right=1;else if(num1<10)

right=0;

}

湖北轻工职业技术学院

{ m=1;m1=0;left1=1;left2=0;left3=1;left4=0;} void timer0()interrupt 1 { TH0=0XF8;//1ms定时

TL0=0X30;num++;num1++;dianji2();dianji1();} void main(){ TMOD=0X01;TH0= 0XF8;//1ms定时

TL0= 0X30;TR0= 1;ET0= 1;EA = 1;while(1){

switch(P0&0x03){

case 0x00:

// 全部没有压线,直转

run();

break;

case 0x01:

// 右压线,左转

zuo();

break;

case 0x02:

// 左压线,右转

you();

break;} } }

上一篇:小英雄雨来电影中小学观后感下一篇:中级职称评审填写