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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于溫度控制電機轉速

[復制鏈接]
跳轉到指定樓層
樓主
ID:357563 發表于 2018-6-24 02:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit DS=P3^0;
sbit IN1=P1^0;   //P10與電機驅動IN1相連
sbit IN2=P1^1;   //P11與電機驅動IN2相連
sbit ENA=P1^2;
sbit lcdrs=P2^0;
sbit lcdrw=P2^1;
sbit lcden=P2^2;
uint temp,num,t;
uchar flag,count,fu;
uchar code table[]="Current Temp :";
//延時
void delay(uint ms)
{
        uint i,j;
        for(i=ms;i>0;i--)
        for(j=1;j>0;j--);
}
/*LCD 顯示        */
void write_com(uchar com)
{
        lcdrs=0;
        lcdrw=0;
        P0=com;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
}
void write_data(uchar date)
{
        lcdrs=1;
        lcdrw=0;
        P0=date;
        delay(5);
        lcden=1;
        delay(5);
        lcden=0;
        lcdrs=0;
}
//初始化
void init()
{
        TMOD=0x11;
        TH0=(65536-1000)/256;
        TL0=(65536-1000)%256;
        TH1=(65536-5000)/256;
        TL1=(65536-5000)%256;
        EA=1;
        ET0=1;
        TR0=1;
        ET1=1;
        TR1=1;
        flag=0;
        ENA=0;
}
/*溫度模塊        */
void dsreset(void)
{
        uint i;
        DS=1;
        i++;
        DS=0;
        i=103;
        while(i>0)i--;
        DS=1;
        i=4;
        while(i>0)i--;
        DS=1;
}
//讀一位
bit tmpreadbit(void)
{
        uint i;
        bit dat;
        DS=1;
        DS=0;
        i++;
        i++;
        DS=1;
        i++;
        dat=DS;
        i=8;
        while(i>0)i--;
        return (dat);
}
//讀一個字節
uchar tmpread(void)
{
        uchar i,j,dat;
        dat=0;
        for(i=1;i<=8;i++)
        {
                j=tmpreadbit();
                dat=(j<<7)|(dat>>1);
        }
        return(dat);
}
//將命令代碼轉換成控制信號
void tmpwritebyte(uchar dat)
{
        uint i;
        uchar j;
        bit testb;
        for(j=1;j<=8;j++)
        {
                testb=dat&0x01;
                dat=dat>>1;
                if(testb)   //write 1
                {
                        DS=0;
                        i++;
                        i++;
                        DS=1;
                        i=8;
                        while(i>0)i--;
                }
                else
                {
                        DS=0;
                        i=8;
                        while(i>0)i--;//write 0
                        DS=1;
                        i++;
                        i++;
                }
        }
}
//啟動溫度轉換
void tmpchange(void)
{       
        dsreset();
        delay(1);
        tmpwritebyte(0xcc);
        tmpwritebyte(0x44);
}
uint tmp()
{
        float tt;
        uchar a,b,b1;
        dsreset();
        delay(1);
        tmpwritebyte(0xcc);
        tmpwritebyte(0xbe);
        a=tmpread();
        b=tmpread();
        temp=b;
        b1=b;
        temp<<=8;
        temp=temp|a;
        if(b1<8)
        {
                flag+=1;
                tt=temp*0.0625;
                temp=tt*10+0.5;
                fu='+';
        }
        else
        {
                flag-=1;
                temp=~temp;
                temp=temp+1;
                tt=temp*0.0625;
                temp=tt*10+0.5;
                fu='-';
        }
        return temp;
}
void display(uint temp)
{
        uchar A1,A2,A3;
        A1=temp/100;
        A2=temp%100/10;
        A3=temp%10;
        write_com(0x80+0x06+0x40);
        write_data(fu);
        write_data(A1+0x30);
        write_data(A2+0x30);
        write_data('.');
        write_data(A3+0x30);
}
/*電機模塊        */
//電機停止
void Turn_t(void)
{
        ENA=0;
        IN1=0;
        IN2=0;
}
//電機順時針旋轉
void Turn_z(void)
{
        ENA=1;
        IN1=1;
        IN2=0;
}
//電機逆時針旋轉
void Turn_f(void)
{
        ENA=1;
        IN1=0;
        IN2=1;
}
//電機逆時針加速
void Turn_fj(void)
{
        uint x;
        ENA=1;
        IN1=0;
        x=500;
        while(x<=1000)
        {
                IN2=1;
                delay(x);
                IN2=0;
                delay(1000-x);
                x+=50;
        }
        IN2=1;
}
//電機順時針加速
void Turn_zj(void)
{
        uint x;
        ENA=1;
        IN2=0;
        x=500;
        while(x<=1000)
        {
                IN1=1;
                delay(x);
                IN1=0;
                delay(1000-x);
                x+=50;
        }
        IN1=1;
}
void main()
{
        init();
        lcden=0;
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
        for(num=0;num<15;num++)
        {
                write_data(table[num]);
                delay(5);
        }
        while(1)
        {
                tmpchange();
                t = tmp();
                display(t);
                if(flag==1)
                {
                        flag=0;
                        if(t>30) Turn_z();
                                else if(t>20) Turn_zj();
                                                else if(t<10) Turn_f();
                                                                else if(t<20) Turn_fj();
                }
                else if(flag==-1)
                {
                        flag=0;
                        Turn_f();
                }
        }
}

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

使用道具 舉報

沙發
ID:696844 發表于 2020-3-8 18:02 | 只看該作者
請問有仿真的圖嗎?
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩有码一区 | 中文字幕免费在线 | 亚洲毛片网站 | 日韩视频免费在线 | 在线观看国产视频 | 丝袜天堂 | 久久成人综合 | 国产精品久久久久久福利一牛影视 | 国产精品2| 日韩一二三区 | 97伦理电影 | 国产男女猛烈无遮掩视频免费网站 | 国产成人免费在线 | 欧美淫片| 久久手机在线视频 | 免费看黄色片 | 无吗视频 | 91亚洲国产成人精品一区二三 | 91麻豆精品国产91久久久久久 | 亚洲精品日韩在线 | 国产午夜精品视频 | 在线免费观看成年人视频 | 精品国产欧美一区二区三区成人 | 在线观看国产视频 | 一级欧美一级日韩片 | 国产精品成人一区二区三区吃奶 | 一区二区三区播放 | 成人在线视频免费观看 | 男女啪啪高潮无遮挡免费动态 | 欧美日韩视频在线播放 | 国产女人精品视频 | 久久99国产精一区二区三区 | 男女视频免费 | 欧美精品在线播放 | 网站国产 | 97人人爱| 视频在线亚洲 | 在线视频第一页 | 亚洲精品888 | 精品一区二区三区在线播放 | 国产一级毛片精品完整视频版 |