单片机程序设计十篇

时间:2023-03-25 15:34:52

单片机程序设计

单片机程序设计篇1

一、机器周期和指令周期

1.机器周期

机器周期是指单片机完成一个基本操作所花费的时间,一般使用μs来计量单片机的运行速度。MCS-51单片机的一个机器周期包括12个振荡脉冲周期,因此,一个机器周期就是振荡脉冲的十二分频。如果MCS-51单片机的振荡脉冲频率为12MHz时,那么执行一个机器周期就只需要1μs;如果采用的是6MHz的晶振,那么执行一个机器周期就需要2μs。

2.指令周期

指令周期是指单片机执行一条指令所需要的时间,一般以单片机的机器周期来计量指令周期。MCS-51单片机的指令周期根据指令的不同,分成单周期指令(执行这条指令只需一个机器周期)、双周期指令和四周期指令。除了乘、除两条指令是四周期指令之外,其余MCS-51单片机指令均为单周期或双周期指令。如果MCS-51单片机采用的是12MHz晶振,那么它执行一条指令一般只需1~2μs的时间;如果采用的是6MHz晶振,执行一条指令一般就需2~4μs的时间。

现在的单片机有很多种型号,但每个型号的单片机器件手册中都会详细说明执行各种指令所需的机器周期。我们可以依据单片机器件手册中的指令执行周期和单片机所使用晶振频率,来完成需要用软件的方法进行的延时的程序设计。

二、延时指令

在MCS-51单片机指令中并没有真正的延时指令,从以上的概念我们知道单片机每执行一条指令都需要一定的时间。所以可以让单片机不断地执行没有具体实际意义的指令(通常把这些指令称为哑指令),就可以达到软件延时的效果。

1.数据传送指令MOV

数据传送指令功能是将数据从一个地方复制、拷贝到另一个地方。如:MOV R7,#80H,执行这条指令的功能是将立即数80H送到寄存器R7。就单这条指令而言并没有任何实际意义,而执行该指令则需要一个机器周期。

2.空操作指令NOP

空操作指令功能只是让单片机执行没有意义的操作,消耗一个机器周期。

3.减1条件转移指令DJNZ

减1条件转移指令功能是将第一个操作数的内容减1,判断所得结果是否为0,不为0则转移到指定地点,为0则顺序往下执行。

利用以上三条指令的组合就可以比较精确地用软件的方法设计出所需要的延时程序。

三、50ms延时程序的设计

50ms延时程序的设计(设晶振频率f=12MHz,则机器周期为1μs)(见下表)。

①MOV R6,#100在整个程序中只被执行一次,且为单周期指令,所以耗时1×1μs。

②MOV R7,#250从②看到④只要R6-1不为0,就会返回到这句,共执行了R6次,共耗时1×100μs。

③DJNZ R7,I2只要R7-1不为0,就反复执行此句(内循环R7次),又受外循环R6控制,所以共执行R7*R6次,因是双周期指令,所以耗时2×R7×R6=2×250×100μs。

④DJNZ R6,I1从④看到②只要R6-1不为0,就会R6次执行这句,因是双周期指令,所以耗时2×100μs。

⑤RET是一条子程序返回指令。在整个程序中只被执行一次,且为双周期指令,所以耗时2×1μs。

所以总延时时间计算为:

t=(1×1+1×100+2×250×100+2×100+2×1)×机器周期=50303μs=50.3ms

单片机程序设计篇2

【关键词】4*4矩阵键盘 亚龙YL236设备 设计

1 亚龙YL236矩阵键盘介绍

1.1 概念介绍

在单片机按键使用过程中,当键盘中按键数量多时为了减少端口的占用,通常将按键排列成矩阵的形式。这样可以更多地节省I/O口的占用量。在亚龙YL236设备上,MCU06指令模块上的4*4矩阵键盘如图1和图2所示。

1.2 硬件介绍

矩阵键盘是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样可以用8个输入口实现16个按键的功能。在实际操作中,用亚龙YL236设备,以矩阵键盘按键后显示0,1,2,3……A,B,C,D,E,F到数码管上为例来最终完成程序的编写。矩阵键盘硬件接线图如图3所示。

2 设计方法分析

2.1 设计方法一:线反转查询法

对于矩阵键盘常用的扫描方法为线反转查询法。具体方法为:首先使行作为输入,使用单片机内部电阻上拉为高电平,列输出低电平,读行的状态。如果行有一个I/O口是低,说明有键按下,进行下一步,否则退出扫描。如果有键按下,置列为输入,行输出低电平,读列的状态。最后根据行列的状态表就可以知道是哪个键被按下。如图3“A”按键被按下的状态为10111011B,即十六进制的BBH。按此方法编写表格如表1。

根据线反转查询法,设计出程序流程图如图4所示。

根据流程图,我们编写出它的按键子程序如下:

keyscan()//4*4按键子程序

{P1=0x0f; //列输出低电平,读行的状态

temp1=P1;

if(temp1!=0x0f)//有按键按下

{delay(5); //消抖

P1=0x0f; //列输出低电平,读行的状态

temp1=P1;

if(temp1!=0x0f)//有按键按下

{P1=0xf0;//行输出低电平,读列的状态

temp2=P1;

temp=temp1|temp2;//两者相或

switch(temp)

{case 0xee:flag=0;break;

//11101110即 第一个按键被按下

case 0xde:flag=1;break;

case 0xbe:flag=2;break;

case 0x7e:flag=3;break;

case 0xed:flag=4;break;

case 0xdd:flag=5;break;

case 0xbd:flag=6;break;

case 0x7d:flag=7;break;

case 0xeb:flag=8;break;

case 0xdb:flag=9;break;

case 0xbb:flag=10;break;

case 0x7b:flag=11;break;

case 0xe7:flag=12;break;

case 0xd7:flag=13;break;

case 0xb7:flag=14;break;

case 0x77:flag=15;break;}

while(temp2!=0xf0)//松手检测

{P1=0xf0;temp2=P1;}}}

return flag;}

2.2 设计方法二:逐行扫描法

对矩阵键盘逐行扫描。具体方法为,分别扫描键盘的四行,每扫描一行,判断该行有无按键按下,若无按键按下,继续扫描第二行,直到扫描四行结束。若有按键按下,得到按键号,结束程序。

根据设想,设计出程序流程图如图5所示。

根据流程图,我们编写出它的子程序如下:

keyscan()

{P1=0xfe;//给P1口送检测信号111111110,即先检测第一列有无按键 按下

temp=P1; //将检测信号赋给变量temp

temp=temp&0xf0; //与11110000相"与"去除低四位检测部分

if(temp!=0xf0) //判断是否有按键被按下

{delay(5); //按键防抖动延时

P1=0xfe;

temp=P1; //将检测信号赋给变量temp

temp=temp&0xf0;

if(temp!=0xf0) //再次判断

{switch(temp) //利用switch函数判断temp值

{case 0xe0:flag=0;break; //若P0等于0xe0,即11100000,则第一个按被按下

case 0xd0: flag=1; break;

case 0xb0: flag=2; break;

case 0x70: flag=3; break;}

while(temp!=0xf0)//松手检测

{temp=P1;temp=temp&0xf0;}}}

P1=0xfd;

temp=P1;

temp=temp&0xf0;

if(temp!=0xf0)

{delay(5);

P1=0xfd;

temp=P1;

temp=temp&0xf0;

if(temp!=0xf0)

{switch(temp)

{case 0xe0: flag=4; break;

case 0xd0: flag=5; break;

case 0xb0: flag=6; break;

case 0x70: flag=7; break;}

while(temp!=0xf0)//松手检测

{temp=P1;

temp=temp&0xf0;}}}

P1=0xfb;

temp=P1;

temp=temp&0xf0;

if(temp!=0xf0)

{delay(5);

P1=0xfb;

temp=P1;

temp=temp&0xf0;

if(temp!=0xf0)

{switch(temp)

{case 0xe0: flag=8; break;

case 0xd0: flag=9;break;

case 0xb0: flag=10;break;

case 0x70: flag=11;break;}

while(temp!=0xf0)//松手检测

{temp=P1;

temp=temp&0xf0;}}}

P1=0xf7;

temp=P1;

temp=temp&0xf0;

if(temp!=0xf0)

{delay(5);

P1=0xf7;

temp=P1;

temp=temp&0xf0;

if(temp!=0xf0)

{switch(temp)

{case 0xe0: flag=12;break;

case 0xd0: flag=13;break;

case 0xb0: flag=14;break;

case 0x70: flag=15;break;}

while(temp!=0xf0)//松手检测

{temp=P1;

temp=temp&0xf0;}}}

return flag;}

2.3 设计方法比较

对于上面两种方法,在实际应用中,都能较好地实现按键识别的功能。下面我们来研究比较下哪种编程设计方式更好。语句条数比较:第一种方法在程序运行时,最多运行30条语句完成任务,得到需要的按键数据。第二种方法需要运行最多70条语句完成任务,得到按键数据。如此比较,明显第一种方法比较精炼,运行时间较短。理解难易比较:第一种方式需要先拉低列,有按键按下后再拉低行,中间需要用到两个中间变量temp1和temp2,在实际的教学过程中发现往往有些学生对此的理解常会出现模糊状态,搞不明白temp1和temp2的意义。导致对后面16个case的结果不理解。第二种方法分四行分别检测,每次只用到一个中间参数temp。单行检测,虽然检测步数变多了,但是在平时的教学中,发现第二种方法学生理解起来比较顺畅。所以对于这两种方法各有特点。在平时的应用中若是4*4矩阵键盘初学者,第二种方法比较好理解。若学习时间较长,有一定基础或理解能力较好,第一种方法更精炼,更适合。

