单片机c51论文

2024-05-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论文

本章学习内容:

单片机基本原理,如何仿真器,如何编程点亮和灭掉一个LED 灯,如何进入KEILC51uV调试环境,如何使用单步,断点,全速,停止的调试方法

单片机现在是越来越普及了,学习单片机的热潮也一阵阵赶来,许多人因为工作需要或者个人兴趣需要学习单片机。可以说,掌握了单片机开发,就多了一个饭碗。

单片机已经有30 多年的历史了,在中国,高校的单片机课程大多数都是51,而51 经过这么多年的发展,也增长了许多的系列,功能上有了许多改进,也扩展出了不少分支。而国内书店的单片机专架上,也大多数都是51 系列。可以预见,51 单片机在市场上只会越来越多,功能只会越来越丰富,在可以预见的数十年内是不可能会消失的。

下面以51 为例来了解一下单片机是什么东西,控制原理又是什么?

在数字电路中,电压信号只有两种情况,高电平和低电平,用数字来记录就是1 和0。单片机内部的CPU,寄存器,总线等等结构都是通过1 和0 两种信号来运作的,数据也是以1 或者0 来保存的。单片机的输入输出管脚,也就是IO 口,也是只输出或识别1 和0 两种信号,也就是高电平和低电平。当单片机输出一个或一组电平信号到IO 口后,外部的设备就可以读到这些信号,并进行相应操作,这就是单片机对外部的控制。当外部一个或一组电平信号送到单片机的IO 口时,单片机也可以读到这些信号,并进行分析操作,这就是单片机对外部设备信号的读取。当然实际的操作中,这些信号可能十分复杂,必须严格地按照规定的时间顺序(时序)输入输出。每种设备也都规定了自己的时序,只要都严格遵守,就可以控制任何设备,做出只要你想象得出的任何事情。

您可能会再问,我如何让单片机去控制和分析外部设备呢?答案是程序,您可以编写相关的程序,并且把他们烧写到单片机内部的程序空间,单片机在上电时,就会一步一步按照您写的程序去执行指令,做您想做的事情。

在51 标准芯片中,有32 个输入输出IO,分为4 组,每组8 个,分别为P0 口,P1 口,P2 口,P3 口。P1 口的8 条脚就用P1.0 至P1.7 表示,其余类似。51 就是用这32 个口来完成所有外部操作的。对于51 的内部结构,如果您已经了解,那是最好;如果不懂,也可以先放下,在完成了本教程开始的几个章节之后,您就会大有兴趣,自己去寻找资料阅读了。当然,如果您希望成为一个优秀的单片机开发程序员,还是必须熟悉单片机的内部结构及工作原理,切不可偷懒!

在这一章,您将用程序去控制一个LED 发光管的亮和灭。你应该知道,LED 发光管在通过一定电流时亮,不通电就灭。为了不让LED 通过太大的电流把它烧坏,我们还要串上限流电阻。51 的IO 是弱上拉的方式,在输出高电平时,只能输出几十微安的电流到地,而在输出低电平时,VCC 电源可以输入几十毫安的电流到IO。一般LED 需要10 毫安左右电流点亮,我们就将LED 接在电源VCC 和IO 口之间,中间串上电阻,当IO 输出低电平时,灯就亮了,反之,灯就灭了。我们在这个程序里要控制的是P1.0。请参考一下我们将要使用的试验板的电路图。

现在可以开始做试验了,我们打开已经建立好的工程和编写好的程序试验。顺便还会学习一下程序调试的技巧。至于如何建立一个新工程,请参考C51 的帮助文件。请双击lessoncode01 目录下的lesson1.uv2,打开后界面如下:

点一下上图第三排第2 或者第3 个按钮(您的编译器按钮位置不一定在那个位置,自己找找),就可以看到编译结果了。上面显示是0errrs,0warnings,这是最佳的编译结果,如果有error,则无法进行下一步仿真,如果有warning,一定要尽量消除,确实无法消除的,也要确认不会对程序造成影响,才进行下一步的仿真。在编译结果中,我们还可以看到有data,xdata,code 等用了多少字节的报告,要注意您的单片机中是否有这么多的资源,如果不够,将来烧片运行时就可能出现问题。比如AT89C51 的程序空间是4K,xdata 如果没有外扩就是0 个,data 是128 个。超出这些范围,程序就不能在AT89c51 中运行。不同的芯片有不同的容量,如SST89E516RD 就有64K 程序,内部768 字节XDATA,还有256 个字节的data。我们的例程中肯定都考虑了这些了,肯定不会超出,将来自己开发时就要注意了。

