基于51单片机的传送带产品计数器设计
(LED显示)
精品资料
目 录
1.题
目……………………………………………………………………………………………………1
2.电路原理图的设
计……………………………………………………………………………………1 2.1传送带产品计数器(LED显示)电路原理图…………………………………………………1 2.2 LED显示模
块……………………………………………………………………………………1 2.3 置数模
块…………………………………………………………………………………………2 2.4 按键模
块…………………………………………………………………………………………3 2.5 电机控制模
块……………………………………………………………………………………3 3.软件系统设计 3.1 软件系统的流程结
构……………………………………………………………………………4 3.2 C51程
序…………………………………………………………………………………………44.仿真即调
试………………………………………………………………………………………………8
仅供学习与交流,如有侵权请联系网站删除 谢谢I
精品资料
5.总
论………………………………………………………………………………………………………8 参考文
献……………………………………………………………………………………………………9
仅供学习与交流,如有侵权请联系网站删除 谢谢II
精品资料
1 题目
设计题目 传送带产品计数器的设计(LED显示) 功能要求:
用MCS-51系列单片机作为控制器;采用4位LED进行计数显示;采用光电传感器计数; 用按键控制传送带电机的起停; 用拨码盘预置计数值,计数到预定值时,传送带停止,按键后传送带继续运行。
2 电路原理图的设计
2.1 传送带产品计数器(LED显示)电路原理图
硬件原理图如下图所示,包括显示模块,按键模块,电机控制模块,置数模块。
2.2 LED显示模块
使用4位LED数码管来显示数字,通过NPN管来驱动数码管。
仅供学习与交流,如有侵权请联系网站删除 谢谢1
精品资料
2.3 置数模块
使用8位薄码盘和5位薄码盘组合来组成最高13位的二进制数,即8191的最大置数值,很好的利用了4位数码管。
仅供学习与交流,如有侵权请联系网站删除 谢谢2
精品资料
2.4 按键模块
每个按键各接一根输入线,一根输入线上的按键工作状态不会影响其他输入线上的工作状态。软件设计采用查询方式和外部中断相结合的方法来设计,低电平有效。按键直接与89c51的I/O口线相连接,通过读I/O口的电平状态,即可识别出按下的按键。电路原理如图
仅供学习与交流,如有侵权请联系网站删除 谢谢3
精品资料
2.5 电机控制模块
利用光电耦合器和直流继电器来控制电机,其中二极管是用来保护三极管,而电容是用来减少火花的影响。如下图所示。
仅供学习与交流,如有侵权请联系网站删除 谢谢4
精品资料
3 软件系统设计
3.1 软件系统的流程结构
3.2 C51程序
#include #define uchar unsigned char #define uint unsigned int sbit STAR_KEY =P3^6;//定义键与单片机的连接引脚 sbit STOP_KEY =P3^7; 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 L8=P2^0; sbit L9=P2^1; sbit L10=P2^2; sbit L11=P2^3; sbit L12=P2^4; 仅供学习与交流,如有侵权请联系网站删除 谢谢5 精品资料 sbit LED4=P2^5; sbit LED3=P2^6; sbit LED2=P2^7; sbit LED1=P3^0; sbit MOTOR=P3^5; uchar n[2]={1,0}; uchar code //定义四位数码管的千位 dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; void delayms(uint x) //延时子程序 { uchar y; while(x--) { for(y=0;y<123;y++){;} } } uchar Keynum() { uchar key=0; STAR_KEY=1;STOP_KEY=1; //置初值 if(STAR_KEY==0){delayms(10);if(STAR_KEY==0)n[0]=0;n[1]=1;} //按下STAR键则n[0]=0;n[1]=1 if(STOP_KEY==0){delayms(10);if(STOP_KEY==0)n[0]=1;n[1]=0;} //按下STOP键则n[0]=1;n[1]=0; return n[2]; } void xianshi(uint o) //显示子程序 { P0=0xff; P0=dispcode[o/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); 仅供学习与交流,如有侵权请联系网站删除 谢谢6 //返回n值 //按键子程序1 精品资料 P0=0xff; P0=dispcode[o%10];LED4=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) {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 仅供学习与交流,如有侵权请联系网站删除 谢谢7 //将电平信号变为数字的值 精品资料 *2*2*2*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值 } void main(void) { uint q; IT0=1; EA=1; EX0=1; //负跳变触发 //开总允许中断 //开INTO中断 //置T0为计数器方式1 //置计数器初值 //无限循环 //主程序 TMOD=0X05; TL0=0x00; TH0=0x00; 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 { TL0=0x00;TR0=1; } //重置计数值,重新开始计数 //中断服务程序,工作寄存器用0组 // 当计数值与所置数相同时关闭电机,停止计数,当计数值不等时则将电机启动与关闭 仅供学习与交流,如有侵权请联系网站删除 谢谢8 精品资料 4 仿真及调试 仿真原理图如上图。 当需要置数时,通过薄码盘拨动,8位薄码盘控制二进制数的低八位,5位薄码盘控制高8位。启动后,LED数码管会显示所置的数,按下开始键STAR,电动机开始运转,4位LED数码管显示0,然后按动计数键COUNT,按一下数码管显示数加1,直到所显示的数与当前所置的数相等时关闭电机和停止计数。而后可以按下RST键,所记的数清零并重新开始计数,此时可又通过按下计数键COUNT来计数。在这个过程中,可以按下STOP键来关闭电机,同时也停止了计数,再按下开始键STAR,则再继续接着刚停止时的数来开始计数。满足了设计题目的所有要求。 5 总论 仅供学习与交流,如有侵权请联系网站删除 谢谢9 精品资料 参 考 文 献 仅供学习与交流,如有侵权请联系网站删除 谢谢10 因篇幅问题不能全部显示,请点此查看更多更全内容