您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 四位温度显示控制器之原理图、流程图、代码
3.2原理3.2.1原理图P101P112P123P134P145P156P167P178REST9P30/RXD10P31/TXD11P32/~INT012P33/~INT113P34/T014P35/T115P36/~WR16P37/~RD17X218X119p2021p2122p2223p2324p2425p2526p2627p2728~PSEN29ALE30~EA31P0732P0633P0534P0435P0336P0237P0138P0039AT89S51U1AT89S51s1s2s3s4E1D2DP3C4G5S16B7S28S39F10A11S412LED-4bitU3LED-4B01AD590-+U4AComponent_1C130pFC230pFR1R2R3R4R5R6R7R80.56KIN-026msb2-1212-220IN-1272-3192-418IN-2282-582-615IN-312-714lsb2-817IN-42EOC7IN-53ADD-A25IN-64ADD-B24ADD-C23IN-75ALE22ref(-)16ENABLE9START6ref(+)12CLOCK10U2ADC0809Y16MHzS1S2S3S4S1S2S3S4STOEEOCVCCVCCR910KVCCC310uFR1010KS1SW-PBEOCOESTVCCD1LEDR?RES2VCCLEDLED........图3-104位温度显示器原理图3.2.2功能利用AD590温度传感器完成温度的测量,把转换的温度值的模拟量送入ADC0809的其中一个通道进行A/D转换,将转换的结果进行温度值变换之后送入数码管显示。第四章软件详细设计4.1流程图图4-1主程序流程图开始指示灯LED灭ADC0809停止工作T1工作于方式1定时4mSCPU、T1开中断且T1开始工作ADC0809采集一次数据等待中断结束T1重新置数0809转换结束?读取转换后数据软件补偿判断正负?确定符号位为正确定符号位为负中断开始指示灯亮条件?满足,灯亮不满足,灯灭NYNY①②图4-2中断服务程序流程图4.2源代码/*************************************************************毕业设计—四位温度显示器**指导老师:刘东红**姓名:何夏栋**准考证号:010403160298***确定十位、个位和十分位数据①②逐位显示数据个位数据?加小数点一位数据?去掉十位“0”超出显示范围?停止扫描结束返回NYNY************************************************************/#includereg51.h#defineucharunsignedchar#defineuintunsignedintucharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7};/*LED位选*/ucharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};/*0,1,2------9,正(不显),负*/uchardispbuf[]={0,0,0,10,10,10,10,10};uchardispcount=0;uchargetdata=0;unsignedlongtemp=0;uchari;bitsflag=0;/*正负标志*/sbitST=P3^0;sbitOE=P3^1;sbitEOC=P3^2;sbitLED=P3^4;/*当温度超过10度且低于30度时LED亮*/voidmain(void){LED=1;ST=0;OE=0;TMOD=0x10;TH1=(65536-4000)/256;/*T1工作于方式1下。每4mS采集一次数据,且刷新一次LED*/TL1=(65536-4000)%256;TR1=1;ET1=1;EA=1;ST=1;ST=0;while(1){;}}voidt1(void)interrupt3using0{TH1=(65536-4000)/256;TL1=(65536-4000)%256;if(EOC==1)/*转换完毕,显示*/{OE=1;getdata=P0;OE=0;temp=getdata;temp+=168;if(temp273.2){temp=273.2-temp;sflag=1;}if(temp=273.2){temp=temp-273.2;sflag=0;}if(sflag==0)dispbuf[3]=10;elsedispbuf[3]=11;if(sflag==0&&temp=10&&temp=30)/*温度大于10小于30灯亮*/LED=0;elseLED=1;temp*=10;i=0;while(temp/10)/*分位显示*/{dispbuf[i]=temp%10;temp=temp/10;i++;}dispbuf[i]=temp;ST=1;ST=0;P1=dispcode[dispbuf[dispcount]];P2=dispbitcode[dispcount];if(dispcount==1)/*加小数点*/{P1=P1|0x80;}if(dispcount==2&&P1==dispcode[0])/*测量温度是一位数,取掉十位的0*/{P1=dispcode[10];}dispcount++;if(dispcount==4)dispcount=0;}}
本文标题:四位温度显示控制器之原理图、流程图、代码
链接地址:https://www.777doc.com/doc-1042067 .html