下面我们故意把第9 行的P10 写成P11,点编译,因为没有预先定义P11,所以就报告错误了,如下图:

双击一下错误报告的那一行,窗口就也会跳到这一行,方便您进行修改。好了,现在请把错误改回去,再编译一次,出现报告正确了以后,下面开始仿真了。点一下第二行第5 个一个放大镜里面一个d 字母的按钮,就可以进入仿真了,仿真器要事先连接好哟。进入仿真后要退出仿真环境也是点这个按钮。注意,等会如果程序在正在全速运行时,仿真环境是不能直接退出的,得先点停止运行后,再点仿真按钮才可以退出。点进入仿真按钮,程序开始装载,PC 自动运行到了main()停下,并指向了main()函数的第一行。

进入仿真窗口后,如果出现的不是前面的源代码窗口,而是夹有反汇编代码的窗口,直接关掉这个窗口就会恢复到代码窗口。下次进入也会直接进入到源代码窗口。

现在先试验单步,点单步(两个单步都可以,一般点单步跨过)。可以看到灯亮了。PC 指针也指向了下一个

程序行。再点一下单步,PC 又走下一步,灯灭了。再点一次,PC 走到挂起的程序行了,继续点仍然在这一行。这句指令其实就是使程序不断地跳到自己这一行,别的什么也不做。一般称作程序挂起。

一般的实际应用中的程序是不会挂起的,一般是在main 函数里做一个大循环,程序如下:

void main(void)// 主程序 { while(1){ P11=0;//亮灯 P10=1;//灭灯 } } 请将main 函数程序改为上面的代码,我们下一步将试验断点的操作。

在第15 行双击一下,可以看到程序行左边出现了一个红方块,这就是设置断点,再双击一次,断点就取消了。如果程序在全速运行的过程中遇到断点,就会自动停下来给你分析。注意在进入仿真后,并且程序是停止状态时,才可以设置或者取消断点。

现在点全速运行,可以看到程序在断点处停了下来,并且由于前一句指令刚刚执行了点灯,所以这时灯是亮着的。

现在在第14 行设置断点,并且取消上一个断点。

现在点全速运行,可以看到程序在断点处停了下来,并且由于刚刚执行了灭灯,灯是灭着的。好,现在试验全速运行和停止。把断点取消,再点全速运行,可以看到灯是亮着的,但是不是很亮,这是由于程序是循环的,亮灭交替进行,亮的时间并不是全部的时间。现在点停止,可以看到程序停止了,重复几次进行全速和停止,可以发现每次停止的地方不一定是同一位置。

演讲稿

尊敬的老师们,同学们下午好:

我是来自10级经济学(2)班的学习委,我叫张盼盼,很荣幸有这次机会和大家一起交流担任学习委员这一职务的经验。

转眼间大学生活已经过了一年多,在这一年多的时间里,我一直担任着学习委员这一职务。回望这一年多,自己走过的路,留下的或深或浅的足迹,不仅充满了欢愉,也充满了淡淡的苦涩。一年多的工作,让我学到了很多很多,下面将自己的工作经验和大家一起分享。

学习委员是班上的一个重要职位,在我当初当上它的时候,我就在想一定不要辜负老师及同学们我的信任和支持,一定要把工作做好。要认真负责,态度踏实,要有一定的组织,领导,执行能力,并且做事情要公平,公正,公开,积极落实学校学院的具体工作。作为一名合格的学习委员,要收集学生对老师的意见和老师的教学动态。在很多情况下,老师无法和那么多学生直接打交道,很多老师也无暇顾及那么多的学生,特别是大家刚进入大学,很多人一时还不适应老师的教学模式。学习委员是老师与学生之间沟通的一个桥梁,学习委员要及时地向老师提出同学们的建议和疑问,熟悉老师对学生的基本要求。再次,学习委员在学习上要做好模范带头作用,要有优异的成绩,当同学们向我提出问题时,基本上给同学一个正确的回复。

