简易自动电阻测试仪程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#define uchar unsigned char uchar table[]={ 0x00,0x04,0x0A,0x11,0x11,0x0A,0x1B,0x3B, }; uchar table1[]="THE RES IS: "; sbit CS=P1^5; sbit Clk=P1^6; sbit DI=P1^7; sbit DO=P1^7; sbit rs=P2^0; sbit en=P2^1; sbit j1=P2^7; sbit j2=P2^6; sbit j3=P2^5;
sbit beep=P1^4;
XTAL2
18
XTAL1
19
ALE 30EA
31
PSEN 29RST
9
P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD7
32
P1.0/T21P1.1/T2EX 2P1.23P1.34P1.45P1.56P1.67P1.7
8
P3.0/RXD 10P3.1/TXD 11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD
17
P3.6/WR 16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1
PROGRAM=bs.hex
X1
CRYSTAL
C1
22pF
C2
22pF
R4
4.7k
CS
1
CH02CH13GND 4VCC 8
CLK 7DI 5DO 6U3
ADC0832
D 7
14
D 613D 512D 411D 310D 29D 18D 07
E 6
R W 5R S 4V S S 1V D D 2V E E
3
LCD1
LM016L
RL2
G2RL-1AB-DC5
R6
3.3k
Q1
MPS8098
R3
200
RL1
G2RL-1AB-DC5
R7
3.3k
Q2
MPS8098
R8
10k
RL3
G2RL-1AB-DC5
Q3
MPS
R10
500k
RV1
3000
D1
LED-BLUE
BUZ1
BUZZER
R11
2.5k
Q4
MPS8098
D2
1N4148
D3
1N4148
RX
6666666
RV2
10k
sbit led=P2^3;
void delay(int x)
{ int j;
for(;x>0;x--)
for(j=20;j>0;j--) ;
}
uchar ADC0832(uchar CH)
{
uchar i,dis0,dis1,date;
Clk=0; //拉低时钟
DI=1; //初始化
delay(1);
CS=0; //芯片选定
delay(1);
Clk=1; //拉高时钟
delay(1);
if(CH==0) //通道选择
{
Clk=0; //第一次拉低时钟
DI=1; //通道0的第一位
delay(1);
Clk=1; //拉高时钟
delay(1);
Clk=0; //第二次拉低时钟,ADC0832 DI接受数据 DI=0; //通道0的第二位
delay(1);
Clk=1;
delay(1);
}
else
{
Clk=0;
DI=1; //通道1的第一位
delay(1);
Clk=1;
delay(1);
Clk=0;
DI=1; //通道1的第二位
delay(1);
Clk=1;
delay(1);
}
Clk=0; //第三次拉低时钟,此前DI两次赋值决定通道 DI=1; //DI开始失效,拉高电平,便于DO数据传输
for(i= 0;i<8;i++) //读取前8位的值
{
delay(1);
dis0<<= 1;
Clk=1;
delay(1);
Clk=0;
if (DO)
dis0|=0x01;
else
dis0|=0x00;
}
for (i=0;i<8;i++) //读取后8位的值
{
dis1>>= 1;
if (DO)
dis1|= 0x80;
else
dis1|= 0x00;
delay(1);
Clk=1;
delay(1);
Clk=0;
}
if(dis0==dis1) //两次结束数据比较,若相等
date=dis0; //则赋值给dat
delay(1);