亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
用單片機+ADC0804實現電壓的AD轉換,LCD1602顯示電壓
[打印本頁]
作者:
18896597781
時間:
2021-5-31 14:10
標題:
用單片機+ADC0804實現電壓的AD轉換,LCD1602顯示電壓
AD轉換程序:
用ADC0804芯片實現對電壓的采集;
用LCD1602顯示電壓值;
采集誤差位0.05V;
附件包含完整程序和仿真實際;
文件中含有ADC0804芯片介紹。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
無標題.png
(54.15 KB, 下載次數: 67)
下載附件
仿真效果
2021-5-31 13:56 上傳
單片機源程序如下:
#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,采用中斷方式采集數據
void LCD_init(void); //LCD初始化函數
void LCD_write_command(uchar dat); //LCD寫命令函數
void LCD_write_data(uchar dat); //LCD寫數據函數
void display(ulong num);
uchar table[]="The Volt Is:"; //第一行提示字符串
//********延時函數***************
void delay_n40us(uint n)
{ uint i;
uchar j;
for(i=n;i>0;i--)
for(j=0;j<2;j++); //在這個延時循環函數中我只做了2次循環,
}
//*************LCD初始化函數************
void LCD_init(void)
{
LCD_write_command(0x38);//設置8位格式,2行,5x7
LCD_write_command(0x0c);//整體顯示,關光標,不閃爍
LCD_write_command(0x06);//設定輸入方式,增量不移位--------------
LCD_write_command(0x01);//清除屏幕顯示----------------
delay_n40us(100);
}
//****************lcd寫命令函數
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寫數據函數************
void LCD_write_data(uchar dat)
{
LCD_DB=dat;
LCD_RS=1;
LCD_RW=0;
LCD_E=1;
LCD_E=0;
delay_n40us(1);
}
//************顯示電壓函數
void display(ulong num)
{
uchar ge,point,zhi;
zhi=(num*50+122)/255; //算出電壓值,保留一位小數,誤差0.5V
ge=zhi/10%10; //提取各位
point=zhi%10; //提取小數位
LCD_write_command(0x80+64+6); //從第二行第七個位置開始顯示電壓
LCD_write_data(0x30+ge); //顯示個位
delay_n40us(1500);
LCD_write_data('.'); //顯示小數點
delay_n40us(1500);
LCD_write_data(0x30+point); //顯示小數
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 //當AD轉換完成ITNR變0進入中斷
{
ulong num;
EA=0; //關中斷
AD_RD=1;
delay_n40us(1);
AD_RD=0; //讀數據有效
delay_n40us(1);
num=DB; //讀取0804AD轉換的數據
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轉換
delay_n40us(1);
AD_WR=1;
delay_n40us(1);
}
}
復制代碼
所有資料51hei提供下載:
AD轉換.zip
(1.03 MB, 下載次數: 96)
2021-5-31 14:08 上傳
點擊文件名下載附件
程序和仿真設計
下載積分: 黑幣 -5
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1