总之,在一学年的工作之中,我懂得如何落实各项工作,如何和班委有效地分工合作,如何和同学沟通交流并且提高大家的学习积极性。当然,我的工作还存在着很多不足之处。比日:有的时候得不到同学们的响应,同学们不积极主动支持我的工作;在收集同学们对自己工作意见方面做得不够,有些事情做错了,没有周围同学的提醒,自己也没有发觉等等。最严重的一次是,我没有把英语四六级报名的时间,地点通知到位,导致我们班有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:单片机c51论文

课程设计

资料袋

电气与信息工程学院学年第学期

课程名称单片机系统课程设计指导教师凌云职称教授学生姓名专业班级测控101学号题目数字钟(C51版)成绩起止日期 2012年12 月 10日~ 2012年 12 月 28 日

目录清单

湖南工业大学

课程设计任务书

2012 —2013 学年第1 学期

电气与信息工程学院测控技术与仪器专业101班 课程名称:单片机系统课程设计设计题目:数字钟(C51版)完成期限:自2012年12 月 17日至2012年12 月28日共2周单片机系统课程设计说明书 起止日期:

篇6:单片机c51论文

基于89C51单片机的光控路灯设计

指导老师:翁志刚

学生姓名:沈韦青

葛宜兵

任务:基于单片机条件下,设计一光控路灯模型。

要求:

1、光照条件充足时,路灯保持熄灭状态,光照不足时,路灯自动开启照明。

2、使用器材:光敏电阻、模数转换器、单片机等。

3、电路简洁,制作原理图并要求仿真。设计方案:

方案一

基于单片机的光控路灯设计

方案二

说明:

因为本课程设计的要求用单片机来实现光控路灯的设计,所以采用方案二,总体设计分为两个模块:主控模块和被控模块。主模块与被控模块之间通过单片机进行连接。

摘要:

近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。

路灯控制方式很多,本系统采用MSC-51系列单片机89C51和相关的光电检测设备来设计智能光控路灯控制器,实现了能根据实际光线条件通过89C51芯片的P1口控制路灯开关功能。随着社会文明的

基于单片机的光控路灯设计

不断发展,城市照明不仅局限于街道的照明,而且发展成了城市景观等装饰性照明的综合市政工程,社会对亮灯率、开关灯的准确率、故障检测的实时性和维修的及时性要求不断提高,利用51系列单片机可编程控制八位逻辑I、O端口实现路灯开关控制的智能化,达到节能、自动控制的目的。避免传统电路对能源的浪费,路灯的自动控制更方便管理,本系统实用性强,操作简单。

本文首先介绍了单片机及嵌入式系统的基本概念、特点和应用。描述了多功能基于51单片机的光控路灯的设计过程。详细说明了以51单片机为核心的软、硬件的研制过程和方法。利用proteus软件设计了电路原理图。完成光控路灯的设计。

一、引言:

随着社会经济的发展,城市照明设施的功能从单纯的以照明为主转变为实现美化环境、改善形象、活跃夜市经济的目的。对城市灯饰的管理与控制迫切需要一种科学、合理、高效的方法。因此,提供一种有效而合理的控制与管理的方法,对城市路灯与饰灯的运行状态进行智能监控显得极为重要。针对城市路灯这样“终端多、地域广、户外、分散、信息量不大”等特点,可以选择单片机智能光控的方式来解决。这样,既克服了传统的路灯控制方法、控制方式单一而无法满足实时监控和管理要求的弱点,又能适应现代城市队灯饰控制的要求。

基于单片机的光控路灯设计

目录

摘要……………………………………………………………………...1 1 引言…………………………………………………………………...3 2 单片机概述…………………………………………………………...5 3 芯片介绍……………………………………………………………...6 3.1 光敏电阻及放大电路………………………………………6 3.2 ADC0804芯片简介…………………………………………9 4 单片机选型…………………………………………………………..13 4.1、AT89C51的特点…………………………………………13 4.2、单片机附属电路………………………………………….14 5 总电路图及工作原理……………………………………………..…16 6 源程序…………………………………………………………..……17 7 仿真结果……………………………………………………….…….18 8 心得体会………………………………………………………….….19 9 参考文献………………………………………………………….….19

