版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目4产品计数器设计与实现素质目标1.通过数码管低功耗节能显示培养学生节约意识。2.培养学生的代码编写规范、勇于实践的劳动精神和精益求精的工匠精神。知识目标1.能说出数码管常见型号和类型和数码管静态显示方式。2.能提供数码管静态电路设计。3.能说出C语言一维数组的使用。能力目标1.能分析电路原理图和能使用常用元器件设计数码管静态显示电路模块。2.能够基于C语言,熟练使用一维数组的查表功能,学会数码管静态显示的程序编写调试。设计要求:设计一个产品计数器的单片机应用系统,即单片机的某个I/O口作输入口,外接红外线光电传感器作为实时产品计数,1个独立按键为计数值复位清零的功能按钮;单片机的某些I/O口作输出口,接2个1位数码管,通过编程实现产品计数显示效果。基于单片机的产品计数器产品计数器简介计数器是一种可以用在不同工作、生活场合,对超市、停车场、公交汽车、银行、图书馆、快递业、印刷业等场合的人数、车数或者产品数量进行统计和管理。产品计数器利用单片机技术和光电传感器、按键、数码管等组成系统,通过光电传感器检测已加工的产品,并将这一自动检测信息送入单片机系统中;通过独立按键完成复位清零操作;通过数码管显示计数数量信息,采用数码管静态显示方式,可以保证其长时间运作,也具备了高亮度、可视性、小功耗、使用寿命长等优点。数码管简介数码管是一种用于显示数字和一些字母符号的电子元件,通常由LED或荧光灯组成,其基本单元是发光二极管。通过对其不同的管脚输入相对应的电流,会使其发亮,从而能够显示时间、日期、温度等所有可用数字表示的参数。由于它的价格便宜,被广泛用作数字仪器仪表、自动化控制装置、计算机的数显器件,特别是在家用电器领域应用极为普遍,如空调、热水器、冰箱等。数码管实物图常见的数码管包括七段数码管和十六段数码管。七段数码管由七个LED灯组成,分别表示数字0-9以及一些字母符号。十六段数码管则由16个LED灯组成,除了数字0-9以外,还可以表示更多的字母符号和图形。数码管可以作为一种节能的显示器件来使用,它的功耗通常比液晶显示器等其他显示器件要低得多,数码管是固态器件,使用寿命比其他显示器件要长,数码管通常只显示数字和字母,而不需要显示复杂的图形和图像,因此它们可以使用较低的分辨率和较少的像素。这意味着数码管所需的计算和图形处理能力更低,从而减少了能源消耗。数码管的主要特点是:(1)驱动发光只需要低电压、小电流的条件,并且其能与CMOS电路、TTL电路兼容。(2)数码管的响应时间非常短(<0.1µs),它的高频特性好,单色性好,亮度高。(3)数码管的体积小,重量轻,抗冲击能力高。数码管的结构和分类LED数码管(LEDSegmentDisplays)是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。按发光二极管单元连接方式分为共阳极数码管和共阴极数码管,如图所示。数码管内部电路图数码管字形编码要使数码管显示出相应的数字或字符,必须使段数据口输出相应的字形编码。字型码各位定义为:数据线D0与a字段对应,D1与b字段对应……,依此类推。如使用共阴极数码管,数据为0表示对应字段灭,数据为1表示对应字段亮。如使用共阳极数码管,数据为0表示对应字段亮,数据为1表示对应字段灭;如要显示“0”,共阴极数码管的字型编码应为:00111111B(即3FH),共阳极数码管的字型编码应为:11000000B(即C0H)。数码管字形编码显示数字共阴顺序小数点灭共阳顺序小数点亮共阳顺序小数点灭Dpgfedcba16进制0001111113FH40HC0H10000011006H79HF9H2010110115BH24HA4H3010011114FH30HB0H40110011066H19H99H5011011016DH12H92H6011111017DH02H82H70000011107H78HF8H8011111117FH00H80H9011011116FH10H90H根据LED显示的硬件设计方法的不同,LED显示驱动分为静态显示和动态显示两种方法。1.静态显示方式所谓静态显示方式,就是当显示某一个数字时,代表相应笔划的发光二极管恒定发光,例如7段数码管的a、b、c、d、e、f笔段亮时显示数字0;b、c亮时显示1;a、b、d、e、g亮时显示2等。数码管的显示方式静态显示电路数码管的静态显示方式连接所有LED的位选均共同连接到+VCC或GND,每个LED的8根段选线分别连接一个8位并行I/O口,从该I/O口送出相应的字型码显示字型。特点原理简单;显示亮度强,无闪烁;占用I/O资源较多。数码管的动态显示方式连接
所有LED的段选线共同连接在一起共用一个8位I/O口,而每个LED的位选分别由一根相应的I/O口线控制。因此必须采用动态扫描显示方式,每一个时刻只选通其中一个LED,同时在段选口送出该位LED的字型码。动态显示电路红外线光电传感器红外线光电传感器是一种利用人肉眼看不见的、波长为780nm-1mm的近红外线和红外线的反射在介质中传播后经过长距离后返回接收信息来自动检测和判别物体的传感器。红外线光电传感器是由发射器、接收器和检测电路三部分组成。红外线光电传感器数组数组:构造数据类型,是一组有序数据的集合数据类型基本类型构造类型指针类型空类型整型实型字符型数组结构联合枚举单精度型双精度C语言的数据类型数组的概念数组是构造数据类型,是一组有序数据的集合,数组中的每个元素都属于同一种数据类型,不允许在同一数组中出现不同类型的变量,数组元素的数据类型就是该数组的基本类型。例如,整型数据的有序集合称为整型数组,字符型数据的有序集合称为字符型数组。数组分为一维、二维、三维和多维数组等,常用的是一维、二维和字符数组。数组的基本特点构造类型数据:由基本类型数据按照一定规则组成。数组:同类型数据的一个有序集合。数组用一个名字来标识,称为数组名。数组中各元素的顺序用下标表示,下标为n的元素可以表示为数组名[n]。改变[]中的下标就可以访问数组中所有的元素。应用场合:需要处理的数据为数量已知的若干相同类型的数据时。注意:数组先定义,后使用。一维数组的定义和引用一维数组的定义:一般格式:类型标识符数组名[常量表达式];
int
array[10];
unsignedcharnum[7];说明:数组名——见名知意;数组名中存放的是一个地址常量,它代表整个数组的首地址。同一数组中的所有元素,按其下标的顺序占用一段连续的存储单元。方括弧而非圆括弧;常量表达式:可以是常量或符号常量;表示数组元素的个数(也称数组长度)。不允许对数组大小作动态定义。数组元素下标从0开始。array[0],array[1],…array[9];遵循标识符命名规则一维数组的定义和引用一维数组的初始化:一般格式:数据类型数组名[常量表达式]={初值表};说明:定义时赋初值;intscore[5]={1,2,3,4,5};给一部分元素赋值;intscore[5]={1,2};不对数组全部元素赋值,则全部元素被赋值为0;
intscore[5];给全部数组元素赋初值时,可以不指定数组长度;
intscore[]={1,2,3,4,5};一维数组的定义和引用一维数组的查表功能:数组的一个非常有用的功能之一就是查表。表可以事先计算后装入程序存储器中。如:unsignedcharcodetab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//定义数组tab[],并初始化unsignedchark;
while(1){ for(k=0;k<10;k++) {P2=tab[k];//查表取数}
}二维数组或多维数组数组的下标具有两个或两个以上,则称为二维数组或多维数组。定义二维数组的一般形式如下:
类型说明符数组名[行数][列数];其中,数组名是一个标识符,行数和列数都是常量表达式。例如:floatdemo2[3][4];//demo2数组有3行4列共12个实型元素二维数组也可以在定义时进行整体初始化,也可以在定义后单个地进行赋值。例如:inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};//全部初始化intb[3][4]={{1,2,3,4},{5,6,7,8},{}};//部分初始化,未初始化的个元素为0字符数组若一个数组的元素是字符型的,则该数组就是一个字符数组。例如:chara[12]={“ChongQing”};//字符数
charadd[3][6]={"weight","height","width"};//字符串数组
本系统功能由硬件和软件两大部份协调完成,硬件部分主要完成信息的显示;软件主要完成信号的处理及控制。与数码管电路组成控制系统。该系统硬件主要包括以下几个模块:AT89C52主控模块、数码管静态显示电路模块等。其中AT89C52主要完成外围硬件的控制以及一些运算功能,传感器电路完成计数,按键完成复位功能,数码管完成数字00到99的显示功能。本系统软件主要实现产品计数显示功能。产品计数器方案设计单片机数码管显示电路复位电路时钟电路电源电路红外光电传感器电路按键电路硬件方案确定最小系统单片机传感器电路设计硬件方案按键复位设计数码管显示设计硬件电路设计产品计数器系统硬件结构包括最小系统、按键电路(其中一个按键模拟传感器信号,另一个按键为复位按钮)及数码管显示电路。产品计数器的计数由按键电路完成,利用P1口的P1.0~P1.1端口分别模拟外部传感器信号和实现计数值复位清零功能。采用2个1位共阳极数码管为显示器。单片机的P2口、P3口分别与两个数码管的段码连接,其中P2口连接显示计数的十位,P3口连接显示计数的个位。P2口、P3口的八个引脚刚好对应P2、P3口特殊功能寄存器的八个二进位,当P2、P3口某个引脚输出高电平“1”时,对应数码管段码熄灭;当P2、P3口某个引脚输出低电平“0”时,对应数码管段码点亮。若将计数值进行十进制数分离,再分别给P2、P3口送入不同的数字,就能在两个数码管上看到数值的显示了。产品计数器的硬件原理图算法分析对于数码管而言,要显示数字或字母,首先应该选中该数码管,然后点亮相应字段。例如:显示数字“3”,应当是a亮、b亮、c亮、d亮、e不亮、f不亮、g亮、Dp不亮。可以列出数码管显示数字的段码表(以两位数码管显示的个位数为例)。产品计数器系统程序设计段名称DPGFEDCBA对应段码对应引脚P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0数字011000000C0H数字111111001F9H数字210100100A4H数字310110000B0H数字41001100199H数字51001001092H数字61000001082H数字711111000F8H数字81000000080H数字91001000090H共阳数码管显示数字的段码表算法分析由于数码管显示的数字“0~9”的字型码“C0H、F9H、A4H、B0H、99H、92H、82H、F8H、80H、90H”没有规律可循,只能采用查表的方式来完成我们所需的要求。在程序设计中可以设计一个变量,每隔一定时间在“0~9”之间变化,然后按照这个数据去查找段码表,把查到的数据送到P3口。
所谓表格(数组)是指在程序中定义的一串有序的常数,如平方表、字形码表、键码表等。因为程序一般都是固化在程序存储器(通常是只读存储器ROM类型)中,因此可以说表格(数组)是预先定义在程序的数据区中,然后和程序一起固化在ROM中的一串常数。在程序设计中,有时需要预先把非线性数据以表格的形式存放在存储器中,然后使用程序读出,这种能读出数据表格的程序就称为查表程序。查表程序的关键是表格的定义和如何实现查表。产品计数器系统程序设计绘制程序流程图
(1)主程序流程图绘制主程序主要完成数码管静态显示(即循环查表)、延时功能函数调用以及键盘扫描与键位功能处理子程序等功能。数码管静态显示子程序是在两个1位数码管上显示计数值,其中一个数码管作为个位数显示,与单片机的P3口相连;另外一个数码管作为十位数显示,与单片机的P2口相连。显示的时候将个位和十位分离后通过循环查表的方式来实现显示。键盘扫描与键位功能处理子程序是查询判断哪个功能键被按下,确认某个键被按下后再转到该键的功能处理程序。产品计数器系统程序设计产品计数器系统程序设计主程序流程图绘制程序流程图
(2)定义段码表(数组)使用一维数组存放需要使用的数码管段码值来实现需要查询的数据表。因为用到0到9十个段码值,所以要
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论