欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
用單片機(jī)+ADC0804實(shí)現(xiàn)電壓的AD轉(zhuǎn)換,LCD1602顯示電壓
[打印本頁]
作者:
18896597781
時(shí)間:
2021-5-31 14:10
標(biāo)題:
用單片機(jī)+ADC0804實(shí)現(xiàn)電壓的AD轉(zhuǎn)換,LCD1602顯示電壓
AD轉(zhuǎn)換程序:
用ADC0804芯片實(shí)現(xiàn)對(duì)電壓的采集;
用LCD1602顯示電壓值;
采集誤差位0.05V;
附件包含完整程序和仿真實(shí)際;
文件中含有ADC0804芯片介紹。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
無標(biāo)題.png
(54.15 KB, 下載次數(shù): 67)
下載附件
仿真效果
2021-5-31 13:56 上傳
單片機(jī)源程序如下:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define LCD_DB P1
#define DB P0
sbit LCD_RS=P2^0; //P2.2~lcd的RS
sbit LCD_RW=P2^1; //p2.1~lcd的RW
sbit LCD_E=P2^2; //p2.2~lcd的E
sbit AD_CS=P2^3; //P2.3~0804的CS
sbit AD_RD=P2^4; //P2.4~0804的RD
sbit AD_WR=P2^5; //P2.5~0804的WR
sbit AD_INTR=P3^2; //P3.2~O8O4的INTR,采用中斷方式采集數(shù)據(jù)
void LCD_init(void); //LCD初始化函數(shù)
void LCD_write_command(uchar dat); //LCD寫命令函數(shù)
void LCD_write_data(uchar dat); //LCD寫數(shù)據(jù)函數(shù)
void display(ulong num);
uchar table[]="The Volt Is:"; //第一行提示字符串
//********延時(shí)函數(shù)***************
void delay_n40us(uint n)
{ uint i;
uchar j;
for(i=n;i>0;i--)
for(j=0;j<2;j++); //在這個(gè)延時(shí)循環(huán)函數(shù)中我只做了2次循環(huán),
}
//*************LCD初始化函數(shù)************
void LCD_init(void)
{
LCD_write_command(0x38);//設(shè)置8位格式,2行,5x7
LCD_write_command(0x0c);//整體顯示,關(guān)光標(biāo),不閃爍
LCD_write_command(0x06);//設(shè)定輸入方式,增量不移位--------------
LCD_write_command(0x01);//清除屏幕顯示----------------
delay_n40us(100);
}
//****************lcd寫命令函數(shù)
void LCD_write_command(uchar dat)
{
LCD_DB=dat;
LCD_RS=0;
LCD_RW=0;
LCD_E=1;
LCD_E=0;
delay_n40us(1);
}
//**********lcd寫數(shù)據(jù)函數(shù)************
void LCD_write_data(uchar dat)
{
LCD_DB=dat;
LCD_RS=1;
LCD_RW=0;
LCD_E=1;
LCD_E=0;
delay_n40us(1);
}
//************顯示電壓函數(shù)
void display(ulong num)
{
uchar ge,point,zhi;
zhi=(num*50+122)/255; //算出電壓值,保留一位小數(shù),誤差0.5V
ge=zhi/10%10; //提取各位
point=zhi%10; //提取小數(shù)位
LCD_write_command(0x80+64+6); //從第二行第七個(gè)位置開始顯示電壓
LCD_write_data(0x30+ge); //顯示個(gè)位
delay_n40us(1500);
LCD_write_data('.'); //顯示小數(shù)點(diǎn)
delay_n40us(1500);
LCD_write_data(0x30+point); //顯示小數(shù)
delay_n40us(1500);
LCD_write_data(0x30);
delay_n40us(1500);
LCD_write_data('V'); //顯示單位V
delay_n40us(1500);
}
void in1t0_AD( ) interrupt 0 using 1 //當(dāng)AD轉(zhuǎn)換完成ITNR變0進(jìn)入中斷
{
ulong num;
EA=0; //關(guān)中斷
AD_RD=1;
delay_n40us(1);
AD_RD=0; //讀數(shù)據(jù)有效
delay_n40us(1);
num=DB; //讀取0804AD轉(zhuǎn)換的數(shù)據(jù)
delay_n40us(10);
AD_RD=1;
display(num); //顯示電壓
}
void main()
{
uchar i;
LCD_init();
DB=0xff;
P3=0xff;
LCD_write_command(0x80); //從第一行開始顯示提示字符
for(i=0;i<12;i++)
{
LCD_write_data(table[i]);
}
DB=0xff;
P3=0xff;
EA=1; //開中斷
EX0=1; //開中斷0
IT0=1; //中斷0下降沿有效
AD_INTR=1;
while(1)
{
EA=1;
AD_CS=1;
delay_n40us(1);
AD_CS=0; //選0804芯片
delay_n40us(2);
AD_WR=1;
delay_n40us(1);
AD_WR=0; //開始AD轉(zhuǎn)換
delay_n40us(1);
AD_WR=1;
delay_n40us(1);
}
}
復(fù)制代碼
所有資料51hei提供下載:
AD轉(zhuǎn)換.zip
(1.03 MB, 下載次數(shù): 96)
2021-5-31 14:08 上傳
點(diǎn)擊文件名下載附件
程序和仿真設(shè)計(jì)
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1