基于单片机的光控路灯设计

二、单片机概述:

单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。

单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。通常单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要适当的软件及外部设备相结合,便可成为一个单片机控制系统。

单片机经过1、2、3代的发展,目前单片机正朝着高性能和多品种的方向发展,他们的CPU功能在增强,内部资源在增多,引脚的多功能化,以及低电压低功耗化。

基于单片机的光控路灯设计

三、芯片简介

3.1 光敏电阻及放大电路: 光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光弱,电阻增大。光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的。光敏电阻器的阻值随入射光线(可见光)的强弱变化而变化,在黑暗条件下,它的阻值(暗阻)可达1~10M欧,在强光条件(100LX)下,它阻值(亮阻)仅有几百至数千欧姆。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.4~0.76)μm的响应很接近,只要人眼可感受的光,都会引起它的阻值变化。设计光控电路时,都用白炽灯泡(小电珠)光线或自然光线作控制光源,使设计大为简化。

可见光光敏电阻器:包括硒、硫化镉、硒化镉、碲化镉、砷化镓、硅、锗、硫化锌光敏电阻器等。主要用于各种光电控制系统,如光电自动开关门户,航标灯、路灯和其他照明系统的自动亮灭,自动给水和自动停水装置,机械上的自动保护装置和“位置检测器”,极薄零件的厚度检测器,照相机自动曝光装置,光电计数器,烟雾报警器,光电跟踪系统等方面。光敏电阻的主要参数是:

基于单片机的光控路灯设计

(1)光电流、亮电阻。光敏电阻器在一定的外加电压下,当有光照射时,流过的电流称为光电流,外加电压与光电流之比称为亮电阻,常用“100LX”表示。

(2)暗电流、暗电阻。光敏电阻在一定的外加电压下,当没有光照射的时候,流过的电流称为暗电流。外加电压与暗电流之比称为暗电阻,常用“0LX”表示。

(3)灵敏度。灵敏度是指光敏电阻不受光照射时的电阻值(暗电阻)与光照射时的电阻值(亮电阻)的相对变化值。

(4)光谱响应。光谱响应又称光谱灵敏度,是指光敏电阻在不同波长的单色光照射下的灵敏度。若将不同波长下的灵敏度画成曲线,就可以得到光谱响应的曲线。

(5)光照特性。光照特性指光敏电阻输出的电信号随光照度而变化的特性。从光敏电阻的光照特性曲线可以看出,随着的光照强度的增加,光敏电阻的阻值开始迅速下降。若进一步增大光照强度,则电阻值变化减小,然后逐渐趋向平缓。在大多数情况下,该特性为非线性。

(6)伏安特性曲线。伏安特性曲线用来描述光敏电阻的外加电压与光电流的关系,对于光敏器件来说,其光电流随外加电压的增大而增大。

(7)温度系数。光敏电阻的光电效应受温度影响较大,部分光敏电阻在低温下的光电灵敏较高,而在高温下的灵敏度则较低。

基于单片机的光控路灯设计

(8)额定功率。额定功率是指光敏电阻用于某种线路中所允许消耗的功率,当温度升高时,其消耗的功率就降低。工作原理

光敏电阻的工作原理是基于内光电效应。在半导体光敏材料两端装上电极引线,将其封装在带有透明窗的管壳里就构成光敏电阻,为了增加灵敏度,两电极常做成梳状。用于制造光敏电阻的材料主要是金属的硫化物、硒化物和碲化物等半导体。通常采用涂敷、喷涂、烧结等方法在绝缘衬底上制作很薄的光敏电阻体

1、光敏电阻的实验图

上图是由光敏电阻和三极管组成的放大电路,白天光照强度较强,光敏电阻呈低阻状态,三极管基极电位较低,三极管处于 8

基于单片机的光控路灯设计

导通状态,发射极为高电平;当夜幕降临时,光照强度变弱,光敏电阻阻值逐渐变大,基极电压上升,当上升到一定程度后,三极管处于截止状态,三极管发射极从而产生低电平,并传送到模数转换器。

3.2 ADC0804芯片(模数转换器)简介

