标题:
基于C51单片机和ADC0804显示电压以及0-255数值(仿真加程序)
[打印本页]
作者:
qingqingyixiao
时间:
2018-9-18 16:10
标题:
基于C51单片机和ADC0804显示电压以及0-255数值(仿真加程序)
0.png
(14.29 KB, 下载次数: 84)
下载附件
2018-9-18 18:13 上传
0.png
(49.11 KB, 下载次数: 84)
下载附件
2018-9-18 18:13 上传
单片机源程序如下:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table1[]="0123456789";
uchar table2[]="Vo:0.00V;Nu:000";
uchar table3[]="made by Xfei";
uchar num,x,adval,wen,dy,date;
sbit lcden=P3^2; //使能
sbit lcdrs=P3^0; //数据/指令
sbit lcdrw=P3^1; //读/写
sbit lcds1=P3^3;
sbit lcds2=P3^4 ;
sbit adwr=P3^6; //写信号输入端
sbit adrd=P3^7; //读信号输入端
sbit adcs=P3^5; //片选信号
//延时ms//
void delay(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<110;j++);
}
//MCU写指令//
void write_com(uchar com)
{
lcdrs=0;
P2=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
//MCU写数据//
void write_date(uchar date)
{
lcdrs=1;
P2=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
//初始化//
void init()
{
adcs=0;
lcdrw=0;
lcden=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
/*
while(table3[num]!='\0')
{
write_date(table3[num++]);
delay(100);
}
lcden=1;
delay(1000);
lcden=0;
write_com(0x80+0x40);
num=0;//很重要!
while(table2[num]!='\0')
{
write_date(table2[num++]);
} */
}
/*小改嘻嘻*/
//显示第一行//
void disp1()
{
uchar i;
write_com(0x80+0x00);
for (i=0;i<12;i++)
{
write_date(table3[i]);
delay(100);
}
}
//显示第二行//
void disp2()
{
uchar i;
write_com(0x80+0x40);
for (i=0;i<12;i++)
{
write_date(table2[i]);
delay(100);
}
}
void set_shu1(uchar add,uchar date)
{
uchar bai,shi,ge;
bai=date/51;
shi=((date%51)*10/51);
ge=((date%51)*10%51)*10/51;
write_com(0x80+0x40+add); //地址
{
write_date(table1[bai]); //百位数值
}
write_com(0x80+0x40+add+2); //地址右移二位
{
write_date(table1[shi]); //十位数值
}
write_com(0x80+0x40+add+3); //地址右移三位
{
write_date(table1[ge]) ; //个位数值 //将值转换成具体数
}
}
void set_shu2(uchar add,uchar date)
{
uchar bai,shi,ge;
bai=date/100;
shi=date%100/10;
ge=date%10;
write_com(0x80+0x40+add);
{
write_date(table1[bai]);
}
write_com(0x80+0x40+add+1);
{
write_date(table1[shi]);
}
write_com(0x80+0x40+add+2);
{
write_date(table1[ge]) ;
} //将电压值转换为0~225的值*/
}
void st_ad() //开AD
{
adwr=1;
_nop_();
adwr=0;
_nop_();
adwr=1;
}
void red_ad()//读AD
{
adrd=1;
_nop_();
adrd=0;
_nop_();
adrd=0;
}
void main()
{
init();
disp1();
disp2();
while(1)
{
write_com(0x80+0x40+7);
st_ad();
set_shu1(3,adval);
set_shu2(12,adval);
red_ad();
adval=P1; //P1的值送给date
// dy=adval/255;
// P2=wen;
}
//while(1);
}
复制代码
所有资料51hei提供下载:
ADC0804显示电压.rar
(61.54 KB, 下载次数: 69)
2018-9-18 16:08 上传
点击文件名下载附件
仿真和·源程序
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1