|
本帖最后由 hanzhistar 于 2012-8-23 17:45 编辑
这张关注的是电压测量
1.可以从网上买测压表
2.把数码管拆了。连上51的线路。用51测量电压表数码管的线路原理的51键盘的方法没什么区别。控制B是否断开A可以让51通电就开启
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char code opt_code[]={
0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,
0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77 };
unsigned char code led_code[]={
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf
/**********************************************************
数码管的扫描子函数
**********************************************************/
uchar ledscan()
{
uchar scan1,scan2,keycode,j;
P1=0xf0;
scan1=P1;
if((scan1&0xf0)!=0xf0) //判键是否按下
{
delayms(30); //延时30ms
scan1=P1;
if((scan1&0xf0)!=0xf0) //二次判键是否按下
{
P1=0x0f;
scan2=P1;
ledcode=scan1|scan2; //组合成键编码
for(j=0;j<=15;j++)
{
if(ledcode== led_code[j]) //查表得键值
{
key=j;
return(key);
}
}
}
}
else P1=0xff;
return (16);
}
/**********************************************************
判键led是否是以下子函数 这一部分由于时间关系过两天改大意就是if =led code 断路B ,else就不断开
**********************************************************/
void powerB()
{
if( opt_code[]= ledcode[])
{
P2=1
}
else{
P2=0//如果不是继电器B通路
}
}
/**********************************************************
主函数
**********************************************************/
main()
{
while(1)
{
P0 =1;//控制继电器A为51通电连通
powerB();
}
}
|
|