1.工作原理:所谓A/D转换器就是模拟/数字转换器(ADC),是将输入的模拟信号转换成数字信号。信号输入端可以是传感器或转换器的输出,而ADC的数字信号也可能提供给微处理器,以便广泛地应用。

2.ADADC0804引脚图如下:

2、ADC0804引脚图

3.引脚说明

/CS(引脚1)芯片选择信号,低电平有效

/RD(引脚2)外部读取转换结果的控制输出信号。/RD为HI

基于单片机的光控路灯设计

时,DB0~DB7处理高阻抗:/RD为LO时,数字数据才会输出。

/WR(引脚3)用来启动转换的控制输入,相当于ADC的转换开始(/CS=0时),当/WR由HI变为LO时,转换器被清除:当/WR回到HI时,转换正式开始。

CS、RD、WR:是数字控制输入端,满足标准TTL 逻辑电平。其中CS和WR用来控制A/D转换的启动信号。CS、RD用来读A/D转换的结果,当它们同时为低电平时,输出数据锁存器DB0~DB7 各端上出现8位并行二进制数码。

CLKI(引脚4)和CLKR(引脚19):ADC0801~0805片内有时钟电路,只要在外部“CLKI”和“CLKR”两端外接一对电阻电容即可产生A/D 转换所要求的时钟,其振荡频率为fCLK≈1/1.1RC。其典型应用参数为:R=10KΩ,C=150PF,fCLK≈640KHZ,转换速度为100μs。若采用外部时钟,则外部fCLK 可从CLKI 端送入,此时不接R、C。允许的时钟频率范围为100KHZ~1460KHZ。INTR(引脚5):INTR是转换结束信号输出端,输出跳转为低电平表示本次转换已经完成,可作为微处理器的中断或查询信号。如果将CS 和WR 端与INTR 端相连,则ADC0804 就处于自动循环转换状态。CS =0 时,允许进行A/D转换。WR 由低跳高时A/D转换开始,8位逐次比较需8×8=64 个时钟周期,再加上控制逻辑操作,一次转换需要66~73个时钟周期。在典型应用fCLK=640KHZ时,转换时间约为103μs~114μs。当fCLK超过640KHZ,转换精度下降,超过极限值1460KHZ时便不能正常工作。VIN(+)(引脚

基于单片机的光控路灯设计

6)和VIN(-)(引脚7):被转换的电压信号从VIN(+)和VIN(-)输入,允许此信号是差动的或不共地的电压信号。如果输入电压VIN的变化范围从0V到Vmax,则芯片的VIN(-)端接地,输入电压加到VIN(+)引脚。由于该芯片允许差动输入,在共模输入电压允许的情况下,输入电压范围可以从非零伏开始,即Vmin 至 Vmas。此时芯片的VIN(-)端应该接入等于Vmin 的恒值电码坟上,而输入电压VIN仍然加到VIN(+)引脚上。AGND(引脚8)和DGND(引脚10):A/D 转换器一般都有这两个引脚。模拟地AGND 和数字地DGND 分别设置引入端,使数字电路的地电流不影响模拟信号回路,以防止寄生耦合造成的干扰。VREF/2(引脚9):参考电压VREF/2 可以由外部电路供给从“VREF/2”端直接送入,VREF/2 端电压值应是输入电压范围的二分之一所以输入电压的范围可以通过调整VREF/2 引脚处的电压加以改变,转换器的零点无调整。

4.ADC0804转换器的工作时序如图4-8 所示。

基于单片机的光控路灯设计

3、ADC0804转换器的工作时序图

5.AD转换器的设计接口电路图:

图中,ADC0804 数据输出线与AT89C51 的数据总线直接相连,AT89C51的RD、WR和INT1直接连到ADC0804,由于用P1.0线来产生片选信号,故无需外加地址译码器。当AT89C51向ADC0804发WR(启动转换)、RD(读取结果)信号时,只要虚拟一个系统不占用的数据存储器地址即可。

基于单片机的光控路灯设计

四.单片选型

4.1、AT89C51的特点:

AT89C51是带4K字节可编程可擦出的只读存储器的低电压,高性能,CMOS,8位单片机。该器件采用ATMEL高密度非易失存储器制造技术制造。AT89C51管脚图如图2.2所示。

