HI,欢迎来到学术之家股权代码  102064
0
首页 精品范文 单片机程序设计

单片机程序设计

时间:2023-05-29 18:23:17

开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇单片机程序设计,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。

单片机程序设计

第1篇

[关键词]:红外遥控 解码 单片机

1红外遥控系统组成

通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图1所示。发射部分包括键盘矩阵、编码调制、LED红外发送器;接收部分包括红外接收器、光电转换放大器、解调等。

2红外遥控发射和接收原理

按下遥控器的某一个键,遥控器会发出一连串经过调制后的信号,这个信号经过红外一体化模块接收后,输出解调后的数字脉冲,每个按键对应不同的脉冲,故识别出不同的脉冲就能识别出不同的按键。按键信息采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图2所示。

上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功耗的目的,然后再通过红外发射二极管产生红外线向空间发射,如图3所示。

3单片机解码程序设计

红外一体化接收头输出信号连接到单片机外中断输入引脚,设置为下降沿中断方式。引导码解码过程只解码带数据的引导码,不对连发码引导码进行解码。这就要求使用过程中,长按操作不起作用。

关键解码流程设计如图4所示。

中断解码完成后,完成酥局梦弧V鞒绦蛑胁檠到完成标志,就对解码数据进行反码校验并进行对应的处理。

4效果与应用

以上设计的单片机解码程序,成功应用于万年历、计算器、电机控制、旋转LED广告灯灯各种单片机项目教学过程中,完全取代矩阵键盘进行操作,电路简单,程序可靠。稍有不足的是要占用一个外中断,并且在中断解码操作时,会占用CPU时间。

对于时序有严格要求的项目应用,可以考虑“外中断+定时器”的方式,在每个下降沿时进入中断,对数据进行处理。两次进中断的时间间隔采用定时器来记录,省略此前中断解码流程中设计的各种延时和等待操作,减少时间占用,提高CPU利用率。

参考文献:

第2篇

关键词 单片机;C语言;TG12864;液晶显示

中图分类号:TP271 文献标识码:A 文章编号:1671—7597(2013)031-017-02

1 TG12864液晶原理

1.1 TG12864显示原理

点阵式LCD其显示原理是控制LCD点阵中点的亮暗,亮和暗的点阵按一定规律可以组成汉字,组成一幅图形和曲线等。

1.2 TG12864内部结构及相关指令

1.2.1 TG12864内部结构

TG12864是一种图形点阵液晶显示器,它主要由行驱动器、列驱动器及128×64全点阵液晶显示器组成,有20个外部引脚。可以由单片机控制显示8×4个16×16点阵汉字。

1.2.2 TG12864相关指令

该类液晶显示模块的指令系统比较简单,总共有七种。

1)显示开关指令。

功能:设置屏幕显示开/关,DB0=1,开显示;DB0=0,关显示。DB7~DB0=0x3f,开显示;DB7~DB0=0x3e,关显示。

2)显示起始行设置。

功能:显示起始行是由Z地址计数器控制的,该命令自动将A0~A5位地址送入Z地址计数器,起始地址可以是0~63范围内任意一行。Z地址计数器具有循环计数功能,用于显示行扫面同步,当扫描完一行后自动加一。DB7~DB0=0xc0,显示从0行开始。

3)页设置。

功能:页地址存储在X地址计数器中,A2~A0可表示8页,读写数据对页地址没有影响,除本指令可改变页地址外,复位信号RST可把页地址计数器内容清零。DB7~DB0=0xb8,显示从0页开始。

4)列地址设置。

功能:列地址存储在Y地址计数器中,读写数据对列地址有影响,在对DDRAM进行读写操作后,Y地址自动加一。DB7~DB0=0x40,显示从0列开始。

5)读状态。

功能:读忙信号标志位BF,复位标志RST以及显示状态(ON/OFF)bf=1,内部忙;bf=0,内部空闲;res=1,正处于复位初始化状态,res=0,正常状态。

6)写数据。

写数据到DDRAM,DDRAM是存储图形数据的,写数据到DDRAM前,要先执行设置页地址及设置列地址命令。

7)读数据。

从DDRAM读数据,读数据前,要先执行设置页地址及设置列地址命令。

2 应用程序设计

#include

#define uchar unsigned char

#define uint unsigned int

#define disp_on 0x3f //定义开显示

#define disp_off 0x3e //定义关显示

#define dis_x 0xb8 //定义显示0页

#define dis_y 0x40 //定义显示0列

#define dis_z 0xc0 //定义显示0行

#define db P0

sbit rs=P2^0;

sbit rw=P2^1;

sbit e=P2^2;

sbit cs1=P2^3;

sbit cs2=P2^4;

sbit rst=P2^5;

sbit bf=P2^6;

sbit res=P2^7;

uchar code tab[]={/*青海工业职业学校*/0x01,0x00,0x01,0x00,0x3F,0xF8,0x01...};

void check_busy(void);

void chushihua(void);

void delay(uint);

void wr_lcd(uchar,uchar);

void clear_lcd(void);

void display(void);

void _disp(uchar,uchar,uchar,uchar,uchar,uchar *);

void main() //主程序

{chushihua();display();while(1);}

void chushihua(void) //液晶初始化函数

{rst=0;delay(50);rst=1;

cs1=1;cs2=1;

wr_lcd(0,disp_off);

wr_lcd(0,disp_on);}

void wr_lcd(uchar i,uchar j) //写液晶函数

{check_busy();

rs=i;rw=0;

db=j;e=1;

delay(1);

e=0;}

void check_busy(void) //检测忙闲函数

{db=0xff;

rs=0;rw=1;

delay(1);

e=1;

while(res||bf==1);

e=0;}

void clear_lcd(void) //清屏函数

{uchar i,j;cs1=1;cs2=1;

wr_lcd(0,disp_on);

for(j=0;j

{wr_lcd(0,dis_x+j);

wr_lcd(0,dis_y);

wr_lcd(0,dis_z);

for(i=0;i

{wr_lcd(1,0x00);

wr_lcd(1,0x00);}

}

}

void _disp(uchar ye,uchar lie,uchar hang,uchar ls,uchar zs,uchar *ptr1) //液晶显示函数

{ uchar i,j,m,n,a;

wr_lcd(0,disp_on);

for(m=0;m

{for(n=0;n

{for(j=0;j

{ wr_lcd(0,dis_x+j+ye+m*2); //显示起始页设置

wr_lcd(0,dis_z); //显示起始行设置

wr_lcd(0,dis_y+lie+n*ls); //显示起始列设置

a=j*ls+n*2*ls+m*zs*2*ls; //控制字的显示数组位

for(i=0;i

{wr_lcd(1,*(ptr1+a+i));}

}

}

}

}

void display(void) //显示主程序

{

uchar *ptr;

clear_lcd();

cs1=1;cs2=0; //开左屏显示青海工业

ptr=&tab[0]; //取数组首地址

_disp(0,0,1,16,4,ptr); //显示从0页、0列开始,显示一行,每个字16列显示2个字

cs1=0;cs2=1; //开右屏显示职业学校

ptr=&tab[128]; //取数组的第128个元素地址

_disp(0,0,1,16,4,ptr); //显示从0页、0列开始,显示一行,每个字16列显示2个字

}

void delay(uint x) //延时函数

{uchar i;

for(;x>0;x--)

for(i=0;i

以上程序,如果要从3页,4列开始,在左屏显示2行,每个字16列,共显示4个字青海工业,只要将显示主程序改为:

void display(void)

{uchar *ptr;

clear_lcd();

cs1=1;cs2=0;

ptr=&tab[0];

_disp(3,4,2,16,2,ptr);}

上述液晶显示程序,应用起来灵活、方便,要将汉字显示在液晶的什么位置,只需修改显示主程序中_disp(0,0,1,16,4,ptr)函数中的数据即可。

3 结束语

用C语言程序来对液晶显示模块进行编程控制,编程效率高,思路清晰,处理问题灵活方便,相对汇编语言有明显的优势。

第3篇

关键词 单片机 C语言 规范性

中图分类号:G424 文献标识码:A DOI:10.16400/ki.kjdkz.2015.08.062

On the C Language Programming Normative in MCU Course

HUANG Xiaofeng

(Advanced Vocational Technical College, Shanghai University of Engineering Science, Shanghai 200437)

Abstract: For "SCM C language programming" teaching in programming problems, he attached importance to guide students in teaching practice modular, standardized program design emphasizes standardized programming for students to understand the structure and function of the program's important role and throughout the Teaching has always been, so that students micro controller applications has been greatly improved.

Keywords: SCM; C language; normative

0 引言

单片机技术课程一直以来作为高职计算机应用、电气自动化、应用电子技术等专业的主干课程。通过对单片机技术职业岗位需求分析可知,高职毕业生从事与单片机相关的职业技术岗位,主要有硬件测试工程师、软件测试工程师、硬件设计助理工程师、软件设计助理工程师等工作岗位。目前高职单片机课程多以MCS51系列为主,学生踏入工作岗位后,会涉及到其他各种类别的单片机,如AVR、MSP430、PIC等。由于软件编程灵活性强,对逻辑思维能力要求高,在单片机教学中学生普遍反映编程时无从下手,程序调试错误百出,面对调试中出现的问题不知如何修改验证,上机编程的教学实践过程更多则沦为代码录入。本文针对“单片机C语言程序设计”教学中存在的编程困扰,提出在教学实践中重视引导学生进行模块化、规范性程序设计,培养学生良好的编程习惯,提高程序的易读性、可移植性,为将来步入职业技术岗位打下坚实基础。

1 单片机C语言编程的规范性

以Kei C51软件编程为例并结合多年的教学经验,将单片机C语言编程的规范性主要归纳为:(1)文档的规范性;(2)变量、函数的规范性;(3)程序书写的规范性;(4)模块化编程等四个方面。

1.1 文档的规范性

任何一个单片机C程序都应该在工程下进行编译和管理,一个工程可以包含多个C文件,不同的C文件分别实现一个相对独立的功能。在单片机课程教学中部分学生一开始就忽略了工程的概念,或者通过一个C文件试图实现所有功能,这在功能较为单一的系统中是可行的,但稍微复杂一点的系统要想通过一个程序来完成其所有功能,程序的可读性和可移植性就会变差。因此,在编程之初就要强调工程对C程序源文件的管理作用,以及工程所包含的各个C文件之间的相互关系,并通过对C文件规范化的命名体现其功能,如键盘模块命名为key.c,显示模块命名为display.c,数据处理模块命名为datapro.c。

1.2 变量、函数的规范性

变量、函数的规范主要体现在命名的规范,一般要符合匈牙利命名规范。如表1所示,主要注意字母的大小写是有区分的,取名要与变量或函数的含义或完成功能相一致,并且要在教学中一直贯彻使用,望文生义以增强易读性。

此外,由于单片机头文件对一些常用的符号变量和特殊功能寄存器进行了定义声明,因此编程时对相关符号变量和特殊功能寄存器的操作一定要与头文件中的定义声明保持一致。如51单片机reg51.h头文件对端口(P0~P3口)、特殊寄存器、特殊的位、中断函数等做了定义声明,用户在对相关端口或SFR进行操作时只能严格的按照头文件中的声明使用,不能按照自己的想法随便更换名字,否则会造成编译出错,如果要想按照自己的习惯书写,要重新声明定义。如P1.0口在<reg51.h>定义为P1^0,若想用P1_0表示则必须用“sbit P1_0=P1^0;”作声明。常用的51系列单片机在KeilC51软件中的一些定义格式如表2所示。

表2 <reg51.h>或<reg52.h>头文件中常用的一些定义

3 模块化编程

模块化、规范化的程序设计,是提高程序的易读性、可移植性和复用性最为重要的手段。模块化程序设计的集中体现为六个字即“高内聚低耦合”。按照自顶向下的原则进行程序设计时,首先是引导学生进行系统功能分析,按照“低耦合”的原则进行软件模块的划分,勾勒出由主程序及各模块子程序搭建的大骨架、粗线条轮廓,继而深入到各个软件模块内部,依据“高内聚”的原则确定模块内程序结构。

以单片机无线多路温度采集系统为例,简单介绍软件编程的具体思路。如图1所示,无线多路温度采集系统主要包括单片机、温度数据采集、无线信号传输、键盘与显示器等模块,完成四路温度数据采集,并在液晶屏上显示实时温度信息。

图1 温度采集系统硬件框图

图2 温度采集系统软件模块组成

在课程教学中,依据无线多路温度采集系统功能,软件编程划分为温度采集、按键控制、显示、无线通信等子模块。其中温度采集程序完成温度数据采集与处理,键盘控制程序键扫描及处理,LCD显示程序完成屏幕刷新,无线通信程序实现单片机与PC机间的数据交换。各模块功能单一,且模块之间无直接联系,通过主程序对各模块进行调用与协调完成系统功能,每个模块作为一个函数、或单独作为一个C文件,并通过主程序完成各模块文件的调用与协调,其关系图如图2所示。可以看到,模块与模块之间耦合度较低,有利于程序的维护与移植。

1.4 程序书写的规范性

程序书写的规范性能够极大增加了程序的易读性。主要体现在:采用空行或注释符号分隔程序段落;if、for、while、do等语句自占一行,执行语句不得紧跟其后;程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐;如果出现嵌套的{},则使用缩进对齐;一般重要的代码行或段落采用“//” 注释提示等。

第4篇

关键词 单片机 岗位能力 51单片机 C语言

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

1 单片机课程介绍

作为职业院校,我们的毕业生将走进企业,从事基本的生产与操作,在校期间除了个人素质培养还要进行专业培训,各专业课程的设置,各门课程如何展开教学,都直接影响学生的质量。今年带了一个毕业班,学生通过顶岗实习,回校反馈的意见中就提到单片机这门课,上岗之后用的最多的就是这门课程所学的知识,也就是在电子信息、机电一体化、通信技术、应用电子等一系列专业应用领域都涉及单片机或嵌入式的一些应用。正如单片机技术已经渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。企业需求这方面的人才,而人才培养是高职院校的根本任务。

单片机课程是一门实践性、应用性和创新性很强的专业课程。由于单片机课程内容的抽象化,决定了单片机课程教学必须通过大量的实践锻炼和动手操作训练来强化其知识结构,仅学习单片机芯片的基本知识而不综合运用单片机软、硬件技术动手解决实际问题,等于纸上谈兵。单片机广泛的应用性和单片机技术日新月异的发展又决定单片机的学习,必须举一反三,通过创新的思维方式去掌握新技术,创造性地拓展其应用空间,这就对创新型高技能人才的培养提供了坚实的平台。

2 单片机课程实训条件

现阶段单片机实训设备种类与名目并不少,大多是实验箱、实验开发装置或综合实验平台。这样的实验设备造价昂贵,且无法设计完成贴近工程实例的项目,在教学实践中暴露出很多不足,不太适合于职业院校,体现在以下几个方面:

(1)使用设备方法过于复杂:对理论水平要求过高,只有专业理论知识扎实的学生才能使用。(2)设备过于复杂:有些设备不仅仅是针对单片机课程的,会涉及通信、GPS技术、自动控制等,不是针对学生特点定制。(3)资源浪费严重:单片机成套设备中大部分功能根本使用不到,一旦个别器件失效,整套实验设备都搁置。(4)设备价位过高:学校负担较重。(5)实验设备的扩展接口少,给学生自行设计的空间太小,没有真正体现单片机的优越性。

3 单片机课程改革

由于原有单片机实验设备无法正常使用,本学期改用机器人作为实验媒体,所开设的实验内容都是软件与硬件相结合,并尝试用C语言编程。此批机器人已经购买时间很长,部分元器件必须更换,电路也进行了一些改变,在设计与应用中更趋合理。出于教学需要,笔者和企业的老师一起着力研究与开发单片机实训设备。经过一段时间的教学实践,已经看到了一些教学效果,学生们的兴趣也比较高。对比以往的单片机课程教学,主要有这几个方面的改革:

3.1 使用机器人作为实验硬件

机器人技术是多种学科综合的应用,是由各种传统的学科构成。机器人在运行、工作的过程中有许多地方需要修改。那么如何修改这些部分?也是从两方面入手。首先是从硬件上进行改造, 通电前要检查机械部件是否安装正确,各种接线连接是否准确,机器人里有许多传感器,会大大影响它的运行情况,学生要通过修改程序来使其工作正常。在执行任务的过程中,学生可以充分发挥自己的想象力,随时都可能会有新的创意,例如:可以在程序里加一些定时器,来节省运行时间;可以任意改变参数值,以达到工作的理想状态。这些工作可以帮助学生提高对外界事物的观察力。当机器人走近学生,大家似乎又回到了童年,对事物又有了不同的理解。这些机器人比普通的机器人内容要丰富得多,通过玩这些机器人,学生不仅练习了单片机的软、硬件结合,还可以战胜困难,挑战自我。

3.2 应用C语言编写程序

C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的控制。

C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的一个主流。用C语言来编写目标系统软件,会大大缩短开发周期,且显著地增加软件的可读性,便于改进和扩充。在单片机教学中,以往大多使用汇编语言编程,而现在改用C语言完成软件功能,下面结合8051介绍单片机C语言的优越性:

(1)用C语言编写单片机程序,不需要懂得单片机的指令集;

(2)无须懂得单片机的具体硬件,也能够编出符合硬件实际情况的程序;

(3)不同函数的数据实行覆盖,有效利用片上有限的RAM空间;

(4)程序具有坚固性:数据被破坏是导致程序运行异常的重要因素。C语言对数据进行了许多专业性的处理,避免了运行中间非异步的破坏;

(5)C语言提供复杂的数据类型(数组、结构、联合、枚举、指针等),极大地增强了程序处理能力和灵活性;

(6)提供了专门针对8051单片机的data、idata、pdata、xdata、code等存储类型,自动为变量合理地分配地址;

(7)提供small、compact、large等编译模式,以适应片上存储器的大小;

(8)中断服务程序的现场保护和恢复,是直接与单片机相关的,由C编译器代办;

(9)提供常用的标准函数库,以供用户直接使用;

(10)头文件中定义宏、说明复杂数据类型和函数原型,有利于程序的移植和支持单片机的系列化产品的开发;

(11)有严格的句法检查,错误很少,可容易地在高级语言的水平上迅速地被排掉;

(12)可方便地接受多种实用程序的服务:如片上资源的初始化有专门的实用程序自动生成;再如,有实时多任务操作系统可调度多道任务,简化用户编程,提高运行的安全性等等。

C51是广泛应用于8051系列单片机编程的高级语言,具有C语言的开发效率高、可读性强、可移植性强等诸多优点。keil C51编译器提供了大量功能丰富的库函数,能够对C51源程序编译生成高效的目标代码,从而提高了程序的开发与维护效率,因此采用C51语言编写8051系列单片机应用程序是单片机课程教学的必选内容。

3.3 在线仿真调试

单片机常用开发软件Keil具有强大的仿真功能,C51和汇编语言都是适合的。它最大的好处就是简单、方便,容易使用,不需要使用任何电路,也没有特殊的要求;甚至可以在硬件电路制作好之前就将串口部分的程序编写、调试完毕。对于51单片机,只要充分掌握其特点,能够熟练利用它,就可以解决应用中的大部分问题。很多任务都可以使用软件仿真来完成,根本无需任何硬件仿真器;只有一些新的外部器件的时序、接口的调试才有可能需要用到硬件仿真器。

3.4 企业专家作为执教人员参与教学

本学期的单片机课程教学由企业专家与专任教师合作完成。由于是试点,所有实验项目都是根据机器人设计的。单片机实训项目包括项目概述、项目要求、系统设计、硬件设计、软件设计、系统仿真及调试,提供完整的程序清单和电路原理图。教学中采用实际应用项目实例,力求理论和实践相结合,同时考虑培养学生解决工程实际问题和综合应用的能力。典型实例都来自实际工程应用,有助于学生动手能力的培养和锻炼。

4 结论

目前,单片机已经成为电子设计的潮流。单片机应用的意义不仅在于它的广阔范围及所带来的经济效益,更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。

高职院校的电子技术相关专业学生要加强这门课程的学习与实践,将有助于今后的就业与创业,电子行业需要大量的单片机人才,它也可以成为学生自主创业、研发智能电子产品的好帮手。

参考文献

[1] 林立.单片机原理及应用.北京:电子工业出版社,2013.

第5篇

【关键词】AT89C51 单片机 流水灯

在电子信息技术和自动化智能控制领域,单片机正以前所未有的速度替代了传统的数字逻辑电路构成的控制系统。由于单片机具有体积小、功能强、成本低、应用面广等优点,所以单片机在我们的日常生活和工作中无处不在、无处不有,可以说单片机已经渗透到了我们生活的各个领域。基于单片机的流水灯设计与实现,全面的介绍了一个完整的单片机控制系统,包括系统结构和硬件电路,软件流程和程序编写。流水灯的控制对单片机应用技术的教学入门和基础案例具有参考价值。

一、控制系统和硬件电路

本文采用AT89C51单片机为控制器的流水灯系统,AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器 ,工作电压范围4.25~5.50V,工作频率0~24MHz,AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案且在使用AT89C51单片机时无须外扩存储器[1-3]。本流水灯系统实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的软件组成的单个单片机控制系统,硬件原理如图1所示。

本流水灯系统使用AT89C51单片机来实现流水灯的控制的设计原理是:P1的八个接口P1.0~P1.7,都通过限流电阻连接着LED灯的阳极,所有LED灯的阴极连接在0V,要让接在P1.0口的LED1亮起来,那么只要把P1.0口的电平变为高电平就可以了;相反,如果要接在P1.0口的LED1熄灭,就要把P1.0口的电平变为低电平;同样的方式控制接在P1.1~P1.7口的其他7个LED的点亮和熄灭。只要将发光二极管LED1~LED8依次点亮、熄灭,8只LED灯便会一亮一暗的做流水灯了[3-4]。在此还应注意一点,由于人眼的视觉暂留效应以及单片机执行每条指令的时间很短,我们在控制二极管亮灭的时候应该延时一段时间,否则我们就看不到“流水”效果了,所以要人眼直接观察到流水灯的状态,需要在每个LED灯状态转换间隔,进行一定时间的延时。

二、系统的软件流程

流水灯系统的控制器为单片机,完成硬件的设计和实现后,需要根据系统的控制要求告诉单片机怎么来进行工作,即编写程序控制单片机管脚电平的高低变化,来实现发光二极管的一亮一灭。那么通过软件编程的方法来实现。下面本文以最简单的流水灯控制功能,即实现8个LED灯的循环点亮,图2为实现流水灯控制的系统的软件流程[5]。

三、系统程序

编程设计的思路是在程序一开始就给P1口送一个数,这个数本身就让P1.0先高,其他位为低,然后让这个数据向高位移动不就实现“流水”效果,8051指令中没有让P1数据移动的指令,但有对累加器ACC中数据左移或右移的指令,ACC在指令中常写为A,累加器A数据左移指令为"RL A",累加器数据右移指令为"RR A",累加器在数据传输和数据处理过程中作用十分重要,累加器ACC为8位。他可与片内所有单字节寄存器交换数据,实际上P1和其他端口在单片机中也是一个寄存器[6-7]。这样我们可以将需移动的数据先放到ACC中,让其移动,然后将ACC移动后的数据再转送到P1口,这样同样可以实现“流水”效果。左侧程序就是流水灯的程序light water.asm。

将上述程序编译并烧写到AT89C51数字芯片中,安装在设计好的实验板上,可以看到程序的”流水”效果。

从单片机控制流水灯系统可以得出,设计一个完整的单片机控制系统,需要对包括整体系统设计、硬件电路、软件设计、程序编写等每个环节进行系统的规划和多次的动手实践调试,只有这样,才能全面系统的完成单片机控制系统的要求。

参考文献:

[1]何立民.单片机应用系统设计[M].北京:航空航天大学出版社,1994.

[2]耿德根.AVR高速嵌入式单片机原理与应用[M].北京:北京航空航天大学出版社,2002.

[3]胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,1996.

[4]易礼智.基于51 单片机实现流水灯的若干种编程方法[J].铜仁学院报,2012(11):125-127

[5]周航慈.单片机应用程序设计技术[M].北京:北京航空航天大学出版社,2001.

第6篇

关键词:单片机;PC机;RS-232串行接口;转换芯片MAX232

中图分类号:TP274 文献标识码:A 文章编号:1674-7712 (2014) 02-0000-02

温度数据采集系统是一种以单片机为基础,通过串行通信与上位机进行数据传输,达到对温度的采集与监控。它已广泛地应用到测量、监测、控制、诊断、科学试验等各个领域中。近二十年来,温度数据采集技术由于采用了微机等一系列新技术,得到了飞速的发展,在形式上由原来的专用的测试仪器到现在的使用微机的虚拟仪器;采集的分辨率从4位、8位到现在的24位分辨率;采集的速率从几KPS到现在最高速率已达2GPS,记录设备从原来的手记、纸带的模拟或数字记录到磁带记录,到现在的硬盘记录、磁光盘记录。所有这些都是不断地采用新技术的结果,所以温度数据采集系统能够使我们的工作更方便更有效的进行,对工业的发展起到显著的作用[1]。

本文主要的工作就是以单片机为核心,利用串口通讯的知识,实现对温度数据的采集和监控。串行端口的温度数据采集系统主要由下位机系统和上位机系统两部分组成。下位机系统完成的主要功能是用温度传感器把温度值信号变换成0~5V的模拟信号,然后再经过信号调理,放大,A/D转换将其转换为数据信号,通过串口向上位机传送。上位机系统主要完成向各下位机发出召测命令,并把接收来的数据进行处理,最后通过VB语言对Mscomm控件进行编程实现智能仪表的集中监测[2]。

一、系统总体设计

温度数据采集系统原理框图如图1所示。温度传感器输出的模拟信号经信号调理电路后被放大,再由A/D转换模块转换为数字量,传送给单片机,并在LED上进行显示。同时数据可通过RS-232串行接口传送到上位机,通过系统图形用户界面来达到对温度的采集与监控。

在温度数据采集系统实现上,采用了性价比较好的89C51单片机为主的采集电路,且将一些任务由软件实现,这样可以用更少的端口实现数据外存储,解决了单片机外扩存储器线路复杂问题,从而减小了单片机采集电路的体积,实现尽可能的系统最小化,以便于携带。在信息转送PC机问题上,采用串口中断,利用转换芯片MAX232,使得TTL电平到RS232电平的转换电路更加简单实用,单片机采集系统的体积相应减小[3]。

二、系统硬件设计

(一)单片机的选择。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案[4]。

(二)系统采集模块

1.ADC0808简介:经过信号调理电路输出的电信号,己经是0~5V的标准信号,而且这些信号与温度具有良好的线性关系,因此输出的不同电压信号可以代表不同温度。为了使各项温度数值能够显示,必须先把信号调理电路输出的标准模拟信号转化成数字信号,以便送入单片机进行数据处理与运算,使经过单片机处理后的数据与实际测量的温度相对应。

2.A/D转换电路及扩展:AT89C51单片机芯片内部集成了诸如定时器、串行口等功能部件,但是在应用系统中,很多时候片内资源不够用。这时就需要在单片机芯片外部扩展必要的存储器以及其他一些I/O端口,才能满足实际需要。本设计采用可编程I/O接口芯片Intel 8255A进行端口扩展[5]。

3.通讯电路:在串行数据传输过程中,由于传输距离、现场状况等诸多因素可能引起信息的出错,也可能使传输的数据发生位错误,在数据通信时发生无法预测的错误。为了使系统能够可靠、稳定地通信,在通信时采用数据校验的方法进行纠错。通信协议采用基本的RS - 232,用CRC校验,提供单片机串行通信的数据可靠性。

三、下位机软件设计

温度数据采集系统的设计除了硬件电路以外,还需要软件的设计,这样整个系统才能够按照要求很好的执行,所以软件设计也是很重要的。本设计中选用的单片机语言主要是汇编语言。下位机程序采用模块化结构,汇编语言编写。软件设计主要包括2个部分:一是温度数据的采样、A/D转换、键盘处理和LED显示;二是下位机与上位机之间的通讯,通讯的目的仅在于将数据上传到PC机中,程序设计采用的是查询法。

(一)主程序设计。温度数据采集系统的设计除了硬件电路以外,还需要软件的设计,这样整个系统才能够按照要求很好的执行,所以软件设计也是很重要的。本设计中选用的单片机语言主要是汇编语言。

下位机程序采用模块化结构,汇编语言编写。软件设计主要包括2个部分:一是温度数据的采样、A/D转换、键盘处理和LED显示;二是下位机与上位机之间的通讯,通讯的目的仅在于将数据上传到PC机中,程序设计采用的是查询法。单片机在上电初始化后,首先进行各功能部件的初始化,主要包括对主机CPU等芯片进行模式和初始状态的设置,即对中断的初始化、串口的初始化、液晶、时钟芯片和数据存储器等的初始化。单片机主程序完成的功能就是响应按键、刷新显示,数据采集,存储及与上位机通讯,通过判断工作方式控制字,完成相应的功能[6]。

(二)系统子程序设计

1.A/D转换子程序设计。A/D转换子程序用来控制对ADC0809模拟输入电压的模数转换,并将对应的数值移入70H内存单元。

2.BCD转换子程序设计。由于ADC0808是一个8位精度的A/D转换器,它最终转换成的数字量结果都是0~255的整数值,因此,必须把它们转换成代表实际温度信号的数值。由于被测温度的实际值与传感器输出信号以及信号调理后的信号均有良好的线性关系。

这里的整数值是指经过A/D转换后的数字量,实际参数值由整数部分和小数部分组成,而且都是二进制数。然后,分别对上式计算的结果,即实际压力值的整数部分和小数部分进行BCD码转换,再把代表实际温度值的这些BCD码存入单片机内对应的RAM单元,以便在LED显示子程序中直接取出BCD码,在LED上显示十进制数值。

3.LED显示子程序设计。本设计采用四个LED显示温度数据。显示子程序采用动态扫描法实现四位数码管的数值显示。测量所得的转换数据存放在70H内存单元中,测量数据在显示时需转换成十进制BCD码放在71H~74H单元中[7]。

四、上位机软件设计

(一)VB及其常用控件Mscomm的编程方法。Visual Basic(简称VB)是一种在窗口操作平台上的视觉开发工具,使得开发更方便快捷。VB提供了串行通信控件,让开发者可以方便快捷地开发串行通信程序。利用计算机进行串口通讯是自动化将来发展的一种方向。

串口通讯作为一种古老而又灵活的通讯方式,被广泛地应用于PC间的通讯以及PC和单片机之间的通讯之中。提到串口通讯的编程,人们往往立刻想到C、汇编等对系统底层操作支持较好的编程语言以及大串繁琐的代码。VB开发串口通信程序常用的方法是利用VB本身提供的控件Mscomm来实现,该控件隐藏了大部分串口通信的底层运行过程和许多烦琐的处理过程,将串口封装起来,容易操作与实现。同时支持查询方法和事件驱动通讯的机制。

(二)系统图形用户界面设计。利用VB中的Mscomm控件进行串口通信是一种方便和快捷的方式,主要利用该控件的Input方法从串口中读取数据,利用Output方法向串口写数据。在自动化过程中,从串口读写数据是最基础的工作,利用VB可以非常方便和快速地从串口中读取数据,而且VB界面比较友好,因此利用VB编写自动化控制程序是非常方便和有效的。

为了更方便地实时了解数据采集的情况,我们把从单片机读来的数据分别赋给数组,然后描绘出波形曲线。

1.计算机的串行通讯程序。首先开启一个VB项目,并在窗体上安排一个Mscomm控件,作为串行通讯的信道。按下F4调出属性窗口,变量Comport属性位2,另外将Rthreshold属性设置为1,意思就是只要外界传送任何字符串,随即引发事件。设置一个Picturebox对象,把由单片机传送来的数据以线条方式绘制在此图片框控件上。按下F4调出属性窗口,其Name属性改为“Graph1”。

Mscomm控件支持以文本和二进制格式传输数据,由于下位机是单片机,处理二进制数据较为方便,因此本例中以二进制格式发送和接收数据,定义两个Byte类型的动态数组来存放和接收数据,在接收数据时采用事件驱动法,当接收缓冲区有Rthreshold个数据时,引起OnComm事件。

2.单片机的串行通讯程序。80C51单片机从外部采集到的一组数据,存在片内RAM20H~3DH区域,要求将这个数据块传送给PC机,为了保证传送的正确,传送前由单片机先向PC发送数据#55H,PC机接收到后,向单片机回送数据#0AAH,经检验正确后,单片机才开始向PC机传送数据。

参考文献

[1]李丽敏,张玲玉,解浩.单片机温度测控系统设计[J].佳木斯大学学报,2008(01).

[2]李晓妮.单片机温度控制系统的设计[J].九江学院学报,2005(03).

[3]洪家平.WINDOWS环境下PC机与单片机的通信[J].微计算机信息,2005(03).

[4]刘兴生,孙延明,龚祝平.制陶窑炉的温度数据采集系统[J].机电工程技术,2006(08).

[5]陈杰,黄鸿.传感器与检测技术[M].北京:高等教育出版社,2002.

[6]刘华俊.最新传感器应用设计与制造[M].北京:中国科学技术文献出版社,2006.

第7篇

现在支持51系列单片机的语言共有4种,即汇编语言、PL/M语言、C语言和BASIC语言。这里面C语言是一种结构化语言,能够产生压缩代码,同时具有语言简洁、使用方便、表达能力强、可移植性好、可进行结构化程序设计等优点。由C语言生成的目标代码的效率也只稍微低于汇编语言。因此本次设计采用C语言编程。

在单片机开发中除了使用到硬件外,也离不开软件,在这里使用的是目前最流行的用以开发MCS-51系列单片机的软件Keil软件,它的开发方案十分完整,提供了包括C编译器、宏汇编、连接器、库管理以及一个功能强大的仿真调试器等,这些部分的组合是通过一个集成开发环境(uVision)来完成的。KeilC51软件系统能够提供丰富的库函数和功能强大的集成开发调试工具,采用的是Windows界面。另一点重要之处是,通过查看编译后生成的汇编代码,就能感觉到KeilC51能够生成的效率非常高的目标代码,并且这些代码的排列很紧凑,容易让人理解,这种系统大型软件的开发时更能将高级语言的优势体现出来。

1无线模块的设计

1.1无线模块总体设计预先设置好必需的参数,模块每次上电后即可自动连接到预先设置的无线网络及服务器,因为在自动工作的模式下,模块的串口始终工作在透明数据传输状态,可以将它看做一条虚拟的串口线,按照使用普通串口的方式发送和接收数据就可以。在自动工作模式下,系统的连接网络完全自动运行。系统默认自动重试次数设置为永远,也就是说,系统会在连接网络失败或断开的时候一直重新尝试连接。用户也可以将重试次数设置为有限值,在此情况下,一旦重试次数超限后,系统将不再尝试重连,只有系统复位后才能再次重启自动连接流程。Socket连接(此处特指Tcp连接)是虚连接,在无线网络连接非正常断开的情况下原有的Socket连接不会被删除,并且在无线网络连接恢复后继续使用。自动组帧机制。在透明传输状态下,在串口上所有的数据都是以字节流的形式进行传输的,而在网络上,数据却是以固定的帧格式的形式传输,因此,数据在串口与网络之间流动是就需要一个流与帧之间的转换过程。对于从网络到串口的方向的数据传输来说,数据由帧转换成流是非常容易的。而相反的从串口到网络的数据传输方向,即数据由流转换成帧格式的时候,就需要一定的规则来约束。

1.2无线模块程序设计命令工作模式模块提供了一种基于串口控制的命令工作模式,用于不同应用场合的特殊需求。此工作模式下,模块根据用户通过串口下发的指令进行工作,用户可以通过指令对模块进行完全的控制,包括修改配置参数、控制联网、控制TCP/IP连接、数据传输等。这是一种高级的使用方式,也是对用户来说最为灵活的使用方式,用户可以通过指令任意控制无线网络的连接、断开,也可以同时创建多个不同类型的TCP/IP连接,并保持通信。在使用WIFI模块时,可以根据系统的情况决定是否进行命令行的操作。串口数据操作。在串口发送每条CMD后,需要等待该命令的回复。如果本条命令没有回复,需要增加超时,将强制退出该命令。应当保证At发送命令时,串口只有一条在等待回复的At指令。用于串口接收WIFI模块回传的响应信息,在上位机发送完成每条AT指令后需要等待WIFI模块响应或者超时(请将超时时间设置大于500ms)。

2主控模块与LED显示模块程序设计

本设计采用RS232总线与PC机通信,在PC机中采用串口调试程序向单片机发送数据,在PC机与单片机之间采用MAX232电平转换芯片进行电平转换,参照51单片机的串口通信时序对单片机的串口通信程序进行编写,其主程序流程图及串口中断服务程序流程如图1所示。在显示部分,由于采用ULN2803芯片作为数码管阵列的段选显示驱动电路,同时采用573芯片作为其显示数据的缓冲电路,所以在显示函数的编写过程中,首先要对数码管阵列送入位选信号并保持,然后通过一段恰当的延时再将段选信号送入,这样一来就实现了数码管的动态显示。由于本设计中并没有使用BCD数码管,所以需在显示数据之前进行数据为的分离,这部分程序在串口通信中断服务函数中完成。在本设计中,采用MAX232作为单片机系统与PC机通信之间的电平转换电路。而在单片机与PC机通信的过程中,在单片机系统的程序编写则涉及到了两个功能函数的编写:串口通信初始化函数,串口通信中断服务函数。在进行单片机串口通信函数的编写过程中,要根据单片机串口通信时序来进行相应语句的编写。

3结束语

本文在keil环境下采用C语言用模块化程序设计的方法编程,先对无线模块的部分功能进行程序分析,串口通信初始化函数,串口通信中断服务函数。在进行单片机串口通信函数的编写过程中,要根据单片机串口通信时序来进行相应语句的编写,然后对主控模块和显示模块进行具体的设计,将单片机的串口中断和数码管的动态显示等程序进行了设计。

作者:杨巍 单位:齐齐哈尔信息中心

第8篇

关键词:智能模型车;MATLABGUI;无线串口

中图分类号:TP274 文献标识码:A 文章编号:1674-7712 (2013) 04-0094-01

随着科技的进步和人类需求的不断提升,传统汽车已不能满足人们的需求,具有自动驾驶功能的概念汽车已频频出现,也许在不久的将来,具备自动驾驶功能的智能汽车将走进我们的生活.为此本文构建了一个基于模型车的遥控及自动控制开发调试平台。

一、总体设计

该平台由PC机MATLABGUI软件充当上位机,以ATmega16单片机为核心的模型车充当下位机,二者通过无线蓝牙模快通信,系统简单稳定可靠。整体设计结构图见图1。

二、智能模型车硬件电路

智能模型车采用Atmega16单片机集中控制和分散模块化设计。智能模型车硬件由AVR单片机最小系统板,蓝牙模块HC-06实现无线串口连接以及电机驱动电路组成,智能模型车采用左右两个电机,Atmega16单片机OCR1输出PWM控制电机运动转速,单片机Atmega16的四个I/O口PC0、PC1、PC2、PC3分两组控制电机的转动方向。智能模型车装内部车轮转轴部分有SM100K模组,用于测量两路电机转速。

三、智能模型车软件程序设计

智能模型车的核心控制程序主要涉及三个部分:1.通过串口中断发送当前的车轮计数值;2.通过串口中断接收PC机部分传来的控制指令;3.单片机通过对L298N的各个管脚传输信号达到控制电机运行的目的。

单片机的程序主要应用到ATmega16单片机的外部中断EXT0和EXT1用于接收车轮码盘的转动计数,由串口中断接收PC端发送的控制信息,经过单片机处理将控制信息转化成对电机的驱动信号。这时再由串口中断发送将当前的转动方向与码盘计数传回到PC端,完成模型车当前状态的信息采集工作。单片机程序设计基本流程见图2。

四、MATLABGUI程序设计

在GUIDE上设计的压力传感器标定软件GUI见图3,在此GUI上可以实现对串口的属性设定,对下位机ATmega16通过蓝牙串口进行控制并将两个轮子的速度值以进度条的方式显示在程序界面上。

本设计主要设计了两种控制方式,一种是利用键盘对模型车进行实时手动控制,另外一种是在MATLABGUI的axes控件空间内设定样值点,运行自动控制,小车将按照设定的轨迹进行运行。

上位机的主要任务是将控制信息转换成单片机能够接收的控制指令,首先加入两个0xff最为数据包头,接着发两个轮子的方向和速度信息的编码,最后是校验和。整个程序流程见图4。

本文对自动驾驶技术进行了深入的了解的基础上,对自动驾驶如何控制问题的进行了抽象模拟,建立了以计算机为上位机,MATLABGUI程序作为控制平台,ATmega16主控模型车为下位机的开发调试环境。提出了一种自动驾驶的控制思路,在系统设计中综合了多学科的知识,对提高学生的综合素质,激发学生自主学习兴趣起到一定的作用。

参考文献:

[1]马潮.AVR单片机嵌入式系统原理与应用实践[M].北京:北京航空航天大学出版社,2007.

第9篇

关键词 单片机;电路;隔膜泵补排油

中图分类号TP368.1 文献标识码A 文章编号 1674-6708(2014)113-0232-02

0 引言

隔膜泵的补排油部分由输入单元(探头检测信号),输出单元(电磁阀)和控制单元构成。隔膜泵控制系统的PLC控制单元是单一模块(CPU),主要控制着整个泵体的运行逻辑。其中补排油就是里面的一个单元模块。CPU模块内的程序对用户开发,但是在设备检修时用户的误操作会更改补排油控制逻辑,这样会对隔膜泵的液力端造成损坏,导致设备无法运行。本文针对上述问题,提出了一种基于单片机的隔膜泵补排油控制系统,该控制系统为脱离了原PLC的CPU模块控制的单独控制系统,具有使用方便,质量稳定等优点。

1 基于单片机的隔膜泵补排油控制系统构成

基于单片机的隔膜泵补排油控制系统主要由电路板、电源、80*51系列单片机、晶振电路、隔离输入电路、隔离输出电路构成。根据实际柜内的安装空间设计好电路板的尺寸,在上面印刷已设计好的电路,相应把各个电子器件焊接上。探头检测信号通过输入电路连接到单片机相应的管脚,单片机再经过逻辑运算由另一个管脚输出经过隔离放大驱动电磁阀动作。从而实现隔膜泵补排油部分脱离原CPU模块的控制。

2 单片机的基本管脚电路

51系列单片机的基本管脚电路包含简单的输入输出电路、供电电路、复位电路、时钟电路等。在实际应用中,我们常用P0.0--P0.7,P1.0--P1.7,P2.0--P2.7,P3.0--P3.7这32个管脚作为单片机的输入输出接口。当作为输入接口时,吸附电流可以达到10mA,提拉电流只有不到1mA,所以,在应用中通常以低电平0V时为“0”信号,高电平5V时为“1”信号。

3 基于单片机的隔膜泵补排油控制系统的工作原理

图1 基于单片机的隔膜泵补排油控制系统原理示意图

基于单片机的隔膜泵补排油控制系统的工作原理如图1所示。磁感应信号通过嵌入隔膜导杆(无磁介质)的磁环发出,作用于自制的磁式传感器,也就是补排油探头,该传感器将+24V信号经过隔离输入电路,转换为+5V信号传递给单片机的P1.0管脚,完成对隔膜位置的检测。同理,来自PLC的允许运行信号传递给管脚P3.7。

事先编辑好的程序写入到单片机,其工作时检测到接口地址有高电平输入即为“1”,经过内部程序逻辑处理使管脚P0.0输出+5V高电平。经过隔离放大输出电路变为+24V电压,驱动电磁阀吸合。发光二极管LED1发光作为电磁阀动作指示,从而完成整个补排油控制的动作。

4 程序设计

4.1 延时程序设计

作为单片机指令的执行时间是很短的,大约为微秒级,因此,我们要求补排油时间间隔2秒,相对于微秒来说,相差太大,所以,在执行某一指令时,插入延时程序来达到我们的要求,延时子程序可设计如下:

DELAY:MOV R5,#200

D1:MOV R6,#200

D2:MOV R7,#248

DJNZ R7,$

DJNZ R6,D2

DJNZ R5,D1

RET

4.2 输出控制程序设计

如图1所示,当P1.0端口输出高电平,即P1.0=1时,嵌入隔膜导杆的磁环发出磁感应信号作用于双磁信号传感器;当P1.0端口输出低电平,即P1.0=0时,双磁传感器不处于工作状态。可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。输出控制程序如下:

ORG 0

START:CLR P1.0

LCALL DELAY

SETB P1.0

LCALL DELAY

5 结论

基于单片机的隔膜泵补排油控制系统是传统隔膜泵补排油控制系统的改进,可以避免由于误操导致的对隔膜泵液力端造成的损坏。从目前的实际应用效果看,在隔膜泵补排油上可以不再依赖进口的PLC产品来控制,成为独立的控制单元,节省了安装空间,提高了隔膜泵的稳定性,降低了制造成本。并且单片机具有很强的可扩展性,可以实现更多的功能。

参考文献

[1]上官同英.单片机原理及应用技术[M].北京:清华大学出版社,2011.

第10篇

摘 要:单片机原理与应用是中、高级技工院校工科电类专业的一门重要的专业课程。由于该课程具有一定的理论难度与深度,因此在教学中必须根据技校生的认知状况,采用模块教学法使学生在较短的时间内掌握单片机原理及接口技术,熟悉其应用系统的开发技术。

关键词 :模块 单片机 教学

随着大规模、超大规模集成电路技术的发展和计算机微型化的需要,人们把微型计算机的基本功能部件集成在一个半导体芯片上,使得一块集成电路芯片就能构成一个完整的微型计算机,简称单片机。由于单片机的硬件、软件系统及I/O接口控制能力等方面都有独到之处,具有较强而有效的功能,因此它的应用极其广泛。也正因为此,如今的各中、高级技工院校的计算机应用、自动控制、电气电子、机械等工科专业,都将单片机原理与应用作为各自专业的一门重要课程。但由于该课程涉及数字电路、C语言程序设计、可编程控制器技术等多门专业课程的内容,因此具有一定的理论难度与深度,加之技工院校的学时较短,实训课时更是很难得到保证,结果导致教学效果不佳。为此,在单片机原理与应用的课程教学中引入模块法,可以使学生在较短时间内系统掌握单片机原理及接口技术,掌握单片机的程序设计方法,熟悉单片机应用系统的开发技术。

一、模块教学法的内涵

模块教学法是近几年来新引进技工院校的教学模式。它是指在教学过程中,围绕不同层次学生的培养目标,将教学内容设定为“阶梯状”教学模块,教师在不同的教学模块,灵活运用案例教学法、讨论式教学法、情景教学法等先进教法与学法,特别是在专业课程教学上强调“教师边讲解边演示,学生边操作边理解”的动手动脑相结合的“双边教学法”,从而实现预期的教学目标。其与传统教学方法最大的区别在于以素质为核心、以能力为本位,重在知识和技能的实际灵活应用。

二、模块教学法在技工院校单片机教学中应用的意义

1.降低了教学难度

在以往的单片机教学过程中,按照传统教材的教学模式,学生先学难懂的硬件结构原理,再学枯燥的汇编指令,然后又开始了脱离实验的纯软件编程的学习,等开始学习单片机接口技术时,不少学生对前面的内容早已忘得一干二净。这种传统教学模式在很大程度上导致学生感到单片机“原理难学、指令难记、接口难用”。而采用模块教学法,将教学内容根据学生的学情以及今后就业的需要,重组、整合,让学生“边学理论、边实践,学一样、会一样”,有效地降低了教学难度,激发了学生的学习兴趣。

2.锻炼了教师队伍

单片机技术是一门实践性很强的软硬件结合的技术。无论是程序设计方法,还是硬件结构,都必须通过大量的实践才能理解、掌握,同时单片机技术的更新换代又极快,这就对教师的能力提出了全面的更高的要求。采用模块教学法,可以使教师在教学过程中不断地既教又学,真正实现了“教学相长”的目的,从而使普通教师达到“双师型”教师的标准。

三、模块教学法在技工院校单片机教学中的应用

1.明确教学内容

开发模块课程的关键点是确定教学内容。针对技校生的知识掌握现状以及相关课程的学习情况,笔者与同事对一些学生不容易学习理解和老师不好教的内容作了调整;同时考虑到虽然现在单片机新产品层出不穷,但51系列单片机以其高性价比受到广大用户和厂家的推崇,所以教学内容仍以51系列单片机为典型机型来组织内容。考虑到学生今后的发展,还添加了大量带有工程性质的应用实例和其他一些新型的接口器件,以跟上单片机应用开发技术的潮流。

2.合理划分模块

我们以培养技校生职业能力为目标,从实用的角度出发,将单片微型计算机基础知识、51系列单片机的硬件结构、51系列单片机的指令系统、汇编语言程序设计、51系列单片机的内部功能单元、51系列单片机接口应用实例组合成基础模块;将51系列单片机系统的扩展、输入/输出通道及接口技术、单片机应用系统开发技术、单片机C51语言程序设计基础组合成提高模块,充分突出单片机应用系统以及接口技术方面的知识点。同时,为了突出技校生的能力培养,我们又设置了基本实验模块与应用实验模块,其中基本实验模块包括了中断实验、定时器实验、8279显示接口实验、LCD显示实验等内容,而应用实验模块包括了一锁多功能按键识别技术、动态数码显示技术、点阵式LED简单图形显示技术、霓虹灯控制、继电器控制等内容。这样就通过从易到难,循序渐进的教学过程,使学生受到从硬件设计到软件编程的完整训练,从而尽快掌握单片机应用系统的开发技术。

第11篇

关键词:单片机 程序设计 定时器 多用途

中图分类号:TP368.1 文献标识码:A 文章编号:1007-9416(2013)10-0194-01

良好的设计需要有缜密的需求分析和设计原理的构思,多功能定时器的设计也要从以上两点加以把握后着手进行。

1 基于单片机的多用途定时器的设计需求

在人们的工作与生活中,很多时候需要定时。例如,生活中的早起闹钟定时、食物的烘焙定时,工作中的零件每隔几秒的打磨加工、铸造、工厂里机器设备的开启定时、体育等各项竞技比赛的定时等等,这些都需要有一种多功能的定时器来对时间进行提醒。考虑到使用的便捷性与应用性,基于单片机的多用途定时器还应该具有LED液晶显示功能,即可以在液晶屏幕上显示当前时间,与预设定时间还有多少时间等;时间设置可通过按键进行,报警功能对于多用途时钟也是必不可少的,例如,时钟到达设定时间进行的音乐提示,为更加醒目提醒而设置的LED屏幕闪烁提醒等。该产品设计对于提升人们工作效率与生活品质都有着重要的帮助。

2 单片机结构与定时器设计原理

单片机多用途定时器主要应用了MSP430系列单片机、键盘、电源以及时钟芯片DS1302等电子模块与设备进行实现,该时钟系统的设计理论基础如下:

2.1 Msp430单片机结构

MSP430系列单片机功耗可以达到微安级别,耗电极其低,结构上的设计也较为合理。主要有中央处理器、IO端口以及定时器与AD转换部分等。其中,CPU主要用来处理程序指令,存储单元用于存储数据与程序,比较器与定时器具有比较和定时作用,IO端口用来连接各种设备,ADC模块用来完成通道采样转换。

2.2 定时器设计原理

本设计主要是利用MSP430的IO端口与时钟芯片DS1307和外接键盘相连,通过软件程序设定与硬件电路的搭建,让定时器实现定时、报警、显示等多种功能。软件程序中中断程序的设计最为关键,要注意键盘输入定时信号后的各个端口的中断处理。而键盘的程序设计主要是采用扫描法,通过判断行与列的键盘输入信号来确定键入数字[1]。

3 基于单片机的多用途定时器的实现

3.1 硬件设计

多用途定时器的设计主要是通过MSP430单片机的各个端口与时钟电路、键盘电路、显示电路等进行连接,通过电压与电平的变化和转换来实现的硬件电路功能。在电路的设计中要考虑到各个器件引脚的功用、输入输出电平的匹配。不要忽略复位电路、比较电路、电源电路等部分。重要的电路部分要先画出电路原理图反复检查确认后再进行搭建。

其中较为复杂的时钟模块设计主要是通过DS1302时钟里面含有实时时钟和31字节的静态RAM,通过简单的串行接口与单片机进行通信,实时时钟电路提供年、月、日、星期、时、分、秒的信息,时钟操作可通过AM/PM指示采用12/24小时格式[2]。用RES(复位)、SCLK(串行时钟)、I/O(数据线)、三个口线与单片机之间进行同步串行通信[3]。时钟电路部分是整个系统设计的难点,电路搭建的正确与否直接关系着定时器时钟系统是否能够正常运行。时钟部分硬件电路如图1所示:

其次是键盘模块主要采用扫描方式进行。键盘的工作方式也是分为两种,编程控制方式和中断控制方式,一般是采用矩阵式键盘设计。首先设置各个口线为输入模式,通过中断的方式或者软件查询的方式,获取信息,从而知道各个口线是否有键按下,如果有键按下,则口线端口为高电平,否则为低电平[4]。在按下设置键对时间进行调整之前可以通过+、-按键进行调节。扫描键盘一般由行和列组成,在键盘上的某条行线上输入低电平,如果键盘中某个键被按下则某个列线变为低电平。键盘输入时需要通过查询方式扫描各条线。如果想调整的时间点为多个的话,在对其中的一个设置完成后,系统可以自动的跳到下一个时间点上,这样就能够对所有的时间的点进行调整了,调整结束之后返回到调整之后的时间并且显示出来。

3.2 软件设计

在软件程序设计中,调试与仿真要用到的是IARSystems公司开发的软件,它是全球领先的嵌入式开发工具,与服务的供应商,包含带有C/C++编译器和调试器的集成开发环境,实时操作系统等许多建模工具,我们本次设计使用的是IAREW430。软件程序写入前注意打开IAR Embedded Workbench,注意单击菜单Project、Add file test出现需要的加载源文件界面,选择相应的界面类型,编译时注意对430单片机型号进行选择。

程序在运行时要注意对DS1302进行设置,开始调整时间之前要先对DS1302系统进行初始化,看看当前系统的时间是否为0,准确无误后,对时间进行上传,将有效的信息存储在EPROM中,然后上传给信息管理层,收到命令后对相应的时间进行修改,然后显示出具体的时间。LED数码管在显示之前,要对串口的工作方式进行设置,然后设置对应的地址指针,然后选择数段码,通过传送过来的脉冲来显示,最后知道段位的时间,然后再次选择段位,通过下一次传送显示这个段位的时间,以此类推,当所有的段位都显示出来后,取段结束显示时间成功。

4 结语

多用途定时器对于人们日常工作与生活中的定时给予了很大的帮助,利用单片机进行的多用途定时器经过实践应用,效果显著,功能完善,值得推广应用。

参考文献

[1]王秋爽.单片机开发基础与经典设计实例[M].机械工业出版社.2008:99.

[2]胡汉才.单片机原理及其接口技术[M].清华大学出版社.2010:55-58.

第12篇

关键词:单片机;温度测控

中图分类号:TP18文献标识码:A文章编号:1009-3044(2007)17-31419-01

Discusses the Monolithic Integrated Circuit in the Temperature Observation and Control Aspect Application

ZHANG Wei

(Jiujiang Universitiy,Jiujiang 332005,China)

Abstract:The temperature observation and control has the widespread application in the industry domain, along with sensor technology, microelectronic technology, monolithic integrated circuit technology unceasing development. This article will introduce one kind based on AT89C52 and 89C2051 double MCU injection molding formation temperature observation and control system, and hard, software design method and system functional block diagram and so on.

Key words:Monolithic integrated circuit;Temperature observation and control

塑料制品因具有容易加工、生产效率高、节约能源、绝缘性能好、质量轻、耐磨和耐腐蚀性强等优点,其使用比例正迅猛增加。而注塑成型是塑料加工中普遍采用的方法之一。该方法制成品效率比其他常规的金属成型方法高,能适用于多种原料,成批、连续地生产,并且具有稳定的尺寸,容易实现生产的自动化和高速化,具有极高的经济效益。在影响塑料成型加工过程的诸多因素当中,熔体温度是一个最为关键的控制量,本文介绍了温度的检测与控制方法。

1 加工工艺对控制系统的要求

根据塑料制品特性和实际控制要求:在刚开始加热时,希望温度上升的速度可以快些,以便缩短上升时间,但又不能有太大的超调,并且希望PID控制器参数初值可以在线更改,当温度达到控制要求范围内时,希望其能一直被控制在给定值附近变化,当其超出某一范围时(如高于某一值或低于某一值时)就启动上限报警或下限报警。

根据上述要求,决定采用如下加热过程:刚开始加热时,可以采取满功率加热或按满功率的某一比例值加热,当温度上升到某一值时,转为按基于Fuzzy推理的参数自整定PID控制算法得到的控制量进行调节加热,加热方式可通过功能单元决定。

(1)按百分比加热:就是以设定值的某一比例值作为控制量来决定PWM的占空比来控制固态继电器的通断,选定加热比例后,前端机就以该比例决定的固定的PWM的占空比来进行加热,该比例值可在线更改。

(2)按设定值加热:根据设定值与实际温度的偏差,采用基于Fuzzy推理的参数自整定PID控制算法得到控制量,按该控制量决定PWM的占空比进行加热。

2 控制系统原理

控制系统由硬件和软件两部分组成。其中硬件部分主要由信号采集与放大电路、温度补偿电路、A/D转换电路、单片机电路几部分组成。软件包括单片机AT89C52程序设计、单片机AT89C52与AT89C2051通信程序设计、单片机AT89C2051程序设计三个主要模块组成。

3 控制系统硬件设

(1)信号采集与放大电路

采用K型热电偶获得现场的实际温度,温度采样范围为0―400℃ ,相应地转换的电压信号范围为0―20mv。因为系统要控制8路工业电炉,所以就要对8路温度进行检测采样和控制,这里采用CD4051 实现八选一通道选择。电压信号放大采用低零漂移的运算放大器OP07 , 差分双端输入,可以有效地抑制共模干扰。

从热电偶获得的最大有效电压为20mv ,而ICL7135 满量程时的电压为2V,所以放大电路的放大倍数为100,该放大电路由运放U4、U5组成第一级差分武电路,U6组成第二级差分式电路,根据这一放大倍数来取电阻的阻值,该放大电路的放大倍数可由下式计算:

Av=A1A2=(1+2R96/R95)(-R89/R98),要保证Av=-100,取R89=20K,取R98=20K。取R96=20K,R95为一电位器,其取值范围之为0-500。所以只要调节电位器R95,就可以满足要求。

(2)温度补偿电路

热电偶分度表是在冷端温度为0℃ 时测定的,热电偶在实际测量中,当冷端的温度不是0℃时,就不能直接利用分度表得知温度值,因此必须对热电偶冷端进行温度补偿修正。热电偶测温电路中要有冷端温度补偿电路、冷端补偿方法较多,这里采用冷端温度补偿器来实现温度补偿。

该补偿电路的工作原理是热电偶产生的电势经滤波放大后有一定的灵敏度,采用温敏二极管组成的测量电桥的输出经放大器放大后也有相同的灵敏度。将这两个放大后的信号再通过增益为1的运算放大器相加,则可以自动补偿冷端温度变化引起的误差。补偿范围在0―50℃ ,精度可以达到0.5 ℃。

(3)A/D转换电路

因温度是一个缓慢变化的过程,对采样速率要求不高,为提高抗干扰能力,采用双积分A/D转换器。

本文采用MAXIM公司的ICL7135 , MC1403芯片为ICL7135提供基准电压。通常情况下,设计者都是用单片机来并行采集ICL7135的数据,在这里,作者采用单片机对ICL7135 进行串行数据采集,利用该方式具有结构简单、占用单片-机资源少等特点。

在ICL7135与单片机系统进行连接时,如果使用ICL7135的并行采集方式,则不但要连接BCD码数据输出线,又要连接BCD

码数据的位驱动信号输出端,这样至少需要9根I/0口线,因此,系统的连接比较复杂,ICL7135的串行接法是通过计脉冲数的方法来获得测量转换结果的,可以通过单片机的定时器TO或Tl来作计数脉冲器,定时器TO所用的CLK频率是系统晶振频率的1 / 12 ,因此可利用单片机的ALE信号经74LS74分频后作为ICL7135的脉冲(CLK)输入,便可得到定时器TO所使用的频率与单片机系统晶振频率的关系,以及ICL7135所需频率输入与单片机系统晶振频率的关系。

为使定时器TO计数脉冲与ICL7135工作所需的脉冲同步,可以将ICL7135的BUSY信号接至AT89C52的P3 .2 ( INTO)引脚上,此时定时器TO是否工作将受BUSY信号的控制,并且将定时器TO的选通控制信号GATE位置1 。ICL7135的输入电压与TO计数脉冲成线性关系,ICL7135满量程时对应的有效计数脉冲为20000 ,可以得以下公式:

fIN=VIN/VMAX*20000=VIN/VR*1000,式中:fIN为对应输入电压VIN的计数脉冲,VMAX,VR分别为ICL7135的最大工作电压和基准电压,且有VMAX=2VR,VR工作时事先通过MC1403输出端电位器调好。

只要VR非常准确,且准确测量出VIN,因ICL7135和AT89C52 的精确度都非常高,故得到的fIN也可达到很高的精度。

(4)4CPU电路

之所以要用AT89C52和AT89C2051两个单片机,主要是考虑到AT89C52要实现的功能比较多,负荷较重,且其片内RAM空间已全部分配完所以采用AT89C52作为系统的核心控制芯片,用AT89C52用于产生PWM波形去控制固态继电器的导通与截止。

4 控制系统的软件设计

根据系统的工作原理及控制要求,考虑软件的总体结构设计,正确处理各实体之间的联系,为此软件采用模块化的结构设计,自顶向下,逐步细化,利用子程序构成各模块。整个软件系统有良好的可读性、可修改性,易于调试和维护。下面简述其中三个主要的程序设计。

(1)单片机AT89C52 程序设计

包括主程序设计和中断采样程序设计,要对8路温度进行循环采集,通过定时器T2每隔1s定时对8路温度进行顺序采集,这就要对通道选择,这可通过AT89C52的P2.0、P2.1、P2.2 对多路开关CD4051的地址引脚A0、Al 、A2 进行控制而实现在采样中断子程序中,要对看门狗计数器清零,这可通过AT89C52的Pl .1 来控制MAX813L的WD1引脚实现,每次进人中断采样时,给MAX813L的WD1引脚一个脉冲,从而对其内部计数器清零。获得采样数据后,要进行处理(如进制转换等),加热模式判别(停止加热、是否需上下限报警、是按百分比加热还是按基于Fuzzy推理的参数自整定PID控制加热等),与AT89C2051进行通信,将获得的控制量传送给AT89C2051以实现PWM波形的生成,偏差和偏差变化率存取计算(因有8路温度数据,对应就需给它们分配存储空间,以方便存取和计算)。

(2)单片机AT89C52与AT89C2051通信程序设计

AT89C52 经采样处理后,需将得到的控制量传送给AT89C2051 , AT89C2051根据获得的控制量通过软件产生PWM控制信号。这就需安排好AT89C52与AT89C2051的通信协议,这里AT89C52 与AT89C2051之间采用四位数据线并行通信,所以在通信前需将AT89C52 发送的控制量拆成半字节后放入发送存储单元。在进行通信时,AT89C52 通过引脚P0 . 4发联络信号,AT89C2051 收到AT89C52发送的联络信号后,通过引脚P3 . 4给AT89C52发应答信号,AT89C52收到AT89C2051的应答信号后,就开始给AT89C2051发送数据。

(3)单片机AT89C2051 程序设计

利用AT89C2051来完成PWM波形的发生,AT89C52只需将经运算后得到的控制量送给AT89C2051 , 这样,AT89C52 的负荷就减轻了,有利于提高整个系统的工作性能。而AT89C2051只管PWM波形的发生,有利于提高控制精度,获得较好的实时性,且电路结构相当简单,八路输出,只需要一片AT89C2051 ,和一个简单的驱动电路。其工作过程也十分简单:AT89C2051经软件算法后获得PWM波形,八路输出采用循环输出,因每路数据的更新时间非常短,不会影响控制的实时性,然后通过驱动电路驱动后去控制固态继电器的闭合时间。

本系统选用单片机89C52作为核心控制芯片,具有成本低、体积小、集成度高、可靠性高等特点,是一种较理想的选择。设计方法上,将软件工程的思想引用于单片机系统的设计,使系统的信息流向及整体功能设计简单明确、清晰。

参考文献:

[1]张友德,赵志英,涂时亮.单片微型机原理、应用与实验(实验版)[M].上海:复旦大学出版社.