欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
光敏電壓值測量AD1627+LCD1602的單片機仿真+源程序
[打印本頁]
作者:
卡卡卡卡
時間:
2017-10-28 16:06
標題:
光敏電壓值測量AD1627+LCD1602的單片機仿真+源程序
環境keil5 、proteus8.6
如果版本過高無法打開 聯系作者q1562335917
主要是8951運用AD1674和LCD1602來測量電壓與數顯電壓值
LCD1602+AD1674仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):
局部.PNG
(55.68 KB, 下載次數: 59)
下載附件
電路圖
2017-10-28 16:02 上傳
數顯.PNG
(24.67 KB, 下載次數: 38)
下載附件
測量數據
2017-10-28 16:02 上傳
單片機源程序如下:
#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義
#include<intrins.h>
sbit RS = P3^4; //定義端口
sbit RW = P3^5;
sbit EN = P3^6;
sbit STS=P3^3;
sbit CE = P3^2;
sbit CS =P3^1;
sbit RC =P3^0;
#define RS_CLR RS=0
#define RS_SET RS=1
#define RW_CLR RW=0
#define RW_SET RW=1
#define EN_CLR EN=0
#define EN_SET EN=1
#define uchar unsigned char
#define uint unsigned int
#define DataPort P1
void DelayUs2x(unsigned char t)
{
while(--t);
}
void DelayMs(unsigned char t)
{
while(t--)
{
//大致延時1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
/*------------------------------------------------
判忙函數
------------------------------------------------*/
bit LCD_Check_Busy(void)
{
DataPort= 0xFF;
RS_CLR;
RW_SET;
EN_CLR;
_nop_();
EN_SET;
return (bit)(DataPort & 0x80);
}
/*------------------------------------------------
寫入命令函數
------------------------------------------------*/
void LCD_Write_Com(unsigned char com)
{
// while(LCD_Check_Busy()); //忙則等待
DelayMs(5);
RS_CLR;
RW_CLR;
EN_SET;
DataPort= com;
_nop_();
EN_CLR;
}
/*------------------------------------------------
寫入數據函數
------------------------------------------------*/
void LCD_Write_Data(unsigned char Data)
{
//while(LCD_Check_Busy()); //忙則等待
DelayMs(5);
RS_SET;
RW_CLR;
EN_SET;
DataPort= Data;
_nop_();
EN_CLR;
}
/*------------------------------------------------
清屏函數
------------------------------------------------*/
void LCD_Clear(void)
{
LCD_Write_Com(0x01);
DelayMs(5);
}
/*------------------------------------------------
寫入字符串函數
------------------------------------------------*/
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
{
if (y == 0)
{
LCD_Write_Com(0x80 + x); //表示第一行
}
else
{
LCD_Write_Com(0xC0 + x); //表示第二行
}
while (*s)
{
LCD_Write_Data( *s);
s ++;
}
}
/*------------------------------------------------
寫入字符函數
------------------------------------------------*/
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
{
if (y == 0)
{
LCD_Write_Com(0x80 + x);
}
else
{
LCD_Write_Com(0xC0 + x);
}
LCD_Write_Data( Data);
}
/*------------------------------------------------
初始化函數
------------------------------------------------*/
void LCD_Init(void)
{
LCD_Write_Com(0x38); /*顯示模式設置*/
DelayMs(5);
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x38);
DelayMs(5);
LCD_Write_Com(0x38);
LCD_Write_Com(0x08); /*顯示關閉*/
LCD_Write_Com(0x01); /*顯示清屏*/
LCD_Write_Com(0x06); /*顯示光標移動設置*/
DelayMs(5);
LCD_Write_Com(0x0C); /*顯示開及光標設置*/
}
/*------------------------------------------------
AD轉換函數
------------------------------------------------*/
double AD()
{
double i,j,k;
CE=1;
CS=0;
RC=0;
_nop_();
while(STS==1); //等待數據采集結束
CE=0;
CE=1;
CS=0;
RC=1;
_nop_();
i=P0;
j=P2;
i=i*16;
j=j/16;
k=i+j;
k=k*10;
k=k/4096;//12位ad
return k;
}
/*------------------------------------------------
數據處理
------------------------------------------------*/
void data_process(double dat,uchar s[10])
{
int a,b,c,d;
dat=dat*100;
a=(int)(dat);
b=a/100;
s[0]=b+48;
s[1]='.';
d=a%10;
s[3]=d+48;
a=a/10;
c=a%10;
s[2]=c+48;
s[4]='v';
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
光敏測量電壓.zip
(83.49 KB, 下載次數: 37)
2017-10-28 16:03 上傳
點擊文件名下載附件
模數轉換測電壓
下載積分: 黑幣 -5
作者:
zhthzt
時間:
2019-3-20 16:57
keil打不開啊
作者:
zhthzt
時間:
2019-3-20 16:58
keil 打不開啊
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1