基于51单片机的传送带产品计数器设计LED显示_第1页
基于51单片机的传送带产品计数器设计LED显示_第2页
基于51单片机的传送带产品计数器设计LED显示_第3页
基于51单片机的传送带产品计数器设计LED显示_第4页
基于51单片机的传送带产品计数器设计LED显示_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于51单片机的传送带产品计 数器设计(LED显示)目录1 . 题 目 12 . 电 路 原 理 图 的 设 计 12.1 传送带产品计数器( LED 显示)电路原理 图 12 . 2 L E D 显 示 模 块 12 . 3 置 数 模 块 22 . 4 按 键 模 块 32 . 5 电 机 控 制 模 块 33. 软件系统设计I3 . 1 软 件 系 统 的 流 程 结 构 43 . 2 C 5 1 程 序 44 . 仿 真 即 调 试 8 参考 献 9II1 题目设计题目 传送带产品计数器的设计( LED 显示) 功能要求:用 MCS-51 系列单片机作为控制器; 采用 4 位 LED

2、进行计数显示; 采用光电传感器计数; 用按键控制 传送带电机的起停; 用拨码盘预置计数值,计数到 预定值时,传送带停止,按键后传送带继续运行。 2 电路原理图的设计2.1 传送带产品计数器( LED显示)电路原理图硬件原理图如下图所示,包括显示模块,按键模块, 电机控制模块,置数模块。2.2 LED 显示模块使用 4位LED数码管来显示数字,通过 NPN管来驱动数码管2.3 置数模块使用 8位薄码盘和 5位薄码盘组合来组成最高 13位的二进制数,即 8191的最大置数 值,很好的利用了 4位数码管。2.4 按键模块每个按键各接一根输入线, 一根输入线上的按键工作状态不会影响其他输入线上的 工作

3、状态。软件设计采用查询方式和外部中断相结合的方法来设计,低电平有效。按键 直接与 89c51的 I/O 口线相连接,通过读 I/O 口的电平状态,即可识别出按下的按键。 电路原理如图2 5 电机控制模块利用光电耦合器和直流继电器来控制电机, 其中二极管是用来保护三极管, 而电容是用来减少火花的影响。如下图所示43 软件系统设计3.1 软件系统的流程结构3.2 C51 程序 #include #define uchar unsigned char #define uint unsigned int sbit STAR_KEY=P 36;/ 定义键与单片机的连接 引脚sbit STOP_KEY =

4、P37;sbit L0=P10; /定义 SFR中引脚的位 sbit L1=P11;sbit L2=P12;sbit L3=P13;sbit L4=P14;sbit L5=P15;sbit L6=P16;sbit L7=P17;sbit L8=P20;sbit L9=P21;sbit L10=P22;sbit L11=P23;sbit L12=P24;sbit LED4=P25; / 定义四位数码管的千位 sbit LED3=P26;sbit LED2=P27;sbit LED1=P30;sbit MOTOR=P35; uchar n2=1,0; uchar codedispcode=0xc0

5、,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;void delayms(uint x) / 延时子程序uchar y;while(x-)for(y=0;y123;y+);uchar Keynum() / 按键子程序 1uchar key=0;STAR_KEY=1;STOP_KEY=1; / 置初值if(STAR_KEY=0)delayms(10);if(STAR_KEY=0)n 0=0;n1=1; / 按下 STAR键则 n0=0;n1=1if(STOP_KEY=0)delayms(10);if(STOP_KEY=0)n0=1;n1=0;

6、 / 按下 STOP键则 n0=1;n1=0;return n2;/ 返回 n 值void xianshi(uint o) / 显示子程序P0=0xff;P0=dispcodeo/1000;LED4=1;LED3=0;LED2=0;LED1=0;delayms(5);P0=0xff;P0=dispcode(o/100)%10;LED4=0;LED3=1;LED2=0;LED1=0;delayms(5);P0=0xff;P0=dispcode(o/10)%10;LED4=0;LED3=0;LED2=1;LED1=0;delayms(5);P0=0xff;P0=dispcodeo%10;LED4=

7、0;LED3=0;LED2=0;LED1=1;delayms(5);uint qiuzhi() / 求用拨码盘所置数的值的子程 序uchar a;uchar b;uchar c;uchar d;uchar e;uchar f;uchar g;uchar h;uchar i;uchar j;uchar k;uchar l;uchar m;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)

8、 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; if (L8=1) i=1; else i=0; if (L9=1) j=1; else j=0; if (L10=1) k=1; else k=0; if (L11=1) l=1; else l=0; if (L12=1) m=1; else m=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+i*2*2*2

9、*2*2*2*2* 2+j*2*2*2*2*2*2*2*2*2+k*2*2*2*2*2*2*2*2*2*2+l *2*2*2*2*2*2*2*2*2*2*2+m*2*2*2*2*2*2*2*2*2*2*2*2;return p; /返回所求的 P 值10void main(void)uint q;IT0=1;EA=1;EX0=1;TMOD=0X05;TL0=0x00;TH0=0x00; while(1) q=qiuzhi();求出所置的数/ 主程序/ 负跳变触发/ 开总允许中断/ 开 INTO 中断/ 置 T0为计数器方式 1/ 置计数器初值/ 无限循环/ 调用求值子程序if (MOTOR=1

10、) xianshi(q); else xianshi(TL0);Keynum();TR0=n1; /当电动机关闭时显示用薄码盘所置的数并停止计数, 电机启动 时则开始计数,并显示计数值if (TL0=q) TR0=0;MOTOR=1; else Keynum();MOTOR=n0; / 当计数值与所置数相同 时关闭电机, 停止计数,当计数值不等时则将电机启11动与关闭交由按键控制, 所以不存在计数值超过置数 值的情况void Int0(void) interrupt 0/ 中 断 服 务程序,工作寄存器用 0 组TL0=0x00;TR0=1; / 重置计数值, 重新开始计数4 仿真及调试12仿真原理图如上图。当需要置数时,通过薄码盘拨动, 8 位薄码盘控制二进制数的低八位, 5 位薄码盘 控制高 8位。启动后, LED 数码管会显示所置的数, 按下开始键 STAR,电动机开始运 转,4位LED 数码管显示 0,然后按动计数键 COUNT ,按一下数码管显示数加 1,直 到所显

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论