在亚龙YL236设备上我们来直观地应用4*4矩阵键盘显示1到F到数码管上。

用到模块设备:MCU01主机模块,MCU02电源模块,MCU03仿真模块,MCU04显示模块,MCU06指令模块。实训步骤:1.用电子连线将电源模块上的5V电源引到所用模块的5V电源输入端。将电源模块上5V的END引到所用模块的5V的END上。确保主机模块上的EA选择开关在1的位置。2.将仿真模块连接到主机模块。3.主机模块P1.0到P1.7接指令模块的R0到C3。主机模块P0口接显示模块数码管数据口。主机模块P2.5接显示模块数码管WR,主机模块P2.6接显示模块数码管数据CS2,主机模块P2.7口接显示模块数码管数据CS1。用medwin软件编写程序,调试正确后,产生代码并装入单片机仿真,全速运行,最后到单片机实物模块中验证,程序如下:

下载调试,最后亚龙YL236设备上运行结果如图6所示,分别按第一个键到最后一个键,分别显示0到F。

从运行实物结果可以看出,两种不同的按键子程序测试都能成功运行。在实际的操作中,可以根据自己的理解能力来选择适合自己的方法。

本文介绍了亚龙236设备上矩阵键盘的原理以及程序设计应用。通过分析我们了解了两种程序的写法,当然远远还不止这两种方法,抛砖引玉,大家也可以探讨更好的方法来应用于实践。此模块是整个设备的重点,这里的测试程序用到和数码管相配合,同时也可以和该设备的其他任何模块综合应用。它是综合题的核心模块,因此了解它之后,能更好地为综合实践打基本。

参考文献

单片机程序设计篇3

论文摘要:“C程序设计”课程是电子类专业基础必修课,主要是为单片机编程服务,该课程的教学效果直接影响到后续单片机课程的学习。本文结合单片机系统开发的特点,探讨了C程序设计教学方法,为后续单片机课程的学习打下基础。

随着微电子技术的发展和广泛应用,基于单片机上的系统开发,C语言作为一种高级的编程语言,越来越受到人们的关注。现在,无论是嵌入式系统开发企业还是电子设计竞赛、毕业设计等,一般都以C语言为主要开发工具。结合单片机的系统资源,用C语言开发符合实际工程需要的单片机系统,对于编程者来说就有重要的意义。

1.C在单片机教学中的地位

C语言作为一种结构化的程序设计语言,它是程序开发工具中使用最广泛一门编程语言。C语言具有很强的功能性、结构性、可移植性。用C语言编写程序比汇编更符合人们的思考习惯,程序开发者可以摆脱与硬件不必要的接触,更专心地考虑程序的功能和算法而不是考虑一些细节问题,这样就减少了开发和调试的时间。由于它具有良好的程序结构,适用于模块化程序设计,因此采用C语言设计单片机应用系统程序时,采用结构化的、自顶向下、逐步求精的程序设计方法,将功能模块化,由不同的模块完成不同的功能。这样可使整个应用系统程序结构清晰,易于调试和维护。

2.单片机教学现状

单片机技术是现代电子工程领域一门飞速发展的技术,是现代电子技术中的一项不可缺少的重要技术。随着技术的不断进步和日益普及,单片机技术已渗透到各个领域,影响着我们的日常生活和工作。因此电子技术及相关专业的学生学习单片机技术越来越成为社会发展的需求。当前,各大高校的电子、计算机类专业均开设单片机课程。

《单片机》是我院电子系一门实践性极强的专业主干课程,是我校电子系重点建设课程之一,是本专业学生的必修课程。为了提高我系单片机教学效果,我们对单片机教学进行了大胆改革,使用C语言开发单片机,且课程的设计打破了学科体系的框架,将单片机和C语言的相关知识和技能按“项目”进行整合,并将《C程序设计》课程列为电子类专业核心基础课程之一。因此,《C程序设计》课程教学效果的好坏,将直接影响学生后续专业课程的学习。

从近几年我系《C程序设计》课程的教学效果来看,学生普遍反映该课程的学习比较困难,课程的语法知识较多,理解和记忆都不太容易,即使记住了语法知识也不能灵活应用;不知道学习C语言究竟有何用处,学完C后不能很好地利用C进行单片机小型系统的开发,缺乏知识的灵活应用能力。因此,根据以往单片机教学所得经验,我觉得教师有必要在《C程序设计》课程的教学过程中在以下几个方面引起足够的重视,并在教学中加以改进,为后续单片机课程的学习打下坚实的基础。

3.《C程序设计》课程教学方法探索

3.1上好每堂课,激发学生的学习兴趣

语言程序设计教学被认为是一种需要师生双方改进的一门课程,因为大多数语言教材中通常先给出一般的语法格式,然后逐步讲解语法要点,再给出实例。这种顺序灌输会使学生失去学习的兴趣,所以我认为在课堂教学环节应采取以学生为主体、以教师为主导的教学模式,要求学生自己先看有关知识点,并识记。教师采取精讲实例,在这过程中引出相关知识点,然后再举一类似实例让学生自己分析,巩固知识点。教师应把主要精力放在算法的分析和各语句语法的具体应用上,同时培养学生自学能力,采取互动机制,迫使学生主动学习。

3.2注重演示,强化实验,提高实践操作能力

因为授课对象是一年级新生,所以教师多用通俗易懂的语言进行讲解,多举实例,使学生容易理解和消化。在教学过程中,尽量采用讲解、演示方法,如在讲解经典算法后,按照理论方法所述,用DEV C++软件进行编程演示,从而加深学生对教学内容的理解。

在教学过程中,教师应将理论知识与实验内容进行整合,根据教学内容并结合实际应用设置实验题目,让每个学生独立完成。遇到学生不能解决的问题,教师应利用多媒体进行演示解决问题的过程,从而加深学生对教学内容的理解并提高实践操作能力。  3.3培养良好的编程风格

3.3.1优化程序

由于在许多工业测控领域中的嵌入式系统都采用单片机开发,它们所需要的计算和控制工作日趋复杂,其中软件的设计是最复杂和困难的,工作量大,特别是对于控制系统,设计人员需要考虑单片机的软硬件资源分配,但是单片机系统是一种资源十分有限的系统。这主要表现在CPU和片内结构简单、程序存储器资源的不足。因此在用C语言进行单片机开发时,如何使用好这些有限的资源就显得十分重要。虽然C语言具有许多的优点,但是生成的代码相对要长,基本多占用存储空间20%—50%。因而,在“C程序设计”课程教学中,教师不仅要教会学生如何编写程序,而且应在教学过程中向学生灌输优化代码的思想,让学生从大一开始就有开发项目的一些经验。

3.3.2合理选用数据类型

C语言在程序开发中提供了的丰富的数据类型,尤其是关于用户界面开发和一些动画与图像技术的实现。但是在开发单片机系统时,我们要按照实际需要,合理地选用数据类型。C语言中有Char等少数的数据类型是机器语言直接支持的数据类型,用此类数据类型的语句所生成的代码较短,而其它的数据类型如整型、浮点型等数据要有一定的内部程序或内部函数的支持,相对来说较复杂的数据类型的语句生成的代码也复杂,不利于转化成单片机的代码。因此,在“C程序设计“教学过程中,要向学生适当说明选择合适数据类型的好处,并尽可能地减少程序中使用的数据类型的种类,为以后学生的单片机学习打好基础。

3.3.3灌输模块化程序设计思想

在普通微型计算机上进行C语言程序开发设计时,只需考虑程序功能实现,而不必考虑程序代码的长短。但是在单片机上进行C语言程序设计就必须考虑系统的硬件资源,要求设计的软件程序结构是合理、紧凑和高效的。同一任务,有时用主程序完成是合理的,但有时需子程序效率最高,占用资源最少;有时并不是程序的算法越简单、长度越短越好,由于有一些算法要调用一些内部的子程序和函数,生成的机器代码质量反而较低。不同的算法对程序代码效率影响很大。因此,在进行“C程序设计”教学时,教师应适当向学生灌输模块化程序设计的思想,在不影响程序功能实现的情况下可以采用一些优化算法,并且把程序分成若干个功能独立的模块,为学生今后的单片机项目开发做好铺垫。

4.结语

单片机系统采用C语言开发与设计,极大地促进了单片机在生产、生活各个领域的应用,提高了程序开发效率。因而,C语言学习效果的好坏,对今后单片机课程的学习具有深远的影响。除了讲解C语言的基本语法外,更重要的是改善教学方法,利用各种方法培养学生的学习兴趣,并向学生灌输良好的编程风格与编程方法,为今后的单片机课程的学习打下良好的基础。

参考文献

[1]向艳.“C程序设计”课程教学体系和模式探讨[J].计算机教育,2010,(3):112-114.

[2]董蕴宝,潘旭君.浅谈C语言在单片机中的程序设计[J].科技信息,2009,(13):59-67.

[3]张洪静.电类专业C语言教学探讨[J].电脑知识与技术,2010,(29):8280-8281.

[4]林益平,赵福建.单片机C语言课程教学的探索与实践[J].电气电子教学学报,2007,(2):104-106.

单片机程序设计篇4

关键词:单片机;液晶显示器;设计与分析

DOI:10.16640/ki.37-1222/t.2017.14.205

