• yfxzhl
    了解作者
  • C51
    开发工具
  • 1KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 8
    下载次数
  • 2020-07-01 20:08
    上传日期
双脉冲点焊机程序,时间可调,带焊针抖动检测
15W413AS点焊机源程序.zip
  • 15W413AS点焊机源程序.txt
    4.1KB
内容介绍
#include "reg51.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16;//对数据类型进行声明定义 typedef unsigned char u8;//对数据类型进行声明定义 sbit P30=P1^0; //数码管第1位 sbit P31=P1^1; //数码管第2位 sbit k1=P1^6; //将单片机的P3.2端口定义为时间加 sbit k2=P1^5; //将单片机的P3.3端口定义为时间减 sbit k3=P1^7; //将单片机的P3.4端口定义为检测点焊笔 sbit out=P1^4; //驱动脉冲输出 //数码管真值表// u8 code LED_CODE[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09}; //显示0~F的段码 u16 Cntms1=0,Cntms2=0,num1,num2;ke; u8 num; //定时变量=毫秒 void Delay(unsigned long int t) { while(--t); } /*===加按键检测===*/ /*当此函数检测到有效按键时返回1,没有检测到有效值时返回0*/ bit skey0(void) { static unsigned char a = 0; if(k1 == 0) //如果检测到按键引脚有低电平,记数变量开始累加. { if(a < 50) //控制延时计数返0,因为当按键不松开时,j一直在累加 a++; //CPU每检测到一次按键引脚为低电平0,j就累加1次. } else //如果按键没有按下或者按下后有高电平(抖动)j清0 a = 0; if(a == 49) //如果变量j的值累加到49,说明按键已跨过抖动区. return 1; //返回1,说明已检测到按键有效值. else return 0; //返回0,说明没有检测到有效值. } /*===减按键检测===*/ /*当此函数检测到有效按键时返回1,没有检测到有效值时返回0*/ bit skey1(void) { static unsigned char i = 0; //定义静态变量,用来记录延时用. if(k2 == 0) //如果检测到按键引脚有低电平,记数变量开始累加. { if(i < 50) //控制延时计数返0,因为当按键不松开时,i一直在累加. i++; //CPU每检测到一次按键引脚为低电平0,i就累加1次. } else //如果按键没有按下或者按下后有高电平(抖动)i清0 i = 0; if(i == 49) //如果变量i的值累加到49,说明按键已跨过抖动区 return 1; //返回1,说明已检测到按键有效值. else return 0; //返回0,说明没有检测到有效值. } bit skey2(void) { static unsigned int l = 0; //定义静态变量,用来记录延时用. unsigned long int if(k3 == 0) //如果检测到按键引脚有低电平,记数变量开始累加. { if(l <5000) //控制延时计数返0,因为当按键不松开时,i一直在累加 l++; //CPU每检测到一次按键引脚为低电平0,i就累加1次. } else //如果按键没有按下或者按下后有高电平(抖动)i清0 l = 0; if(l == 4999) //如果变量i的值累加到4999,说明点焊笔已经做好准备,可以焊接了. return 1; //返回1,说明已检测到按键有效值. else return 0; //返回0,说明没有检测到有效值. } /******************************** 数码管动态显示程序 ********************************/ void display() { static u8 i=0; if(i==0) { P30=1; P31=0; P3=LED_CODE[num/10]; for(ke = 0;ke <100;ke++); //延时一段时间 P31=1; P3=0Xff; i=1; } else { P31=1; P30=0; P3=LED_CODE[num%10]; for(ke = 0;ke <100;ke++); //延时一段时间 P30=1; P3=0Xff; //消隐 i=0; } } //主函数// void main() { bit m = 0,m1 = 0,m2=0; //声明一个位变量.用来存储按键状态. unsigned char i; out=1; //初始化输出端口 num=40;//定时变量赋初值 k1 = 1; //加按键输入端口电平置高 k2 = 1; //减按键输入端口电平置高 k3 = 1; while(1) //主循环 { m = skey0(); //采集加按键 m1 = skey1(); //采集减按键 m2 = skey2(); //采集按键 if(m == 1) //如果采集到加按键值. { if(num < 99) num++; //计数自增 } if(m1 == 1) //如果采集到减按键值. { if(num >1) num--; //计数自减 } if(m2 == 1) { for(i=0;i<2;i++) //加入 for循环,表明for循环大括号中的程序循环执行2次 { out=0; //将P1.0口赋值 0,对外输出低电平 Delay(num*50); //调用延时程序;更改延时数字可以更改延时长度;用于改变输出脉冲时间 out=1; //将P1.0口赋值 1,对外输出高电平 Delay(3000); } } display();//数码管动态显示 } }
评论
    相关推荐
    • Proteus7.12.rar
      Proteus7.12完美破解版.rar电路仿真软件很好用可以仿真单片数字模拟电路
    • VHDL 的实例程序,共44个.rar
      经典VHDL 的实例程序,共44个!要下载的尽快
    • USBtoRS232Driver.rar
      USB转串口驱动程序,可以用在笔记本电脑上,方便的通过串口给单片机下载程序!
    • 模糊控制程序.rar
      模糊PID控制程序的源码,是作业,有讲解,
    • 串口编程源代码.rar
      这是本人最近几年所编写的串行通讯的代码集,可以供大家参考学习。
    • DELTA_PLC.rar
      台达PLC Modbus协议通信dll com控件
    • hongwaigooog.rar
      单片机红外遥控最全的资料,包含很多当前电视遥控专用芯片的解码方式,C语言和汇编语言编写的解码范例程序,看完了你就会了!
    • MF500绝密.rar
      非接触式IC卡开发板源程序,包括原理图/PCB图;源程序在KEIL环境下编译,打开压缩包后直接点击PRJ文件,即可编译使用。 这是个保密文件,做Mifare one卡开发人基本上都用过到这个源代码。
    • 20078251299410.rar
      C51实用程序(45个) I/O、定时器、中断、看门狗、计数器、软件AD、VB串口、93c06驱动、24c02系列驱动、7219、20045、软件陷阱、串口中断、码值转换、AVR通讯、IIC、DS1302、DS1820、SPI、1602、12232、12864、T6963、1330、PC键、键盘输入法、智能化、飞机游戏、贪吃蛇、多级菜单实例等
    • mcudesign.rar
      单片机设计,毕业设计 16×16点阵(滚动显示)论文+程序 cdma通信系统中的接入信道部分进行仿真与分析 LED显示屏动态显示和远程监控的实现 MCS-51单片机温度控制系统 USB接口设计 毕业设计(论文)OFDM通信系统基带数据 仓库温湿度的监测系统 单片机串行通信发射机 单片机课程设计__电子密码锁报告 单片机控制交通灯 电动智能小车(完整论文 电气工程系06届毕业设计开题报告 电信运营商收入保障系统设计与实现 电子设计大赛点阵电子显示屏(A题 电子时钟 火灾自动报警系统设计 基于GSM短信模块的家庭防盗报警系统 基于GSM模块的车载防盗系统设计 TC35i 资料 基于网络的虚拟仪器测试系统 门控自动照明电路 全遥控数字音量控制的D类功率放大器 数控直流稳压电源完整论文 数字密码锁设计 数字抢答器(数字电路) 数字时钟 水箱单片机控制系统 同步电机模型的MATLAB仿真 温度监控系统的设计 用单片机控制直流电机 用单片机实现温度远程显示 智能家用电热水器控制器 智能型充电器电源和显示的设计 自动加料机控制系统