-
大小: 194KB文件类型: .zip金币: 1下载: 0 次发布日期: 2021-06-05
- 语言: 其他
- 标签: ADC08321602
资源简介
51单片机ADC0832_1602 proteus仿真源程序加原理图。
测试通过过,包括C源程序,protues文件,可以真接仿真。
使用keil+proteus 7.8测试通过。
代码片段和文件信息
/*
51单片机 1602+ADC0832显示程序用proteus 7.8仿真通过。
*/
#include
#include
#include
#include
char data str[]=“ “;
/**********************************/
/**********LCD1602接口程序**********/
#define DD P2
sbit Rs=P3^0;
sbit Rw=P3^1;
sbit E=P3^2;
/********************************/
void delay_1ms(unsigned char i) //最小延时1ms
{
unsigned char j;
while(i--)
for(j=0;j<125; j++);
}
void delay_10us(unsigned char i) //最小延时10us
{
unsigned char j;
while(i--)
for(j=0;j<10; j++);
}
void write_com(unsigned char com) //写指令
{
delay_10us(5);
E=0;
Rs=0;
Rw=0;
DD=com;
delay_10us(50); //>40us
E=1;
delay_1ms(2); //>150us
E=0;
delay_10us(4); //>25+10us
}
void write_data(unsigned char DATA) //写数据
{
delay_10us(50);
E=0;
Rs=1;
Rw=0;
DD=DATA;
delay_10us(50);
E=1;
delay_10us(50);
E=0;
delay_10us(4);
}
void addr_x_y(unsigned char xbit y) //写坐标,定位置
{
unsigned char temp=0x80; //默认最高位:D7为1 即以0x80开始。
if(y) //y :0为第一行 1为第二行
{
temp|=0x40;
}
temp|=x;
write_com(temp);
}
void Show_Char(unsigned char xbit yunsigned char p)
//在指定位置显示一个字符。
{
addr_x_y(xy);
write_data(p);
}
void Show_String(unsigned char xbit ychar *ptr)
{
unsigned char i;
for (i=0;i<16;i++)
Show_Char(x++y*(ptr+i));//循环显示16个字符
}
void init(void) //1602初始化代码
{
delay_1ms(1500);
write_com(0x38);
delay_1ms(5);
write_com(0x38);
delay_1ms(5);
write_com(0x38);
delay_1ms(5);
write_com(0x38);
write_com(0x08);
write_com(0x06);
write_com(0x0c);
write_com(0x01);
}
void xs_int(unsigned int shujubit t) //数据显示
{
unsigned char huancun[6]={0};
unsigned char biaozhi=0i;
if (shuju < 10) biaozhi = 1;
else if(shuju < 100) biaozhi = 2;
else if(shuju < 1000) biaozhi = 3;
else if(shuju < 10000) biaozhi = 4;
else if(shuju < 65535) biaozhi = 5;
switch(biaozhi) //这里没有break因此从标识匹配的入口直接执行到最后,完成整数各位的提取到数组。
{
case 5:huancun[5] = shuju/10000;
case 4:huancun[3] = shuju%10000/1000;
case 3:huancun[2] = shuju%1000/100;
case 2:huancun[1] = shuju%100/10;
case 1:huancun[0] = shuju%10; break;
default:break;
}
for(i=0;i<6;i++)
{
if(i==1)Show_Char(i1‘.‘); //加入小数点,缩小了10000倍,因此AD采样后的值需要乘上10000*5V/256=196(V)
else Show_Char(it0x30+huancun[6-i-1]);
}
Show_Char(6t‘V‘);
}
/************************************************************/
/**********ADC0832接口程序************************************/
sbit ADC_CS =P3^4;
sbit ADC_CLK=P3^5;
sbit ADC_DO =P3^6;
sbit ADC_DI =P3^7;
/*******************************************************************/
void Delay(unsigned char j)
{
unsigned char i;
for(i=0;i }
unsigned char ADC0832(void) //把模拟电压值转换成8位二进制数并返回
{
unsigned char idata_c;
data_c=0;
ADC_CS=0;
ADC_CLK=1;
ADC_DO=0;//片选,DO为高阻态
//ADC_
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 245190 2013-10-15 17:45 51_ADC0832_1602.JPG
目录 0 2013-10-15 17:46 ADC0832\
文件 13193 2013-10-15 17:42 ADC0832\ADC0832
文件 8365 2013-10-15 17:42 ADC0832\ADC0832.LST
文件 19013 2013-10-15 17:42 ADC0832\ADC0832.M51
文件 13481 2013-10-15 17:42 ADC0832\ADC0832.OBJ
文件 1659 2010-06-16 23:03 ADC0832\ADC0832.Uv2.bak
文件 4340 2013-10-15 17:42 ADC0832\ADC0832.c
文件 6694 2013-10-15 17:42 ADC0832\ADC0832.hex
文件 31 2013-10-15 17:42 ADC0832\ADC0832.lnp
文件 1116 2010-06-16 23:03 ADC0832\ADC0832.opt.bak
文件 6505 2013-10-15 17:45 ADC0832\ADC0832.plg
文件 73318 2013-10-15 17:45 ADC0832\ADC0832.uvopt
文件 13188 2013-10-15 15:05 ADC0832\ADC0832.uvproj
文件 960 2010-06-16 22:25 ADC0832\ADC0832_Opt.Bak
文件 1659 2010-06-16 22:25 ADC0832\ADC0832_Uv2.Bak
文件 73318 2013-10-15 17:40 ADC0832\ADC0832_uvopt.bak
文件 13188 2013-10-15 14:21 ADC0832\ADC0832_uvproj.bak
文件 2246 2010-06-16 20:11 ADC0832\LED.h
文件 119330 2013-10-15 17:43 ADC0832_1602.DSN
评论
共有 条评论