多语言展示
当前在线:1555今日阅读:60今日分享:41

单片机www.jd666999.com13578119877单片机805TL

uint Timer_Pro_Flag=0;//0为显示处理,1为时序采集处理 sbit TEST_CAP_VOL_CRLT=P1^0;//用于控制外部继电器 sbit PWM_Pin=P3^7;//PWM输出 sbit IrDA_in_Pin=P1^0;//红外脉冲输入检测脚
工具/原料
1

LinkedIn #i nclude #i nclude #i nclude 'iic.h' #define uchar unsigned char #define uint unsigned int bit PWMFlag=0; uchar OLD_TH0,OLD_TL0; #define MAXCMD_LENGTH 7

2

#define AD_VOL_PER 1.04058 //正常采集时的电压校准值 #define AD_Loop_PickVol_PER 1.04058 //CD4051循环采集时的电压校准值 sbit WDTRST=0xA6;//At89S5x看门狗寄存器 sbit ADCLK=P2^0; sbit ADOUT=P2^1; sbit ADCS=P2^2

方法/步骤
1

; //-------------------------- /************CD4051---8选1模拟开关芯片*****************/ /* |------------------------------------------------------| | 4 2 1 | |-----------------------------------------------|------| |端口 | INH C B A | | | |------ 7 6 5 4 3 2 1 0 | 正值 | 取反 | | 通道 |--------------------------------|-------|------| |------|...............|8 4 2 1 | | | |------|---------------|----------------|-------|------| | 0 |0 0 0 0 0 0 0 0 | 0x00 | 0xff | | 1 |0 0 0 0 0 0 1 0 | 0x02 | 0xf7 | | 2 |0 0 0 0 0 1 0 0 | 0x04 | 0xfb | | 3 |0 0 0 0 0 1 1 0 | 0x06 | 0xf3 | | 4 |0 0 0 0 1 0 0 0 | 0x08 | 0xfd | | 5 |0 0 0 0 1 0 1 0 | 0x0A | 0xf8 | | 6 |0 0 0 0 1 1 0 0 | 0x0C | 0xf9 | | 7 |0 0 0 0 1 1 1 0 | 0x0e | 0xf1 | |---------------------------------------|-------|------|

2

*/ uchar CD4051_NUM[]={0x00,0x02,0x04,0x06,0x08,0x0A,0x0C,0x0e}; //0~7编码 sbit CD4051_A=P1^1; sbit CD4051_B=P1^2; sbit CD4051_C=P1^3; sbit CD4051_INH=P1^4; //CD4051_INH为1时,,所有通导都不导通 bit CD4051_Vol_Conver_Flag=0; //0时为正常采集,1为CD4051循环采集 //-------------------------- //LED显示 //-------------------------- uchar LedCount=0; uchar LED_BIT[5]; //用于显示的每一位数据码的内容 uchar LED_NUM[]={0x00,0x10,0x20,0x40,0x80};//选择显示位 //--------------------------------------------------------

3

void SendByte(unsigned char word) { TI=0; SBUF=word; while(TI==0); TI=0; } uchar ComBuf[MAXCMD_LENGTH];//用于保存串口的数据 /*---少量延时---*/ void delay(uint t) { uint i=0; for(;i<=t;i++); } void Pluckdelay(uint t) { uint i=0,j; for(;i<=t;i++) for(j=1;j<=1000;j++); } /*================================= ComBuf[5]加入CheckSUM校验码 算法:0x01+not(字节1+字节2+...+字节N) =================================*/

注意事项
1

void SetCheckSUM() { ComBuf[5]=0x01+~(ComBuf[0]+ComBuf[1]+ComBuf[2]+ComBuf[3]+ComBuf[4]); }

2

bit ISCheckSUM() { uchar crc; crc=0x01+~(ComBuf[0]+ComBuf[1]+ComBuf[2]+ComBuf[3]+ComBuf[4]); if(ComBuf[5]==crc) return 1; else { ComBuf[1]=crc;//如果错误,则返回计算后得到的CHECKSUM校验码 ComBuf[2]=ComBuf[5];//返回原来上位机发送来的CHECKSUM校验码 return 0; } }

推荐信息