久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1820|回復(fù): 0
收起左側(cè)

基于51單片機(jī)的電壓電流溫度檢測(cè)顯示仿真+程序

[復(fù)制鏈接]
ID:316613 發(fā)表于 2023-5-4 08:48 | 顯示全部樓層 |閱讀模式
具備AD檢測(cè)功能,LCD1602顯示功能。運(yùn)放檢測(cè),mcu處理,附件包含仿真proteus8  和源程序,造福小白

仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei截圖_20230504084331.png

單片機(jī)源程序如下:

#include <reg51.h>
#include <stdio.h>
#include<intrins.h>


/*****************************程序引腳定義***********************************************/
/*定義LCD控制信號(hào)線*/
sbit SCL = P2^5;
sbit SDA = P2^6;

/*定義AD采集IC信號(hào)線*/
sbit ADE=P2^7;            //輸出使能
sbit ADEOC=P3^7;        //轉(zhuǎn)換完畢信號(hào)輸出1
sbit ADST=P3^6;            //AD復(fù)位及開始信號(hào)
sbit ADSCK=P3^5;        //時(shí)鐘信號(hào)輸入
sbit ADA=P2^2;
sbit ADB=P2^1;
sbit ADC=P2^0;


sbit DQ=P2^3;//定義DS18B20接口
#define KEYValueShowEN 0

bit ack;

unsigned char LCD_data=0x08;




#define uchar unsigned char
#define uint unsigned int



/*dat用于存儲(chǔ)AD采集回來的數(shù)字變量,范圍為0-255*/
unsigned int dat;


/***********************************************************************************************************************/
/***********************************************************************函數(shù)聲明*****************************************/
/************************************************************************************************************************/

/*LCD驅(qū)動(dòng)函數(shù)名聲明*/
void LCD_Init(void);         //初始化函數(shù),設(shè)置LCD的顯示模式
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data);              //寫入字符函數(shù)
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s);              //寫入字符串函數(shù)
void LCD_Clear(void);                                                                   //清屏函數(shù)
void LCD_Write_Data(unsigned char Data);                                                 //寫入數(shù)據(jù)函數(shù)
void LCD_Write_Com(unsigned char com);                                                  //     寫入命令函數(shù)
void LCD_PrintChar(unsigned char ucIdxX, unsigned char ucIdxY, unsigned char cData);  //向LCD中寫入一個(gè)Char型數(shù)據(jù)
void LED_PrintValueI(unsigned char x, unsigned char y, int Data);                      //向LCD寫入一個(gè)整形數(shù)據(jù)
void LED_PrintValueF(short int x, unsigned short int y, float ddata, unsigned short int num);//向LCD中寫入一個(gè)浮點(diǎn)型數(shù)據(jù)

/*延時(shí)函數(shù)聲明*/
void DelayUs2x(unsigned char t);
void DelayMs(unsigned char t);




/*AD采樣函數(shù)聲明*/
void ADinit();                                //定時(shí)器和AD初始化
void ADdress(unsigned char add);            //八路模擬輸入選擇(0~7)add最大值為7
unsigned int readad(unsigned char add);                //AD轉(zhuǎn)換函數(shù)

/***********************************************************************************************************************/
/***********************************************************************函數(shù)實(shí)現(xiàn)*****************************************/
/************************************************************************************************************************/


//*****************延時(shí)************************
void delay_nus(unsigned int n) //N us延時(shí)函數(shù)
{
    unsigned int i=0;
        for (i=0;i<n;i++)
            _nop_();
}
void delay_nms(unsigned int n) //N ms延時(shí)函數(shù)
{
    unsigned int i,j;
        for (i=0;i<n;i++)
            for (j=0;j<1140;j++);
}

/*------------------------------------------------
uS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
unsigned char 是定義無符號(hào)字符變量,其值的范圍是
0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編,大致延時(shí)
長(zhǎng)度如下 T=tx2+5 uS
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{   
while(--t);
}
/*------------------------------------------------
mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
unsigned char 是定義無符號(hào)字符變量,其值的范圍是
0~255 這里使用晶振12M,精確延時(shí)請(qǐng)使用匯編
------------------------------------------------*/
void DelayMs(unsigned char t)
{
     
while(t--)
{
     //大致延時(shí)1mS
     DelayUs2x(245);
     DelayUs2x(245);
}
}
//****************************************************
//MS延時(shí)函數(shù)(12M晶振下測(cè)試)
//****************************************************
void Delay_ms(unsigned int n)
{
    unsigned int  i,j;
    for(i=0;i<n;i++)
        for(j=0;j<123;j++);
}

