标题:
51单片机ADC0832模数转换与显示实例
[打印本页]
作者:
ziba108
时间:
2018-6-8 11:50
标题:
51单片机ADC0832模数转换与显示实例
##ADC0832
模数转换与显示
##
1602液晶显示的ADC0832模数转换的电路原理图如下:
0832.jpg
(80.19 KB, 下载次数: 93)
下载附件
2018-6-8 11:48 上传
单片机源程序如下:
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define delay4us() {_nop_();_nop_();_nop_();_nop_();}
sbit RS = P2^0;
sbit RW = P2^1;
sbit E = P2^2;
sbit CS = P1^0;
sbit CLK = P1^1;
sbit DIO = P1^2;
uchar Display_Buffer[] = "0.00V";
uchar code Line1[] = "Current Voltage:";
void DelayMS(uint ms) {
uchar i;
while(ms--) {
for(i=0;i<120;i++);
}
}
bit LCD_Busy_Check() {
bit result;
RS = 0;
RW = 1;
E = 1;
delay4us();
result = (bit)(P0&0x80);
E = 0;
return result;
}
void LCD_Write_Command(uchar cmd) {
while(LCD_Busy_Check());
RS = 0;
RW = 0;
E = 0;
_nop_();
_nop_();
P0 = cmd;
delay4us();
E = 1;
delay4us();
E = 0;
}
void Set_Disp_Pos(uchar pos) {
LCD_Write_Command(pos | 0x80);
}
void LCD_Write_Data(uchar dat) {
while(LCD_Busy_Check());
RS = 1;
RW = 0;
E = 0;
P0 = dat;
delay4us();
E = 1;
delay4us();
E = 0;
}
void LCD_Initialise() {
LCD_Write_Command(0x38); DelayMS(1);
LCD_Write_Command(0x0c); DelayMS(1);
LCD_Write_Command(0x06); DelayMS(1);
LCD_Write_Command(0x01); DelayMS(1);
}
uchar Get_AD_Result() {
uchar i,dat1=0,dat2=0;
CS = 0;
CLK = 0;
DIO = 1; _nop_(); _nop_();
CLK = 1; _nop_(); _nop_();
CLK = 0;DIO = 1; _nop_(); _nop_();
CLK = 1; _nop_(); _nop_();
CLK = 0;DIO = 1; _nop_(); _nop_();
CLK = 1;DIO = 1; _nop_(); _nop_();
CLK = 0;DIO = 1; _nop_(); _nop_();
for(i=0;i<8;i++) {
CLK = 1; _nop_(); _nop_();
CLK = 0; _nop_(); _nop_();
dat1 = dat1 << 1 | DIO;
}
for(i=0;i<8;i++) {
dat2 = dat2 << ((uchar)(DIO)<<i);
CLK = 1; _nop_(); _nop_();
CLK = 0; _nop_(); _nop_();
}
CS = 1;
return (dat1 == dat2) ? dat1:0;
}
void main() {
uchar i;
uint d;
LCD_Initialise();
DelayMS(10);
while(1)
{
d = Get_AD_Result()*500.0/255;
Display_Buffer[0]=d/100+'0';
Display_Buffer[2]=d/10%10+'0';
Display_Buffer[3]=d%10+'0';
Set_Disp_Pos(0x01);
i = 0;
while(Line1[ i]!='\0') {
LCD_Write_Data(Line1[i+1]);
}
Set_Disp_Pos(0x46);
i = 0;
while(Display_Buffer!='\0')
{
LCD_Write_Data(Display_Buffer[i+1]);
}
}
}
复制代码
所有资料51hei提供下载:
51单片机ADC0832模数转换与显示实例.docx
(49.45 KB, 下载次数: 107)
2018-6-8 11:49 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
踏雨歌行
时间:
2019-11-25 23:07
仿真LM016L怎么全是uuuuuu
作者:
ybsuse
时间:
2020-11-4 20:05
要是你打包资料下载就好了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1