5、AT89C51管脚图

主要特性: 1与MOS-51兼容 4K字节可编程闪烁存储器

基于单片机的光控路灯设计 数据保留时间:10年 4全静态工作:0HZ-24HZ 5 128*8的RAM 6 32可编程I/0口线 7 两个16位的定时计数器 8 5个中断源 9 可编程串行通道 低功耗的闲置和掉电模式 11 片内振荡器和时钟电路 4.2、单片机附属电路

单片机附属电路主要有晶体振荡电路和复位电路。一.晶体振荡电路

1.晶体振荡器的作用:石英晶体振荡器也称石英晶体谐振器,它用来选择频率和稳定频率,是 一种可以取代LC谐振回路的谐振元件。本设计所用的晶体振荡电路如图2.3所示。

6、晶体振荡电路

基于单片机的光控路灯设计

此晶振电路所选用的石英晶振频率为12MHZ。二.复位电路

单片机复位是使CPU和系统的其它功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后 CP=0000H,是单片机从第一个单元取指令。无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位,所以我们必须弄清楚 MCS-51型单片机复位的条件,复位电路和复位后的状态。

单片机复位的条件是:必须使RST/Vpd或RST引脚上加上持续两个机器周期的高电平。例如,若时钟频率为12MHZ,机器周期为1us,则只需2us以上的高电平,在RST引脚出现高电平后的第二个机器周期执行复位。单片机常用的复位电路如图2.4(a)和图2.4(b)所示。

图7(a)复位电路(b)与单片机相连的复位电路

图7(a)复位电路,其电阻阻值的选择和电容容量的选择都是经过计算的,而最后计算的结果时间常数可以满足我们的需求。其计算过程如下:

基于单片机的光控路灯设计

t=0.7RC=0.7*1000*10*10-6=0.7ms 此值远远大于2us,所以此复位电路用。

图7(b)是我们设计中用到的复位电路,为按键复位路,该电路除具有上电复位功能外,若要复位只需按图中RESET键,此时电源Vcc经过R1,R2分压在RESET端产生复位高电平。

五、总电路图及工作原理: 电路图:

8、基于单片机的光控路灯原理图

工作原理:

根据光敏电阻阻值特性,光照较强时,光敏电阻阻值较小,相应传入ADC0804的电压较低,经模数转换后,将得到的8位二进制数输入单片机89C51中,由单片机程序控制路灯开关,当输

基于单片机的光控路灯设计

入单片机电平为高电平时,灯不亮,但输入单片机电平为低电平时路灯亮。本设计中,输入数值小于128H时路灯亮。

六、源程序: #include #define uchar unsigned char #define uint unsigned int sbit cs=P3^0;sbit rw=P3^2;sbit rd=P3^1;sbit shuchu=P3^4;uchar temp;yanshi(uint z){ uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}

void main(){ cs=0;rd=0;/*引脚标注*/ /*延时子程序部分*/

/*主函数部分*/

基于单片机的光控路灯设计

yanshi(40);rw=1;yanshi(70);rw=0;

P1=0xff;temp=P1;if(temp<128)shuchu=0;

/*输出低电平路灯亮*/ else shuchu=1;

/*输出高电平路灯不亮*/ }

七、仿真结果:

当光线充足时,LED等保持熄灭状态,当光线较低时,LED灯亮。

/*判断输入信号值并控制路灯开关*/

基于单片机的光控路灯设计

9、仿真成功截图

八、心得体会:

通过本次课程设计,掌握了一些单片机方面的有关知识,增强了思考能力和动手能力,加深了对微机原理课本知识的理解,认识到课本知识的重要性,学会了使用proteus、keil等相关软件,本次课程设计的题目是基于单片机的光控路灯系统设计,在设计中又一次感受到课本知识的重要性,同时也认识到,只学好课本理论知识是远远不够的,在学习课本知识的同时还要增强自己的动手能力,对一些重要原理及定理要熟练掌握,只有一步一步的把理论知识学好,再积极的进行科学实践才能提高自身的素质,为以后现代化建设贡献自己的一份力量。

九、参考文献:

上一篇:一本作文书的“味道”下一篇:《好习惯伴我成长》一年级二班主题班会