标题:
基于51单片机电压测量程序
[打印本页]
作者:
chongwenlu
时间:
2017-3-27 20:35
标题:
基于51单片机电压测量程序
基于51单片机电压测量代码如下:
#include<reg52.h>
#include<intrins.h>// _nop()_函数头文件
sbit key = P3^3;
sbit start = P3^4;
sbit oe = P3^2;
sbit eoc = P3^1;
sbit c = P3^0;
sbit RS = P2^0; //定义端口
sbit RW = P2^1;
sbit E = P2^2;
//sbit clock = P3^7;
unsigned char da0,da1,da2,da3;
unsigned int temp;
unsigned char dat;
unsigned char sum;
unsigned d1;
unsigned char lcdd[]="0123456789";
unsigned char folat;
void lcd_w_cmd(unsigned char com);//写命令
void lcd_w_dat(unsigned char dat);//写数据
void display(unsigned char dat);//显示函数
unsigned char lcd_r_start();//读状态函数
void int1(); //初始化1602
void delay(unsigned char t);
void delay1();
void display1(unsigned char dat)
{
temp = dat*1000;
da0 = temp/51/1000;//个位;
da1 = temp/51/100%10;//十分位
d1 = temp/51/10;
da2 = d1%10;// 百分位
da3 = temp/51%10;// 千分位
lcd_w_cmd(0x0c);
delay(20);
lcd_w_cmd(0xc0);
delay(20);
delay(2);
lcd_w_dat('V');
lcd_w_dat('o');
lcd_w_dat('l');
lcd_w_dat('a');
lcd_w_dat('t');
lcd_w_dat('a');
lcd_w_dat('g');
lcd_w_dat('e');
lcd_w_dat(' ');
lcd_w_dat(lcdd[da0]); //
lcd_w_dat('.');
lcd_w_dat(lcdd[da1]);
lcd_w_dat(lcdd[da2]);
lcd_w_dat(lcdd[da3]);
lcd_w_dat('V');
}
/*-----------主函数---------*/
void main()
{
TCON = 0x04;
IE = 0x84;
c = 0;
int1();
sum = 0;
while(1)
{
for(folat = 0;folat<5;folat++)
{
start = 0;
start = 1;
start = 0;
do
{
_nop_();
}
while(eoc==0);
oe = 1;
dat = P1;
sum = sum+dat;
oe = 0;
}
dat = sum/5;
display1(dat);
sum=0;
}
}
void key_scan() interrupt 2//外部中断1
{
if(key==0)
{
delay(10);
if(key==0)
{
c = ~c;
start = 0;
start = 1;
start = 0;
folat = 0;
sum = 0;
}
}
}
void delay(unsigned char t)//延时函数
{
unsigned char j,i;
for(i = 0;i<t;i++)
for(j = 0;j<20;j++);
}
void delay1()
{
_nop_();
_nop_();
_nop_();
}
void int1()
{
lcd_w_cmd(0x3c); //设置工作方式
lcd_w_cmd(0x0c); //设置光标
lcd_w_cmd(0x01); //清屏
lcd_w_cmd(0x06); //设置输入方式
lcd_w_cmd(0x80); //设置初始化显示设置
}
/*-----lcd读状态函数----*/
unsigned char lcd_r_start()
{
unsigned char s;
RW=1;
delay1();
RS=0;
delay1();
E=1;
delay1();
s=P0;
delay1();
E=0;
delay1();
RW=0;
delay1();
return(s);
}
/*LCD
写命令函数
*/
void lcd_w_cmd(unsigned char com)
{
unsigned char i;
do
{
i=lcd_r_start();
i=i&0x80;
delay(2);
}
while(i!=0);
RW=0;
delay1();
RS=0;
delay1();
E=1;
delay1();
P0=com;
delay1();
E=0;
delay1();
RW=1;
delay(255);;
}
void lcd_w_dat(unsigned char dat)
{
unsigned char i;
do
{
i=lcd_r_start(); //
i=i&0x80;
delay(2);
}
while(i!=0); // LCD
RW=0;
delay1();
RS=1;
delay1();
E=1;
delay1();
P0=dat;
delay1();
E=0;
delay1();
RW=1;
delay(255);
}
复制代码
0.png
(44.75 KB, 下载次数: 54)
下载附件
2017-3-28 02:06 上传
下载:
电压表.rar
(31.76 KB, 下载次数: 55)
2017-3-27 20:34 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
DPJ-AVR
时间:
2017-8-3 18:07
正在做用单片机的电压测量,表示不会
作者:
风之墨羽
时间:
2018-7-23 12:31
各个接口怎么接,可以说一下吗
谢谢~
作者:
gugang88
时间:
2018-10-8 22:59
GZ-T200电阻电压测量仪,淘宝网上有哦,液晶显示呢;
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1