传送带产品计数器的设计(LCD)
- 格式:doc
- 大小:157.50 KB
- 文档页数:10
传送带计数课程设计一、课程目标知识目标:1. 学生能理解并掌握传送带的原理与功能;2. 学生能运用基本的计数方法,对传送带上的物体进行计数;3. 学生了解传送带计数在实际生活中的应用。
技能目标:1. 学生能运用观察、分析、计算等方法,解决传送带计数问题;2. 学生能运用所学知识,设计简单的传送带计数程序;3. 学生通过团队协作,提高沟通与解决问题的能力。
情感态度价值观目标:1. 学生培养对物理现象的好奇心与探索精神;2. 学生在团队协作中,学会尊重、倾听与互助;3. 学生认识到科技在生活中的重要作用,增强对科学技术的热爱。
课程性质:本课程为物理与数学相结合的实践课程,注重培养学生的观察、分析、计算和团队协作能力。
学生特点:四年级学生具有一定的观察、分析和计算能力,对新鲜事物充满好奇,喜欢动手操作。
教学要求:结合学生特点,注重理论与实践相结合,提高学生的实际操作能力和解决问题的能力。
将课程目标分解为具体的学习成果,以便在教学过程中进行有效指导和评估。
二、教学内容1. 传送带的原理与功能:- 介绍传送带的基本结构和工作原理;- 分析传送带在工业生产中的应用。
2. 传送带计数方法:- 讲解物体在传送带上的运动特点;- 引导学生掌握时间与速度的关系,推导计数方法;- 介绍常见计数方法,如定时计数、定长计数等。
3. 实践操作:- 设计简单的传送带计数实验,让学生动手操作;- 引导学生运用所学知识,解决实际问题。
4. 传送带计数程序设计:- 结合计算机编程知识,指导学生设计简单的计数程序;- 分析程序在传送带计数中的应用。
5. 团队协作与沟通:- 组织学生分组进行实践操作,培养团队协作能力;- 引导学生通过沟通、讨论,共同解决问题。
教学内容安排与进度:第一课时:传送带的原理与功能,物体在传送带上的运动特点;第二课时:传送带计数方法,定时计数与定长计数;第三课时:实践操作,设计简单的传送带计数实验;第四课时:传送带计数程序设计,团队协作与沟通。
传送带上物件计数器设计第一章方案论证随着社会的进步和生产的发展,物件计数器已经有了很大的发展,同时也有了很多有关物件计数器的设计方案,但针对的对象不同,所设计的电路也是不尽相同的。
此次我所设计的传送带上的物件计数器主要是针对那些规则的、间隔均匀的物件,因此我设计出了自己的合适的物件计数器电路。
电路的主要功能是对传送带上的物件进行自动计数、装箱以及对所计物件个数进行显示。
关于我设计的方案,我主要论证的电路是检测电路和显示电路以及键盘电路。
第一节检测电路的论证在传送带传送物品的作业过程中,许多物品具有规则形状的块状、颗粒状或棒枝状产品,诸如香烟、香皂、糖果、铅笔、饼干、书籍等。
这些物品大多数按规定的标准实行自动加工,其重量和形体均匀一致,且大多数实行计数定量包装,如香烟20支一小包,书籍10本一包,图钉100个一盒等。
规则形体的物品包装计数时,先以适当的方式将其送到计量给料位置或料斗中,再由计数定量装置按包装要求进行计数给料。
目前常用的计数定量装置有:光电检测计数装置,以及用于块状物品的冲头式定量给料装置,用于块状或颗粒状物品的模孔式定量给料装置,用于块状物品的差速定量给料装置,用于棒状物品的容腔式定量给料装置等。
采用光电检测装置进行计数供送具有装置轻巧、检测速度快、检测范围广、精确度高、非接触、抗干扰、便于实现自动控制等优点,应用非常广泛。
在研制、开发和应用光电计数供送控制系统时,除了要注意一般数控电路共有的防电磁干扰和微机接口技术问题外,还要注意光电计数检测控制特有的几个技术问题,如被检物品的排队、检测信号的整形、防止误计(多计或漏计)以及防车间照明光源的干扰等。
由于我们时间和精力有限,我们只研究了规则的、有间隔的物件计数,于是我们选择了光电检测装置。
光电检测在工业上的运用也分为好多种。
可以检测一切能够影响光量或光特性的非电量,例如,位移、振动、力、转矩、转速、温度、压力、流量、液位、湿度、液体浓度、浑浊度、成分、角度、表面粗糙度、乃至图像等。
(博途)S7-300PLC传送带工件计数控制程序设计
传送带想必在工控界并不陌生,商场的自动扶梯,机场的自动人行道,码头上自动装卸货传送带,工厂生产流水线,农业机械中(联合收割机、插秧机)都有应用,传送带上传送的物品肯定是要得知它传送了多少物品,那么如何得知呢?我们可以采用PLC计数器指令来实现,下面就带大家来完成传送带工件计数控制程序的设计。
01控制要求
传送带输送40个工件,用光电传感器计数,当计件数量小于35时指示灯常亮,当计件数量等于或大于35时指示灯闪烁,当计件数量为40时,10S后传送带停止,同时指示灯熄灭。
02IO分配表
03组态配置
第一步:(点击添加新设备,选择CPU 315-2 DP版本号根据实际版本来设定,点击确认)
第二步:(项目树—PLC变量创建一下变量地址)
04编写程序
第一步:(传送带电机的启动与停止控制)
第二步:(工件计数及比较)
05演示运行
第一步:(启动,在程序段1中,当按下启动按钮M3.0,M3.0常开触点接通,Q124.0线圈通电自锁,传送带电机启动运行)
第二步:(工件计数,在程序段2中,当传送带电机运行时,Q124.0常开触点接通,工件每次经过光电传感器时,光电开关接通1次,M3.3常开触点闭合1次,C0的当前值MW100加一,MW100<35时,Q124.1线圈一直通电,指示灯常亮,MW100≥35时,指示灯每秒闪烁1次,MW100≥40时,定时器TO延时10s。
延时10S时间到,计数器C0复位,程序段1中TO常闭断开,传送带电机停止。
)
来源:PLC发烧友,作者:技成-徐陈爽,未经授权请勿转载!评论处大家可以补充文章解释不对或欠缺的部分,这样下一个看到的人会学到更多,你知道的正是大家需要的。
武汉职业技术学院毕业设计2012届项目类别:毕业设计项目名称:灌装饮料传送带控制专业:班级:姓名:学号:指导老师:摘要本次课程设计基于AT89C51单片机为核心,应用PWM技术对直流电机的速度进行精确调节,并测量出电动机的转速,通过模数转换系统,使用LCD液晶显示器精确的显示电动机的转速。
本次课程设计的目的是更加熟练掌握单片机的工作原理及实际应用,特别是单片机的编程语言,数模转换系统,PWM调节脉冲及LCD液晶显示器的工作原理。
关键字:51单片机;转速控制;模数转换;LCD液晶显示器;目录1前言 (1)2 硬件部分的设计 (2)2.1硬件设计总体思路 (2)2.2单片机控制直流电机部分的硬件设计 (3)2.2.1直流电机组成原理 (3)2.2.2直流电机调速方案的设计 (4)2.2.3直流电机测速方案的设计 (6)2.2.4 PWM产生与控制部分方案的设计 (7)2.2.5 LCD显示部分方案的设计 (9)2.2.6数模与模数转换部分方案的设计 (13)3 各硬件部分的连接与接口 (15)3.1 单片机与直流电机接口部分 (15)3.2单片机与LCD显示模块通信接口部分 (17)3.3各部分硬件结合原理及构造 (18)4 软件程序设计 (19)4.1系统软件设计的总体概述 (19)4.2系统各部分软件设计的思路 (22)5 系统的调试与现象分析 (24)6设计总结 (26)参考文献 (27)单片机程序 (28)单片机控制直流电机转速及温度测量程序 (33)1前言近年来,随着科技的飞速发展,单片机的应用正在不断地走向深入。
在仪器仪表、家用电器和专用装备的智能化以及过程控制等方面,单片机都扮演着越来越重要的角色。
将单片机的应用引入实际科技实践必将对微电子控制技术的研究与实践注入强大活力。
本次设计研究的直流电机转速控制及转速的LCD显示实验装置即以单片机作为核心部件,它可完成对直流电机转速、方向的闭环控制,并应用LCD液晶显示装置显示出转速。
环形传送带工件计数综合实验一、实验目的通过本实验让学生掌握生产线输送带上对不同材质、不同颜色工件计数的常用方法与常用的各种传感器特点和应用方法。
二、实验原理对生产线的输送带上流过的工件(零部件或产品)进行自动检测计数的主要是利用接近开关。
接近开关是一种毋需与运动工件进行机械接触的电子开关量传感器,当某物体与接近开关接近并达到一定距离时,不需要施加任何压力即可输出开关量信号从而驱动交流或直流电器(如机电式计数器)或给计算机装置提供控制指令。
它既有行程开关、微动开关的特性,同时具有传感性能,且动作可靠,性能稳定,频率响应快,应用寿命长,抗干扰能力强等、并具有防水、防震、耐腐蚀等特点。
目前应用较为广泛的接近开关按工作原理可以分为电感型、电容型、光电型、霍尔型等等。
图1所示为输送带上工件的自动计数原理框图。
图1 检测实验台与输送带上工件的自动计数原理框图对输送带上工件的颜色识别实验中是运用了真彩颜色传感器。
传感器有三个通道开关量输出并每个通道可预先标定设置工件的颜色;计算机经数据采集传感器每通道开关量信号就可识别输送带上工件的颜色。
图2为颜色识别实验原理框图。
图2 工件颜色识别实验原理框图三. 实验仪器和设备1. CSY-5000型传感器测控技术实训公共平台;2. 环形带综合测控实验台;3. 数据采集模板及测控软件(LabVIEW试用版);4. 光电式(GY10-W3-3F1)、电容式(CG8-S18-3F1)、电感式(LG-S18-3F1)、涡流式(BZF-2)、磁电式(RP6660CF-12A)、超声波(S18UUA)传感器各一件;真彩颜色传感器(QC50A3P6XDWQ)一件;5.不同材质(非金属、铁磁性金属、非铁磁性金属)、颜色(红、绿、黄)测试块共6件;6. PC机及RS232通讯接口。
四.实验预习要求1.掌握光电式、电容式、电感式、涡流式、磁电式、超声波传感器的工作原理及特点;2.掌握真彩颜色传感器的工作原理和操作程序;3.思考采用适当的传感器实现传送带上不同材质工件的计数方法;4.熟悉CSY-5000型传感器测控技术实训平台的硬件配置。
物流计数器设计说明书一、设计背景随着物流业的发展和技术的不断进步,物流计数器作为一种重要的物流设备,被广泛应用于物流中转仓库、配送中心、生产线等场所。
物流计数器的主要功能是实现物流货物的计数、分类、累计等操作,为物流企业的运营管理提供了重要的数据支持。
本文旨在介绍一款物流计数器的设计方案,为相关企业提供参考。
二、设计要求1.计数精度高物流计数器是将物品逐个加入感应区内来统计数量的装置,所以要求计数精度高,尽可能减少误差。
要实现计数精度高,需选用合适的计数器芯片、高精度的传感器和滤波算法,保证计数的准确性。
2.操作简单物流计数器主要用于生产、仓储等场所,操作人员通常为非专业人士,要求物流计数器的操作简单易懂。
因此,设计时需考虑人机交互,设计合理的操作面板和操作流程,使其易于使用。
3.稳定性高物流计数器通常需要长期运行,要求设备具有稳定的性能和可靠的运行。
在设计中应考虑设备的电路稳定性和抗干扰能力,并选用优质的电子元器件和可靠的结构设计,保证设备的长期稳定运行。
三、设计方案1.硬件设计(1)传感器选择本方案选用光电传感器作为计数器的传感器,利用红外光束进行检测,计数范围广、计数精度高。
同时,在传感器选型时,还需要考虑传感器的响应速度和稳定性。
(2)计数器芯片为满足计数器精度的要求,本方案选用高精度计数器芯片,确保计数的准确性。
(3)电源和显示器计数器的电源选用直流电源,输入电压范围为220V,输出电压为12V。
显示器采用LED数字管,显示清晰明了,易于读取。
2.软件设计(1)操作界面设计操作界面设计简单明了,具有方便快捷的操作性,操作流程简单易懂。
主要包括计数器的开关、计数清零、累计数据查询等功能。
(2)滤波算法设计为减少误差,本方案采用间隔值鉴定加滤波算法的计数方法。
通过根据实际需求的设定数值,鉴别出环境因素或其他干扰因素对计数数据的影响,减少误差的出现。
四、结论本文设计了一款物流计数器,以较高的计数精度、简单易懂的操作界面、可靠的运行稳定性等为特点,为物流企业的生产管理提供支持。
输送带物品计数器电路原理图
该装置的电路工作原理见下图。
当输送带上无物品时,VD1发出的红外线直接照射在VD2上,导致VD 2的内阻减小,故LSE的①、②脚间相当于串通,它的④脚输出高电平,继电器J励磁吸合。
一旦输送带工作,有物品“不断”地遮断VD1发出的红外线时,联接在LSE④脚上的继电器J不断地吸合——释放——吸合,其触点j也不断地闭合——断开——闭合,就相当于人手不断地按动计算器上的“=”键一样,从而在计算器的液晶显示屏上显示出累加数字来。
该装置的计数频率不能大于25Hz。
1.前言1.1设计背景利用数字电路技术数出给定时间内所通过的脉冲数并显示计数结果的数字化仪器。
电子计数器是其他数字化仪器的基础。
在它的输入通道接入各种模-数变换器,再利用相应的换能器便可制成各种数字化仪器。
电子计数器的优点是测量精度高、量程宽、功能多、操作简单、测量速度快、直接显示数字,而且易于实现测量过程自动化,在工业生产和科学实验中得到广泛应用。
电子计数器可具有以下三种基本功能:(1)频率测量(2)周期或时间间隔测量(3)累加计数在这些功能的基础上再增加某些辅助电路或装置,计数器还可完成多周期平均、时间间隔平均、频率比值和频率扩展等功能。
电子计数器性能指标主要包括:频率、周期、时间间隔测量范围、输入特性(灵敏度、输入阻抗和波形)、精度、分辨度和误差(计数误差、时基误差和触发误差)等。
电子计数器按功能可分三类:(1)通用计数器:可测频率、周期、多周期平均、时间间隔、频率比和累计等。
(2)频率计数器:专门用于测量高频和微波频率的计数器,主要用于测频率。
(3)计算计数器:一种带微处理器的具有计算功能的计数器,除了具有通用计数器的功能之外,还能进行数学运算,求解比较复杂的方程式,可靠程序控制进行测量计算和显示等全部工作。
1.2设计内容(1)编制程序,在字符液晶显示器上显示键盘实时按键值;(2)设计一个十进制计数器,对外部脉冲进行计数,计满即清0,用小键盘设置计数值及计数器的启、停.,显示器由右向左为个,十,百,千,万,十万。
1、C键:清零.2、A键:开始计数,3、D键:停止计数,4、B键:设置计数值。
4、E键:程序退出。
1.3硬件实习的目的(1)进一步掌握硬件电路和软件功能的设计方法。
(2)了解LCD1602的工作原理,掌握键盘扫描方法。
2.设计要求2.1编制程序,在字符液晶显示器上显示键盘实时按键值;2.2设计一个十进制计数器,对外部脉冲进行计数,计满即清0,用小键盘设置计数值及计数器的启、停.,显示器由右向左为个,十,百,千,万,十万。
• Counter, tachometer, timer and position display in one counter• Can be used as a preset counter, batch counter or total counter• 2 relays (change-over)• Many different count models • Scalable display• Set value, step to tracking preset • Multi-range power supply for AC• Readable or configurable via RS232/485 interface via Modbus or CR/LF protocol• Allows for direct connection of a large display or PrinterElectronic Programmable LCD Preset Counter and Rate IndicatorKey FetaturesBenefitsThe 898X is a counter, tachometer, timer and position display in a single unit. It can be used as a preset counter, batch counter or totalizer depending on requirements, with automatic help text to take the user through programming. With its automatic help text, clearly and legibly displayed on 14 LED segments, the 898X preset counter takes the user effortlessly through the programming. The large user-friendly front keys can be operated even when wearing gloves. The 14mm high LED display ensures easy reading even from a long distance and in poor lighting conditions.Available with RS485 interface and MODBUS and CR/LF protocol96 [3.77]48 [1.88]90.5 [3.56]7.35 [0.29]11.2 [0.44]max.35 [1.38]43 [1.69]90 [3.54]92 [3.622]450 [1.7700]• Automatic help text• 14-segment LED for improved text representation • Status display of the presets • 3 defined parameters• Tracking presets eliminate the need for re-programming the pre-signal• 4-stage RESET modes • 3-stage keypad locking• Suitable for installation in mosaic systemsSpecificationsGeneral Technical DataDisplay6-digit red 14 segment LED display, 14mm [0.55] highOperating Temperature-20ºC - +65ºC [-4ºF - +149ºF] (non-condensing)Storage Temperature-25ºC - +5ºC [-13ºF - +167ºF]Relative humidity (at +40ºC [+104ºF])RH 93% (non-condensing)Altitude up to 2000m [6562’]Electrical characteristicsPower Supply AC 100-240 VAC, +10% max. 11 VA, 50/60 HzExternal Fuse Protection230 VAC T0.1 A 10-30 VDC T 0.25 AData Retention>10 years, EEPROMResponse time of the frequency meter100 / 600 ms (details in instruction manual)Input Modes Count Direction (cnt.dir),Pulse Counter:Difference (up.dn)Addition A+B (up.up)Phase discriminator x1, x2, x4 (quad, quad x2, quad x4),Ratio (A/B),Ratio in % ((A-B)/Ax100%)Frequency Meter:A, A-B, A+B quad, A/B, (A-B)/A x 100%Timer: 4 start modes: FrErun, Auto, InpA.InpB., InpB.InpB.Sensor power supply AC supply: 24V DC+ 15%, 80 mADC Supply: max. 80 mA, external power supply is connected through EMC Emitted interference: EN55011 class BImmunity to interference: EN 61000-6-2Device safety Designed to EN 61010 part 1Protected class 3Application Area Pollution level 2Mechanical DataProtection IP65 (from the front)Weight approx. 180g [6.35 oz]Count inputs A and BPolarity of the inputs programmable for all inputs in common, NPN/PNPInput resistance5kΩCount frequency Pulse counters: max. 55kHzTachometers: max. 65 kHzCan be damped to 30 Hz (mechanical contacts) (details in instruction manual) Control/Reset input MPI 1 and MPI 2, Lock, Gate, ResetMin pulse duration of the inputs10 ms/1msSwitching levels with AC supply4-30 VDC Low: 0 … 2 VDCHigh 3.5 … 30 VDCSwitching levels with DC supply1-30 VDC Low: 0 … 2 VDCHigh: 3.5 … 30 VDCPulse shape variable, Schmitt-Trigger characteristicsOutputsSwitching voltage max. 250 VAC / 150 VDCSwitching current max . 3 A AC / DCmin. 30 mA DCSwitching capacity max. 750 VA / 90 WOutput 1 + 2Mech. Service life (switching cycles) 2 x 10⁷No. of switching cycles at 3 A / 250 VAC 5 x 10⁴No. of switching cycles at 3 A / 30 VDC 5 x 10⁴Relay with changeover contactReaction time of the outputs 13ms(pulse / time) (details in instruction manual)Part NumbersFunctions / Count ModesTrumeter (Europe)Pilot Mill Alfred Street Bury, BL9 9EFTel: +44 161 674 0960Email: @ Trumeter (The Americas)702 S. Military TrailDeerfield Beach, Florida FL 33442, USATel: +1 954 725 6699Email: a@ Innovative Design Technologies Sdn. Bhd Lot 5881, Lorong Iks Bukit Minyak 1Taman Perindustrian Iks, 14000 Bukit Tengah Penang, MalaysiaWeb: Tel: + 604 5015700Email: sales.my@Pulse Counter• Count with direction mode • Difference mode• Quadrature mode quad / quad2 / quad4• Add, sub, automatic reset • 2-input adding mode A+B • Ratio measurement A/B• Multi-range power supply for AC or DC• Percentage difference measurement (A/B) / A x 100%• Batch counting • Totaliser (overall total)• Multiplication and division factor (up to 99.9999)• Set value• Step or tracking presetFrequency Meter (tachometer)• A • A - B • A + B• A / B• (A – B) / A x 100% (percentage display)• Quad (phase discriminator with recognition of direction)• Averaging • Start delay • 2nd tacho input • Gate input• Multiplication and division factor (up to 99.9999)Time and hours-run Meter (timer)• FrErun (control via gate input)• Auto (start via reset, stop at preset)• InpB.InpB (start with the first edge at InpB (stop with second edge InpB.)• InpA.InpB (start w/ InpA., stop w/ inpB.)• Totaliser (overall total)• Batch counting • Set value• Step or tracking preset8980-1: Dual Preset, Dual Relay Counter, 10-30VDC 8981-1: Dual Preset, Dual Relay Counter, 100-240VAC 8981-5:Dual Preset, Dual Relay Counter, 100-240VAC, RS485898X-DS-1.2 08-17Optional interface MODBUS and CR/LFCount Frequencymax. 45 kHz 9 (details in instruction manual)Interface RS232, RS485Baud Rate 9600Device address1-99, programmable。
目录摘要 (1)1 题目 (2)2 电路原理图的设计 (2)2.1 传送带产品计数器(LED显示)电路原理图 (2)2.2 LED显示模块 (2)2.3 置数模块 (3)3 软件系统设计 (4)3.1 软件系统的流程结构 (4)3.2 C51程序 (4)3.3计数程序模块 (9)4 仿真及调试 (13)5 总论 (14)参考文献 (15)致谢 (16)摘要MCS-51系列单片机 LCD显示 LCM16021 题目传送带产品计数器的设计(LCD显示)功能要求:用MCS-51系列单片机作为控制器;采用LCM1602进行计数显示;采用光电传感器计数;用按键控制传送带电机的起停;用拨码盘预置计数值,计数到预定值时,传送带停止,按键后传送带继续运行。
2 电路原理图的设计2.1 传送带产品计数器(LED显示)电路原理图硬件原理图如下图所示,包括显示模块,按键模块,电机控制模块,置数模块。
2.2 LED显示模块使用4位LED数码管来显示数字,通过NPN管来驱动数码管。
3 软件系统设计3.1 软件系统的流程结构3.2 C51程序/*----------------------------------------------------------- 文件名:lcd1602.h头文件功能:LCD1602驱动函数的声明-----------------------------------------------------------*/ #ifndef _LCD1602_H_#define _LCD1602_H_#include <reg52.h>#define uint unsigned int#define uchar unsigned char//接口定义sbit LcdRs = P2^0;sbit LcdRw = P2^1;sbit LcdEn = P2^2;sfr DBPort = 0x80; //P0口为LCD数据总线/*----------------------------------------------------------- 功能:LCD初始化函数-----------------------------------------------------------*/ void LCD_Initial();/*----------------------------------------------------------- 功能:LCD显示字符(ASIIC码)函数参数:x-列0~15;y-行0~1;str-要显示的字符串指针-----------------------------------------------------------*/ void LCD_Prints(uchar x, uchar y,uchar *str);#endif/*----------------------------------------------------------- 文件名:lcd1602.c函数功能:LCD1602的驱动函数原理:采用普通IO口方式模拟LCD1602时序,未采用总线方式-----------------------------------------------------------*/#include <REG52.H>#include <intrins.h> //次头文件中定义有_nop_()函数#include "lcd1602.h"/*-----------------------------------------------------------功能:内部等待函数返回参数:P0数据-----------------------------------------------------------*/uchar LCD_Wait(void){LcdRs=0;LcdRw=1; _nop_();LcdEn=1; _nop_();//while(DBPort&0x80);/* 在用Proteus仿真时,屏蔽此语句,否则会进入死循环,实际硬件操作时打开此语句.*/LcdEn=0;return DBPort;}/*-----------------------------------------------------------功能:写LCD命令/数据函数参数:style为写命令/数据,0-命令,1-数据;input为写入的8位命令/数据-----------------------------------------------------------*/#define LCD_COMMAND 0 // 命令#define LCD_DATA 1 // 数据#define LCD_CLEAR_SCREEN 0x01 // 清屏#define LCD_HOMING 0x02 // 光标返回原点void LCD_Write(bit style, uchar input){LcdEn=0;LcdRs=style;LcdRw=0; _nop_();DBPort=input; _nop_();LcdEn=1; _nop_();LcdEn=0; _nop_();LCD_Wait();}/*----------------------------------------------------------- 功能:设置LCD显示模式参数:DisplayMode 见下面的定义-----------------------------------------------------------*/ //显示模式定义#define LCD_SHOW 0x04 //显示开#define LCD_HIDE 0x00 //显示关#define LCD_CURSOR 0x02 //显示光标#define LCD_NO_CURSOR 0x00 //无光标#define LCD_FLASH 0x01 //光标闪动#define LCD_NO_FLASH 0x00 //光标不闪动void LCD_SetDisplay(uchar DisplayMode){LCD_Write(LCD_COMMAND, 0x08|DisplayMode); }/*-----------------------------------------------------------功能:设置LCD输入模式参数:InputMode 见下面的定义-----------------------------------------------------------*/#define LCD_AC_UP 0x02 // 地址计数器增加方式#define LCD_AC_DOWN 0x00 // 此为缺省设置#define LCD_MOVE 0x01 // 画面可平移#define LCD_NO_MOVE 0x00 // 画面不可平移void LCD_SetInput(uchar InputMode){LCD_Write(LCD_COMMAND, 0x04|InputMode);}//初始化LCD 详见LCD1602.h中的说明void LCD_Initial(){LcdEn=0;LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,5*7点阵LCD_Write(LCD_COMMAND,0x38); //此句不能省LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不?}/*-----------------------------------------------------------功能:液晶字符显示的位置函数参数:x-列0~15;y-行0~1;-----------------------------------------------------------*/ void LCD_Pos(uchar x, uchar y){if(y==0)LCD_Write(LCD_COMMAND,0x80|x);if(y==1)LCD_Write(LCD_COMMAND,0x80|(x-0x40));}//将字符(ASIIC码)输出到液晶显示详见LCD1602.h中的说明void LCD_Prints(uchar x, uchar y,uchar *str){LCD_Pos(x,y);while(*str!='\0'){ LCD_Write(LCD_DATA,*str); str++;}}3.3计数程序模块#include"lcd1602.h"#define uchar unsigned char#define uint unsigned intuchar out[6];sbit STAR_KEY =P3^2;//定义键与单片机的连接引脚sbit L0=P1^0; //定义SFR中引脚的位sbit L1=P1^1;sbit L2=P1^2;sbit L3=P1^3;sbit L4=P1^4;sbit L5=P1^5;sbit L6=P1^6;sbit L7=P1^7;sbit MOTOR=P3^0;uchar n[2]={1,0};void delayms(uint x) //延时子程序{uchar y;while(x--){for(y=0;y<123;y++){;}}uchar Keynum() //按键子程序1{uchar key=0;STAR_KEY=1; //置初值if(STAR_KEY==0){delayms(10);if(STAR_KEY==0)n[0]=0;n[1]=1;} //按下STAR键则n[0]=0;n[1]=1return n[1]; //返回n值}void xianshi(uint dispbuf) //显示子程序{out[0]=dispbuf/10000+0x30;out[1]=((dispbuf%10000)/1000)+0x30;out[2]=((dispbuf%1000)/100)+0x30;out[3]=((dispbuf%100)/10)+0x30;out[4]=dispbuf%10+0x30;out[5]='\0';LCD_Initial(); //LCD初始化LCD_Prints(1, 0,"The Speed Is"); //LCD输出LCD_Prints(10, 1,"n/min");LCD_Prints(4, 1,out); }uint qiuzhi() //求用拨码盘所置数的值的子程序{ uchar a;uchar b;uchar c;uchar d;uchar e;uchar f;uchar g;uchar h;uint p=0;if (L0==1) {a=1;} else {a=0;} //将电平信号变为数字的值if (L1==1) {b=1;} else {b=0;}if (L2==1) {c=1;} else {c=0;}if (L3==1) {d=1;} else {d=0;}if (L4==1) {e=1;} else {e=0;}if (L5==1) {f=1;} else {f=0;}if (L6==1) {g=1;} else {g=0;}if (L7==1) {h=1;} else {h=0;}p=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2+g*2*2*2*2*2*2+h*2*2*2*2*2*2*2;return p; // 返回所求的P值}void main(void) //主程序{uint q;IT0=1; //负跳变触发EA=1; //开总允许中断EX0=1; //开INTO中断TMOD=0X05; //置T0为计数器方式1TL0=0; //置计数器初值TH0=0;while(1) //无限循环{ q=qiuzhi(); //调用求值子程序求出所置的数if (MOTOR==1) {xianshi(q);} else {xianshi(TL0);Keynum();TR0=n[1];} //当电动机关闭时显示用薄码盘所置的数并停止计数,电机启动时则开始计数,并显示计数值if (TL0==q) {TR0=0;MOTOR=1;} else {Keynum();MOTOR=n[0];} }}//当计数值与所置数相同时关闭电机,停止计数,当计数值不等时则将电机启动与关闭交由按键控制,所以不存在计数值超过置数值的情况void Int0(void) interrupt 0 //中断服务程序,工作寄存器用0组{ TL0=0;TR0=1; }//重置计数值,重新开始计数4 仿真及调试XTAL218XTAL119ALE 30EA31PSEN 29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51OFFON12345678161514131211109DSW1DIPSW_8234567891RP110*865412U2OPTOCOUPLER-NPNR1100R22kR310kU1(P3.4/T0)R55kR410kRL112VQ5NPND11N4001VCC+12V+12vVCCVCC急停计数重启动电机计数值设定D 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016LRV11kVCC5 总论整个设计通过了软件和硬件上的调试.......................参考文献[1]胡汉才.单片机原理及接口技术[M].北京:清华大学出版社.1996.[2]张毅刚.MCS-51单片机应用设计[M].哈尔滨:哈尔滨工业大学出版社,1997. ....................................................................致谢........................................................................... .。
目录1题目 (1)2 电路原理图的设计 (1)2.1 传送带产品计数器设计的电路原理图 (1)2.2 LCD显示模块 (3)2.3 计数模块 (3)2.4 键盘模块 (3)3 软件系统设计 (3)3.1 软件系统的流程结构 (3)3.2 LCD显示程序模块.................................. 错误!未定义书签。
3.3 计数程序模块..................................... 错误!未定义书签。
4 仿真及调试 (7)5 总论 (8)参考文献 (9)致谢 (9)1题目2 电路原理图的设计2.1 传送带产品计数器设计的电路原理图图2.1 电路原理图2.2 LCD显示模块[11]2.4 键盘模块3软件系统设计3.1 软件系统的流程结构3.2 LCD显示程序模块/*-----------------------------------------------------------文件名:lcd1602.h头文件功能:LCD1602驱动函数的声明-----------------------------------------------------------*/ #ifndef _LCD1602_H_#define _LCD1602_H_#include <reg52.h>#define uint unsigned int#define uchar unsigned char//接口定义sbit LcdRs = P2^0;sbit LcdRw = P2^1;sbit LcdEn = P2^2;sfr DBPort = 0x80; //P0口为LCD数据总线/*-----------------------------------------------------------功能:LCD初始化函数-----------------------------------------------------------*/void LCD_Initial();/*-----------------------------------------------------------功能:LCD显示字符(ASIIC码)函数参数:x-列0~15;y-行0~1;str-要显示的字符串指针-----------------------------------------------------------*/void LCD_Prints(uchar x, uchar y,uchar *str);#endif/*-----------------------------------------------------------文件名:lcd1602.c函数功能:LCD1602的驱动函数原理:采用普通IO口方式模拟LCD1602时序,未采用总线方式-----------------------------------------------------------*/#include <REG52.H>#include <intrins.h> //次头文件中定义有_nop_()函数#include "lcd1602.h"/*-----------------------------------------------------------功能:内部等待函数返回参数:P0数据-----------------------------------------------------------*/uchar LCD_Wait(void){LcdRs=0;LcdRw=1; _nop_();LcdEn=1; _nop_();//while(DBPort&0x80);/* 在用Proteus仿真时,屏蔽此语句,否则会进入死循环,实际硬件操作时打开此语句.*/LcdEn=0;return DBPort;}/*-----------------------------------------------------------功能:写LCD命令/数据函数参数:style为写命令/数据,0-命令,1-数据;input为写入的8位命令/数据-----------------------------------------------------------*/#define LCD_COMMAND 0 // 命令#define LCD_DATA 1 // 数据#define LCD_CLEAR_SCREEN 0x01 // 清屏#define LCD_HOMING 0x02 // 光标返回原点void LCD_Write(bit style, uchar input){LcdEn=0;LcdRs=style;LcdRw=0; _nop_();DBPort=input; _nop_();LcdEn=1; _nop_();LcdEn=0; _nop_();LCD_Wait();}/*-----------------------------------------------------------功能:设置LCD显示模式参数:DisplayMode 见下面的定义-----------------------------------------------------------*///显示模式定义#define LCD_SHOW 0x04 //显示开#define LCD_HIDE 0x00 //显示关#define LCD_CURSOR 0x02 //显示光标#define LCD_NO_CURSOR 0x00 //无光标#define LCD_FLASH 0x01 //光标闪动#define LCD_NO_FLASH 0x00 //光标不闪动void LCD_SetDisplay(uchar DisplayMode){LCD_Write(LCD_COMMAND, 0x08|DisplayMode); }/*-----------------------------------------------------------功能:设置LCD输入模式参数:InputMode 见下面的定义-----------------------------------------------------------*/#define LCD_AC_UP 0x02 // 地址计数器增加方式#define LCD_AC_DOWN 0x00 // 此为缺省设置#define LCD_MOVE 0x01 // 画面可平移#define LCD_NO_MOVE 0x00 // 画面不可平移void LCD_SetInput(uchar InputMode){LCD_Write(LCD_COMMAND, 0x04|InputMode);}//初始化LCD 详见LCD1602.h中的说明void LCD_Initial(){LcdEn=0;LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,5*7点阵LCD_Write(LCD_COMMAND,0x38); //此句不能省LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不?}/*-----------------------------------------------------------功能:液晶字符显示的位置函数参数:x-列0~15;y-行0~1;-----------------------------------------------------------*/void LCD_Pos(uchar x, uchar y){if(y==0)LCD_Write(LCD_COMMAND,0x80|x);if(y==1)LCD_Write(LCD_COMMAND,0x80|(x-0x40));}//将字符(ASIIC码)输出到液晶显示详见LCD1602.h中的说明void LCD_Prints(uchar x, uchar y,uchar *str){LCD_Pos(x,y);while(*str!='\0'){ LCD_Write(LCD_DATA,*str); str++;}}3.3计数程序模块#include"lcd1602.h"#define uchar unsigned char#define uint unsigned intuchar out[6];sbit STAR_KEY =P3^2;//定义键与单片机的连接引脚sbit L0=P1^0; //定义SFR中引脚的位sbit L1=P1^1;sbit L2=P1^2;sbit L3=P1^3;sbit L4=P1^4;sbit L5=P1^5;sbit L6=P1^6;sbit L7=P1^7;sbit MOTOR=P3^0;uchar n[2]={1,0};void delayms(uint x) //延时子程序{uchar y;while(x--){for(y=0;y<123;y++){;}}uchar Keynum() //按键子程序1{uchar key=0;STAR_KEY=1; //置初值if(STAR_KEY==0){delayms(10);if(STAR_KEY==0)n[0]=0;n[1]=1;} //按下STAR键则n[0]=0;n[1]=1return n[1]; //返回n值}void xianshi(uint dispbuf) //显示子程序{out[0]=dispbuf/10000+0x30;out[1]=((dispbuf%10000)/1000)+0x30;out[2]=((dispbuf%1000)/100)+0x30;out[3]=((dispbuf%100)/10)+0x30;out[4]=dispbuf%10+0x30;out[5]='\0';LCD_Initial(); //LCD初始化LCD_Prints(1, 0,"The Speed Is"); //LCD输出LCD_Prints(10, 1,"n/min");LCD_Prints(4, 1,out); }uint qiuzhi() //求用拨码盘所置数的值的子程序{ uchar a;uchar b;uchar c;uchar d;uchar e;uchar f;uchar g;uchar h;uint p=0;if (L0==1) {a=1;} else {a=0;} //将电平信号变为数字的值if (L1==1) {b=1;} else {b=0;}if (L2==1) {c=1;} else {c=0;}if (L3==1) {d=1;} else {d=0;}if (L4==1) {e=1;} else {e=0;}if (L5==1) {f=1;} else {f=0;}if (L6==1) {g=1;} else {g=0;}if (L7==1) {h=1;} else {h=0;}p=a+b*2+c*2*2+d*2*2*2+e*2*2*2*2+f*2*2*2*2*2+g*2*2*2*2*2*2+h*2*2*2*2*2*2*2;return p; // 返回所求的P值}void main(void) //主程序{uint q;IT0=1; //负跳变触发EA=1; //开总允许中断EX0=1; //开INTO中断TMOD=0X05; //置T0为计数器方式1TL0=0; //置计数器初值TH0=0;while(1) //无限循环{ q=qiuzhi(); //调用求值子程序求出所置的数if (MOTOR==1) {xianshi(q);} else {xianshi(TL0);Keynum();TR0=n[1];} //当电动机关闭时显示用薄码盘所置的数并停止计数,电机启动时则开始计数,并显示计数值if (TL0==q) {TR0=0;MOTOR=1;} else {Keynum();MOTOR=n[0];} }}//当计数值与所置数相同时关闭电机,停止计数,当计数值不等时则将电机启动与关闭交由按键控制,所以不存在计数值超过置数值的情况void Int0(void) interrupt 0 //中断服务程序,工作寄存器用0组{ TL0=0;TR0=1; }//重置计数值,重新开始计数4 仿真及调试LCD1LM016LVCC5 总论234567891RP110*8VCCD 714D 613D 512D 411D 310D 29D 18D 07E 6R W 5R S 4V S S 1V D D 2V E E3LCD1LM016LRV11kVCC参考文献致谢。