单片机的温控风扇设计论文(C51程序) - 图文(7)

2019-05-24 13:16

附录1:电路总图

附图1 电路总图

27

附录2:程序代码

#include

#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 tablel[]={ //带小数点的段码 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);

28

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=tablel[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;i<125;i++){} } }

void tmreset(void) { DQ=0;

Delay(90); // 精确延时 大于 480us DQ=1;

Delay(4); // 90,4 可以小范围变化 }

void tmpre(void)

{ while(DQ); while(~DQ); Delay(4); }

29

bit tmrbit(void)

{ uint i; bit dat; DQ=0; i++; // i++;大概1us DQ=1; i++; i++; dat=DQ;

Delay(8); return(dat); }

uchar tmrbyte(void) //读一个比特 { uchar i,j,dat; dat=0;

for(i=1;i<=8;i++) { j=tmrbit(); dat=(j<<7)|(dat>>1); }

return(dat); }

void tmwbyte(uchar dat) //写一个比特 { uint i; uchar j; bit testb;

for(j=1;j<=8;j++) { testb=dat&0x01; dat=dat>>1; // 从低位开始 if(testb) // Write 1 { DQ=0; // 先拉低 i++; i++; // >1us DQ=1; Delay(4); } else // Write 0

30

{ DQ=0; Delay(4); DQ=1; i++; i++; // 再拉高 } } }

void tmstart(void) //ds1820开始转换 {

dmsec(1); tmreset(); tmpre(); dmsec(1);

tmwbyte(0xcc); // skip rom tmwbyte(0x44); // 转换 }

uchar tmrtemp(void) //读取温度 { uchar a,b; tmreset(); tmpre(); dmsec(1);

tmwbyte(0xcc); // skip rom tmwbyte(0xbe); // 转换 a=tmrbyte(); // LSB低8位 b=tmrbyte(); // MSB高8位 y3=b; y3<<=8; y3=y3|a;

ff=y3*0.0625; y3=ff*10+0.5; return(y3); }

void keyscan(void) {

if(key1==0) { dmsec(5); if(key1==0) { sheding++; if(sheding==100)

31


单片机的温控风扇设计论文(C51程序) - 图文(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:(精品)人教版小学语文一年级上册《语文园地八:书写提示+日积

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: