標(biāo)題:
ADC0832+51單片機(jī)的AD數(shù)模轉(zhuǎn)換Proteus仿真程序
[打印本頁]
作者:
天涼
時間:
2019-12-6 21:18
標(biāo)題:
ADC0832+51單片機(jī)的AD數(shù)模轉(zhuǎn)換Proteus仿真程序
該設(shè)計為5V的直流數(shù)字電壓表設(shè)計
AD.png
(125.65 KB, 下載次數(shù): 71)
下載附件
2019-12-6 21:14 上傳
以下是源程序:
#include<reg51.h>
#include<intrins.h>
sbit CS=P3^4;
sbit CLK=P1^0;
sbit DI0=P1^1;
unsigned char code digit[10]={"0123456789"};
unsigned char code Str[]={"Volt="};
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit BF=P0^7;
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
void delaynms(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
delay1ms();
}
bit BusyTest(void)
{
bit result;
RS=0;
RW=1;
E=1;
_nop_();
_nop_();
_nop_();
_nop_();
result=BF;
E=0;
return result;
}
void WriteInstruction(unsigned char dictate)
{
while(BusyTest()==1);
RS=0;
RW=0;
E=0;
_nop_();
_nop_();
P0=dictate;
_nop_();
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
_nop_();
_nop_();
E=0;
}
void WriteAddress(unsigned char x)
{
WriteInstruction(x|0x80);
}
void WriteData(unsigned char y)
{
while(BusyTest()==1);
RS=1;
RW=0;
E=0;
P0=y;
_nop_();
_nop_();
_nop_();
_nop_();
E=1;
_nop_();
_nop_();
_nop_();
_nop_();
E=0;
}
void LcdInitiate(void)
{
delaynms(15);
WriteInstruction(0x38);
delaynms(5);
WriteInstruction(0x38);
delaynms(5);
WriteInstruction(0x38);
delaynms(5);
WriteInstruction(0x0c);
delaynms(5);
WriteInstruction(0x06);
delaynms(5);
WriteInstruction(0x01);
delaynms(5);
}
void display_volt(void)
{
unsigned char i;
WriteAddress(0x03);
i=0;
while(Str[i]!='\0')
{
WriteData(Str[i]);
i++;
}
}
void display_dot(void)
{
WriteAddress(0x09);
WriteData('.');
}
void display_V(void)
{
WriteAddress(0x0c);
WriteData('V');
}
void display1(unsigned char x)
{
WriteAddress(0x08);
WriteData(digit[x]);
}
void display2(unsigned char x)
{
unsigned char i,j;
i=x/10;
j=x%10;
WriteAddress(0x0a);
WriteData(digit[i]);
WriteData(digit[j]);
}
unsigned char A_D()
{
unsigned char i,dat;
CS=1;
CLK=0;
CS=0;
DI0=1;
CLK=1;
CLK=0;
DI0=1;
CLK=1;
CLK=0;
DI0=0;
CLK=1;
CLK=0;
DI0=1;
CLK=1;
for(i=0;i<8;i++)
{
CLK=1;
CLK=0;
dat<<=1;
dat|=(unsigned char)DI0;
}
CS=1;
return dat;
}
main(void)
{
unsigned int AD_val;
unsigned char Int,Dec;
LcdInitiate();
delaynms(5);
display_volt();
display_dot();
display_V();
while(1)
{
AD_val=A_D();
Int=(AD_val)/51;
Dec=(AD_val%51)*100/51;
display1(Int);
display2(Dec);
delaynms(250);
}
}
復(fù)制代碼
全部資料51hei下載地址:
AD數(shù)模轉(zhuǎn)換.zip
(32.94 KB, 下載次數(shù): 177)
2019-12-6 21:17 上傳
點(diǎn)擊文件名下載附件
仿真圖,源程序,HEX文件
下載積分: 黑幣 -5
作者:
sxr2912719
時間:
2020-5-31 19:52
學(xué)習(xí)一下 ,非常感謝
作者:
sxr2912719
時間:
2020-5-31 19:53
正好需要,51黑很強(qiáng)大
作者:
哼唧唧52
時間:
2020-11-27 10:30
太厲害了,對我學(xué)習(xí)很有幫助
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1