网站大量收购闲置独家精品文档,联系QQ:2885784924

实验十六 基于单片机的风扇控制器模拟(综合实验).doc

实验十六 基于单片机的风扇控制器模拟(综合实验).doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验十六 基于单片机的风扇控制器模拟(综合实验)

实验十六 风扇控制器模拟(综合实验) 一、实验目的 1. 掌握PROTEUS ISIS软件仿真单片机原理的方法 2. 温度传感器DS18B20、PWM实验方法等的综合运用,控制电机转速 二、实验内容 基于单片机的温控风扇系统,采用单片机作为控制器,利用温度传感器DS18B20作为温度采集元件,并根据采集到的温度,通过一个达林顿反向驱动器ULN2803驱动风扇电机。根据检测到的温度与系统设定的温度的比较实现风扇电机的自动启动和停止,并能根温度的变化自动改变风扇电机的转速,同时用LED八段数码管显示检测到的温度与设定的温度。 三、实验电路 图16.1 电路原理图 打开Proteus ISIS编辑环境,按表16.1所列元件清单添加元件。 表16.1元件清单 元件清单 所属类 所属子类 AT89C52 Microprocessor ICs 8051 Family ULN2803 Analog Miscellaneous DS18B20 Data Converters Temperature Sensors MOTOR-DC Electromechanical 7SEG-MPX6-CC Optoelectronics 7-Segment Displays CAP Capacitors Generic CAP.ELEC Capacitors Generic CRYSTAL Miscellaneous ..... RES Resistors Generic BUTTON SwitchesRelays Switches RESPACK-8 Resistors Resistor Packs 元件全部添加完后,在Proteus ISIS编辑环境中按图16.1所示连接硬件原理图。 四、实验程序 #include reg52.h #define uchar unsigned char #define uint unsigned int sbit DQ=P1^7; sbit key1=P1^3; sbit key2=P1^4; sbit dianji=P3^1; float ff; uint y3; uchar shi,ge,xiaoshu,sheding=20,gaonum,dinum; uchar code dispcode[]={ //段码 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; uchar code table[]={ //带小数点的段码 0xbf,0x86,0xdb,0xcf, 0xe6,0xed,0xfd,0x87,0xff,0xef}; uchar dispbitcode[]={ //位选 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar dispbuf[8]={0,0,0,0,0,0,0,0}; void Delay (uint num)// 延时函数 { while (--num); } void digitalshow(uchar a4,uchar a3,uchar a2,uchar a1,uchar a0) { dispbuf[0]=a0; dispbuf[1]=a1; dispbuf[2]=a2; dispbuf[3]=a3; dispbuf[4]=a4; P2=0xff; P0=dispcode[dispbuf[0]]; P2=dispbitcode[5]; Delay(1); P2=0xff; P0=dispcode[dispbuf[1]]; P2=dispbitcode[4]; Delay(1); P2=0xff; P0=dispcode[dispbuf[2]]; P2=dispbitcode[2]; Delay(1); P2=0xff; P0=table[dispbuf[3]]; P2=dispbitcode[1]; Delay(1); P2=0xff; P0=dispcode[dispbuf[4]]; P2=dispbitcode[0]; Delay(1); } void dmsec(uint count) { uint i; //1ms延时 while(count--) { for(i=0;i125;i++){} } } void tmreset(void) { DQ=0; Delay(90); //精确延时 大于480us DQ=1; Delay(4); /

文档评论(0)

qwd513620855 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档