单片机制作的电压表程序_第1页
单片机制作的电压表程序_第2页
单片机制作的电压表程序_第3页
单片机制作的电压表程序_第4页
单片机制作的电压表程序_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机制作的电压表#include<reg52.h>

#include<intrins.h>

#defineucharunsignedchar

#defineuintunsignedint

sfrADC_CONTR=0xBC;//A/D转换功能允许寄存器

sfrADC_RES=0xBD;

//A/D转换结果寄存器

sfrADC_RESL=0xBE;//A/D转换结果寄存器低

sfrAUXR1=0xA2;//辅助寄存器1

sfrP1_ASF=0x9D;

//A/D转换控制寄存器

sbitADIO=P1^7;

//1.7口接测量电压

sbitU3_DS=P1^5;

sbitU3_STCP=P1^4;

sbitU3_SHCP=P1^3;sbitU4_DS=P1^2;

sbitU4_STCP=P1^1;

sbitU4_SHCP=P1^0;

ucharkey_val[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G'};

ucharcodekey_code[]={0x77,0x7B,0x7D,0x7E,0xB7,0xBB,0xBD,0xBE,0xD7,0xDB,0xDD,0xDE,0xE7,0xEB,0xED,0xEE};

ucharkey,count;

voiddelay(unsignedintn);

//74HC595

voidU3_595(unsignedcharnum)

{

unsignedcharcount1;

for(count1=0;count1<=7;count1++)

{

if((num&0x80)==0x80)//最高位为1,则向SDATA_595发送1

{

U3_DS=1;

}

else

{

U3_DS=0;

}

U3_SHCP=0;

U3_SHCP=1;

num<<=1;//左移

}

U3_STCP=0;

U3_STCP=1;

}

voidU4_595(unsignedcharnum)//发送指令到RS,RW,E(4,5,6位)

{

unsignedcharcount2;

for(count2=0;count2<=7;count2++)

{

if((num&0x80)==0x80)

{

U4_DS=1;

}

else

{

U4_DS=0;

}

U4_SHCP=0;

U4_SHCP=1;

num<<=1;

}

U4_STCP=0;

U4_STCP=1;

}

//LCD延时子程序n=1时延时1ms

voiddelay(unsignedintn)

{

unsignedchari;

for(;n>0;n--)

for(i=0;i<125;i++)

_nop_();

}

//写指令到LCD

voidwcmd(unsignedcharcmd)

{

U4_595(0x0F);

U3_595(cmd);

U4_595(0x4F);

U4_595(0x0F);

}

//写要显示的数据到LCD

voidwdat(unsignedchardat)

{

U4_595(0x1F);//低4位全为1屏蔽8段数码管

U3_595(dat);

U4_595(0x5F);

U4_595(0x1F);

}

//初始化LCD

voidinit()

{

wcmd(0x38);//设置8位总线双行显示,5*7点阵

delay(20);

wcmd(0x0C);//开显示,开光标,不闪烁

delay(20);

wcmd(0x06);//读写字符时地址加1

delay(20);

wcmd(0x01);//清屏

delay(20);

wcmd(0x82);

}

//键盘扫描子程序

ucharkeyscan(void)

{

unsignedcharhang,lie,keycode;

chari;

P0=0xf0;

hang=P0;

if((hang&0xf0)!=0xf0)

//有键按下?

{

delay(5);

//去抖动

hang=P0;

if((hang&0xf0)!=0xf0)

//有键按下

{

P0=0x0f;

lie=P0;

keycode=hang|lie;

//获得键码

for(i=15;i>=0;i--)

{

if(keycode==key_code[i])//查找键码

{

key=i;

return(key);

}

}

}

}

else

return(key);

}

voidkeydown()

//判断按键按下和显示程序{

P0=0xf0;

if((P0&0xf0)!=0xf0)

{

while(P0!=0xf0)

keyscan();

//获得键码

wcmd(0xCF);

//设置键值显示位置

wdat(key_val[16-key]);

}

}

voidADC_POWER_ON()//开ADC电源,第一次使用要打开内部模拟电源

{

ADC_CONTR=0x80;

delay(10);

}

voidSET_P1ASF(unsignedcharchannel)//设置模拟功能口

{

unsignedchari,final=0x01;

for(i=0;i<=channel;i++)

final<<=1;

P1_ASF=final;

}

voidSET_ADC_CHANNEL(unsignedcharchannel)//设置A/D转换通道

{

channel|=0xc0;

ADC_CONTR=channel;

delay(100);

}

floatGET_ADC_RESULT()

{

unsignedcharflag=0x10,temp=0x00;

ADC_RES=0x00;

ADC_RESL=0x00;

AUXR1=0x04;//设置10位AD

ADC_CONTR|=0x08;//启动A/D转换

_nop_();

_nop_();

_nop_();

_nop_();

do{temp=flag&ADC_CONTR;}while(temp==0x00);

ADC_CONTR=ADC_CONTR&0xc7;//清零ADC_FLAGADC_START位

return256*ADC_RES+ADC_RESL;

}

voidmain()

{

floatv;

unsignedtemp,temp1,temp2;

init();

ADC_POWER_ON();

while(1)

{

key=keyscan();

keydown();

if(16-key==1)

//量程5V

{

SET_P1ASF(6);

SET_ADC_CHANNEL(6);

v=GET_ADC_RESULT();

v=v*5/1024;

temp=v;

wcmd(0x82);delay(5000);

wdat(0x30+temp);

temp1=(v-temp)*10;

wdat(46);//小数点

wdat(0x30+temp1);

temp2=(v-temp)*100-temp1*10;

wdat(0x30+temp2);

wdat(86);//V

wdat(32);//空白

}

if(16-key==2)//量程5-20V

{

SET_P1ASF(6);

SET_ADC_CHANNEL(6);

v=GET_ADC_RESULT();

v=4*v*5/1024;

temp=v/10;

wcmd(0x82);delay(5000);

wdat(0x30+temp);

temp1=(int)v%10;

wdat(0x30+temp1);

wdat(46);//小数点

temp2=v*10;

wdat(0x30+temp2%10);

temp2=v*100;

wdat(0x30+temp2%10);

wdat(86);//V

}

if(16-key==3)//量程20-100V

{

SET_P1ASF(6);

SET_ADC_CHANNEL(6);

v=GET_ADC_RESULT();

v=19.8*5*v/1024;

temp=v/10;

wcmd(0x82);d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论