找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1848|回復: 0
打印 上一主題 下一主題
收起左側

單片機+ET2046+LCD1602繼電器源程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:955647 發(fā)表于 2021-7-27 21:14 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit RS = P2^6;
sbit RW = P2^5;
sbit EN = P2^7;
sbit DCLK = P3^6;
sbit DIN = P3^4;
sbit CS = P3^5;
sbit DOUT = P3^7;
uint disp[4];
void delayms(uint xms)
{
     int i,j;
        for(i=xms;i>0;i--)
            for(j=114;j>0;j--);
}

void write_com(int com)
{   
        EN = 0;
    RS = 0;
    RW = 0;
        P0 = com;
        delayms(1);
    EN = 1;
    delayms(5);
        EN = 0;
}

void write_date(int date)
{
        EN = 0;
    RS = 1;
    RW = 0;
        P0 = date;
        delayms(1);
        EN = 1;
        delayms(5);
        EN = 0;
}

void lcdset()
{
    write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
}

void display()
{
        write_com(0x80);
        write_date((disp[0])+'0');
        write_com(0x81);
        write_date((disp[1])+'0');
        write_com(0x82);
        write_date((disp[2])+'0');
        write_com(0x83);
        write_date((disp[3])+'0');
}

void SPI_Write(uchar dat)
{
        uchar i;
        DCLK = 0;
        for(i=0; i<8; i++)
        {
                DIN = dat >> 7;         
                dat <<= 1;
                DCLK = 0;                        
                DCLK = 1;

        }
}

uint SPI_Read(void)
{
        uint i, dat = 0;
        DCLK = 0;
        for(i=0; i<12; i++)               
        {
                dat <<= 1;

                DCLK = 1;
                DCLK = 0;

                dat |= DOUT;

        }
        return dat;        
}

uint Read_AD_Data(uchar cmd)
{
        uchar i;
        uint AD_Value;
        DCLK = 0;
        CS  = 0;
        SPI_Write(cmd);
        for(i=6; i>0; i--);         
        DCLK = 1;         
        _nop_();
        _nop_();
        DCLK = 0;
        _nop_();
        _nop_();
        AD_Value=SPI_Read();
        CS = 1;
        return AD_Value;        
}

void datapros()
{
        uint temp;
        static uint i;
        if(i==50)
        {
                i=0;
                temp = Read_AD_Data(0x94);        
        }
        i++;
        disp[0]= temp/1000;
        disp[1]= temp%1000/100;
        disp[2]= temp%1000%100/10;
        disp[3]=temp%1000%100%10;
}

void main()
{
        lcdset();
        while(1)
        {
           datapros();
       display();               
        }
}

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表