0 前言

这些年来中国计算机无论从硬件应用上或是软件系统设计也开发开上都有了不同程度的进步。有力的推进了主体为相关电子元件的销售行业。而现今基于单片机所进行的液晶显示器方面的设计,虽然在大环境影响下有了一定的发展,但是还是因内部资源的相关存储以及数据方面处理的速度有一定的制约性,又因单片机价钱便宜而且适用的范围也很广泛的的特点也是受到了相关设计者的广泛使用。而单片机作为于液晶显示器设计的相关方式与方法还是有所进步的,所以下文主要分析基于单片机的液晶显示器设计,再根据相关的硬件系统的设计,针对液晶显示和时钟以及温度的采集等等实际性的设计进行详细的分析,希望可以为液晶显示器的整体提供具有参考价值的文献。具体内容如下:

1 相关设计硬件所进行的分析

基于单片机的液晶显示器设计在系统硬件的各电路中,主要组成大体上有含单片机的最小系统以及液晶显示器内部电路和设置方面的电路以及时钟与温度采集所使用的电路等。

(1)分析单片机的最小系统设计原理。组成单片机的最小系统一般有外部晶振以及电源与复位相关的电路等,在它们共同的作用下才能确保单片机系统可以正常的运转进而控制整体的系统。分析芯片的相关温度数据可以看出,在进行读取或者是写入芯片的数据时,显示的是日历以及时钟的数据等,再使用程序进行检验是否使用按键或其他操作。然后就可以在显示的驱动芯片中进行数据的写入,从而液晶显示器的屏幕就可以把相关内容显示了。

(2)分析液晶显示器内部电路设计。现今液晶显示器所使用的芯片有很多种,并且可以支持320×240(QVGA)等等的实际分辨率,而在显示器内部进行安置173kB的RAM,就可以显示高达26万色。接口方式可以选择8或是9或是16或是18位i80的系统全为总线,SPI总线以及RGB与VSYNC等的接口。一般会用总线式接口的电路代替外部数据存储器进行液晶显示器设计。

(3)分析时钟显示的电路设计。时钟显示的电路设计一般都是DS1302芯片来构成也是充电时钟芯片,其内一般有实时时钟以及日历和31字节的静态RAM,再运用不同的单片机进行接口方面的通信。运用芯片进行秒分时以及日月年等详细时间信息的获取,并按实际每月天数(闰年也可以计算实际天数)进行不同类型的计算而消耗的功量低。

(4)分析温度采集所使用的电路设计。芯片电路的设计大多很简单相对来说体积也小,所以组成测温系统的相关线路也简单,只需采用简单通信线将多个DS18B20数字的温度计连接即可,这样一个端口完成所有数据读取与写入,每个芯片只有唯一一个序列号且可以挂多个芯片。需要注意的是在进行实际设计中,控制实际数字温度计的温度在-55℃到125℃的范围之间并设定告警的温度值,分辨率需设为9到12位。这样芯片就会和实际使用的单片机进行电路连接。

(5)分析电路设置的相关原理。电路设置的相关原理是把日期时间与实际情况进行数据同步便于用户使用。在基于单片机的液晶显示器进行设计进,按键可设为进行主要内容的修改,这样就可以实现自动性的调整系统时间。第一次设置在结束后可按第二个键,时钟就可继续运行同时指示符消失,需要注意在进入调节状态时按下+或-按钮否则没效果。

2 相关设计软件系统所进行的分析

设计软件系统通常运用显示的子程序以及DS1302芯片的子程序和DS8B20芯片的子程序,而按键处理的主程序也是包括子程序的。按键所进行处理主程序一般为设备初始化设置,运用键盘的扫描程序以及时间温度各数据的显示,然后才能调用显示子程序。注意一般会有时间的间隔。

(1)软件系统的主程序进行的设计。在主程序初始化结束后,先进行键盘扫描程度,这样就可以读取芯片数据以及程序内容。

(2)软件系统在显示程序上所进行的设计。软件系统在显示程序上所进行的设计一般是很难的,其一,通常显示的驱动芯片中的寄存器很复杂,一般初始化后也会被别的程序使用,要注意在进行数据写入时确定范围。其二,在显示器的屏幕上可手动输放内容。再运用软件处理成图片取模,通过不同的索引进行判断。

(3)软件系统中子程序以及按键处理的子程序所进行的设计。实际子程序中时钟与日期芯片会自定义进行读取与写入数据的,并运用数据函数调用芯片中实际日期与时间函数进行处理。然后运用键盘进行程序扫描确保实际读取的函数可使用。

(4)软件系统中芯片的子程序所进行的设计。温度采集芯片在进行工作的过程中,要按不同流程进行秩序性工作。芯片总体初始化后进行ROM操作,当存储器进行操作指令发出后才可读取温度数据。

3 结束语

综上所述,上文主要分析了基于单片机的液晶显示器设计方面的相关内容,细节上针对液晶显示器设计的相关日期时间和温度变化相关显示情况进行研究。再运用硬件进行系统设计,从而设计出最小系统和液晶显示器以及时钟与温度采和电路设置等等方面的分析,同时也从相关软件的系统设计进行全面的分析,其中有主程序的设计以及系统显示的子程序方面的设计和芯片的子程序所进行的设计等等方面阐述了液晶显示器整体设计的过程。不但可以基于单片机进行液晶显示器的设计,同时也满足了液晶显示器未来发展的趋势。

参考文献:

[1]许思达.基于51单片机的TFT液晶显示设计[J].电子元器件应用,2010.

[2]楼然苗.51系列单片机设计实例[M].北京:北京航空航天大学出版社,2003.

单片机程序设计篇5

Xu Shuyan;Li Shixiong;Su Yibai

(China Agricultural University,Beijing 100083,China)

摘要:随着经济的飞速发展和科学技术水平的不断提高,智能数据采集系统在工业生产以及科学研究中得到了广泛的应用。在信息化时代,数据和信息无疑成为一种重要的资源,而数据采集系统的出现更是进一步促进了人机交互、对设备的自动检测控制等的实现,为现代化工业生产提供了方便。本文将分析基于单片机的智能数据采集系统的研究必要性,阐述基于单片机的智能数据采集系统的设计要点及其具体方法,以期对基于单片机的智能数据采集系统的改造和创新做出应有的贡献。

Abstract: With the rapid development of economy and the increase of scientific and technological level, intelligence data collection system is widely used in the industrialproduction and scientific studies. In the information age, data and information had become the important resource and data collection system further promotes the man-machine interaction and automatic detection control of the device, providing convenience for the modern industrial production. This article examines necessity of the research on intelligence data collection system based on SCM, and expounds the key points of design and the methods, to contribute to the reform and innovation of intelligent data collection system based on SCM.

关键词:单片机 智能数据采集系统 设计

Key words: SCM;intelligence data collection system;design

中图分类号:TP37 文献标识码:A文章编号:1006-4311(2011)29-0139-03

0引言

智能数据采集系统作为一种及其实用的电子技术,被广泛地运用到信号的检测、设备的监测、信号的处理、仪器和仪表的检测等等很多领域。随着信息时代的来临,信息技术特别是数字化技术得到了不断的发展,因而智能数据采集系统的设计也得到了不断的改进和完善,当今的数据采集技术实现了速度的提高、数据量的增大、数据通道的增多等很多方面的发展,而基于单片机的智能数据采集系统更是凭借其紧凑的结构特点、稳定的工作性能、良好的可扩展性、丰富的功能等优点得到了充分的重视和广泛的应用。因而,我们因该在充分利用和发挥基于单片机的智能数据采集系统的上述优点的同时,对基于单片机的智能数据采集系统进行进一步的分析和研究,以实现对该系统设计的优化和完善,进一步发挥该系统在工业生产和数据科研等当面的重要作用。

1智能数据采集系统的发展趋势

1.1 国外发展趋势智能数据采集系统在国外已经得到广泛的利用,其中该系统在工业行业最早应用,使得外国工业得到快速发展,工业质量和水平得到飞速提高。

1.2 国内的发展趋势伴随着国外单片机的智能数据采集系统的发展和其自身的便捷高效的特点,智能数据采集系统得到越来越多的国内厂商和用户的支持。这个领域的企业也越来越重视这方面的研究与开发。

2智能数据采集系统的重要性