void nop4()
{
     _nop_();     //等待一個(gè)機(jī)器周期
     _nop_();     //等待一個(gè)機(jī)器周期
     _nop_();     //等待一個(gè)機(jī)器周期
     _nop_();     //等待一個(gè)機(jī)器周期
}
//***************************************
void Start()
{
     SDA=1;
    _nop_();
    SCL=1;
    nop4();
    SDA=0;
    nop4();
    SCL=0;
    _nop_();
    _nop_();
}
void Stop()
{
     SDA=0;
    _nop_();
    SCL=0;
    nop4();//>4us后SCL跳變
    SCL=1;
    nop4();
    SDA=1;
    _nop_();
    _nop_();
}
//******************************************
void  Write_A_Byte(unsigned char c)
{
unsigned char BitCnt;
  for(BitCnt=0;BitCnt<8;BitCnt++)  //要傳送的數(shù)據(jù)長(zhǎng)度為8位
    {
     if((c<<BitCnt)&0x80)  SDA=1;   //判斷發(fā)送位
     else  SDA=0;               
     _nop_();
     SCL=1;               //置時(shí)鐘線為高,通知被控器開始接收數(shù)據(jù)位
     nop4();
     _nop_();      
     SCL=0;
    }  
    _nop_();
    _nop_();
    SDA=1;               //8位發(fā)送完后釋放數(shù)據(jù)線,準(zhǔn)備接收應(yīng)答位
    _nop_();
    _nop_();  
    SCL=1;
    _nop_();
    _nop_();
    _nop_();
    if(SDA==1)ack=0;     
       else
       {
       ack=1;        //判斷是否接收到應(yīng)答信號(hào)
      // P1=0x00;
       }                  
    SCL=0;
    _nop_();
    _nop_();
}

bit Write_Random_Address_Byte(unsigned char add,unsigned char dat)
{
     Start();    //啟動(dòng)總線
    Write_A_Byte(add<<1|0); //發(fā)送器件地址
    if(ack==0)return(0);
    Write_A_Byte(dat);   //發(fā)送數(shù)據(jù)
    if(ack==0)return(0);
    Stop(); //結(jié)束總線
    return(1);
}
//********************液晶屏使能*********************
void Enable_LCD_write()
{
    LCD_data|=(1<<(3-1));//E=1;
    Write_Random_Address_Byte(0x27,LCD_data);  //
    delay_nus(2);
    LCD_data&=~(1<<(3-1));//E=0;
    Write_Random_Address_Byte(0x27,LCD_data);
}

//*************寫命令****************************
void LCD_write_command(unsigned char command)
{
    delay_nus(16);
    LCD_data&=~(1<<(1-1));//RS=0;
    LCD_data&=~(1<<(2-1));//RW=0;
    //LCD_data&=~(1<<(4-1));
    Write_Random_Address_Byte(0x27,LCD_data);

    LCD_data&=0X0f; //清高四位
    LCD_data|=command & 0xf0; //寫高四位
    Write_Random_Address_Byte(0x27,LCD_data);
    Enable_LCD_write();

    command=command<<4; //低四位移到高四位
    LCD_data&=0x0f; //清高四位
    LCD_data|=command&0xf0; //寫低四位
    Write_Random_Address_Byte(0x27,LCD_data);
    Enable_LCD_write();
}
//*************寫數(shù)據(jù)****************************
void LCD_write_data(unsigned char value)
{
    delay_nus(16);
    LCD_data|=(1<<(1-1));//RS=1;
    LCD_data&=~(1<<(2-1));//RW=0;
    Write_Random_Address_Byte(0x27,LCD_data);

    LCD_data&=0X0f; //清高四位
    LCD_data|=value&0xf0; //寫高四位
    Write_Random_Address_Byte(0x27,LCD_data);
    Enable_LCD_write();            

    value=value<<4; //低四位移到高四位
    LCD_data&=0x0f; //清高四位
    LCD_data|=value&0xf0; //寫低四位
    Write_Random_Address_Byte(0x27,LCD_data);
    Enable_LCD_write();
}

//**********************設(shè)置顯示位置*********************************
void set_position(unsigned char x,unsigned char y)
{
    unsigned char position;
    if (y == 0)
        position = 0x80 + x;
    else
        position = 0xc0 + x;
    LCD_write_command(position);
}
/***************************************************
*函數(shù)名:  void LCD_Clear(void)
*參數(shù):無
*功能說明:清屏函數(shù)
****************************************************/
void LCD_Clear(void)
{
     LCD_write_command(0x01);
     DelayMs(5);
}

Keil代碼與Proteus仿真下載: 基于51單片機(jī)的溫度、電壓電流檢測(cè)系統(tǒng)程序 仿真.rar (244.72 KB, 下載次數(shù): 47)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久久久久久 | 欧美一区二区三区久久精品 | 羞羞视频在线观看免费观看 | 精品视频一区二区三区在线观看 | 亚洲精品乱码久久久久久按摩 | 欧美日韩91 | 影音先锋欧美资源 | 久久中文字幕在线 | 9porny九色视频自拍 | 亚洲 欧美 日韩 精品 | 日日天天 | 国产区在线视频 | 精品久久久久久久久久 | 亚洲欧美日韩电影 | 欧美视频在线看 | 91影片| 精品久久久久久久久久久久久久 | 亚洲国产成人久久综合一区,久久久国产99 | 日韩精品一区二区三区中文字幕 | av免费网站在线 | 久久天天 | 一区二区三区小视频 | 亚洲午夜av久久乱码 | 亚洲一区二区三区四区五区午夜 | 国内精品99 | 国产一区二区三区在线 | 国产目拍亚洲精品99久久精品 | 欧美一区免费在线观看 | av在线免费观看网址 | 久久久精品日本 | 免费成人毛片 | 91av小视频| 国产美女在线播放 | 日本视频在线播放 | 午夜看片网站 | 亚洲一区二区三区久久 | 国产精品高潮呻吟久久 | 国产精品91网站 | 亚洲手机视频在线 | 成人在线观看免费观看 | 免费观看的黄色网址 |