单片机程序设计篇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
单片机在使用的过程中,主要起到核心的控制作用,在单片机的基础上,设计一个相应的控制电路,利用一些电子元器件,将单片机和需要控制的设备连接起来,然后根据实际的工作需要,编写相应的控制程序,这样在通电后,单片机就可以控制设备自行的工作,不需要人为的进行控制,与传统的人操作设备相比,极大的提高了生产的效率。正是由于单片机的这个特点,使其非常受到人们的重视,经过了多年的发展,目前市面上有很多中单片机型号,不同的单片机型号,通信接口具有较大的差异,考虑到实际工业生产的复杂性,不同的生产线,对控制系统有着不同的需求,有些生产线适合双排的单片机接口,而有些生产线适合单排的。由此可以看出,单片机的外型多变,以此来满足不同控制功能的需要,但是从本质上来说,单片机的内部结构一样,都是采用了计算机的架构,只要写入特定的单片机程序,就可以完成相应的控制功能,但是在实际的使用中,在具体的电路设计之前,应该首先确定单片机的型号,然后在此基础上,针对性的进行控制系统的设计。
2我国单片机应用的现状
通过单片机的使用,可以实现自动化生产技术,虽然现在已经进入了信息时代,高科技的信息设备非常受到人们的重视,但是目前工业依然是经济发展的主要动力,我国经过了多年改革开放的发展,已经成为了世界第二大经济体,要想在未来一段时间内,继续保持这种经济增长的势头,必须重视现代化的自动化技术,以此来提高实际生产的效率。受到特殊的历史因素影响,我国工业的起步较晚,与西方发达国家相比,工业水平具有很大的差距,无论是生产设备还是技术,都存在很大的不足,随着我国经济的发展,人们意识到了自动化技术的重要性,根据我国工业生产的实际情况,引进了国外一些先进的生产设备和工艺,在很大程度上提高了生产的效率。目前市面上有很多种型号的单片机,但是通过实际的调查可以知道,几乎所有的单片机都是国外的公司生产的,如常见的51系列单片机,就是由英特尔公司研发的,我国没有自己的单片机生产技术,这种现象在很大程度上影响了我国单片机的应用,尤其是使用的单片机控制系统出现问题时,通常需要更换相应的部件,没有足够素质的人才,能够对控制系统进行维护。
3单片机远程通信控制系统的组建
3.1硬件部分
单片机远程通信控制系统的使用,可以分成硬件和软件两个方面,硬件就是指相关设备的连接,作为先进的信息技术设备,单片机的使用,通常需要设计一个相应的控制电路,根据需要控制的实际情况,利用现有的电子元器件,组建一个完整的控制系统,在实际的远程通信控制系统中,应该注意数字信号和模拟信号的转换装置,尤其是在控制一些传统的设备时,这些设备需要模拟信号才能控制。硬件作为整个系统的基础,要想实现完整的控制功能,必须建立在硬件设备的基础上,尤其是随着电子信息技术的发展,目前市面上有很大元器件,很多元器件都可以实现相同的功能,但是由于生产的工艺不同,元器件的性能具有一定的差异,如果在实际的电路设计中,必须根据实际情况,针对性的选择元器件,如果选择的元件性能达不到相应的标准,就可能导致无法实现应有的控制功能。
3.2软件程序的设计
单片机之所以能够实现不同的控制任务,就是由于其可以写入相应的控制程序,考虑到软件程序的特殊性,要想实现同样的控制技术,可以采用多个对应的语句,而且根据使用元器件的不同,软件程序也需要进行针对性的变化,如常用的51系列单片机,程序的编写可以采用C语言,也可以采用汇编语言等,在实际的程序编写中,可以根据设计人员的实际情况,选择一种最佳的计算机语言。单片机经过了多年的使用,其软件程序的设计,已经形成了完善的理念,人们在计算机语言的基础上,进行了一定程度的优化,使得单片机程序编写变得简单,考虑到单片机的存储空间有限,而且自身性能比较低,只能完成一些基础的控制任务,因此单片机程序通常比较简单,通常是由多个简单的语句组成,只要程序设计人员具有足够的专业素质,可以很轻松的完成软件程序的编写。本文来自于《科技创新与应用》杂志。科技创新与应用杂志简介详见
4结束语
单片机程序设计篇7
【关键词】单片机;测试系统;电阻测量;电容测量
1.引言
基于单片机的铁路信号测试系统,是根据现场的实际使用需要而研制开发的,可以很精确的测试电阻和补偿电容,直接读出电阻阻值、电容容量。接地线电阻作为轨道电路的一个重要参数,为了保证通信、信号设备及人员安全,要求通信、信号设备的地线接地电阻必须达标,控制在一定范围内。补偿电容可以弥补电容不足,抵消钢轨感性,使钢轨阻抗尽可能呈阻性负载,以保证轨道电路的传输距离和机车信号系统的可靠性。
2.系统总体结构
基于单片机的铁路信号测试系统的软件流程***如***1所示,硬件框***如***2所示。系统的工作过程:启动测试系统,上电或复位,系统进行初始化,完成初始化后,选择工作模式,电阻测试或者电容测量。通过STC89C52单片机控制电阻模块和电容模块,测试的数据存储在SD卡中,通过RS232串口将数据传输到微机存储。
在硬件设计过程中,采用单片机STC89C52编程,实现对电阻、电容测试的控制,LCD显示;采用24位HX712A/D转换器芯片;RS232串行口通讯频率9600bit/s;电源采用线性稳压芯片A***1117,供电电压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-),男,硕士,讲师.研究领域:嵌入式开发,***
转载请注明出处学文网 » 单片机程序设计10篇