单片机是一种集成电路芯片。它应用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器、计时器等功能(还可能包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上,组成一个小而完善的计算机系统。而单片机的智能数据采集系统是一种集计算机、现代传感、信息融合、人工智能、自动化及通讯等高科技技术于一体的,运用多传感器进行数据采集,微控制器进行数据分析处理,系统的应用PID控制技术的数据采集系统。单片机的这种智能数据采集系统在我们的生活的各个领域都有着广泛的应用。它的应用大到导弹的导航装备、飞机的仪表控制、计算机网络通讯与数据传输及工业的制动化,小到轿车的安全保障系统、录像机、摄影机、全自动洗衣机的智能控制及电子玩具等。尤其是近几年来,自动控制机器人,各大智能仪表、智能机械等的快速发展更是离不开单片机的智能数据采集系统。

随着社会的进步,人们对智能化的要求越来越高,这就使得单片机的智能采集系统显得越来越重要,越来越被人们依赖。因此,对单片机的智能数据采集系统的进行更深入的研究就越来越有必要。

3单片机的设计

3.1 系统总体分析单片机的智能数据采集系统设计主要分为两部分,一部分是硬件系统设计,它包括前段传感器、单片机、液晶显示器和SUB通信接口。其中,单片机是数据采集系统中完成信号转换的核心部件,它能够对转化后的数据信息进行运算整理并通过液晶显示器进行即时展现;而USB通信接口则是数据采集系统功能的进一步补充。它可以直接快速的将采集到的数据传到PC,利用PC的数据处理速度快、储存量大的特点将数据快速的分析处理。另外,SUB还具有可以提供电源的优点。另一部分是软件设计。该系统的软件由主程序、系统监控软件、定时与中断系统程序等组成。

单片机的硬件系统与软件系统只有在紧密联系,通力合作的相互协调的情况下才能构成一个高端的数据采集系统。在对系统进行研发的过程中,不可将两者分开单独进行设计研究,要根据两者之间的关系,例如,设计硬件时要注意系统的功能及软件的可实现性,同时,设计软件时要考虑用硬件的工作原理和硬件的配置问题。总之,单片机的智能采集数据系统是一个极其复杂的高端系统,在探索研究的过程中要时时注意硬件与软件是一个紧密联系的整体,决不可将两者单独分析研究。

3.2 硬件设计

3.2.1 硬件组成设计在单片机的智能采集数据系统中,其硬件系统是基础。它的电路设计最好选择标准化的、通用的电路,并且符合单片机应用系统的一般用法。当单片机外接电路较多、较复杂时,就要考虑硬件系统的驱动能力。此外,硬件系统的可靠性和抗电磁干扰的能力是硬件设计中不可或缺的一部分,且其可靠性和抗电磁干扰能力与硬件自身的结构材料有关,应给与充分的认识和严格的对待。同时,在硬件设计过程中,要尽可能的考虑到软件的程序设计,如果软件可以完成的功能,则就用软件设计的方法实现,从而使得硬件的设计更加简捷轻便。本文将就AT89S52单片机作为系统的单元,用TLC1543作为A/D芯片。AT89S52是美国ATMEL公司制造的8位Flash单片机。这种单片机的采用高密度、非易失性存储器制造技术,在工业上,他与标准的80C51引脚和指令系统兼容。该单机片内的8KBFlash程序存储器有两个优点,一方面他可以用传统的方法进行编程;另一方面,它也实现了直接在线编程。它的内部安装了看门狗计时器,因而无需外接看门狗计时部分。该片的工作频率最高可以达到33HMz,计算速度极高加之它的高灵活性和低成本,使它在很多复杂的智能控制领域得到广泛的应用。TLC1543是一种接口较为简单的串行A/D转换器。它的转换时间为10微秒,精确度是10位分辨率而且它的噪音很低,是一个较高性能的转换器。其他的硬件则采用美国Xicor公司生产的X25045,显示驱动芯片是一款可以方便的与任何一种单片机连接的LEDPS7219 芯片。它是一种高性价比、功能较强的多位LED显示管理芯片,可同时驱动8位LED。串行通讯接口芯片应用的是MAX公司的拟MAX232ECP芯片。这是一款典型的串行通讯接口芯片,具有9600位/秒地波特率设置。而非易失存储器采用SD2001E来储存采集到的数据。该系统工作中每分钟按照一定的形式储存一次采集来的数据。

3.2.2 A/D采样模式设计TLC1543是采用SPI技术的模拟数字转换器,其特点有输入通道多、速度快、分辨率高、性价比高,易于单片机接口等。它的控制CS,I/OCLOCK,ADDRESS和数据输出端DATAOUT遵循串行外设接口的SPI协议。单片机,TLC1543再加上少量的辅助器可以组成一个性价比较高的只能数据采集系统。由于,TLC1543占用很少的单片机资源,所以,单片机有足够的资源和空间完成显示、控制功能。TLC1543有两个工作周期:访问周期和采样周期。运行中由CS控制使能和禁止,但CS必须防低电平。CS是高电平时,I/OCLOCK和ADDRESS就会同时被禁止,DATAOUT为高阻状态。当CPU时CS降低时,TLC1543开始进行数据转换,I/OCLOCK和ADDRESS使能,DATAOUT变回原状态。接着,在CPU的控制下实现模拟输入和保持电路。同时,I/OCLOCK端输入时钟时序,CPU从DATAOUT处接受前一次A/D的转换结果。其中,始终序列的长度为10个时钟,前四个时钟通过利用4位地址从ADDRESS装载地址寄存器来选择模拟通道,后六个时钟控制模拟输入的采样。所以,模拟是虚的采样开始于第四个时钟序列。DATAOUT引脚脱离高阻状态引起一次I/OCLOCK工作过程。最终由CS的上升沿终止并在一定的延缓时间内使DATAOUT的引脚返回到高阻状态。在这两个工作周期后禁止I/OCLOUCK和DATAOUT端。TLC的工作时序如图1。

以上特点和工作流程使得单片机虽没有内按SPI接口,但通过软件模拟SPI协议也可以实现通信。

3.3 软件设计软件程序有三个层次:单片机程序、设备驱动程序和客户应用程序。单片机程序的工作是控制开发板;设备驱动程序是Windows核心的一部分。它和系统中的SUB总线驱动程序一起管理PC机对SUB设备;客户应用程序是提供能够时时刻刻控制的人机操作界面,并对现场进行有效的监管控制,是软件程序的最高层。

3.3.1 单片机程序设计单片机是由C语言设计的,设备正常工作的核心程序。它的作用是:控制A/D模块的数据采集;控制RT12864M使之时时显示采集来的信号;实时上传即时的数据给PC;控制芯片接受和处理SUB驱动程序的请求。单片机的程序主要分四个部分:初始化部分,数据处理部分,显示监控部分和USB通信部分。初始化部分主要负责当设备上电后,对设备进行初始化的配置;数据处理模块主要是对前端采集来的数据进行简单的预处理,解码主机请求,并对主机的请求进行适当的处理;显示监控部分则是对采集的信息进行实时显示;USB通信部分将主机与前端采集信息的硬件进行信息的反馈,它是固件设计的重中之重。单片机将大的程序分为四部分的特点,大大提高可设计的可靠性,使其可读性方便,软件升级简单。

以SUB通信模块威力,通信模块固件结构如图2。

SUB的中断服务可以根据实际的需要编写,例如发出启动或停止数据采集命令。

中断服务处理函数代码如下:

usb_isr() interrupt 0 //中断服务程序人口

{

DISABLE: //关中断

uint i_st:

//置中断处理标志位

bEPPflags.bits.in_isr=1;

//读中断寄存器

i_st=ReadInterruptRegister();

switch(i_st)

{

case D12_INT_BUSRESET:

bus_reset();

bEPPflags.bits.bus_reset=1;

break;

case D12_INT_SUSPENDCHANGE:

bEPPflags.bits.suspend=1;

break;

……

default;

break;

}

//清中断处理标志位

bEPPflays.bits.in_isr=0;

ENABLE;//开中断

}

3.3.2 驱动程序设计驱动程序是处于软件和硬件之间的方便两者之间的信息交流的软件组件。当SUB初次接入设备时,系统将会自动识别并为其安装驱动程序,之后当鼠标键盘等类似的设备再接入时,操作系统将会对其进行扫描查询,这时,用户就不能主机的数据进行监控,所以,安装专用的驱动程序就显得尤为重要。

Windows驱动程序要用专业的工具进行开发,而且过程十分复杂。这种专业的工具的种类很多,在这以WINDRIVER为例。这种工具软件能够自动安装SUB设备驱动程序,能够大大减少研发者的工作难度和工作量。

打开WRIDERWIZARD驱动系统,创建一个新程序,弹出Cardinformation窗口后,可以看到将要创建的驱动程序的设备信息,单击generate.INFfile会出现驱动程序的硬件配置信息,然后按照这些信息来设计驱动程序。当LED灯不再闪烁时,驱动程序安装成功。最后,就可以根据这个驱动程序为设备编写应用程序来实现主机与设备数据的交换。

3.3.3 应用程序设计应用程序能够为用户提供用户界面,使用户实现对设备的监管和控制。

它的设计也要运用driver wizard。首先,打开driver wizard,创建新的窗口;选择需要的SUB设备,然后选择generate code,出现一个应用程序的工程源代码。最后,对所建的程序进行编译连接,得到一个能够执行的程序。

工具软件Windriver创建的驱动程序不仅能够提供部分简介控制设备硬件的接口函数,使用户利用这些接口函数改写自己的应用程序;还可以实现SUB接口通信的大部分功能。

总之,单片机的智能数据采集系统虽然在设计上有着诸多的困难,但是它给广大使用者带去了更多的方便和实用,大大减少了用户在数据处理,设备监控等方面的复杂程序。基于单片机的智能书记采集系统的优点,设计者应该不断地进行改造和创新,使得单片机的智能数据处理系统能够更高效,更便捷的为用户服务。

参考文献:

[1]朱芳.基于单片机的数据采集系统设计[J].重庆科技学院学报,2009,(2):95.

[2]董巍巍,李钊,李建军,李冰,彭黎明.基于单片机的数据采集系统设计[J].计算机与网络,2009,(12):34.

[3]俞荣,赵子真.单片机自动控制应用系统的设计探讨[J].机械管理开发,2010,(1):201.

[4]刘明龙,刘浩,王腾.基于单片机的智能数据采集系统[J].科技博比.2009,(32):167.

[5]吕宏丽,马壮.基于单片机的自动控制系统的数字化改造[J].实验室科学,2009,(2):87.

[6]尹海宏.基于单片机技术的数据采集系统的设计[J].信息技术,2008(12):5.

[7]唐宝成.基于C8051F020单片机的数据采集设计[J].科学与财富,2010,(4):6.

[8]许文斌,曾全胜.单片机实时数据采集系统设计[J].机械与电子,2009,(5):56.

单片机程序设计篇6

关键词:随车控制器;设计;公交

0引言

随车控制器系统是公交智能化调度系统的数据来源,也是智能调度系统调度指令的最终执行者。随车控制器系统具有定位、自动报站、接收调度指令等基本功能。

1公交车辆随车控制器的总体设计要求

随车控制器是实现公交车辆调度的信息采集和信息终端,该公交随车控制器终端的可靠性、实用性直接影响着整体的工作性能。

2公交车辆随车控制器硬件电路的总体规划

随车控制器硬件电路设计,首先应该满足系统的功能要求,在此基础上运用先进的单片机芯片及芯片,设计性能良好的集成电路。本系统硬件部分主要包含以下几个部分:

2.1单片机系统

单片机系统可以说是整个系统的核心,其他的电路都可以看作是单片机电路的电路。

(1)单片机型号的选择。

选用Atmel公司的AT89S8252单片机作为随车控制器的处理单元。它是一款高性价比的单片机,与工业标准的SOC52系列完全兼容。其主要性能特点如下:

与MCS-51产品兼容;8K的Flash存储器,在线编程,可写1000次;2K的EEPROM,可写100,000次;2.7V-6.0V工作电压;晶振:OHz-24MHz;三层可编程加密;256*8位内部RAM;

32个可编程I/O管脚;3个16位定时器/计数器;9个中断源;全双工UART串行通道;低功耗空闲和休眠节电模式;节电模式中断唤醒;看门狗定时器;双数据寄存器指针;多种封装形式:40DIP. 44PLCC,44PQFP;掉电模式。

AT89LS8252是低功耗、8位CMOS工艺处理器,并具有8K在线可编程Flash存储器。片内Flash可多次编程。AT89S8252是一个功能强大的处理器,可以为许多嵌入式应用提供高灵活性,高性价比的解决方案。

(2)看门狗和复位电路。

几乎所有的单片机都需要复位电路,对复位电路的基本要求是:在单片机上电时能可靠复位,在下电时能防止程序乱飞导致EEPROM中的数据被修改;另外,单片机系统在工作时,由于干扰等各种因素的影响,有可能出现死机现象,导致单片机系统无法正常工作。为了克服这一现象,除了充分利用单片机本身的看门狗定时器外,还需外加看门狗电路。MA×TN公司推出的MA×813L刚好能满足系统设计要求。MA×813L有双列直插和贴片式两种封装形式。

第1脚为手动复位输入,低电平有效;第2,3脚分别为电源和地;第4脚为电源故障输入;第5脚为电源故障输出;第6脚为看门狗输入;第7脚为复位输出;第4脚为看门狗输出。

2.2单片机串口通讯

(1)单片机串口的应用特性。

AT89S8252单片机上有UART(通用异步接物发送)用于串行通信,发送时数据由T×D端送出,接收时数据由R×D端输入,有两个缓冲器SUBF,一个作为发送缓冲器,另一个作接受缓冲器,它是可编程的全双工的串行口。短距离的通信可使用UART的TTL电平,使用驱动芯片MA×232可接成RS232C和通用微机进行通信。

SCON是串行口控制和状态寄存器,其格式如下:

SMO, SM1:串行口工作方式控制位;SM2:多机通信控制位;SM2=1,只有接收到第9位(RB8)为1, RI才置位;SM2=0,接收到字符RI就置位;REN:串行口接收允许位;REN=1,允许串行口接收:REN= 0,禁止串行口接收;TBS:方式2和方式3时,为发送的第9为数据,也可以作奇偶校验位;RB8:方式2和方式3时,为接收到的第9位数据;方式1时,为接收到的停止位;TI:发送中断标志。由硬件置位,必须由软件清0;RI:接收终端标志。由硬件置位,必须由软件清0。

(2)串口通信接口。

由于该模块是采用6V电源供电,因此须对电压进行处理,系统的供电24V,因此要进行电压转换。

根据模块的特性及波特率要求,我们很容易就写出单片机串口通信的初始化程序:

TMOD=0×20

THl=O×EB;// if ×tal=11.059M TH1=O×EB

// if ×tal=12M THl=0×E6

PCON=0×00

SCON=0×50

TR=I

EA=1

ES=1

2.3直流稳压电源的设计

车载电源是+24V直流电源,单片机系统大部分芯片要求十SV直流电源供电,无线通讯模块要求+6V直流电源供电。这就要求将车载电源稳定可靠地转换为能够满足单片机系统要求的直流稳压电源。

车载+24V降为+SV的电路图如图7所示:图中的BD1是续流二极管,起到保护作用,防止变压成+5V的电源带有电感性负载,瞬时产生反向电动势,将三极管击穿。

2.4随车控制器的信号采集

(1)车速和里程信号的采集

车速和里程信号是系统重要的信号,尤其是车辆里程,对于在调度中心精确显示出车辆的位置有重要的影响。

霍尔式转速传感器简单、经济,抗干扰能力强,适合车载系统使用。

霍尔元件的输出信号再经过放大器放大、电压比较器整理,就可以满足单片机系统的要求了。

(2)开关门信号和站点的采集。

公交车辆在行驶过程中规范其操作,即只有进站后方可以打开上车门。随车控制器要与门控电路相连,使得当车门状态发生变化时,车载终端可以察觉到这种变化,并记录采集的次数。这样可以监测公交车在行使过程中是否开关门、是否到站未停车、是否飞车过站等。

3公交车辆随车控制器的软件设计

在随车控制器硬件设计完成之后,必须设计完善的程序才能够实现硬件电路的功能。

3.1系统软件的编程语言的选择

用来开发51系列单片机的编程语言,常用的有三种:汇编语言,C语言,嵌入式操作系统。

采用C语言对8051系列单片机进行开发相对于汇编语言和嵌入式实时操作系统具有一定优势,特别是控制执行机构的硬件简单,不必编写太多底层函数;控制程序也不复杂,不必担心占用大量系统运行时间。因此,单片机程序采用了C语言编制。

3.2系统软件的主程序的编制

本系统的软件设计是按如下步骤进行的:

(1)分析问题:明确系统所要解决的问题;

(2)确定算法:根据提出的问题和指令系统的特点,决定系统程序的算法,算法是程序设计的依据,它决定了程序的正确性;

(3)制定程序流程图:根据所选择的算法,制定出系统运算的步骤和顺序,它运算过程画成程序的流程图;

(4)根据流程图编写程序;

(5)程序调试:使用开发工具和开发调试软件,对所设计的程序进行调试,检查和修改程序中的错误的地方,使程序能正常运行;

(6)程序优化:通过程序优化,可以缩短程序的长度,加快运算速度和节省数据存储单元。在程序设计中经常使用循环程序和函数或子程序的形式来缩短程序,通过改进算法来节省工作单元和减少程序执行的时间;

(7)程序写入片内:模块化编程是一种软件设计方法,各个模块程序可以分别编写、编译和调试,最后将所有模块一起连接调试。

本程序主要完成的任务有系统自检、初始化、信号采集、模块通讯等功能,其流程如图10所示。源程序数据量较大,不在这里给出。

3公交车辆随车控制器的抗干扰设计

由于汽车在运行过程中工况复杂,工作环境恶劣,CPU不仅要承受不良路面所引起的震动和冲击,而且要承受汽车内部电器系统和外界高压电场的电磁干扰。因此,系统在设计过程中在软件和硬件方面都要采取一系列的抗干扰措施,以最大限度消除干扰的影响,保证系统的正常运行。

4.1系统的硬件抗干扰设计

系统将从软硬件两方面采取措施,综合防止干扰对单片机系统工作的影响。硬件方面主要是切断来自传输通道和电源线的干扰。

硬件抗干扰设计的基本原则是:抑制干扰源,切断干扰传播路径,提高干扰敏感器件的抗干扰性能。

(1)抗电源干扰信号。

外部干扰信号很可能通过单片机系统的电源线窜入单片机系统中。为此,在每个芯片的电源线和地线之间都用一个大电容和小电容连接。大电容可以滤掉低频波,小电容可以滤掉高频波,这样一来,进入芯片的电源线夹杂的干扰信号就大大减少了。

(2)抗传输通道干扰信号。

传输通道是单片机系统输入输出的桥梁,也是干扰信号侵入单片机系统的重要途径,在输入和输出通道上采用光电隔离器来进行信息传输是很有好处的,它将单片机系统与各种传感器、开关、执行机构从电气上隔离开来,很大一部分干扰将被阻挡。本系统中采用光电隔离器TLP5210。

4.2系统的软件抗干扰设计

(1)CPU抗干扰措施。

如何发现单片机受到干扰,如何拦截失去控制的程序流向,如何使系统的损失减小,以及如何恢复系统的正常运行,这些就是CPU抗干扰需要解决的问题。可以下几种方法:

①人工复位。

对于失控的CPU,最简单的方法是使其复位,程序自动从OOOOH开始执行。为此,只要在单片机的RESET端加上一个高电平信号。本系统设计一个模仿人工监测的“程序运行监测器”,俗称“看门狗”,其本身能独立工作,基本上不依赖CPU,CPU只在一个固定的时间间隔内与之打一次交道,表明系统目前尚属正常,当CPU落入死循环后,能及时地发现并使整个系统复位。

②掉电保护。

电网瞬间断电或电压突然下降将使微机系统陷入混乱状态,而电网电压恢复正常后,微机系统难以恢复正常。对付这一类事故的有效方法就是掉电保护。掉电信号由硬件电路检测到,并加到单片机的外部中断输入端。软件的中断将掉电中断规定为高级中断,使系统及时对掉电做出反应。

(2)指令冗余。

所谓指令冗余,就是在一些关键的地方人为地插入一些单字节的空操作指令(NOP ),当程序“跑飞”到某条单字节指令上时,就不会发生将操作数当成指令来执行的错误。对于本系统使用的MCS-S1单片机来说,所有的指令都不会超过3个字节,因此在某条指令前面插入两条NOP指令,则该条指令就不会被前面冲下来的失控程序拆散,而会得到完整的执行,从而使程序重新纳入正常轨道。本系统在设计软件时在一些对程序的流向起关键作用的指令前面插入两条 NOP指令。

(3)软件陷阱。

采用“指令冗余”使“跑飞”的程序恢复正常是有条件的。首先“跑飞”的程序必须落到程序区,其次必须执行到所设置的冗余指令。如果“跑飞”的程序落到非程序区(如EPROM中未用完的空间或某些表格等),则“指令冗余”措施就不能使“跑飞”的程序恢复正常了。这是需要采用“软件陷阱”,“软件陷阱”是一条引导指令,强行将捕获的程序引向一个指定的地址,在那里有一段专门处理错误的程序。

(4)通讯协议。

SA68D21是自带CRC校验码等错误监测手段的,并且通讯协议规定了数据包的格式,如果有不符合的地方,就拒绝接收数据包的内容,这就很大程度上降低了外界的干扰。

参考文献

[1]周江评.中国城市交通规划的历史问题和对策初探[J].城市交通,2006,4(3) :33~36

[2]刘瑜,张晶等.地理信息系统一原理、方法和应用[M].北京:科学出版社,2005

[3]徐绍锉,张华海,杨志强等.GPS测量原理及应用[M].武汉:武汉大学出版社,2006

[4]王志纲.GPS/DR组合导航系统在车辆定位中的应用[M].武汉大学学报,2004, 29 (12) :97~98

单片机程序设计篇7

【关键词】单片机;测试系统;电阻测量;电容测量

1.引言

基于单片机的铁路信号测试系统,是根据现场的实际使用需要而研制开发的,可以很精确的测试电阻和补偿电容,直接读出电阻阻值、电容容量。接地线电阻作为轨道电路的一个重要参数,为了保证通信、信号设备及人员安全,要求通信、信号设备的地线接地电阻必须达标,控制在一定范围内。补偿电容可以弥补电容不足,抵消钢轨感性,使钢轨阻抗尽可能呈阻性负载,以保证轨道电路的传输距离和机车信号系统的可靠性。

2.系统总体结构

基于单片机的铁路信号测试系统的软件流程图如图1所示,硬件框图如图2所示。系统的工作过程:启动测试系统,上电或复位,系统进行初始化,完成初始化后,选择工作模式,电阻测试或者电容测量。通过STC89C52单片机控制电阻模块和电容模块,测试的数据存储在SD卡中,通过RS232串口将数据传输到微机存储。

在硬件设计过程中,采用单片机STC89C52编程,实现对电阻、电容测试的控制,LCD显示;采用24位HX712A/D转换器芯片;RS232串行口通讯频率9600bit/s;电源采用线性稳压芯片ASM1117,供电电压3.3V、5V。

3.测试工作原理

采用STC89C52单片机,20引脚为接地端,40引脚为电源端,31引脚需要接到电位使单片机选用内部程序存储器,18、19引脚接上一个11.0592MHz的晶振为单片机提供时钟信号,第9引脚为复位引脚,单片机只有满足这些才能正常工作。利用P2口作为数据读写,片选信号端,功能切换。P3口采用第二功能,定时器/计数器外部计数脉冲输入,外部数据存储器写/读。采用HX712芯片完成测阻。在设计程序测量时,首先选择测试工作模式,在测量的同时,程序执行做出判断,不能超过设定的量程,然后跳转到测量程序,在范围内正常测试并且显示结果,按“确定”键后数据存储。测阻电路如图3所示。

4.系统软件设计

基于单片机的测试系统,在Keil环境下,由主程序、A/D转换子程序、时钟芯片程序、数据存储程序等部分子程序组成。主程序完成各个子程序的上电初始化,以及实际控制各个功能模块的正常工作。读写、存储产生程序设计根据测量的接地电阻,补偿电容的属性,来不断循环延时,并且通过单片机来控制完成测试。

系统的程序设计,完全是基于单片机的应用,其中包括I/O口的控制、定时器、外部中断及寄存器的使用。

5.结语

本系统以单片机为核心,以HX712 A/D转换器芯片为数模转换原件,SD-SPI数据存储,RS232串行口数据通讯。电路结构简单、运行可靠,实现了对电阻、电容的测试。此系统可以顺利的完成与PC机的数据通讯,还可以在单片机的预留的I/O口增加检测传感器,以提高系统的广泛性。

参考文献

[1]金川,董爱华,马一杰.基于步进电机的运料系统的软硬件设计[J].仪表技术,2013(2):35-37.

[2]张灿.单片机花样流水灯设计[J].信息通信,2013(1):42-43.

[3]潘磊.基于单片机的多路温湿度检测系统设计[J].信息通信,2013(1):65-66.

作者简介:

单片机程序设计篇8

摘要:本文介绍了一种基于AT89C51单片机的电子琴控制系统的设计方案。利用4×4点阵式键盘构成“0~F”16个按键,当某键被按下,在LED数码管上显示相应的键码,并通过扬声器发出音调。本设计以Proteus仿真软件与Keil程序调试软件相结合构建的实验平台,既可以模拟单片机控制电路的运行效果又可以大大的降低设计成本、缩短设计周期。

关键词:单片机;电子琴;Proteus仿真;键码

中图分类号:TN70 文献标识码:AAT89C51单片机作为该控制系统的核心元件,利用其强大的控制功能和灵活的编程语言,借助Proteus仿真软件与Keil程序调试软件相结合的实验平台,通过4×4点阵式键盘电路和扬声器实现16个音调的音频信号的输出。本系统运行稳定,电路简单,软件功能完善,控制系统可靠,性价比高等特点,具有一定的实用和参考价值。

1 Proteus软件简介

Proteus 软件的功能非常强大,具有电路设计、PCB电路制版及仿真等多种功能,不仅能够对电工、电子技术学科涉及的电路进行设计与分析,还能够对微处理器进行设计和仿真,并且功能齐全,界面多彩,是近年来广大电子设计爱好者难得的一个工具软件。

2 工作原理

本系统是采用单片机控制实现的16键电子琴。采用Proteus软件制作的电子琴工作原理,如图1所示。控制要求:16个键是按照自上而下,从左到右的顺序触发系统,输出3~4的16个音调的音频信号,并将其显示。当按下16个键中的某一个键时,键码有P3口输入到单片机,单片机就识别外部被按键的键码,查询该键码在键码表中所

在的相对位置,并将键码由P0口输出到数码管中显示,并用相对位置从简谱表中取出相应的简谱码,用取出的简谱码去控制系统,由P1.0输出相应的音频信号,直到键被松开才停下来。

3 硬件设计

单片机作为电子琴控制系统的核心部件,经过精心考虑,本系统采用了美国ATMAL公司生产的产品AT89C51单片机。整个电路由单片机最小应用系统,4×4点阵式键盘电路,键码显示电路,音频输出电路组成。4×4点阵式键盘电路,将16个按键排成4行4列,分别将每一行的每个按键的一端连接在一起构成行线,将每个按键的另一端连接在一起构成一根列线,这样便一共8根线并连接到单片机的P3口上,通过程序扫描键盘可检测16个按键,4×4点阵式键盘电路。键码显示电路是由1位共阴极数码管组成,该电路是用来显示单片机从16位简易键盘输入数据后转换成的键码,即当按下“KEY0~KEYF”中的其中一个时,显示电路显示相应的“0~F”的字符。

4 软件设计

4.1 音调控制。 当键盘子程序扫描到有键按下并得到“0~F”键码时,程序将取出一个与该键音调对于的16位数据作为定时器T0的计数初值,从而控制硬件电路输出相应音调的音频信号。

4.2 音频输出控制。 音频输出时通过定时中断并每中断一次取反一次输出的方式来实现的,在此是采用控制T0工作方式来实现的。

4.3 简谱码的编制。本系统时利用定时器T0工作方式(16位计数器)的定时中断不断的对输出位取反而振荡产生音频信号。因此,中断的频率是音频频率的1/2, 从而根据各音调的频率计算出16 位(方式1)计算初值,这里的计数初值就称为简谱码。如“”的频率f=330HZ,工作方式1计数单元的最大值为65536。则简谱码(计数初值)=65536-(T/2)106=65536-106(2×330)=64021,同理可将其他音调的简谱码编制出来。根据16个键按照键码在键码表中的顺序触发系统,输出~的16个音调的音频信号的控制要求,以及编输出~的16个音调的简谱码,并将0~F的顺序排列,即可得到简谱码表。

TABLE2:

DW 64021,64103,64260,64400,64524,64580,64684,64777

DW 64820,64898,64968,65030,65058,65110,65157,65178

4.4 程序设计。程序设计采用模块化编程方法。软件由主程序、子程序和定时中断服务程序组成。主程序和子程序完成按键扫描、显示功能;定时中断服务程序用于实现音频振荡输出功能,并实时更新显示数据。

5 仿真调试

基于Proteus与Keil软件相结合所构建的实验平台,利用Proteus软件制作的电子琴工作原理图。通过Keil软件编制的程序并将其编译成目标代码文件(即*.HEX),进入Proteus软件制作的电子琴工作原理图,双击单片机AT89C51,弹出“编辑元件属性”对话框,在“ProgramFile”栏中选择要加载的目标代码文件,然后点击确定,最后,返回Proteus主界面,点击软件左下角的“运行”控制按钮并执行仿真功能,按照控制要求进行控制便可以在电子琴工作原理图上看到最终的运行效果,运行效果图

结语

基于单片机的电子琴控制系统的设计,AT89C51单片机作为该控制系统的核心元件,以Proteus仿真软件与Keil程序调试软件相结合构建的实验平台,既可以模拟单片机控制电路的运行效果又可以大大的降低设计成本、缩短设计周期。本系统运行稳定,电路简单,软件功能完善,控制系统可靠,性价比高等特点,具有一定的实用和参考价值,解决了实验和工程应用间脱节的矛盾。对单片机系统设计有很大的帮助。

参考文献

[1]Proteus软件英文简介.

单片机程序设计篇9

关键词: 单片机课程; 项目式教学; 控制器; 创新意识

中图分类号:G642 文献标志码:A 文章编号:1006-8228(2014)12-53-02

Reform and practice of SCM course in colleges based on project

Sun Yuan, Chen Limei

(Beijing Wuzi University, Beijing 101149, China)

Abstract: According to the disadvantages in the traditional SCM (single-chip microcomputer) courses, the project teaching method is proposed. The selection of project, the design of project and the implementation of project in the process of teaching are discussed.Take the gas controller as a project case, how to imbed the project teaching method into the teachingof the SCM hardware and software is introduced. With project as the main line, the entire project is gradually developed. It shows the superiority of project teaching method in SCM teaching. It can arouse students' interest and enthusiasm, stimulate their creativity, imagination and help them quickly adapt to the related work after graduation.

Key words: SCM course; project teaching method; controller; creativity

0 引言

单片机课程是我校信息学院计算机技术与物联网工程的专业基础课。在传统的授课模式中,教师一般都会采用“以讲为主,实验为辅”的方式,授课重点强调对原理性知识的理解和掌握,讲解过程中涉及很多抽象的理论知识,一般先将单片机的各个环节如总线、并行接口、中断、堆栈、地址、数据类型和语法等分开讲解,各部分无论讲得多么细致,学生还是很难建立起一个基于单片机测控器件的整体概念,这样就把本来是一个合理的有机体变得支离破碎,学生普遍感到难学,导致课程变成了“天书”,学生逐渐失去了学习的信心和兴趣。引入项目式教学方法可以大大改善单片机教学中“学”与“教”的关系,提高学生的学习兴趣,为学生在学习和就业方面架起桥梁,增加毕业生就业机会。

1 项目式教学方法

项目式教学是师生通过共同实施一个完整的“项目”工作而进行的教学活动。在职业教育中,项目是指以生产一件具体的、具有实际应用价值的产品为目的的任务。在整个教学过程中体现了学生的主体作用,使课堂教学的质量和效益得到更大幅度的提高。通过项目教学法学习的学生,他们的动手能力、解决实际问题的能力及创新能力将有很大的提高[1]。打破传统的教学模式,将教学资源整合,引进“产品导向、项目递进”式的项目教学,从成熟的生产或生活中基于单片机项目案例入手,让学生首先看到结果是单片机能够做什么,“原来单片机可以完成这么多功能”,很多学生在惊讶的同时会提出很多问题,自己想掌控单片机,如果自己学会了,那么也可以设计很多智能器件,这时老师可以将这些测控器项目一层一层打开,由浅入深,由深入浅,由整体到部分,由部分到整体,将单片机主要的内容环环相扣讲给学生,学生可以在总体和细节上掌握单片机,而不是以前只见树木不见森林的讲解方法。项目式教学法使学生有独立进行计划工作的机会,在一定的时间范围内可以自行组织、安排自己的学习行为,使学生变被动灌输为启发求知。项目式教学不仅是已有知识、技能的应用,而且还要求学生运用新学习的知识、技能,解决过去从未遇到过的实际问题[2]。

2 项目式教学案例分析

2.1 如何进行项目总体规划

本文以基于单片机天燃气采集和泄露报警器为案例来介绍项目的总体规划。天燃气控制器除了用于常规的显示等功能之外,还需要能够实现天燃气的采集、存储、调整、显示、上传和接收数据等,以及燃气泄露报警等功能,如图1所示。

[单片机][显示][键盘][通信接口][天燃气采集][天燃气泄露][存储扩展]

图1 燃气控制器功能图

煤气控制器外观中主要分四个模块:①信号输入功能;②显示功能;③存储功能;④通信功能等。学生首先看到的是一个用于实际天燃器采集和泄露报警的产品,从这个产品的功能出发,对单片机系统案例进行剖析、总体讲解。单片机应用系统的开发是以单片机为核心,配合一定的外部电路及程序,从而实现特定测量及控制功能的应用系统。单片机的任务是指,以单片机为核心,构建硬件部分和软件部分组成,配以一定的电路和软件,实现某几种功能,完成相应的任务。硬件是系统的基础,软件则是硬件的基础上对其合理的调配和使用,从而完成应用系统所要完成的任务。单片机的设计应包括硬件设计和软件设计两大部分。

2.2 项目中硬件部分的讲解方法

项目设计中硬件设计分两部分。①单片机扩展部分设计:包括存储器扩展和接口扩展。本控制器对存储器进行扩展EEPROM,还有通信端口的扩展。从这个实际的扩展中讲解单片机为什么扩展,如何扩展;再引申到存储器的扩展,指EPROM、EEPROM和RAM的扩展。其接口扩展是8255、8155、8279以及其他功能器件的扩展。②各功能模块的设计:燃气控制器有输入模块、显示模块、通信模块、存储模块。在硬件上如何扩展这些模块,如信号测量功能模块、信号控制功能模块、人机对话功能模块、通信功能模块等,根据系统功能要求配置相应的A/D、D/A、键盘、显示器、打印机等设备。

在硬件设计时,注重总体方案,并需进行详细的技术论证。硬件电路的总体设计比较重要的是硬件电路原理图。在硬件系统中,电路的各部分都是紧密相关、互相协调,任何一部分电路的设计如果考虑的不充分,都会给整体方案带来难以预料的影响,所以设计者应在总体方案设计时反复论证、比较,寻求最合理的总体方案。在硬件设计过程中要用到Protel等印制板辅助设计软件,在Protel软件中首先画连接原理图,然后再用Protel将原理图转换为印制板图即PCB图,检查无误后,交给印制板生产厂家,印制板生产调试好后,将元器件焊接到印制板上就完成了硬件系统的设计,具体部骤如下:

⑴ 绘电路图。教学中要求学生利用最少的知识完成电路图的绘制;

⑵ 生成网络表,检查错误;

⑶ 规划电路板并手工布局;

⑷ 自动布线,并输出各层图纸。

学生完成这四个任务后,基本了解了硬件设计中设计电路板的全过程。尽管每个任务看上去都很简单,但过程是完整的,学生完成这个项目,就已完全掌握了设计过程,尽管项目完成得还不是很完美。如果课时不够充分,对于电路板的制作过程可以放到实践周中集中讲解效果会更好,但在通常的单片机课程讲解中,整个硬件的设计应该讲解清楚,还要通过这个控制器的案例将硬件布局优化和调试讲给学生,由一个单片机控制器硬件的设计引申出同一类的硬件设计[3]。

2.3 项目中软件部分的讲解方法

一个单片机能够聪明地执行某种任务,除了它们强大的硬件外,还需要它们运行的软件。其实单片机并不聪明,它们只是完全按照人们预先编写的程序而执行之。燃气控制器中的程序根据硬件的特点,采用模块化的编写方法,将程序的功能分成几大模块,例如初始化模块、燃气泄露报警模块、读表模块、写入24C16模块、键盘模块、通信模块等。在每个功能模块的基础上再细分几个子模块,在程序的编写上采用分层的方法处理,由于单片机有主程序较短的特点,主要的处理工作分层展开,通过子程序的调用一层一层地实现程序的功能,逐步细化、求精,使程序清晰、可读性强、可重用性强、便于调试扩展。通过燃气控制器软件部分的讲解将程序设计方法和思想渗透到各个程序的编写中。硬件设计之后,软件的任务是合理有效地驱动这些硬件,让硬件充分有效地分发挥其功能。在软件的设计中通过软件可以更好地理解硬件是如何使用和工作的。

MCS-51单片机的程序设计通常分为下面三个步骤。

⑴ 制作程序流程图

对所提出的算法找出最合理、最简便的解决方法并作出程序流程图,程序流程图用以表示人们利用一定的算法解决问题的思路。流程图有粗略和详细两种,粗略的流程图可以给出解题的大致步骤,而详细的流程图则给出每一步骤的细节。对一些大的问题,应先给出粗略的流程图以得出总体概念,然后作详细的流程图对每一步骤作具体的描述。

⑵ 资源分配

根据算法的要求合理地分配系统资源,如存储器分配、输入输出接口的分配等。在MCS-51系统中,程序和数据存储器分别编址,而存储器又分为内部和外部存储器,又有位寻址的存储器,因此资源分配得合理,将会给编制程序带来方便,不然可能会增加麻烦,甚至使程序产生错误。

⑶ 源程序编制及调试

源程序编制就是将流程图表达的算法用程序实现,MCS-51系统的程序可用编辑器编辑,在集成的调试环境中读入,也可直接在集成的调试环境中输入,集成调试环境包括了程序的调试工具,如单步、断点、全速运行程序,还能实现寄存器检查、存储器内容检查等功能。

通过总体论证之后,将燃气控制器的程序让学生花一段时间略读,使学生可以大致了解一个成熟的单片机控制器程序的整体模块框架。接下来,教师引导学生从总体上掌握程序的主框架,包括在此框架下如何扩展更多功能。总框架了解之后,再精讲各个模块,对典型的有代表的模块仔细讲解。类似的程序让学生自己消化,可以让学生采用查阅资料、研讨、和教师讨论等形式完成。这时教师将单片机中存储器分配、定时计数系统、通信系统、看门狗、中断系统、扩展等与程序处理相结合,让学生充分了解单片机的各模块是如何有条不紊地工作的,以及如何扩展功能等。

在整个软件的讲解中将单片机汇编语言或者C语言融入到各个环节中,使计算机语言更生动、更有生命力,学生学习语言时关注点在其应用而不侧重语法,语言用得多了自然就熟能生巧了[4]。

3 结束语

采用单片机课程项目式教学方法能够克服以往知识点散乱,单片机的各个环节不能有机结合的缺点,力求做到围绕单片机系统项目开发而展开教学,使学生通过典型案例的学习了解同一类项目的开发过程从而能够学会应用单片机解决实际问题[5]。我校开展与企业“一来二去”合作模式,“一来”即把企业家引进学校来, “二去”即老师去企业学习,学生去企业锻炼。通过此合作模式,在加强校企合作的同时,为学生的实践、实习和创新能力培养搭建了良好的平台。有了这样的校企合作平台,可以将企业中的成型项目带到教学中来进行研究和讲解消化,再到企业中创新地应用到新的项目中去。此合作模式可以提高学生的学习兴趣,希望可以为同类型的课程探索提供参考。

参考文献:

[1] 蒋国金.项目式教学中教师如何扮演好各种角色[J].职业教育,

2011.10:140-141

[2] 韩党群,杨勇.项目式教学人才培养模式[J].西安航空技术高等专科

学校学报,2011.9(5):90-91

[3] 孙媛,刘丙午编著.单片机技术及应用[M].机械出版社,2009.

[4] 秦学礼,杨儒亮等.高职计算机应用专业课程体系建设与探索[J].计

单片机程序设计篇10

关键词:软件调试;单片机;KEILC51;PROTEUS;硬件仿真

中图分类号:TP399 文献标识码:A

1 引言(Introduction)

单片机技术在各行各业中得到广泛的应用,同时单片机技术应用课程是一门实践性很强的软硬件结合的技术,需要通过大量的实践才能理解和掌握程序设计方法与硬件结构设计。同时在目前的教学中,单片机开发Keil C51与Proteus软件的联合仿真在实际的单片机系统开发中被普遍应用。为此,在单片机课程教学过程中,教师一定要结合工程实际做到软件和硬件相结合,实现理论教学与工程实践紧密结合,在传授理论知识的同时,教会学生如何使用实际工程所应用的相关软件进行单片机系统开发。

2 PROTEUS与KEIL C51介绍(Introduction of

PROTEUS与KEIL C51)

2.1 程序编译软件Keil C51

Keil C51软件是德国Keil Software公司开发的51系列单片机开发软件。Keil μVison系列是该公司推出的51系列兼容单片机软件开发系统。μVison是集成的可视化Windows操作界面,其提供了丰富的库函数和各种编译工具,能够对51系列单片机以及和51系列兼容的绝大部分类型的单片机进行设计[1]。Keil μVison系列可以支持单片机C51程序设计语言,也可以直接进行汇编语言的设计与编译。

2.2 仿真软件Proteus

为了验证设计程序的正确性,单片机程序设计与开发往往采用软件仿真与硬件仿真相结合的形式。软件仿真只能验证程序的正确性,不能仿真具体的硬件环境。硬件仿真常用的软件是英国Labcenter Electronics公司研发的电路设计与仿真平台Proteus。Proteus具有原理图编辑、印刷电路板(PCB)设计及电路仿真功能,该软件由ISIS和ARES两部分构成,其中ISIS是一款便捷的电子系统原理设计和仿真平台软件,ARES是一款高级的PCB布线编辑软件。

3 硬件电路设计(Hardware circuit design)

3.1 运用Proteus进行的硬件电路设计原理

LED发光管控制就是通常所说的流水灯控制,这是单片机控制技术入门的基本控制项目。通过花样繁多的流水灯控制任务,可以学习和应用基本的单片机和C语言程序设计的知识与技术,积累丰富的单片机项目开发与程序设计的经验与技巧,为进一步提高单片机技术水平打下坚实的基础[2]。本项目采用的流水灯实际上是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管D1―D8、晶振Xl、电源VCC、单片机AT89C51和程序等组成的系统。如果让接在P1.0口的D1亮起来,那么只要把P1.0口的电平变为低电平就可以了;相反,如果要接在P1.0口的D1熄灭,就要把P1.0口的电平变为高电平;同理,接在P1.1―P1.7口的其他七只发光二极管点亮和熄灭的方法同D1。因此,要实现流水灯功能,只要将发光二极管D1―D8依次点亮、熄灭,八只发光二极管便会一亮一暗的做流水灯了[3]。在此还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,在控制二极管亮灭的时候应该延时一段时间,否则就看不到“流水”效果了。

3.2 KEIL C语言序的编程

单片机的应用系统由硬件和程序组成,上述硬件原理图搭建完成上电之后,还不能看到流水灯循环点亮的现象,要实现流水灯循环点亮,还要告诉单片机该怎么进行工作,即编写程序控制单片机管脚电平的高低变化,以实现发光二极管的一亮一灭。下面以八个发光二极管循环点亮来介绍两种。采用数组控制与运算符控制两种编程[4]方法实现。

(1)数组控制P0口流水灯

#include

void delay(unsigned char x)

{

unsigned char m,n;

for(m=0;m

for(n=0;n

}

void main(void)

{

unsigned char i;

unsigned char a[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

while(1) //无限循环

{

for(i=0;i

{

P0=a[i];

delay(200); }

}

}

(2)运算符控制P2口流水灯

#include

void delay(void)

{

unsigned char m,n;

for(m=0;m

for(n=0;n

}

void rightmove_LED(void)

{

unsigned char i;

P2=0xff; //P2=1111 1111,关闭所有LED

delay();

for(i=0;i

{

P2=P2>>1; //P2每次右移一位

delay();

}

}

void zizeng_LED(void)

{

unsigned char i;

for(i=0;i

{

P2=i;

delay();

}

}

void main(void)

{

while(1) //无限循环

{

rightmove_LED();

delay();

zizeng_LED();

delay();

}

}

4 程序仿真与Proteus 联合调试(Program simulation

and proteus debug)

4.1 在Proteus硬件仿真电路图单片机中加载HEX文件

打开先前设计好的Proteus设计文件“项目1.DSN”,右键单击AT89C51单片机,从弹出的快捷菜单中选择“编辑属性”命令;或者直接双击AT89C51单片机,弹出“编辑元件”对话框,在“Program File”文本框中载入在编译生成的“项目1.hex”HEX文件,在“Clock Frequency”文本框中输入“11.0592MHz”,单击“确定”按钮返回到Proteus设计文件“项目1.DSN”工作界面。

4.2 运用Proteus硬件仿真电路图进行仿真实验

执行菜单“调试”“执行”命令,或者直接点击仿真工具栏中的仿真启动按钮,或者直接按下“F12”功能键,均能启动功能仿真。仿真效果如图1所示。

从图中可见,接至P1.0的发光二极管D1处于点亮状态,其他二极管处于熄灭状态。从仿真效果上看,设计的C语言程序实现了对单片机的预期控制。要停止电路的仿真运行,可以点击工具栏中的仿真停止按钮,要暂停电路的仿真运行,可以点击仿真暂停按钮。要对电路进行单步运行仿真,可以点击帧进仿真按钮。

5 结论(Conclusion)

单片机开发Keil C51与Proteus软件的联合仿真应用于单片机接口技术的课程教学,收到了良好的教学效果,教学质量得到明显提高,学生对单片机学习兴趣明显增强。在教学过程中,每个实例都采用单片机开发Keil C51与Proteus软件联合仿真、调试,学生可以直观地看到电路输出状态从而方便的进行开发练习。

参考文献(References)

[1] 徐磊,申红军,蔡亚永.单片机开发Keil C51与Proteus仿真联合

应用研究[J].电子设计工程,2013,(9):178-181.

[2] 杨暾.单片机技术及应用:基于Proteus仿真的C语言程序设计

[M].北京:电子工业出版社,2012.

[3] 周灵彬,张靖武.PROTEUS的单片机教学与应用仿真[J].单片

机与嵌入式系统应用,2008(1):76-79.

[4] 杜树春.基于Proteus和Keil C51的单片机设计与仿真[M].北

京:电子工业出版社,2012.

作者简介:

于 博(1981-),男,硕士,讲师.研究领域:嵌入式开发,图