电缆快速检测系统软件设计
来源:互联网 发布:windows 小键盘取消 编辑:程序博客网 时间:2024/05/01 08:35
/**********************************************************************基于51单片机的电缆通短断快速检测系统程序*********************************************************************/#include "reg51.h" //文件包含8051内部资源的定义 #define uchar unsigned char //定义无符号字符#define uint unsigned int //定义无符号整数sbit P3_5=P3^5; //变量P3_5表示引脚P3.5sbit P3_6=P3^6;//变量P3_6表示引脚P3.6sbit P3_7=P3^7;//变量P3_7表示引脚P3.7uchar LED_number[8]={0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x7,0x7F};void Init_C51(); //声明初始化函数void Delay_ms(uint); //声明延时函数uchar Key(); //声明按键控制函数void LED_Display(int); //声明数码显示函数int Count_1(uchar); //声明信号处理函数/***************************主函数**************************/void main() { int i=0; int N=8; //定义待检电缆初芯数 bit Up_N=0; //定义电缆芯数增加键 bit Down_N=0; //定义电缆芯数减少键 bit Start=0; //定义电缆测试开始键 uchar key_value=0xEF; //定义按键返回值变量 Init_C51(); //单片机I/O 口初始化 //**********进入按键控制程序********************** for(;;) //Start=1时 跳出循环 { LED_Display(N); //调用数码显示函数 for(;;) //有键按下时跳出循环 { key_value=Key(); //调用按键控制函数 switch(key_value) { case 0xFB: { Up_N=1; //P3.2=0,电缆芯数增加 break; } case 0xF7: { Down_N=1; //P3.3=0,电缆芯数减少 break; } case 0xEF: { Start=1;//P3.4=0,电缆测试开始 break; } } } if(Up_N) //芯数增加? { N++; if(N>8) N=1; } if(Down_N) //芯数减少? { N--; if(N<1) N=8; } if(Start) //开始测试? { break; } } //*******************开始测试程序****************** P0=0x01; //P0口向电缆输入信号 for(;i<N;i++) { int Num_1=1; //采集信号中高电平的初始个数 uchar Receiver; Delay_ms(10); //延时,避免采集错误信号 Receiver=P2; //P2口从电缆输出端采集信号 Num_1=Count_1(Receiver); //调用信号处理函数计算采集的高电平数 if(Num_1==0)//电缆第i+1芯发生断路 { P3_7=1; //点亮断路指示灯并出循环 break; } else if(Num_1==1); //电缆第i+1芯正常通路 else //电缆第i+1芯发生短路 { P3_6=1; //点亮短路指示灯并出循环 break; } P0<<=1; //P0左移一位,检测下一芯 } if(i==N) P3_5=1; //电缆正常,点亮通路指示灯}/***********************初始化函数*************************************函数名称:void Init_C51()函数功能:实现单片机I/O的初始化输入参数:无输出参数:无 ***********************************************************************/void Init_C51(){ P0=0x00; P1=0xFF; P2=0x00; P3_5=0; P3_6=0; P3_7=0;}/***********************按键控制函数***********************************函数名称:uchar Key()函数功能:实现电缆芯数的选择和测试开始 输入参数:无 输出参数:KeyV***********************************************************************/ uchar Key(){ uchar KeyV; uchar temp; P3=P3|0xE3; //三个按键所在位置 KeyV=P3; //KeyV=P3=111***11B if(KeyV|0xE3==0xFF) //无键按下 return(0); Delay_ms(10); //延时去键抖 KeyV=P3; //KeyV=P3=111***11B if(KeyV|0xE3==0xFF) //无键按下 return(0); else { for(;;) { temp=P3; if(temp|0xE3==0xFF) break; } return(KeyV); }}/***********************数码显示函数***********************************函数名称:void LED_Display(int n)函数功能:实现数字n的七段数码显示 输入参数:输入参数范围1~8;输出参数:无 ***********************************************************************/void LED_Display(int n){ P1=LED_number[n-1]; //显示相应数码 }/***********************信号处理函数**********************函数名称:int Count_1(uchar x)函数功能:计算整数二进制数中“1”的个数 输入参数:输入参数范围0x00~0xFF;输出参数:无 ***********************************************************************/int Count_1(uchar x){ int num=0;while(x){ x=x&(x-1); num++;}return(num);}/***********************延时函数***************************************函数名称:void Delay_ms(uint delay_time)函数功能:实现输入多少ms的延时 输入参数:输入参数范围0~6553;输出参数:无 ***********************************************************************/ void Delay_ms(uint delay_time) { uint d_cnt; for(;delay_time>0;delay_time--) for(d_cnt=0;d_cnt<255;d_cnt++) {;}}
0 0
- 电缆快速检测系统软件设计
- 电缆快速检测系统硬件设计
- 嵌入式系统软件设计模式
- 嵌入式系统软件架构设计
- 射频电缆PCB设计注意
- 心音与心电信号分析之一--6.26--心音信号检测系统软件设计
- 电缆检测项目--实时状态总结
- 电缆
- 嵌入式系统软件架构设计概论
- 用UML设计嵌入式系统软件
- 用C++设计嵌入式系统软件
- 系统软件
- 系统软件
- 系统软件
- 如何使用数字万用表检测电缆电线的断点
- ARM嵌入式系统软件实时时钟的设计
- 基于构件的嵌入式系统软件设计
- 嵌入式系统软件中的自动化工具设计
- Linux 查找指定名称的进程并显示进程详细信息
- 输出字符串的全部组合方式
- android 在activity之外弹出对话框
- Oracle表空间(tablespaces)详解
- 移动端适配不同设备(缩放效果)
- 电缆快速检测系统软件设计
- SpringFramework中SqlMapClientTemplate的使用
- 鸡兔同笼
- Does GATHER_STATS_JOB gather all objects’ stats every time?
- webView设置访问文件框架整理
- ThinkPHP3.2中引入JS,CSS文件路径配置
- LeetCode刷到100题了
- iOS开发笔记--导致EXC_BAD_ACCESS问题的原因
- Nginx日记