完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
麻烦大家看下下面的程序哪里出错了,我的目标是当实际温度低于30度时,流水灯会每隔一秒亮一次,但是当实际温度高于30度时,它竟然还在亮不知道为什么,麻烦大家看一一下,谢谢了;
程序翻译的时候没有错误。 下面是我写的程序 #include #define uchar unsigned char #define uint unsigned int ***it DS=P2^2; uint temp,t; uchar mm; ***it dula=P2^6; ***it wela=P2^7; unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; unsigned char code table1[]={ 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef}; void delay(uint count) { uint i; while(count) { i=200; while(i>0) i--; count--; } } void dsreset(void) { uint i; DS=0; i=103; while(i>0)i--; DS=1; i=4; while(i>0)i--; } bit tmpreadbit(void) { uint i; bit dat; DS=0;i++; DS=1;i++;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) { DS=0; i++;i++; DS=1; i=8;while(i>0)i--; } else { DS=0; i=8;while(i>0)i--; DS=1; i++;i++; } } } void tmpchange(void) { dsreset(); delay(1); tmpwritebyte(0xcc); tmpwritebyte(0x44); } uint tmp() { float temp; uchar a,b; dsreset(); delay(1); tmpwritebyte(0xcc); tmpwritebyte(0xbe); a=tmpread(); b=tmpread(); // temp=b; // temp<<=8; // temp=temp|a; // tt=temp*0.0625; // temp=tt*10+0.5; temp=((b<<8)|a)*(0.0625*10); return temp; } void readrom() { uchar sn1,sn2; dsreset(); delay(1); tmpwritebyte(0x33); sn1=tmpread(); sn2=tmpread(); } void delay10ms(uint z) { uchar a,b; for(a=10;a>0;a--) for(b=60;b>0;b--); } void display(uint temp) { uchar A1,A2,A2t,A3; A1=temp/100; A2t=temp%100; A2=A2t/10; A3=A2t%10; dula=0; P0=table[A1]; dula=1; dula=0; wela=0; P0=0xfe; wela=1; wela=0; delay(1); dula=0; P0=table1[A2]; dula=1; dula=0; wela=0; P0=0xfd; wela=1; wela=0; delay(1); P0=table[A3]; dula=1; dula=0; P0=0xfb; wela=1; wela=0; delay(1); } void xianshi( ) { dula=1; P0=table[3]; dula=0; P0=0xff; wela=1; P0=0xf7; wela=0; delay10ms(1); dula=1; P0=table1[0]; dula=0; P0=0xff; wela=1; P0=0xef; wela=0; delay10ms(1); dula=1; P0=table[0]; dula=0; P0=0xff; wela=1; P0=0xdf; wela=0; delay10ms(1); } void deal() { if(temp<300) { if(mm==20) { mm=0; P1=~P1; } } } void main() { uchar a; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; EA=1; ET0=1; do { tmpchange(); for(a=10;a>0;a--) { deal(); display(tmp()); xianshi( ); } } while(1); } void time0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; mm++; // if(temp<300) // { // // if(mm==20) // { // mm=0; // P1=~P1} //// } } 下面是原理图
|
|
相关推荐
1 个讨论
|
|
202 浏览 0 评论
556 浏览 2 评论
ESP32开发中,使用ADF环境,系统报错I2C Bus WriteReg Error和I2C Bus ReadReg Error
495 浏览 1 评论
在ZYNQ上跑超炫酷GUI!手把手教你移植LVGL到ZYNQ平台!
709 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之FLEXCAN
888 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12463 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-7 08:05 , Processed in 0.329135 second(s), Total 33, Slave 27 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191