电压表主程序模块_电路实物图电压表

2020-02-28 其他范文 下载本文

电压表主程序模块由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“电路实物图电压表”。

/**电压表主程序模块*/

#include

#define uchar unsigned char #define uint unsigned int void result(uchar);uchar value=0;#include“adc0809.h” #include“lcd1602.h” uchar str[5];uchar volt[7];

uchar a=0+0x30;uchar str1[11]=“tanxiaopin”;sbit CLK=P0^7;uint n;

void main(){

//uint i;ADC0809_init();lcd_init();while(1){

lcd_zifu(str1,0x01);

value=AD();//原值

str[0]=value/100+0x30;

str[1]=value%100/10+0x30;

str[2]=value%10+0x30;

result(value);

lcd_data(str,0x40);

lcd_data(volt,0x46);

} while(1);}

void result(uchar v)//转换成电压值 { float a;a=(v/255.0)*500.0;volt[0]=((int)a)/100+0x30;volt[1]='.';volt[2]=((int)a)%100/10+0x30;volt[3]=((int)a)%10+0x30;volt[4]=' ';volt[5]='V';} void t1(void)interrupt 3

{

CLK=~CLK;

}

/*ADC0809程序模块*/

#include #define uchar unsigned char #define uint unsigned int

sbit ST=P0^4;sbit EOC=P0^5;sbit OE=P0^6;//sbit CLK=P0^7;sbit ADDA=P0^0;sbit ADDB=P0^1;sbit ADDC=P0^2;

sbit ALE=P0^3;

uchar v;//保存IN0和经AD转换后的数据 /*非精确演示函数*/ void delay(ms){ uint i,j;

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

for(j=125;j>0;j--);}

void ADC0809_init(){ TMOD=0x20;TH1=(255-250);TL1=(255-250);EA=1;//开总中断

ET1=1;//开定时器1中断

TR1=1;//启动定时器1

ST=0;

OE=0;ALE=0;} /*用中断做一个500K HZ的时钟信号*/

/******AD转换函数*******/ uchar AD(){ uchar temp=0;ST=0;//EOC=1;// ALE=1;ADDA=0;ADDB=0;ADDC=0;

delay(1);// ALE=0;

//OE=0;

ST=0;

ALE=1;

ST=1;

ALE=0;

ST=0;

delay(2);

while(EOC==0);

OE=1;

temp=P2;

delay(2);

OE=0;

return temp;}

/*ADC0809 模块封装头文件*/ void ADC0809_init();uchar AD();

/*LCD1602液晶显示模块*/ #include #include #define uchar unsigned char #define uint unsigned int sbit rs=P1^5;sbit rw=P1^6;sbit en=P1^7;void lcd_1602(uchar comm);void lcd_write(uchar dat);bit lcd_busy();extern void delay(uint);

void lcd_1602(uchar comm);void lcd_write(uchar dat);

bit lcd_busy();sbit busy=P3^7;extern void delay(uint);

/***************************** 1602液晶写命令函数 参数: 返回值:无

******************************/ void lcd_1602(uchar comm){ while(lcd_busy());//查忙

rs = 0;rw = 0;en = 0;

_nop_();P3 = comm;_nop_();en = 1;_nop_();_nop_();en = 0;} /***************************** 1602液晶写数据函数 参数: 返回值:无

******************************/ void lcd_write(uchar dat){ while(lcd_busy());//查忙

rs = 1;

rw = 0;

en = 0;

_nop_();

P3 = dat;

_nop_();

_nop_();

en = 1;

_nop_();

_nop_();

en = 0;}

/***************************** 1602液晶初始化函数 参数:无 返回值:无

******************************/ void lcd_init(){

delay(15);lcd_1602(0x38);delay(3);lcd_1602(0x38);

delay(3);lcd_1602(0x38);delay(3);lcd_1602(0x08);lcd_1602(0x01);delay(3);lcd_1602(0x06);lcd_1602(0x0c);} /***************************** 1602液晶读忙标志 参数:无 返回值:无

******************************/ bit lcd_busy(){

bit result;rs = 0;rw = 1;en = 1;delay(2);result = busy;en = 0;return result;}

/***************************** 1602液晶写字符 参数: 返回值:无

******************************/ void lcd_zifu(uchar *p,uchar wei){ uchar temp;lcd_1602(0x80+wei);/*temp= *p;while(temp!=''){

lcd_write(temp);

p++;

temp=*p;}*/ for(temp=*p;temp!='';p++,temp=*p)

lcd_write(temp);

delay(10);}

void lcd_data(uchar *p,uchar wei){ uchar temp;lcd_1602(0x80+wei);for(temp=*p;temp!='';p++,temp=*p)

lcd_write(temp);delay(10);} /*LCD1602液晶模块封装*/ void lcd_init();void lcd_zifu(uchar *p,uchar wei);void lcd_data(uchar *p,uchar wei);

《电压表主程序模块.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
电压表主程序模块
点击下载文档
相关专题 电路实物图电压表 电压表 主程序 模块 电路实物图电压表 电压表 主程序 模块
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文