标题:
单片机数字电压表proteus仿真 ADC0809模数转换 液晶显示0~50V
[打印本页]
作者:
51黑ff
时间:
2016-9-4 21:00
标题:
单片机数字电压表proteus仿真 ADC0809模数转换 液晶显示0~50V
0.png
(13.64 KB, 下载次数: 65)
下载附件
2016-9-4 20:59 上传
基于单片机的数字电压表proteus仿真 ADC0809模数转换 液晶显示0~50V
程序如下:
#include<reg51.h>
#include<LCD1602.h>
#define uchar unsigned char
#define uint unsigned int
uint i,j,temp,temp1;
uint jj=0;
uint kk=0;
uint jjj=0;
uint kkk=0;
uint jjjj=0;
uint kkkk=0;
uint getdata,count,d;
sbit ST=P3^7;
sbit OE=P3^5;
sbit EOC=P3^6;
sbit CLK=P3^4;
sbit k1=P2^1;
sbit k2=P2^2;
sbit k3=P2^3;
char tt;
void Delay(uint n)
{
uint x;
while(n--)
{
x=5000;
while(x--);
}
}
void TimeInitial()
{
TMOD=0x10;
TH1=(65536-200)/256;
TL1=(65536-200)%256;
EA=1;
ET1=1;
TR1=1;
}
void disp_result(void)
{
LCD_set_position(2);
LCD_write_data(5*getdata/256+0x30);//各位数据显示
LCD_printc('.');//小数点
LCD_write_data(jj*10/256+0x30);//十分位显示
LCD_write_data(kk*10/256+0x30);//百分位显示
LCD_printc('v');//显示电压符号"v"
}
void disp_result1(void)
{
LCD_set_position(2);
if((15*getdata/256)<=10)
{
LCD_write_data(15*getdata/256+0x30);//各位数据显示
LCD_printc('.');//小数点
LCD_write_data(jjj*10/256+0x30);//十分位显示
LCD_write_data(kkk*10/256+0x30);//百分位显示
LCD_printc('v');//显示电压符号"v"
}
else
LCD_prints(" not ");
}
void disp_result2(void)
{
LCD_set_position(2);
LCD_write_data(5*getdata/256+0x30);//各位数据显示
LCD_write_data(jjjj*10/256+0x30);//十分位显示
LCD_printc('.');//小数点
LCD_write_data(kkkk*10/256+0x30);//百分位显示
LCD_printc('v');//显示电压符号"v"
}
void disp_result3(void)
{
LCD_set_position(2);
LCD_prints("0.00v");//显示电压符号"v"
}
void get(void)
{
ST=0;
OE=0;
ST=1;
Delay(1);
ST=0; //只需要启动一下,不需要一直保持
while(EOC==0);
OE=1;
Delay(1);
getdata=P1;
OE=0;
jj=5*getdata%256 ;
kk=10*jj%256 ;
jjj=15*getdata%256;
kkk=10*jjj%256;
jjjj=5*getdata%256;
kkkk=10*jjjj%256;
}
void main(void)
{
tt=0+0x30;
TimeInitial();
LCD_initial();
LCD_set_position(0);
LCD_printc('u');
LCD_printc('=');
//LCD_write_data(tt) ; //输出一个字节数据到LCD
LCD_set_position(8);
LCD_prints(" mofan ");
LCD_set_position(0x40);
LCD_prints(" luoyuanfeng");
while(1)
{
k1=1;
k2=1;
k3=1;
get();
if(k1==0)
disp_result2();
if(k2==0)
disp_result1();
if(k3==0)
disp_result();
if(k1&&k2&&k3==1)
disp_result3();
}
}
void t1() interrupt 3 using 0
{
TH1=(65536-200)/256;
TL1=(65536-200)%256;
CLK=~CLK;
}
复制代码
0.png
(70.85 KB, 下载次数: 78)
下载附件
2016-9-4 21:00 上传
全部资料下载(管理提醒:此程序是错误的 大家切勿下载):
项目.zip
(318.51 KB, 下载次数: 118)
2016-9-4 21:00 上传
点击文件名下载附件
下载积分: 黑币 -5
移步:
http://www.51hei.com/bbs/dpj-147212-1.html
作者:
1039629873
时间:
2016-11-30 18:12
是数码管?lcd就好
作者:
小小号
时间:
2017-5-8 19:28
先下载看看 多谢分享
作者:
123good
时间:
2017-5-17 19:05
借鉴学习了
作者:
小小号
时间:
2017-5-19 21:42
楼主 这个没缺0809模块吗,简直是牛头不对马嘴啊 大家不要下载
作者:
XIERUXIAN
时间:
2017-12-5 22:21
很好5555555555555
作者:
XIERUXIAN
时间:
2017-12-5 22:21
感谢分享,很不错
作者:
denminshen
时间:
2018-7-11 18:23
谢谢楼主,下载学习学习!
作者:
12345678..
时间:
2018-12-6 10:19
感谢分享
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1