传送带物品计数器的设计带仿真

发布者:灵感发电站最新更新时间:2015-06-25 来源: 51hei关键字:传送带  物品计数器 手机看文章 扫描二维码
随时随地手机看文章

 仿真文件的下载地址:http://www.51hei.com/f/csdwpjs.rar
#include"lcd1602.h"

 #define uchar unsigned char
 #define uint unsigned int
    uchar 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]=1
    return 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]=''; 
  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为计数器    方式1
    TL0=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;      //重置计数值,重新开始计数
 }

关键字:传送带  物品计数器 引用地址:传送带物品计数器的设计带仿真

上一篇:51单片机LED流星雨拖尾灯程序
下一篇:51单片机驱动16*16点阵程序带原理图

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved