51单片机学习教材内容简介(通用11篇)
内容简介
本书是全面介绍怎样学习、研究单片机的教科书,是一本最贴近产品开发的实用性较强的不可多得的教材。书中介绍了开发单片机产品的方法和必备的工具,以及开发单片机产品的全过程。主要介绍MCS-51单片机结构、单片机最小系统、单片机硬件仿真、软件仿真、编程固化、指令系统、程序设计、定时器使用方法,中断使用方法、系统扩展技术、单片机产品设计。
本书是为全国高职高专编写的教材,具有较强的系统性、先进性、实用性。内容从简单到复杂,由浅入深,辅以实例和软件仿真,通俗易懂,便于自学,可作为高职高专相关类专业教材,也可作为单片机自学教程或培训教程,对从事单片机应用开发的工程技术人员也有一定参考价值。
1 硬件理解
电子技术有硬件、软件之分。单片机的硬件即指:从外形上看, 它也是一个集成块。但是, 单片机这种集成块实质上是一台微型电脑, 或者是一台微型计算机, 也可以称之为微型控制器, 就像同一个人学习不同的知识会有不同的技能一样, 使同一台单片机“学习 (输入) ”不同的软件程序, 它也能实现不同的功能, 这也就是单片机应用特别广泛的原因。对于一个不是单片机的普通集成块来说, 是不能输入软件程序的。
以40脚双列直插51系列单片机为例, 学习各引脚的作用或功能[1]。一是所有单片机都必须具有且实现任何功能都必须用到的引脚, 包括:供电电源引脚 (20脚和40脚) ;时钟引脚 (18脚和19脚) , 即在18、19脚之间接一个晶振 (一般为6MHz或12MHz) , 各脚对“地”再各接一个20PF的电容;复位引脚 (第9脚) 。所谓复位就是单片机内部所有的工作部件都回到规定的状态, 程序也复位到头一条上开始逐条运行, 复位电路[1]非常简单, 不再赘述。二是I/O口引脚。40脚51系列单片机共有P0、P1、P2、P3共4个I/O口, 每个I/O口都有8个引脚, 所以共有32个I/O引脚。所谓I/O口, 即单片机信号的输入/输出口, 比如用按键控制LED灯的亮和灭, 那么按键接在I/O口上就起输入信号的作用, LED灯也接在I/O口上, 但相应的I/O口就起输出信号的作用。每个I/O口都有8个引脚, 说明40脚双列直插封装的51系列单片机是8位单片机。实际上, 每个I/O口就对应单片机内部的一个存储器 (或寄存器) , 只不过每个存储器都是2进制8位数, 每位又引出一个脚而已。三是其它特殊功能引脚。如需要“定时”功能时, 就要用14、15脚, 需要“中断”功能时, 就用12、13脚。
2 编制软件
编制单片机的软件程序, 简称编程。软件程序是由编程人员编写的、单片机按照人的意图去工作的文字性的资料, 将这种资料拷进单片机后, 单片机才能按照这些资料的要求有规律的工作。编制软件是单片机应用的核心内容。当然, 在学习单片机之初, 不要总想把各种单片机及其编程方法学全、学完, 即使是所谓的单片机专家, 也不能达到这种状态。为了入门较快, 对于编程的学习方法, 应按以下步骤进行:
1) 软件基础。建议先用汇编语言编制软件程序。51系列单片机汇编语言共有111条指令, 看似难于记忆, 但初学时不要求全, 应深入理解几个简单概念, 这样对学习有较大帮助: (1) 2进制、16进制及其相互转换。所有的单片机 (包括电脑) 都是用2进制进行存储、计算数据的, 在程序中要用到16进制数, 所以要想编制软件, 必须先熟悉2进制、16进制及它们之间的相互换算方法; (2) “位”的概念。前面已经谈到51系列单片机是8位的单片机, 所谓8位即指51系列单片机内部都是8位的2进制数存储器 (寄存器) 。所谓编制软件程序, 实质上就是用文字性的资料编制8位存储器中的每1位反复存储数字1、0的过程; (3) 寻址方式。“址”即是存放2进制数据的存储器的编号地址, 这就如同宾馆设置的房间号。只不过单片机中存储器的地址号都是用2进制或16进制数字编号的, 这就需要在理解、编制程序时注意存储器的地址号和存储器中存储的数据的本质上的不同。所以, 寻址方式实际上就是向某个存储器存储数据或数字时, 寻找数据在几号存储器存放的方法。位寻址, 即存储或改变8位存储器其中的1位数字。
2) 入门捷径。数模电基础较好的人员可直接从网上下载一些现成的软件及相应的硬件电路, 直接进入第3步、第4步的实际应用过程 (先购买一个几十元钱的编程器) , 在制作产品的过程中, 激发自己的学习兴趣, 结合有关指令逐步理解所软件的意义及编制方法。练习越多, 理解越深。数模电基础较差的人员, 也可购买一些单片机类的实验器材及编程器 (网上很多) , 这些器材会给你很多现成的硬件电路及相应的软件, 利用这些器材练习、理解单片机产品的制作过程。
3) 努力方向。在理解了位、址、存储器等概念后, 就可以学习、编制常用的软件程序, 在此过程中, 要注意学习一般的单片机编程思想: (1) MOV指令使用最多, 也最简单, 从MOV指令开始学习编程; (2) 在编制软件程序, 实现单片机的某个功能时, 必须对控制该功能的寄存器进行初始化设置。如若要编制定时/计数器程序, 则需要对其工作方式寄存器TMOD和控制寄存器TCON进行设置, 亦即将这些8位寄存器中的某些“位”置“0”或置“1”, 通过这些设置才能确定是要实现定时功能, 还是要实现计数功能;是用定时/计数器T0, 还是用定时/计数器T1; (3) 熟练掌握常用子程序[2,3], 如代码转换类子程序、查表子程序、运算子程序等; (4) 逐渐掌握常用程序[1], 如数字I/O程序、定时/计数器程序、中断程序、键盘接口程序、A/D、D/A转换程序、I2C总线接口技术、液晶显示器接口程序[5]; (5) 掌握进行程序设计的思路和步骤[4]:分析题意;确定算法;绘制流程图;编写程序;上机调试;程序优化。
3 编程器的使用
现在的编程器一般都和电脑相连, 只要具备基本电脑知识都能很快掌握操作步骤。在用编程器烧写程序过程中, 一般分两步进行 (多数教材没有介绍[1,2,3,4]) :首先用Keil uvision2.0 (或Keil c51) 编译软件将编制好的汇编程序编译, 生成Hex文件。之后用RF-810[5]或Easy51proV2.0烧写软件 (有些教材称之为编程软件[5]) 将Hex文件下载 (烧写) 到单片机。对于这些软件的使用方法, 互联网上有教程, 有的教材上也有详细的介绍[5]。
4 单片机电路的制作及运行
编制、烧写单片机程序的最终目的是让单片机及其外围电路联合实现一定的功能, 这就要制作成固定的电路板电路。市面上的各种单片机实验板就是为初学者设计的电路板电路。数模电基础较好的单片机初学者可以自己动手制作电路板, 不必购买实验板。
现行很多教材及有关单片机学习的各种资料中, 把单片机的仿真练习、用单片机实验板练习等也作为单片机学习的步骤, 给初学者增加了负担, 造成了混乱。严格说来, 这些练习是为文章介绍的“四个步骤”服务的。建议初学者, 特别是电子技术基础较好者不要理会这些步骤。现在的单片机价格便宜、可以烧写数千次, 不必担心多次烧写造成单片机的损坏, 只要认准编制、烧写单片机程序的最终目的, 严格按照单片机的”四步学习法”进行学习和练习, 就能事半功倍, 提高学习效率。
参考文献
[1]匡忠辉, 任富民, 杨旭方.单片机原理及应用[M].北京:机械工业出版社, 2007:8-155.
[2]胡汉才.单片机原理极其接口技术[M].北京:清华大学出版社, 2004:126-166.
[3]胡辉, 李叶紫, 胡力平.单片机原理与应用[M].北京:中国水利水电出版社, 2007:79-96.
[4]马淑兰, 王菲, 李加升.单片机应用技术与实训[M].济南:山东科学技术出版社, 2008:73-94.
【关键词】单片机;应用能力;设计电路;编写程序
【中图分类号】G642【文献标识码】A【文章编号】1001-4128(2011)01-0183-02
作者简介:张仁杰(1959.1-),男,大连,本科,楼宇自动化,工程师。
51单片机是一门应用性很强的课程,他要求设计者,了解51单片机的工作原理,并能掌握各种电路特性的综合知识,才能达到应用目的。
1 51单片机重点要求
51单片机主要是以并行口为主,其时序关系(时序逻辑)清楚,根据实际要求,设计所需要的显示和键盘以及接口电路,达到经济适用的系统电路。根据51单片机的特点,掌握硬件电路设计是最基本的要求,在这个基础上,开发应用软件,就成为51单片应用机水平的体现。因此,硬件电路设计完后,应用程序就直接关系到这套系统应用范围和应用水平。
2 基础知识的掌握
51单片机有数据口、地址口、并行输入/输出口、串行口、中断、时序等电路组成。应用时,主要以扩展这些电路和时需配合为主,形成DI、DO、AO、AI、串行接口电路,这些电路构成一个系统。根据设计要求,编写应用程序。需要掌握并行口、译码电路设计、读/写信号的逻辑关系以及他们相配合的电路知识。
3 知识要点的应用
单片机应用很简单,只要能把单片机设计的出入/输出电路逻辑关系正确,模拟电路部分,逻辑合理,网络应用得当,剩下键盘和显示电路就根据自己的实际要求,设计有效、方便实用的电路,就达到设计目的。目前,最有竞争力的电路是一些显示和键盘模块集成在一起的电路,他们省去设计电路和调试电路的烦恼,并且电路稳定,运行效果很好,得到很多业内人士青睐。为此,很多设计这节省大量周期,缩短开发时间,这是一件很好的事情。事情总是有利,必然有弊。因为,每个设计者都要根据具体项目,要求设计最合理的电路,会使已经设计好的电路,完全满足项目设计要求是一件很难的事情。要想达到设计要求,就会采用更强大的应用电路,完成这次设计要求,会出现有些功能应用不上的现象。形成一种硬件资源浪费,同时加大开发成本。所以,我们认为,如果项目设计的电路规模小,就采用满足项目要求的电路模块,直接使用。如果项目规模很大,就应该自己开发,减少成本,让每一个硬件电路,都能发挥自己的作用。
上面是硬件电路的做法,而软件如何应用呢?我们认为,软件首先采用模块化软件程序,目的是为调试程序和修改程序方便。在这里只是对一些简单软件应用做法进行叙述。因为,每个程序员编写的程序都有所不同,使用方法也不同,没有统一标准。
电路中的抗干扰处理,经常可以看到的,采用软件进行抗干扰处理也是经常出现的。例如:模拟电路采集数据时,由于电路中的干扰信号的存在,就会影像数据采集的真实性,要想让每一个数据,都能得到真实有效的数据,就应该采用软件抗干扰处理功能。具体做法是,可以采集几个或几十个数据求出平均值,得到一个接近真实数据的数据。
另外,数据开关也是同样。实际电路中会有许多干扰信号,要想得到真实有效的的信号,就应该对此开关信号多次采集,确认真实性和有效性。
4 程序调试
程序调试过程说起来简单,调试程序,会感到特别麻烦的一件事情。因为在这个过程中,所有的问题都要实现,在此解决,最后应用到实际中去。在实际现场中,还会出现一些问题,这些问题是想象不到的问题,可以另行处理。调试的过程,就是解决项目中基本要求和可预见的问题的处理过程,每个功能都要进行测试并考核。调试基本操作虽然容易,但是需要讲究调试方法,方法得当,会加快调试速度,减少调试时间。怎样调试可以加快速度呢?一般是分段调试,测试现象,得到满意效果为止;然后联调,联调目的是为了解决模块相互配合的问题;最后统一调试,达到项目系统功能要求。在此期间分别对基本功能进行测试,然后对抗干扰进行测试,对系统稳定性等重要指标进行测试,只有把相应的测试都认真做一遍或几遍,才有可能在实际中不会出现问题。否则会在实际中出现很多预想不到的问题,这些问题与系统本身问题交织在一起,你很难找到解决问题的方法,这就是很多人在实际项目中失败的原因。
5 实际应用遇到的问题及解决方法
实际项目运行是一件很复杂的过程的集合。存在着各种复杂因素,稍不注意,就会导致,项目的失败。
在实际项目中经常会遇到的问题有:
一是工艺问题,这个问题主要出现在开发研究单位,这些单位主要的精力是开发项目,对项目的理论过程没有问题,处理解决问题方法也得当,就是产品工艺存在严重不足,即电路设计本身就存在问题,这是后天无法解决的事情,这种情况,最为麻烦,很不好解决。
二是电路欠考虑,即设计不周到。主要原因是设计这经验不足,缺少实际经验,需要长期磨练,才能很好的解决这个问题。
三是软件编写出现漏洞,这个问题还好办,出现这个问题后,只要把相应的软件匹配上,就可以了,达到完整的结果。
四是使用者随时提出新的条件。即设计单位根据实际项目要求,设计出相应电路和应用软件。使用单位在调试过程中,提出一些改进意见,使系统不能达到完美的结果。因为软件越修改,越容易出现更多的问题。
虽然在实际项目中,会遇到很多问题,主要是这几方面因数。解决这些问题的办法,就是认真调查项目本身的内容和相关细节内容。不能出现遗漏。电路设计不能出现差错,保证电路的逻辑功能和抗干扰性以及模拟电路的正常工作,对强电和弱点要有区分,分别处理。软件上采取模块化编程方法,测试软件时,尽可能把每个功能和细节地方都测试到,即各种条件下的情况都测试到,保证软件的稳定性,要充分考虑到软件修改的方便性,使软件运行在良好的状态下。
5 总结
单片机主要是应用,因为只有应用,才能发挥它的作用。因此硬件是系统运行的基础,软件是在此基础上更好的发挥硬件所提供的功能。两者相互依存,不能分开。只有统筹考虑,才能获得最佳效果,这就是单片机应用的灵魂。
参考文献
[1] 申文达、李可、董云峰.在电工电子实验教学中培养学生的实践与创新能力[J].北华航天工业学校学报.第20卷.2010年7月
[2] 周晓丹,刘凤春,王林.电子工程训练教学改革实践[J].北华航天工业学校学报.第20卷.2010年7月
实验代码 #include 〈reg51、h> void Delay10ms(unsigned int c); void main(){)1(elihwﻩ { ﻩ
P0
= 0x00;
Delay10ms(50);
;ffx0 =
0Pﻩ
ﻩ
;)05(sm01yaleDﻩ } } void Delay10ms(unsigned int c){
unsigned char a,b;
for(;c>0;c-—)
{)——b;0〉b;83=b(rofﻩ { ﻩ ﻩ
for(a=130;a〉0;a--);
} ﻩ ﻩ }
} 实验原理
W W hi i le(1)表示一直循环。
循环体内首先将 P0 得所有位都置于零,然后延时约5 5 0 *10=500ms,接着 0 P0 位全置于 1 1,于就是 D LED 全亮了。接着循环,直至关掉电源..延迟函数就是通过多个for r 循环实现得。
实验 2 流水灯(不运用库函数)
实验现象 起初 led 只有最右面得那一个不亮,半秒之后从右数第二个led也不亮了,直到最后一个也熄灭,然后 led 除最后一个都亮,接着上述过程 #include <reg52、h> #include <intrins、h> void Delay10ms(unsigned int c);
main(){
unsigned char LED;
LED = 0xfe;
while(1)
{ ﻩ
;DEL = 0Pﻩ
Delay10ms(50);
;1 〈〈 DEL = DELﻩ)00x0 == 0P(fiﻩ {
ﻩ
;efx0 = DELﻩ
} ﻩ } ﻩ} void Delay10ms(unsigned int c)
{
unsigned char a,b;
for(;c>0;c-—)
{)—-b;0〉b;83=b(rofﻩ { ﻩ ﻩ ﻩ
;)--a;0>a;031=a(rofﻩ
} ﻩ
} ﻩ} 实验原理
这里运用了C语言中得位运算符, , 位运算符左移, , 初始值得二进制为1 111 1 11 0, 之后左移一次变成1 111 1 100 0,当变成0000
0 0000 时通过 f if 语句重置 1 1 11 1 11110、延迟函数在第一个报告已经说出了,不再多说..实验 3 流水灯(库函数版)实验现象
最开始还就是最右边得一个不亮,然后不亮得灯转移到最右边得第二个,此时第一个恢复亮度,这样依次循环.实验代码 #include 〈reg51、h> #include 〈intrins、h〉 void Delay10ms(unsigned int c); void main(void){
unsigned char LED;
;EFx0 = DELﻩ)1(elihwﻩ { ﻩ
P0 = LED;
;)05(sm01yaleDﻩ ﻩ
;)1,DEL(_lorc_ = DELﻩ } ﻩ} void Delay10ms(unsigned int c){
unsigned char a, b;
for(;c〉0;c——)
{ ﻩ
for(b=38;b〉0;b—-)
{ ﻩ ﻩ
;)-—a;0〉a;031=a(rofﻩ
} ﻩ } } 实验原理
利用头文件中得函数,_cro l _(,), 可以比位操作符更方便得进行 2 2 进制得移位操作, , 比位操作符优越得就是,该函数空位 补全时都就是用那个移位移除得数据, , 由此比前一个例子不需要f if 语句重置操作..数码管实验
实验现象 单个数码管按顺序显示0-9与 A-F。
#include<reg51、h> void Delay10ms(unsigned int c);unsigned char code DIG_CODE[16]={0x3F,0x06, 0x5B,0x4F, 0x66, 0x6D, 0x7D, 0x07,0x7F, 0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71}; void main(void){
;0 = i rahc dengisnuﻩ while(1)
{ ﻩ
P0= ~DIG_CODE[i];
ﻩ
;++iﻩ)61 == i(fiﻩ
{
ﻩ
;0 = iﻩ } ﻩ
;)05(sm01yaleDﻩ }
ﻩ
ﻩ} void Delay10ms(unsigned int c)
//Î ó² î 0us
{
unsigned char a, b;
for(;c>0;c—-)
{ ﻩ
for(b=38;b〉0;b--)
{
ﻩ
;)—-a;0〉a;031=a(rofﻩ
} ﻩ }
} 实验原理
根据数码管得点亮原理,依次找到代表 0 0 -9 ,A--F F 得位码,用循环与延迟函数就可以达到要求了。
实验 动态数码管 #include〈reg51、h> #define GPIO_DIG
P0 ﻩ#define GPIO_PLACE P1
unsigned char code DIG_PLACE[8] = { 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code DIG_CODE[17] = { 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char DisplayData[8];void DigDisplay();void main(void)
{
unsigned char i;
for(i=0; i<8;i++)
{ ﻩ
DisplayData[i] = DIG_CODE[i];
} ﻩ while(1)
{ ﻩ
;)(yalpsiDgiDﻩ }
ﻩ ﻩ} void DigDisplay()
{
;i rahc dengisnuﻩ
;j tni dengisnuﻩ for(i=0;i<8; i++)
{
ﻩ
;]i[ECALP_GID = ECALP_OIPGﻩ ﻩ
;]i[ataDyalpsiD = GID_OIPGﻩ
;01 = jﻩ ﻩ ﻩ
ﻩwhile(j—-);ﻩ
};00x0 = GID_OIPGﻩ ﻩ} 实验原理
依然找到相应数字与字母得编码, , 由于必须通过快速扫 描利用视觉暂留来实现数码管得显示, , 分段码与位码,不断扫描。最后如果更换数字得话, , 需要消隐操作,防止数码管重复显示所带来得不清楚..实验 外部中断 实验现象
每按一下独立按键,就会在数码管显示屏上+1.#include 〈 reg51、h 〉 #include
sbit LS138B=P2^3;sbit LS138C=P2^4;
unsigned int LedNumVal_1,LedNumVal_2,LedOut[8];Unsigned char code Disp_Tab[]= {0x3f,0x06,0x5b,0x4f, 0x66,0x6d , 0x7d,0x07,0x7f,0x6f , 0x40};
void delay(unsigned int i)
{
char j;
for(i;i > 0; i--)
for(j = 200;j > 0;j—-);} void main(void)
{
unsigned char i;
P0=0xff;
P1=0xff;
P2=0xff;
IT0=1;
EX0=1;
IT1=1;
EX1=1;
EA=1;
while(1)
{
LedOut[0]=Disp_Tab[LedNumVal_1%10000/1000];
LedOut[1]=Disp_Tab[LedNumVal_1%1000/100]|0x80;
ﻩ
LedOut[2]=Disp_Tab[LedNumVal_1%100/10];
LedOut[3]=Disp_Tab[LedNumVal_1%10];
;]0001/00001%2_laVmuNdeL[baT_psiD=]4[tuOdeLﻩ
LedOut[5]=Disp_Tab[LedNumVal_2%1000/100];
LedOut[6]=Disp_Tab[LedNumVal_2%100/10];
LedOut[7]=Disp_Tab[LedNumVal_2%10];
for(i=0;i<8; i++)
{
;]i[tuOdeL = 0Pﻩ
switch(i)ﻩ
ﻩ
{
ﻩcase 0:LS138A=0;LS138B=0;LS138C=0; break; case 1:LS138A=1; LS138B=0;LS138C=0;break; case 2:LS138A=0; LS138B=1; LS138C=0;break; case 3:LS138A=1; LS138B=1;LS138C=0; break;case 4:LS138A=0;LS138B=0;LS138C=1;break;case 5:LS138A=1; LS138B=0; LS138C=1;break;case 6:LS138A=0;LS138B=1; LS138C=1; break;
case 7:LS138A=1;LS138B=1; LS138C=1; break;
}
;)051(yaledﻩ } ﻩ
} } void
counter0(void)interrupt 0
using 1 {
EX0=0;
LedNumVal_1++;
EX0=1; } void
counter1(void)interrupt 2 using 2 {
EX1=0;
LedNumVal_2++;
第二章:
存储器空间组成,各区间特点及访问方式,工作寄存器区的设定,程序状态字的位结构及其功能,堆栈的操作,P0-P3各端口的功能,特点,使用方法,单片机复位信号的产生及复位之后的状态,振荡周期、状态周期、机器周期及指令周期的关系及计算方法。第三章:
寻址方式,各类指令(如一般传送类指令五种操作数之间的数据传递,特殊传送类指令的使用方法,算术运算类指令对PSW各标志位的影响,逻辑运算类指令的功能及其使用,控制转移类指令的转移范围等),简单程序的编写与识读(如数据块的搬移,延时程序的实现及如何设定循环次数,查表程序),包括简单C语言程序的识读(如数据传送,数据排序等)。第四章:
中断系统:包括中断源有哪些,如何进行中断允许控制,中断优先级控制,各自的中断入口地址是多少,中断得到CPU服务(即中断响应)的基本条件,中断响应延迟的原因。
定时器:定时器的各种工作方式及其使用方法,定时器的初始化,如何使用定时器实现周期信号的输出。以及相应的简单编程。
串行口:串行口的各工作方式及其使用,接收如何使能,多机通信 第五章:
三总线结构及其实现,片外扩展芯片的编址方式及其特点,片外程序及数据存储器的扩展实现并分析其地址区间,片外IO扩展的实现及其器件编址,简单编程。第六章:
用51单片机用独立键盘控制输出4种频率:1Hz、2Hz、10Hz、50Hz,占空比为50%的脉冲信号。
#include
#define uint unsigned int #define uchar unsigned char sbit d0=P1^0;sbit d1=P3^2;uintnum=0,counter=0;void delay(uint x){ uinti,j;for(i=x;i>0;i--)for(j=110;j>0;j--);} void main(){
d1=1;
d0=1;
d2=1;num=0;
IT0=1;
EX0=1;
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
TR0=1;while(1)
{
} } void Int0()interrupt 0 { delay(10);if(d1==0){
d1=1;num++;if(num==4)num=0;counter=0;}
} void Timer0(void)interrupt 1 {
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;counter++;
if(num==0){ if(counter<=500)
d0=0;if(counter>500)
d0=1;if(counter==1000)counter=0;
} if(num==1){ if(counter<=250)
d0=0;if(counter>250)d0=1;if(counter==500)counter=0;}
if(num==2){ if(counter<=50)d0=0;if(counter>50)d0=1;if(counter==100)counter=0;} if(num==3){ if(counter<=10)
d0=0;if(counter>10)
d0=1;
关键词:单片机;开发板;ISP
中图分类号:TP368.1 文献标识码:A文章编号:1007-9599 (2011) 08-0000-02
MCU Development Borad Design of Multi-function MCS-51
Zhang Daode
(Hubei University of Technology Mechanical Engineering,Wuhan430068,China)
Abstract:The develop boarddesigned here is of common functions,
such as water lamp,timer,interrupt,singing by buzzer,X5045 watch dog,Real time clock DS1302,digital temperature sensor DS18B20,parallel D/A converter DAC0832,serial A/D converter TLC0832,RS-232 interface,
dynamic display of digital tub,ISP download online,SRAM6264 etc.It is meaningful for single chip machine study and development.
Keywords:MCU;Development board;ISP
一、前言
MCS-51系列单片机是目前主流的8位单片机之一[1],但由于它的硬件能力有限,本文设计了一种单片机开发板,综合了当下流行的单片机接口电路,很好地扩充了MCS-51单片机的功能。
二、系统主要组成及开发平台
该系统的组成部分的核心是AT89S52单片机芯片,同时扩展了一块RAM6264,并口8155,同时扩充了DAC0832和TLC0832作为AD/DA转换电路,在此基础上还扩充有FM12864中文液晶图形模块接口电路、DS18B20温度传感检测电路,DS1302时钟显示芯片接口,X5045看门狗接口电路,另外将键盘和数码管显示作为独立的模块,方便了使用也使I/O资源空闲,RS-232串口通信电路可实现开发楹和电脑的双机通信。电源方面设置了USB供电和外接电源供电两种方式。
AT89S52单片机口具有8KB的FLASH[2],通过提供的ISP在线下载线可以现场仿真而无须专门的烧写器即可以将目标程序下载到CPU中,在51 MCU_SYSTEM中就可以观察到程序的运行情况。本文所使用的开发工具为µVision2集成开发平台[3],包含一个高效的编辑器、一个项目管理器和一个MAKE工具。并且支持所有Keil C51工具,包括C编译器、宏汇编器连接/定位器、目标代码到HEX转换器。
三、系统主要硬件设计
(一)单片机部分
CPU采用的是AT89S5X系列的单片机,同时兼容飞利浦P89系列的单片机,在本系统是单片机上的EA接的是高电平,表示对ROM的读写从内部程序存储器开始,并且可以延至外部存储器。在P0口接有470欧的排组上拉数据口,系统主频率12MHz。
图1.单片机部分电路设计
(二)8155部分
在本系统中采用8155实现I/O扩展。8155不仅具有两个8位的I/O端口A、B口和一个6位的I/O端口C口,而且还可以提供256个字节的静态RAM存储器和一个14位的定时/计数器。8155和单片机的接口非常简单,目前被广泛应用。系统用一片73LS138实现8155、6264等芯片的片选。
图2.8155接口电路设计
(三)DAC0832部分
DAC0832是8位D/A转换器,,转换结果为一对差动电流输出,转换时间大约为1us。使用单电源+5V―+15V供电[1]。参考电压为-10V-+10V。在此我们直接选择+5V作为参考电压。DAC0832有三种工作方式:直通方式,单缓冲方式,双缓冲方式;在此我们选择直通的工作方式,将XFER、WR2、CS管脚全部接数字地。管脚8接参考电压,在此我们接的参考电压是+5V,如图3所示,可以产生三角波,锯齿波,梯型波等波形。CE2接在74LS138上,通过分配地址完成片选。
图3.DAC0832接口电路
(四)TLC0832
TLC0832是八位串行逐次逼近模数转换器[4],它有两个可选择的输入通道。其接口电路如图所示。TLC0832的通道0外接了电位器,可以模拟不同的电压输入。对TLC0832的控制需要3根I/O口线,可以从单片机及8155接入。
图4.TLC0832接口电路
(五)X5045接口电路
复位电路采用了带I2C的监控芯片X5045,上电即可复位[5],电路如图5所示。另外8155设置了独立的复位方式以弥补和51单片机的复位不同步缺点。
图5.看门狗接口电路
(六)键盘接口电路
在单片机应用系统中通常应具有人机对话功能能随时发出各种控制指令和数据输入以及报告应用系统的运行状态与运行结果。本文所采用的是独立式键盘,其中key代表阻值为1kΩ的排阻。
(七)数码管显示接口电路
系统数码管显示及键盘显示均比较灵活,提供了专门的I/O接口,可以用8155来控制,也可以用单片机来控制。开发板支持4位七段示LED数码显示器。
四、结束语
限于篇幅,本文关于DS1302、LCD显示接口以及系统软件设计等方面未能介绍。本文设计的单片机开发板在实际中发挥了重要作用,适合于单片机学习者及简单的工程应用。
参考文献:
[1]杨光友.单片微型计算机原理及接口技术[M].水利水电出版社,2002
[2]AT89S51 Datasheet.Atmel Inc.2006
[3]赵亮.单片机C语言编程与实例[M].人民邮电出版社,2003
[4]张道德.单片机接口技术(C51版).中国水利水电出版社,2007
[5]X5045 Datasheet.Intersil inc.2006
[作者简介]张道德(1973-),男,博士,研究方向:从事嵌入式系统、智能控制等领域的研究。
.语音存储与回放系统
摘要
基于微控制器的语音存储与回放系统具有录制方便、回放灵活、无磨损、可靠性强等优点,在实际生活中得到了广泛的应用,如公共设备、智能仪器仪表、小家电等。
语音存储与回放系统的实现具有多种方式,一种是利用单片集成的语音存储与回放芯片,如美国ISD公司的ISD1420等;一种是以微控制器为核心,辅以A./D转换、D/A转换以及大容量的存储器。单片集成的语音存储与回放芯片一般智能性较差,不容易解决音量的问题,同时存放录制时间有限,不能灵活的变化。因此,在多数需要语音存储与回放的场合中,采用了微控制器的语音存储与回放系统。
一、系统总体描述和设计
1.1 系统描述 1.1.1 系统功能简介
语音存储与回放系统能够将语音先行录制,然后再回放,适合应用在一些需要语音播报功能的设备上,如公交车报站器、智能小家电、智能玩具等。
在一些实际应用中,一般录制是在产品出厂时,由专业人员进行录制,而在实际应用中只需要播放,如公交车报站器。但在一些实际应用中,则需要用户既能随意录制,也能随意播放,如智能玩具。
语音存储与回放系统比较重要的两个指标是语音的最大录制时间和语音回放的质量。语音的最大录制时间是由语音存储与回放系统的存储设备的容量来决定的,一般采用RAM,即为系统的存储容量。在一般的单片机系统中,RAM的容量非常有限,需要扩展一定容量的RAM。而语音回放的质量主要由系统中A/D以及D/A来决定,A/D与D/A的精度越高,语音的质量越好,同时系统的噪声抑制能力,如带通滤波器的优劣等,也会影响到语音的质量。1.1.2 系统总体设计
语音存储与回放系统的总体原理图如图1-1所示。
语音存储与回放系统
麦克风前置放大器带通滤波器A/D键盘控制微控制器外扩存储器喇叭后置放大器带通滤波器D/A
图1 语音存储与回放系统总体原理
语音存储与回放系统主要包括微控制器、系统供电电源、键盘、麦克风、前置放大器、A/D、外扩存储器、D/A、后置放大器和喇叭。下面将介绍各个部分的总体设计与选型。
1.微控制器
微控制器主要负责录音、回放中对外部命令的响应,同时需要对存储器进行读写操作。本语音存储与回放系统采用51系列单片机,负责控制与协调其他各个模块的工作,并进行简单的数字信号处理。在整个语音存储与回放系统中,微控制器是系统的控制中心,其工作效率的高低关系到系统效率的高低以及系统运行的稳定性。而51系列单片机具有成本低,稳定性好,且运行速度基本能满足该系统的要求。在本系统中,将采用Atmel公司的AT89S52。
2.键盘
在语音存储与回放系统中,需要采用键盘对语音的录制以及回放进行控制。在分段录制与播放中,同时还需要段号的输入等。在本系统中需要的按键数量比较多,可以采用键盘管理芯片ZLG728。
3.麦克风
麦克风的选择对语音质量影响比较明显。麦克风的作用是将语音信号转化成电信号。考虑到驻极体话筒的灵敏度较高,方向性差,若采用单端放大,会有比较大的噪音,因此采用两只(配对)话筒分别接入差分放大器的正负端,可以较好的抑制背景噪声。
4.前置放大器
通常情况下,拾音器输出的是微弱的电信号,因此在拾音器的后端需要将该信号进行放大处理,能完成此功能的电路称为前置放大器。一般情况下,拾音器的输出为毫伏级的电压信号,需要进行放大到伏级的电压信号。在本系统中,采用运算放大器NE5532。
语音存储与回放系统
5.A/D 由奈奎斯特采样定理可知,A/D的采样频率必须满足信号的最高频率的2倍以上,即满足如下关系:
fsfH(1)其中,fs为采样频率,fH为被采样信号的最高频率。
一般语音信号的最高频率为3.4kHz,因此在语音存储与回放系统中,A/D的采样频率fs必须满足:
fs2fH23.4kHz6.8kHz(2)
因此我们可以选用ADC0809,ADC0809转换器的分辨率为8位,典型转换时间为100μs,单5V电源供电。
6.外扩存储器
在语音存储与回放系统中,需要录制10s以上的语音,假设采样频率为8kHz,分辨率为8位,那么1秒钟的时间至少需要8kB的存储空间,而单片机的内置存储器无法满足要求,需要外扩存储器。
外扩存储器可以选用256k*8位的SRAM,这样就可以录制至少30s的语音。也可以采用多片32k*8位的SRAM,但是需要分页存储技术来扩展容量。
7.D/A 语音的回放需要将存储的数字化信号进行D/A转换,恢复为模拟信号才能进行播放。我们可以选用DAC0832来完成数字信号到模拟信号的转换,DAC0832的分辨率为8位,其输出稳定时间为1μs,满足系统要求。
8.后置放大器
D/A输出的信号经过后置带通滤波器后,其输出通常情况下不能满足喇叭对功率的要求。完成D/A输出到喇叭的功率驱动的放大电路称为后置放大器,即为一个功率放大器,我们可以采用低电压音频功率放大器LM386来实现。
9.喇叭
喇叭是语音播放回路的最后输出阶段,喇叭质量的好坏也会关系到语音输出的质量,因此,喇叭的选择也是很重要的一个方面。我们可以选用8欧姆,0.5W的普通喇叭。
如图3所示。1.主控制器设计
三、单元电路设计
二、系统硬件设计
成的后置功率放大电路,以及状态指示等。
语音存储与回放系统
图2 语音存储与回放系统的总体硬件框图
系统的总体硬件框图如图2所示,主要有AT89S52单片机系统,DC/DC、7812等组成的系统供电电源电路,NE5532组成的前置放大器,NE5532与R、C组成的前置/后置带通滤波器,ADC0809组成的A/D转换电路,IS61LV2568组成的数据存取电路,DAC0832组成的D/A转换电路,LM386组主控制器即为一个51系列单片机最小系统,单片机选择了Atmel公司的89S52,主控制电路
语音存储与回放系统
2.前置放大电路设计
由一级电压跟随器和一级同相放大器组成。
3.后置功率放大设计
语音频率的范围一般为300Hz~3.4kHz,因此需要在输入与输出回路中设计带通滤波器来滤除语音频率范围以外的频率成分,以便进一步提高语音回放的质量。
其由运算放大器NE5532与R、C组成,采用的是一级低通滤波器和一级高通滤波器的级联。由于带通滤波器的通频带范围为300Hz~3.4kHz,因此低通滤波器的上限截止频率为3.4kHz,高通滤波器的下限截止频率为300Hz。
语音存储与回放系统
4.A/D采样电路设计
5.数据存取电路设计(62256两片)
语音存储与回放系统
6.D/A转换电路设计
语音存储与回放系统
开始初始化是否录音?启动AD程序,并存储语音。是否放音?启动DA程序,并循环放音结束8
四、软件设计
1、流程图
语音存储与回放系统
2、时序图
ADC0809时序图:
语音存储与回放系统
DAC0832时序图: 存储器62256时序图:
读数据:
语音存储与回放系统
写数据:
五、结束语
1.所设计的系统基本要求:
(1)放大器1的增益为46dB,放大器2的增益为40dB,增益均可调;
(2)带通滤波器:通带为300Hz~3.4kHz ;
(3)ADC:采样频率f s=8kHz,字长=8位;
(4)语音存储时间≥10秒;
(5)DAC:变换频率f c=8kHz,字长=8位;
(6)回放语音质量良好。
语音存储与回放系统
2.实验心得体会: 对于这种动手性很强的电路设计和焊接实验,觉得与平时必修课的实验很不同。必修课的实验都是一些经典实验,条件成熟且被反复验证,只要按照讲义的步骤去做,便会顺利得到预期的结果。但动手性实验,没有老师的监督和强迫,全靠我们自觉完成。动手性实验就像为我们打开了一扇窥探科研之路的门,让我们学到了许多在经典实验中无法学到的知识和思维方式。
我们首先查阅了芯片手册,了解了关于电路各模块的原理的结构。对这个课题有了基本了解后,我们又查阅了关于如何实现芯片具体功能的方法,并结合我们的目标物,制订了尝试方案。在实验过程中,我们碰到了许多以前在经典实验中不曾出现的问题。后来向老师了解到,其实是原理图和实物并不相对应。我们才发现,讲义上给我们做的经典实验,条件都是很成熟的,基本不会出现什么偏差,而我们所要探索的问题是很难达到这种理想效果的。由于我们的知识是有限的,所以我们遇到的困难比较多,正因为如此,我也收获良多。
首先我们明白到团结合作的重要性。由于我们组只有两个人,而所作的工作又较多,所以对我们来说时间是紧迫的,而且团结也显得尤为重要,同时加上有老师的热心帮助和提点,我们的实验进度也大大加快了。
其次我们学会了科研的思维方式。在实验过程中,我们会遇到各种各样意想不到的问题,这时必须静下心来分析可能出错的步骤,可能出现的故障,逐步排除,直到找出真正的原因,再对症下药,解决问题。另外,以我们现在的知识,也许不可能一下子就创造出一个前无古人的大发明,但我们可以在已有的仪器设备或实验方法上做一些改善工作,使其更方便、更完善。通过这些小设计或创新,可以培养和提高我们的能力。
这一次的动手性实验不但锻炼了我们的实验能力,培养了我们的科研思维,而且让我们体会到科研当中的辛苦与快乐。我们会把这一次的宝贵经验运用到以后的科研工作中,为电子事业贡献自己的一份力量。
语音存储与回放系统
六、参考文献
[1] 郭天祥。新概念51单片机C语言教程——入门、提高、开发、拓展。北京:电子工业出版社,2009-1-1。
附录
程序设计代码: #include
#define mdata XBYTE[0x0000] #define adnum 32768 sbit we=P3^6;sbit cs=P3^2;sbit flag1=P3^1;//录音控制键 sbit flag2=P3^0;//放音控制键 sbit eoc=P3^3;sbit start=P3^4;sbit oe=P3^5;int temp=0;int luyinstop = 0;int fangyinstop = 0;
语音存储与回放系统
uchar buffer=0;uchar xdata *pt,*pt1;unsigned char sum;sbit ck = P2^7;void Timer0_Init();void main(){ unsigned char addr[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};pt=&ramaddress;//首地址
pt1 = pt;//定义存放首地址
P1=0xff;//打开P1口
ck = 0;//打来62256片选
Timer0_Init();//定时器初始化
while(1){
if(luyinstop>adnum)
{
pt=&ramaddress;
luyinstop = 0;
}
if(fangyinstop>adnum)
{
pt1=&ramaddress;
fangyinstop = 0;}
} cs=1;
语音存储与回放系统
}
void Timer0_Init()//定时器初始化 { TMOD|=0x01;TH0=(65536-3)/256;TL0=(65536-3)%256;EA=1;;ET0=1;TR0=1;}
void timer_0()interrupt 1 {
TH0=(65536-3)/256;TL0=(65536-3)%256;if(flag2==1 && flag1==0)//录音
{
if(luyinstop
{
start=0;//ad初始化
start=1;
start=0;
while(!eoc);//等待空闲 cs=0;//打开da片选
语音存储与回放系统
we=0;//打开62256位选
buffer=P1;
*pt=buffer;//数据放入软件寄存器
pt++;
luyinstop++;
}
} if(flag2==0 && flag1==1)//放音
{
if(fangyinstop
{ start=0;//停止ad buffer=*pt1;//数据放入软件寄存器
P1=buffer;
pt1++;
fangyinstop++;
}
}
typedef unsigned char UINT8;typedef unsigned int UINT16;code UINT8 SEGMENT[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};code UINT8 SELECT[8] ={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};#define S1 0x0e #define S2 0x0d #define S3 0x0b #define S4 0x07 sbit SPEAK=P3^5;sbit P3_3=P3^3;UINT8 Second;
void timer_10ms(void)//定时器T0定时10ms {
TMOD=0x01;TH0=0xdc;TL0=0x32;TR0=1;//启动T0 } void Delay(UINT16 t){
UINT16 i,j;
for(i=0;i for(j=0;j<114;j++);} void Display(void){ static UINT8 num=0;P2=0xff;switch(num){ case 0: P0=0xff; break; case 1: P0=0xff; break; case 2: P0=0xff; break; case 3: P0=0xff; break; case 4: P0=0xff; break; case 5: P0=0xff; break; case 6: P0=SEGMENT[Second%100/10]; break; case 7: P0=SEGMENT[Second%10]; break;} P2=SELECT[num];num++;num%=8;//if(num==8)num=0;} UINT8 Scankey(void){ UINT8 key;if((P3&0x0f)==0x0f) return(0xff);Delay(10); if((P3&0x0f)==0x0f) return(0xff);key=P3&0x0f;while((P3&0x0f)!=0x0f);return(key);} void main(){ UINT8 i; EA=1; //打开总中断 EX1=0;//打开外部中断1 IT1=1;TH0=0xdc;TL0=0x32;TR0=1;//启动T0 ET0=1; Second=60;while(1) { Display(); Delay(2); i = Scankey(); if(i==S1)//启动 { EA=1; } else if(i == S2)//暂停 { EA=0; } } } } void int_0()interrupt 1 { unsigned char z,aa; for(aa=59;aa>0;aa--){ for(z=0;z<50;z++) { P0=SEGMENT[aa/10]; P2=SELECT[3]; delay(5); //10ms P0=SEGMENT[aa%10]; P2=SELECT[4]; delay(5); //10ms 关键词:MCS-51单片机;汽车转弯信号灯;系统硬件设计;系统软件设计;集成电路 文献标识码:A 中图分类号:TP212 文章编号:1009-2374(2016)13-0020-02 DOI:10.13535/j.cnki.11-4406/n.2016.13.010 1 汽车转弯信号灯控制系统的功能要求 设汽车有一个转弯控制杆,此控制杆有三个位置:中间位置时,汽车不转弯;向上时,汽车左转;向下时,汽车右转。汽车转弯时,汽车的两个尾灯、两个头灯和两个仪表板灯相应地发出闪烁信号,当应急开关合上时,6个灯都闪烁。汽车刹车时,尾灯信号不闪烁。汽车转弯或应急状态下,信号灯和仪表板灯闪烁频率为1Hz,当停靠开关合上时,信号灯闪烁频率为30Hz。 2 系统硬件的设计 汽车中单片机用+5伏供电,其他电路用+12伏电源供电。在单片机系统中,具有故障监测功能,发现故障能自动报警。图中增加了晶体管Q7和7个电阻,Q7的集电极与T0相连,组成自动报警电路。假设一个信号灯受控断开,相应单片机输出口线为高电平,其余信号灯受控导通,导通的晶体管集电极输出低电平,截止的晶体管集电极输出高电平,Q7有6个输入端,5个输入端为低电平,1个输入端为高电平,这时Q7导通,T0为低电平,如果测得T0为高电平,说明单片机电路发生故障,这就是故障监测的原理。 3 系统软件的设计 系统软件用汇编语言编写,分为三部分: 3.1 口线说明和变量定义 程序中不采用口线名称,采用符号地址,变量采用助记名,要改变具体引脚,只要在说明和定义部分作修改,给程序设计带来了方便。 3.2 主程序 采用定时器/计数器0和1个软件计数器SUB-DIV产生一秒的定时信号,实现低频1Hz的闪烁功能。 3.3 中断服务程序 3.3.1 1Hz信号的产生:SUB-DIV初值为244,由244变到0,经0.999424秒,其中SUB-DIV.7为1时间117/244秒,为0时间127/244秒,得到占空比50%的1秒信号。 3.3.2 30Hz信号的产生:计数器SUB-DIV值由244变为0时,低3位构成8种状态,在0.999424秒中重复次数为30,把低3位状态组合起来,形成一定占空比的30Hz信号。 3.3.3 各种信号的形成:根据系统输入状态(各开关位置),计算送各指示灯的信号。 1 BRAKE BIT P1.0 30 SETB TR0 59 ANL C,PARK 2 EMERG BIT P1.1 31 SJMP $ 60 MOV DIM,C 3 PARK BIT P1.2 32 UPDATE:DJNZ SUB-DIV,T0SERV 61 MOV C,L-TURN 4 L-TURN BIT P1.3 33 MOV SUB-DIV,#244 62 ORL C,EMERG 5 R-TURN BIT P1.4 34 ORL P1,#11100000B 63 ANL C,LO-FREQ 6 L-FRNT BIT P1.5 35 ORL P2,#00000111B 64 MOV L-DASH,C 7 R-FRNT BIT P1.6 36 CLR L-FRNT 65 MOV F0,C 8 L-DASH BIT P1.7 37 JB T0,FAULT 66 ORL C,DIM 9 R-DASH BIT P2.0 38 SETB L-FRNT 67 MOV L-FRNT,C 10 L-REAR BIT P2.1 39 CLR L-DASH 68 MOV C,BRAKE 11 R-REAR BIT P2.2 40 JB T0,FAULT 69 ANL C,/L-TURN 12 S-FAIL BIT P2.3 41 SETB L-DASH 70 ORL C,F0 13 SUB-DIV DATA 20H 42 CLR L-REAR 71 ORL C,DIM 14 HI-FREQ BIT SUB-DIV.0 43 JB T0,FAULT 72 MOV L-REAR,C 15 LO-FREQ BIT SUB-DIV.7 44 SETB L-REAR 73 MOV C, R-TURN 16 DIM BIT PSW.1 45 CLR R-ERNT 74 ORL C,EMERG 17 ORG 0000H 46 JB T0,FAULT 75 ANL C,LO-FREQ 18 LJMP INIT 47 SETB R-FRNT 76 MOV R-DASH,C 19 ORG 000BH 48 CLR R-DASH 77 MOV F0,C 20 MOV TH0,#-16 49 JB T0,FAULT 78 ORL C,DIM 21 PUSH PSW 50 SETB R-DASH 79 MOV R-FRNT,C 22 AJMP UPDATE 51 CLR R-REAR 80 MOV C,BRAKE 23 ORG 0040H 52 JB T0,FAULT 81 ANL C,/R-TURN 24 INIT: MOV TL0,#0 53 SETB R-REAR 82 ORL C,F0 25 MOV TH0,#-16 54 JB T0,T0SERV 83 ORL C,DIM 26 MOV TMOD #01100001B 55 FAULT:CPL S-FAIL 84 MOV R-REAR,C 27 MOV SUB-DIV,#244 56 T0SERV:MOV C,SUB-DIV.1 85 POP PSW 28 SETB ET0 57 ANL C,SUB-DIV.0 86 RETI 29 SETB EA 58 ORL C,SUB-DIV.2 87 END 4 结语 汽车转弯信号灯的设计也可用数字逻辑电路来实现,缺点是灵活性差,系统功能有所变动,电路也要随之变动,缺少必要的智能。采用本文MCS-51单片机控制系统,可以实现数字逻辑电路的全部功能,并有故障监控功能,体现了单片机控制的优越性。 参考文献 [1] 孙涵芳,徐爱卿.MCS-51/96系列单片机原理及应用 [M].北京:北京航空航天大学出版社,1987. [2] 马彪.單片机应用技术[M].北京:中国轻工业出版 社,2005. [3] 秦实宏,徐春辉.MCS-51单片机原理及应用[M].武 汉:华中科技大学出版社,2010. 一、本课题的内容及研究意义 1、论文研究的目的和意义 如今,照明电路的数量越来越多,使得城市街道、小区内的路灯的用电量占城市用电量的比重越来越大,在用电高峰期时,电网超负荷运行,电网电压都低于额定值,在用电低谷期供电电压又高于额定值,当电压高时不但影响照明设备的使用寿命,而且耗电量也大幅增加,当低谷时,照明设备有不能正常工作。 所以,对城市的路灯的设计已经成为了当务之急,特别是午夜之后车流量急剧减少时,应该适当的关闭路灯,节约用电。但是我国的既节能又能延长路灯寿命的技术相比国外却是落后了,因此智能节能路灯控制系统的设计对于城市的发展至关重要。本论文旨在设计一套对外界光线和电压信号的采集来控制路灯的自动启停以及智能调压的控制系统,它能对路灯进行稳压、调压、自启动并延长路灯寿命的作用。 2、论文研究内容 本设计可以通过对外界光线和电压信号的采集来控制路灯的自动启停以及智能调压从而减少城市路灯照明耗电量,又对输入电压进行稳压调节来提高用电效率。要求独立选择芯片、设计电路、编制程序、调试、完成整个系统功能。主要内容如下: (1)根据控制技术的特点,进行路灯系统设计的整体研究与设计。 (2)针对光线和电压信号的采集,采用数据采集技术。 (3)通过按键可对相关的参数值进行设置,从而实现对不同时间进行不同的开灯模式。 (4)当电压符合额定电压时,系统自动进行稳压。 (5)在午夜之后降低电压以调节路灯亮度,实现调压。 二、本课题的研究现状和发展趋势 目前,路灯系统一般采用钠灯、水银灯、金卤灯等灯具。这类灯具有发光效率高、光色好、安装简易等优点,被广泛使用,但同时也存在着诸如:功率因子低、对电压要求严格、耗电量大等缺点。 我国目前大部分城市都采用全夜灯的方式进行照明,普遍存在的问题有两点:一方面因为后半夜行人稀少,采用全夜灯的方式浪费太大,因此,有的地方采取前半夜全亮,后半夜全灭的照明方式;有的地方在后半夜采用亮一隔一或亮一隔二的节能措施,此种方式虽然节约了电费支出,却带来了社会治安和交通安全问题,不利于城市安全问题。 另一方面,在后半夜因行人稀少,而应该降低路灯的亮度,以避免光源污染,影响居民的晚间的休息。但由于后半夜是用电低谷期,电力系统电压升高,路灯反而比白天更亮了。这不仅造成了能源浪费,还大大影响了设备和灯具的`使用寿命。目前,路灯照明广泛采用高压钠灯,其设计寿命在1小时以上,在正常情况下至少可用3年,但是由于超压使用,现在路灯的使用寿命仅仅只有1年左右,有的甚至只有几个月,造成维护和材料的极大浪费。较高的电压不仅不能让负载设备更好的工作,而且还会造成发热及过早损坏,还会造成不必要的电费开支。 而且,我国绝大多数地区的路灯关开灯都是采用人工控制或者定时控制,这样也有许多不利之处:若采用人工控制,则路灯开关存在着一定的不确定性,同时也占用了一定的人力资源;定时控制则存在着夏冬季白黑昼时间不同的情况,使得天还没黑路灯就开,天还没亮路灯就灭的情况,大大影响了人们的日常出生活。本设计通过使用AT89c51单片机对系统进行智能控制,使系统达到自动启停及智能调压。 近年来,随着科技的不断发展,各种路灯控制器也被不断的研究出来。其中,美国和日本主要集中在研究紧凑型荧光灯和镇流器荧光灯两个方面。而我国目前的市场上有多种路灯节能控制产品,能达到一定的节能效果,但就功能和效果上还不能尽如人意,主要有以下几种情况:第一种,采用自耦变压器及磁饱和电抗器的降压技术。其不足是由于反应速度较慢,用电高峰时电压降到非稳定区容易造成灯光闪灭,不能自动调节,同时如果电压突然升高,则会对灯具造成损坏,相对来说稳压效果较差;第二种是采用电子器件构成的可控硅式设备。该设备主要采取简单的相控技术,不足之处是元器件较容易发热损坏。而为了更好的达到控制的目的,现在国内外都开始采用智能控制方式,如光控、声控、时控等,国外甚至开始采用太阳能供能光控方式来控制路灯,基本可以达到完全自给自足的效果。 综上所述,未来的智能路灯控制必将向着更安全、更环保、更节能、更高效率的方向发展。 三、本课题的研究方案及工作计划 1、设计方案 本次课程设计是由传感器通过外界光信号的强弱来产生电压信号,再由单片机控制实现路灯的自动启停及智能稳压。本设计通过使用AT89c51单片机芯片来设计电路,编制程序,仿真,调试,完成整个系统的功能。整个控制系统主要包括四个模块:信号采集模块、数据处理模块、稳压模块和控制模块。 2、技术路线 设计要求采集输入电压信号,通过A/D转换后输入控制器,当外界光信号的强度低于一定数值时,通过软启动开启路灯。当光信号强度高于一定数值时,通过软启动关闭路灯,并将采集输入电压信号,与已设定的标准电压值进行比较,并对输入电压进行稳压,再通过时钟电路对路灯亮度进行调节,在午夜之后对路灯亮度进行降低,最后达到节电稳压。技术方案如下图: 外部光线强度光敏电阻AT89c51单片机A/D转换器继电器驱动 键盘控制LED显示报警电压放大三端稳压器路灯 3、关键问题 (1)信号采集电路设计 该模块需要检测环境光的变化,根据环境光的明暗进行路灯开关的自动控制。基于此要求采用由光敏电阻组成的分压电路进行检测。光敏电阻器又称光导管,特性是在特定光的照射下,其阻值迅速减小,可用于检测可见光。在不同的光强下,光敏电阻的电阻值会发生明显变化,光敏电阻器是利用半导体的光电效应制成的一种电阻值随入射光的强弱而改变的电阻器;入射光强,电阻减小,入射光通过检测不同光强下电阻值的变化量来控制路灯的开和关。 (2)稳压模块设计 通过采集三端稳压器输出的电压并将该电压与设定电压进行比较,进而调整输出电压的大小,达到稳压的目的。本设计使用美国国家半导体公司的三端可调正稳压器集成电路LM317。 (3)时钟电路设计 为实现路灯对电压进行智能补偿,从而达到智能调压,本设计采用美国DALLAS公司的实时时钟电路DS1302,该芯片一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与cPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。另外该芯片有备份电源引脚,可以在断电后仍能工作,以保证时钟的准确性。 3、时间安排 (1) 20xx.2.20—20xx.2.29查阅相关资料,理解设计任务书。 (2) 20xx.3.1 —20xx.4.1搜索资料,完成开题报告。 (3) 20xx.4.1 —20xx.4.20硬件调试,排除故障直至满足设计要求。 (4) 20xx.4.20—20xx.5.10软件调试,排除故障直至满足设计要求。 (5) 20xx.5.10—20xx.5.30 整理资料,按要求撰写论文,完成初稿。 (6) 20xx.6.1—20xx.6.20论文整定,最终定稿,准备答辩。 四、主要参考文献 [1]查兵,崔浩.单片机原理[J].中国高新技术,20xx年1期 [2]李健,蒋全胜,任灵芝.智能路灯控制系统设计[J].工业控制计算机,20xx年6期[3]金仁贵.单片机应用系统的开发方法[J].电脑知识与技术:学术交流,20xx年12期 [4]严怀龙.基于单片机的数据采集系统[J].广西轻工业,20xx年6期 [5]王虎城,周晋军,皮依标,叶振华.基于光传感器和单片机的校园路灯控制系统设计[J].科技广场,20xx年1期 [6]王立红.基于单片机的智能路灯控制系统[J]. 网络财富,20xx年6期[7]王皑,佘丹妮.基于单片机的模拟路灯控制系统设计[J].仪表技术,20xx年11期[8]张毅刚.单片机原理及应用[M].高等教育出版社,20xx [9]阎石.数字电子技术基础[M].高等教育出版社,20xx [10]童诗白,华成英.模拟电子技术基础[M].高等教育出版社,20xx [11]程德福,林君.智能仪器[M].机械工业出版社,20xx [12]刁鸣.常用电路模块分析与设计指导[M].清华大学出版社,20xx 五、wuAT89c51的介绍 1、描述 AT89c51是一个低电压,高性能cMoS 8位单片机带有4K字节的可反复擦写的程序存储器(PEnRoM)。这种器件采用ATMEL公司的高密度、不容易丢失存储技术生产,并且能够与McS-51系列的单片机兼容。片内含有8位中央处理器和闪烁存储单元,有较强的功能的AT89c51单片机能够被应用到控制领域中。 2、功能特性 AT89c51提供以下的功能标准:4K字节闪烁存储器,128字节随机存取数据存储器,32个I/o口,2个16位定时/计数器,1个5向量两级中断结构,1个串行通信口,片内震荡器和时钟电路。另外,AT89c51还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式。闲散方式停止中央处理器的工作,能够允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。掉电方式保存随机存取数据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一个复位。 3、引脚描述 Vcc:电源电压GnD:地P0口 P0口是一组8位漏极开路双向I/o口,即地址/数据总线复用口。作为输出口时,每一个管脚都能够驱动8个TTL电路。当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。P0口在闪烁编程时,P0口接收指令,在程序校验时,输出指令,需要接电阻。 4、P1口 P1口一个带内部上拉电阻的8位双向I/o口,P1的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时输出一个电流。闪烁编程时和程序校验时,P1口接收低8位地址。 5、P2口 P2口是一个内部带有上拉电阻的8位双向I/o口,P2的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。闪烁编程或校验时,P2口接收高位地址和其它控制信号。 6、P3口 P3口是一组带有内部电阻的8位双向I/o口,P3口输出缓冲故可驱动4个TTL电路。对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。 P3口除了作为一般的I/o口外,更重要的用途是它的第二功能,如下表所示: 端口引脚P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7第二功能RXD TXD InT0 InT1 T0 T1 WR RD P3口还接收一些用于闪烁存储器编程和程序校验的控制信号。 7、RST 复位输入。当震荡器工作时,RET引脚出现两个机器周期以上的高电平将使单片机复位。 8、ALE/PRoG 当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE以时钟震荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲时,闪烁存储器编程时,这个引脚还用于输入编程脉冲。如果必要,可对 特殊寄存器区中的8EH单元的D0位置禁止ALE操作。这个位置后只有一条MoVX和MoVc指令ALE才会被应用。此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。 9、PSEn 程序储存允许输出是外部程序存储器的读选通信号,当AT89c51由外部程序存储器读取指令时,每个机器周期两次PSEn有效,即输出两个脉冲。在此期间,当访问外部数据存储器时,这两次有效的PSEn信号不出现。 10、EA/VPP 外部访问允许。欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。需要注意的是:如果加密位LBI被编程,复位时内部会锁存EA端状态。如EA端为高电平,cPU则执行内部程序存储器中的指令。闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V编程电压VPP。 XTAL1:震荡器反相放大器及内部时钟发生器的输入端。 XTAL2:震荡器反相放大器的输出端。 11、时钟震荡器 AT89c51中有一个用于构成内部震荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自然震荡器。外接石英晶体及电容c1,c2接在放大器的反馈回路中构成并联震荡电路。对外接电容c1,c2虽然没有十分严格的要求,但电容容量的大小会轻微影响震荡频率的高低、震荡器工作的稳定性、起振的难易程序及温度稳定性。如果使用石英晶体,我们推荐电容使用30PF±10PF,而如果使用陶瓷振荡器建议选择40PF±10PF。用户也可以采用外部时钟。采用外部时钟的电路如图示。这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。 12、内部振荡电路、外部振荡电路、闲散节电模式 AT89c51有两种可用软件编程的省电模式,它们是闲散模式和掉电工作模式。这两种方式是控制专用寄存器Pcon中的PD和IDL位来实现的。PD是掉电模式,当PD=1时,激活掉电工作模式,单片机进入掉电工作状态。IDL是闲散等待方式,当IDL=1,激活闲散工作状态,单片机进入睡眠状态。如需要同时进入两种工作模式,即PD和IDL同时为1,则先激活掉电模式。在闲散工作模式状态,中央处理器cPU保持睡眠状态, 而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,片内随机存取数据存储器和所有特殊功能寄存器的内容保持不变。闲散模式可由任何允许的中断请求或硬件复位终止。终止闲散工作模式的方法有两种,一是任何一条被允许中断的事件被激活,IDL被硬件清除,即刻终止闲散工作模式。程序会首先影响中断,进入中断服务程序,执行完中断服务程序,并紧随RETI指令后,下一条要执行的指令就是使单片机进入闲散工作模式,那条指令后面的一条指令。二是通过硬件复位也可将闲散工作模式终止。需要注意的是:当由硬件复位来终止闲散工作模式时,中央处理器cPU通常是从激活空闲模式那条指令的下一条开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期有效,在这种情况下,内部禁止中央处理器cPU访问片内RAM,而允许访问其他端口,为了避免可能对端口产生的意外写入:激活闲散模式的那条指令后面的一条指令不应是一条对端口或外部存储器的写入指令。 13、掉电模式 在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在中指掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将从新定义全部特殊功能寄存器但不改变RAM中的内容,在Vcc恢复到正常工作电平前,复位应无效切必须保持一定时间以使振荡器从新启动并稳定工作。 14、闲散和掉电模式外部引脚状态。 模式闲散模式闲散模式掉电模式掉电模式程序存储器内部内部外部外部ALE 1 1 0 0 PSEn P0 P1 P2 P3 1 1 0 0数据程序存储器的加密AT89c51可使用对芯片上的三个加密位LB1,LB2,LB3进行编程(P)或不编程(U)得到如下表所示的功能: 程序加密位1 2 3 4 U P P P U U P P U U U P没有程序保护功能禁止从外部程序存储器中执行MoVc指令读取内部程序存储器的内容除上表功能外,还禁止程序校验除以上功能外,同时禁止外部执行保护类型当LB1被编程时,在复位期间,EA端的电平被锁存,如果单片机上电后一直没有复位,锁存起来的初始值是一个不确定数,这个不确定数会一直保存到真正复位位置。为了使单片机正常工作,被锁存的EA电平与这个引脚当前辑电平一致。机密位只能通过整片擦除的方法清除。 指导教师意见: 签名:月日 教研室意见 教研室主任(签章):月日 【51单片机学习教材内容简介】推荐阅读: 51单片机学习简难11-10 51单片机论文01-27 基于51单片机的数字频率计的设计概要12-01 单片机实验内容03-10 怎么学习avr单片机02-13 单片机编程经验07-23 单片机编程心得10-12 课程小结单片机11-22 单片机实习报告07-20 单片机说课稿10-1151单片机学习教材内容简介 篇10
51单片机学习教材内容简介 篇11