收藏 分销(赏)

基于单片机的蓄水池自动控制系统.doc

上传人:二*** 文档编号:4519549 上传时间:2024-09-26 格式:DOC 页数:170 大小:2.48MB 下载积分:5 金币
下载 相关 举报
基于单片机的蓄水池自动控制系统.doc_第1页
第1页 / 共170页
本文档共170页,全文阅读请下载到手机保存,查看更方便
资源描述
基于单片机的蓄水池自动控制系统(完整资料) (可以直接使用,可编辑 优秀版资料,欢迎下载) 广西民族大学 第二次综合课程设计报告 论文题目: 基于51单片机的蓄水池自动控制系统 学院:    物理与电子工程学院 专    业:自动化 年级: 2007级       学生姓名: 黄毅 指导教师: 廖义奎 设计时间:2010年3月至2010年6月 基于51单片机的蓄水池自动控制系统 摘 要:本课程主要设计一个基于51单片机的蓄水池自动控制系统,可以测量出蓄水池的温度以及缺水满水。可以自动控制进水和出水,进出水先用手动倒水进去和手工放水模拟,要求当水满时自动控制停止抽水.同时,可以通过电脑控制抽水和放水,并把以把测量的数据通过RS232接口传到上位机电脑上并在电脑上显示出来。 1 引言 随着人们生活用水的需要,蓄水池的需求也越来越多,特别是农村地区,而如何合理地控制电机抽水以便控制蓄水池的水量,成为了必需解决的问题。而本课程设计的基于51单片机的蓄水池自动控制系统可以很好地为解决这一突出问题提供了方案。此设计中主要包括以下几个任务: 一、微控芯片的选择。 二、数据现示的方式。 三、水位的ADC采样和水温的测量。 四、电脑上位机控制。 五、按键和电机开关的控制选择方式。 2 系统功能分析 一个完整的51单片机的蓄水池自动控制系统应具有以下功能:         一、为使用户界面友好,则应该用显示器件显示相应的操作信息。比如在接通电源的情况下应有相应的电源指示灯;电源插座、USB下载线接口、按键等最好分布在电路板的边缘,以方便操作。 二、为保证焊接器件和安装USB下载线时不被误操作,相应的地线应尽量加粗。 三、为更好地显示继电器工作与否,最好在继电器在工作时有指示灯的提示. 3 系统硬件实现方框图 本系统以单片机为控制核心,基于51单片机的蓄水池自动控制系统结构如下图所示。 状态提示和数据现示 水温测量 主控芯片 水位测量 控制电机 上位机按制 4系统硬件的方案比较和选择 4。1微控芯片的选择。 STC12C5A32S2单片机具有32个IO口,共4个并行8位IO,P1~P3,其中P1口的第二功能为模拟数字转换输入通道,可以通过特殊功能寄存器选择P1口的具体功能。 图4-1-1 STC12C5A32S2引脚排列及功能图 该单片机工作电压范围从3.5V到5。5V,其内置资源十分强大,具有32K的Flash的存储空间以及29K的Flash DATA空间,还有1280字节的RAM,以及具有两个外部中断IO口(P3.2、P3.3),两个与普通51单片机兼容的16位定时计数器,它还内置了独立的波特率发生器,在串口通信时,使用独立波特率发生器,可以不占用定时计数器,该发生器类似于定时器的工作方式2,属于自动重载,只要设定初值后,就不需要再次写入计数值,应用方便。串行通信口为RXD(P3.0)、TXD(P3.1). 另外,该单片机为1T单片机,速度比普通51快约12倍。 4。2 数据现示的方式. 1602LCD是专门用于显示字母、数字、符号的显示模块,具有功耗低、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到很广泛. 表4。2.0 LCD1602管脚排列和功能表 引脚 标号 功能说明 备注 1 Vss 逻辑负电源输入引脚,0V 2 Vdd 逻辑正电源输入引脚,+5V 3 Vo LCD驱动电源输入引脚,调节其对比度 接502粗调电阻 4 RS 数据/指令寄存器选择 5 R/W 读写选择引脚 若只需要读,则接地 6 EN 读写使能引脚 7~14 D0~D7 8位数据引脚线 15 A 背光电源输入引脚,+5V 不带背光的LCD则无此引脚 16 K 背光地 一般接入小电阻限流 显示模块使用了该单片机的P0口,由于P0口采用了漏极开路输出的方式,故作为IO口使用时,P0口必须接上拉电阻。控制口线接到了P2口,RS接P2.5,EN接P2.7.在应用中,可以直接将RW短接到地,使用短延时的方法跳过1602的数据处理忙信号,这样单片机就可以不读取1602的忙信号而直接对1602进行写操作。 4.3 水位的ADC采样和水温的测量。 4。3.1 STC单片机内置ADC的使用方法 STC系列单片机中的STC89LE516AD/X2提供了8路8位精度的高速A/D转换器,位于P1口上,从而省去了片外ADC的麻烦。这8路ADC为电压输入型,可做按键扫描,电池电压检测,频谱检测等。ADC转换过程需要17个机器周期。通过对相关功能寄存器的适当配置,就可以控制其工作。下面就对相关功能寄存器进行介绍。 A/D转换寄存器总表: 寄存器 地址 名称 7 6 5 4 3 2 1 0 初始初 P1_ADC_EN 97H 允许P1.x 成为A/D口 P17 P16 P15 P14 P13 P12 P11 P10 0000 0000 ADC_ CONTR C5H A/D转换 控制寄存器 - — - ADC_FLAG ADC_START CHS2 CHS1 CHS0 xxx0 0000 ADC_DATA C6H A/D转换 结果寄存器 - - — — - - - — 0000 0000 (1)P1_ADC_EN:特殊功能寄存器 P1。x作为A/D转换输入通道来用允许特殊功能寄存器。相应位为“1”时,对应的P1。x口作为A/D转换使用,内部上拉电阻自动断开。 (2)ADC_CONTR:特殊功能寄存器 CHS2/CHS1/CHS0是模拟输入通道选择,CHS2/CHS1/CHS0的取值如下表所示: CHS2 CHS1 CHS0 模拟输入通道选择 0 0 0 选择P1.0为A/D输入 0 0 1 选择P1.1为A/D输入 0 1 0 选择P1.2为A/D输入 0 1 1 选择P1。3为A/D输入 1 0 0 选择P1.4为A/D输入 1 0 1 选择P1.5为A/D输入 1 1 0 选择P1.6为A/D输入 1 1 1 选择P1。7为A/D输入 ADC_START是模拟/数字转换(ADC)启动控制位,设置为1时,开始转换。 ADC_FLAG是模拟/数字转换结束标志位,当A/D转换完成后,ADC_FLAG=1. (3)ADC_DATA: A/D转换结果特殊功能寄存器 模拟/数字转换结果计算公式为 结果=256×Vin/Vcc Vin是模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。 4。3。2 水温的测量 DS18B20简介是美国美信(Maxim)公司生产的单线数字温度传感器DS1820,可把温度信号直接转换成串行数字信号供微机处理。DS18B20的主要特性是:适应电压范围更宽,电压范围:3。0~5。5V,在寄生电源方式下可由数据线供电独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内温范围—55℃~+125℃,在-10~+85℃时精度为±0.5℃可编程的分辨率为9~12位,对应的可分辨温度分别为0。5℃、0.25℃、0。125℃和0。0625℃,可实现高精度测温在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快测量结果直接输出数字温度信号,以"一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力 负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作. DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。 如图4-3—1                    图4-3-1 DS18B20内部结构主要由四部分组成:64位光刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。 如下图4—3-2 图4-3-2 4。4 电脑上位机控制. 由于采用的是三星公司的专业下载线,所以只要USB与电脑相连,只要配置好电脑的波特率就可以实现上位机实时获取蓄水池的相关数据信息以便控制远程控制蓄水池。   4。5 按键和电机开关的控制选择方式。 用两个按键用于手动控制电机的正反转,而电机的关断则采用继电器来控制。 5  设计方案的实施: 5.1 微控芯片的选择。 图5-1-1是单片机最小系统。它必须满足如下四个条件: 1、电源的滤波及供电;2、单片机的复位——上电复位和手动复位。3、程序下载接口。4、晶振电路。如图3—3中所示,两路开关并联使用,增大了开关触点能通过的最大电流,控制单片机的供电电源,另外P0口接了10K的上拉排阻,PIN9复位引脚通过一个电阻下拉到地,接入了一个电容和一个开关,分别为上电复位电容和手动复位开关。与晶振相接的电容为33PF,起作用是帮助晶振起振。下载口外接出了单片机的RXD以及TXD,加上了VCC和GND的引脚,方便与下载线相连 图5-1-1 5.2数据现示的方式. 如图5-2-1所示,背光K引脚接入4.7欧姆的电阻限流。1602数据口D0~D7接到单片机P1口,RS接到P2.7,RW接到P2.5,EN接到P2。6。 图5-2-1 5.3水位的ADC采样和水温的测量。 图5-3-1 水位的AD采样测量采用的是单片机内部携带的AD采样功能。如下图5-3—1所示,把芯片的P1口上拉,并用排针把该端口引出来;而图5-3—2则是温度传感器DS18B20的电路接线图,其数据线经上拉后与单片机的P0.3口相连。 图5-3-2 5。4、电脑上位机控制。 图5-4—1所示此下载线接口既可为单片机供电也可作为其与电脑的通讯接口。 图5-4-1 5.5按键和电机开关的控制选择方式。 图5-5-1 如右图5-5-1所示用单片机的两个中 断口P3。2和P3.3作为按键的控制输 入口。而图5—5-2所示的继电器则使 用P0.4和P0.5作为其被控的端口。 图5-5-2 6 软件设计实现方案 6。1程序的主要流程图(见于附图1) 6.2程序C语言源代码(见于附页) 7系统硬件制作与软件的调试 设计好整个系统的硬件原理图(见于附图2)并做好电路PCB之后,按如下步骤进行硬件的制作: 一、 用Protel2004软件制作原理图,然后生成网络报表,接着生成PCB文件,布线要注意器件的封装和安放合理性等方面多考虑。 二、 用热转印纸打印PCB印刷电路图。 三、 经热转印后、放到双氧水、盐酸、水为2:2:1的溶液中腐蚀. 四、 给电路板打孔,并擦除电路的碳化物后,立即涂上一层经天那水溶解的松香,以防止铜氧化。 五、 焊接元件后就进行了硬件的调试。 接着是系统硬件的调试,首先检查电路上有否漏焊、开路和短路的现象;然后按如下步骤进行测试: 一、 在没有插上芯片之前给电路板供电,观察电路板上的电源指示灯是否正常并用万用表测电路板的电压是+5V的直流电压。 二、 如果电压正常,然后电路板安装上主控芯片,此时要注意芯片的电源和地管脚与电路板上的对应。 三、 然后检查继电器是否工作,按键是否按下时可以短路,如果一切正常则说明系统板可以工作了,不正常则说明系统硬件有问题,重新仔细检查电路的电气性连接。 8系统测试数据: 经测试系统达到了如期的要求,正常时现示水位处于稳定的状态并相应现示水的温度。超出最低水位时,系统报警并向蓄水池中加水,直到合适的水位,然后停止加水;水超出最高水位时系统报警并从蓄水池中放水,直到低于水位的警界线为止。系统的两个按键可以直接的加水和放水,比如按下加水键,电机通电往蓄水池中加水,当再次按下此按键时则停止加水。也可以通过上位机来控制系统的所有功能,如可直接控制加放水,获取水的温度。 参考文献 1、郭天翔.新概念51单片机C语言教程。北京:电子工业出版社,2009。 2、电子技术基础:模拟部分.第四版.北京:高等教育出版社.19993、C语言程序设计.北京:中国铁道出版社,2007 4、李全利,迟荣强.单片机原理及接口技术。北京:高等教育出版社,2008 附页 源程序代码 #include<reg51。h〉 #include<stdio.h> #include<intrins.h〉 #include〈absacc.h〉 #define uchar unsigned char #define uint unsigned int sbit DQ=P2^0;//ds18b20与单片机接口 sbit RS=P1^4; sbit EN=P2^7; sbit k1=P3^5; sbit k2=P3^6; sbit ds1=P2^5; sbit ds2=P2^4; sbit relay1=P2^3; sbit relay2=P2^2; sbit bee=P2^1; bit flag; uchar get_data; unsigned char code str1[]={"Temp is:"}; unsigned char code str2[]={"18b20 error”}; unsigned char code st1[]={" IN "}; unsigned char code st2[]={" OUT  ”}; unsigned char code keep[]={"KEEP ON”}; unsigned char code err[]={”error"}; uchar data disdata[5]; uchar shuju[] = {'0','1',’2’,'3',’4’,’5','6','7','8','9'}; uchar a= 0x1e,b= 0x15; uint tvalue;//温度值 uint t; uchar tflag;//温度正负标志 //---—-—-——与STC12C5A32S2单片机ADC相关的寄存器声明———--—---—----——-- sfr       P1ASF       =0x9d;           //P1口模数转换功能控制寄存器 sfr      ADC_CONTR   =0xbc;             //AD转换控制寄存器 sfr           ADC_RES         =0xbd;         //AD转换结果寄存器高 sfr        ADC_RESL    =0xbe;      //AD转换结果寄存器低 sfr          AURX1        =0xa2;           //AD转换结果存储方式控制位 //--——-----—---—--—-—----—-—-——-—-—---—-—--—---------—-———--—-——---- //P1ASF寄存器:8位,对应P1口8根口线,用于指定哪根口线用作ADC功能 //哪个口用作ADC就应置相应的位为“1”,注意:不能位寻址 //—-—----—-—-———-----———--—---—--——---——-—---——--———-—----—------——— #define        ADC_POWER      0x80  //ADC电源开 #define          ADC_SPEED 0x60 //设为90个时钟周期ADC一次 #define    ADC_START   0x08 //ADC启动控制位设为开 #define       ADC_FLAG 0x10 //ADC结束标志位 /* ADC_CTRL寄存器: ADC_POWER SPEED1  SPEED0 ADC_FLAG   ADC_STAR  CHS2 CHS1 CHS0   1   2   3   4     5     6    7   8 第 1 位:  =1 打开ADC电源;=0 关闭ADC电源; ADC前要一定要打开 第2-3位:  =1 1  90个时钟周期ADC一次; =1 0 180个时钟周期ADC一次;          =0 1 360个时钟周期ADC一次;   =0 0 540个时钟周期ADC一次; 第4位:      ADC结束标志位,每次ADC结束时自动=1,需要用软件清零才可以进行下一次ADC 第5位:        ADC启动控制位,置“1”则ADC转换开始,转换结束后为0 第6-7-8位:ADC通道选择 000—->P1。0 。.。。...。111-—〉P1.7 */  //-——---—--串口发送-———-—--- /*void send_char_com( unsigned char ch) { SBUF=ch; while (TI== 0);    TI= 0 ; }*/ //-----—--第n通道ADC初始化函数--—-——--- void ADC_int(uchar n)       {   n&=0x07;       //确保n=0—--—7通道      AURX1|=0x04;    //转换结果存储格式:数据的高2位放ADC_RES,低8位放ADC_RESL         P1ASF=1〈<n;        //将P1。n设为ADC采样功能 } //---—-—-—-—第n通道ADC采样函数—---——— uint ADC_GET(unsigned char n)   {       unsigned int adc_data;     n&=0x07;       //确保n=0——--7通道        ADC_RES=0;       //清零   ADC_RESL=0;        //清零    ADC_CONTR=0;   //清零,以便重构   ADC_CONTR|=(ADC_POWER|ADC_SPEED|n|ADC_START);    //打开AD转换电源、设定转换速度、设定通道号、AD转换开始    _nop_();_nop_();_nop_();_nop_();_nop_();    //延时4个时钟周期左右     while(!(ADC_CONTR&ADC_FLAG));    //等待转换结束 =0x10   ADC_FLAG位=1     adc_data=(ADC_RES&0x03)*256+ADC_RESL; //转换结果计算,取高位结果存储器的低2位 + 低位结果存储器   ADC_CONTR&=~ADC_FLAG;           //清零转换结束标志位(ADC_FLAG位=0)       return adc_data;        //返回ADC的值(0——--1023) } /*************************lcd1602程序**************************/ void delay1ms(unsigned int ms)//延时1毫秒 {unsigned int i,j;   for(i=0;i<ms;i++)    for(j=0;j〈100;j++); } void delay(uint z)//延时函数 { uint x,y; for(x=z;x〉0;x-—) for(y=110;y>0;y--); } void wr_com(unsigned char com)//写指令// { delay1ms(1);    RS=0;  // RW=0;  EN=0;   P0=com; // delay1ms(1);  EN=1;  delay1ms(1); EN=0; } void wr_dat(unsigned char dat)//写数据// { delay1ms(1);;  RS=1;  // RW=0; EN=0;   P0=dat; //   delay1ms(1);  EN=1;    delay1ms(1); EN=0; } void lcd_init()//初始化设置// {  //   RW=0; delay1ms(15); wr_com(0x38);delay1ms(5);   wr_com(0x08);delay1ms(5);   wr_com(0x01);delay1ms(5); wr_com(0x06);delay1ms(5);    wr_com(0x0c);delay1ms(5); } void display(unsigned char *p)//显示// { while(*p!=’\0') { wr_dat(*p); p++; delay1ms(1); } } init_play()//初始化显示 { lcd_init();    wr_com(0x80); display(str1); } /**********************ds1820程序******************/ bit ds1820rst(void)/*ds1820复位*/ {  bit flg; DQ = 1;   //DQ复位 for(t=0;t<16;t++); //延时 DQ = 0;        //DQ拉低 for(t=0;t<800;t++); //精确延时大于480us DQ = 1; //拉高 for(t=0;t<80;t++); flg=DQ; for(t=0;t<1600;t++); return(flg); } uchar ds1820rd()/*读数据*/ { unsigned char i=0; unsigned char dat = 0; for (i=8;i〉0;i—-) {   DQ = 1; //先将数据拉高 _nop_();//等待一个机器周期 _nop_(); _nop_(); DQ=0;//启动读时序 _nop_(); _nop_(); _nop_(); DQ = 1; //人为拉高 for(t=0;t〈16;t++); dat>>=1; if(DQ==1) dat|=0x80; else dat|=0x00; for(t=0;t<16;t++); }    return(dat); } void ds1820wr(uchar wdata)/*写数据*/ { unsigned char i=0; for (i=8; i>0; i-—) { DQ = 1; _nop_(); _nop_(); _nop_(); DQ=0; DQ = wdata&0x01; for(t=0;t<80;t++); DQ = 1; for(t=0;t<80;t++); wdata〉>=1; } for(t=0;t〈30;t++); } read_temp()/*读取温度值并转换*/ { ds1820rst(); ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0x44);//*启动温度转换*/ delay1ms(200); ds1820rst();  ds1820wr(0xcc);//*跳过读序列号*/ ds1820wr(0xbe);//*读取温度*/ a=ds1820rd(); b=ds1820rd(); tvalue=b; tvalue〈〈=8; tvalue=tvalue|a;  if(tvalue〈0x0fff)   tflag=0; else {tvalue=~tvalue+1; tflag=1; } tvalue=tvalue*(0。625);//温度值扩大10倍,精确到1位小数 return(tvalue); } /******************************************************************/ void ds1820disp()//温度值显示 { uchar flagdat; disdata[0]=tvalue/1000+0x30;//百位数 disdata[1]=tvalue%1000/100+0x30;//十位数   disdata[2]=tvalue%100/10+0x30;//个位数     disdata[3]=tvalue%10+0x30;//小数位      if(tflag==0)  flagdat=0x20;//正温度不显示符号   else     flagdat=0x2d;//负温度显示负号:—     if(disdata[0]==0x30)  {disdata[0]=0x20;//如果百位为0,不显示  if(disdata[1]==0x30) {disdata[1]=0x20;//如果十位为0,也不显示 }  }   wr_com(0x80+0x08);   wr_dat(flagdat);//显示符号位 wr_dat(disdata[0]);//显示百位 wr_dat(disdata[1]);//显示十位     wr_dat(disdata[2]);//显示个位   wr_dat(0x2e);//显示小数点 wr_dat(disdata[3]);//显示小数位 wr_dat(’C'); } void alarm()//报警函数 { bee=0; delay(2000); bee=1; delay(2000); } void jianceshuiwei()//水位监测函数 { unsigned long ad1,ad2,ad3,ad0; float num1,num2,num3,num0; ADC_int(0); ADC_int(1); ADC_int(2); ADC_int(3); ad0=ADC_GET(0); num0=ad0*4.940/1023; ad1=ADC_GET(1); num1=ad1*4.940/1023;  ad2=ADC_GET(2); num2=ad2*4。940/1023; ad3=ADC_GET(3); num3=ad3*4.940/1023; if(num2==4.940) { alarm(); if(num2==4.940&&num3==4.940) { relay1=0; relay2=1; ds1=0; ds2=1; } } if(num1<4.8) { alarm(); if(num0〈4.8) { relay1=1; relay2=0; ds1=1; ds2=0; } } } void ser() interrupt 4  //串行中断接收子函数 {     RI=0;  //串行中断收到数据后,RI被置1,需要清零以便能响应下次串行中断   get_data=SBUF;   //取出数据 flag=1;     //置标志位=1,告诉主函数有新数据到wr_com } void send( ) {  ES=0;      //关串口中断   TI=1;   ”); printf("NOW temperture is:");   printf("%.1f%c\n",tvalue/10.0,'C');               while(!TI); //等待发送完成(TI=1)        TI=0;      ES=1;  delay1ms(2); } void display_zhuangtai() { if(relay1==1&&relay2==1) display(keep); else if(relay2==0&&relay1==1)  display(st2); else if(relay1==0&&relay2==1) display(st1); else if(relay1==0&&relay2==0) display(err); } /********************主程序***********************************/ void main() { TMOD=0x20;         //设置定时器1工作方式为:方式2、8位初始值自动重装    TH1=0xfd;TL1=0xfd; //设置初始值,以设波特率为9600     TR1=1;             //启动定时器1   SM0=0;SM1=1; //SCON寄存器设置串行口工作方式1:一帧10位、1起始位8数据位1停止位   EA=1;   //允许总中断    ES=1; //串行中断允许        EX0=1;  //外部中断0允许    REN=1;  //允许串口接收   get_data=0x0f;   //初始值 flag=0; //标志位初始=0,表示尚无新数据到     init_play();//初始化显示 delay1ms(5); while(1) { if(ds1820rst()==1) { wr_com(0x80); display(str2); } else { if (flag==1)    //如果有新的数据传到         {    flag=0;//先清标志位 if(get_data==0+0x30) { ds1=~ds1;relay1=~relay1;relay2=1;ds2=1; wr_com(0xc0); display_zhuangtai(); delay1ms(10000); } else if(get_data==1+0x30) { ds2=~ds2;relay2=~relay2;relay1=1;ds1=1; wr_com(0xc0); display_zhuangtai(); delay1ms(10000); } else if(get_data==2+0x30) send();   } else { jianceshuiwei(); read_temp();//读取温度   ds1820disp();//显示 wr_com(0xc0); display_zhuangtai(); } } } } void fangshui() interrupt 0 { if(k1==0) { delay(50); if(k1==0) {          delay1ms(1000);             ds2=1; ds1=~ds1;        relay2=1; relay1=~relay1;          } } if(k2==0) { delay(50); if(k2==0&&k1==1) {           delay1ms(1000);   ds1=1; ds2=~ds2;        relay1=1; relay2=~relay2; } } } 流程图:附图1 原理图:附图2 基于单片机的自动洗衣机控制系统的设计 摘 要:洗衣机是现代人必备的日常生活家电,它的发明和应用使人们的洗衣工作变得省时又省力,很好地缓解了人们在家务劳动方面的压力.一般的数字逻辑电路控制的洗衣机只有两三个程序,也有一按通的傻瓜程序。而基于单片机控制的洗衣机可以复杂程序控制,将水位段细化,漂洗功能细化,加上适用不同衣物等功能,洗涤程序大大增加。 本次设计采用AT89C51单片机作为洗衣机控制系统的主控芯片,洗衣机的各种洗衣程序运行都在单片机的控制下,使得洗涤、漂洗、脱水等各种功能的操作都不需要手动。系统的硬件设计包括电源模块、谐振式水位监测模块、洗衣机LED显示、输出控制电路,软件设计包括主程序、内部定时中断服务程序、外部中断服务程序。 关键词:洗衣机;单片机;LED显示 Design of Automatic Washing Machine Control System Based on Single Chip Microcomputer Abstract:The washing machine is the appliance in people’s daily li
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服