1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
我在做个可以测400度的k型热电偶测温带数码管显示的实验板。发现只有通电的那一下读max6675的温度是正确的,而且数据不变化,请各位朋友帮忙看看是什么地方出了问题,给予指教。谢谢。
#include ***it com1=P1^2; //设置个位显示控制位 ***it com2=P1^1; //设置十位显示控制位 ***it com3=P1^0; //设置百位显示控制位 ***it SO=P3^7; //P3.7口与SO相连 IC的7脚 ,数据输出 ***it SCK=P3^5; //P3.5口与SCK相连IC的5脚,给IC脉冲 ***it CS=P3^6; //P3.6口与CS相连IC的6脚 ,片选,低电平有效 unsigned char wdge,wdshi,wdbai;//定义3个温度的全局变量,用于温度显示 unsigned char code table[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //定义0到F 16个数码管显示代码 void ldelay(unsigned char temp); //短延迟 void waiting();//等待和显示 void delay(unsigned char temp); //在晶振为12M的时候,延迟函数最多256毫秒 void readmax6675(); //临时调试max6675程序用 void main() //主程序开始 { P1=0; P2=table[0]; while(1) { readmax6675(); //读max6675数据 waiting() ; //显示读到的数据 } } //***********等待开始函数********** void waiting() //数码管显示 { //*******显示温度个位的数码管*********** com1=0; P2=table[wdge]; com1=1; delay(10); com1=0; //*******显示温度十位的数码管*********** com2=0; P2=table[wdshi]; com2=1; delay(10); com2=0; //*******显示温度百位的数码管*********** com3=0; P2=table[wdbai]; com3=1; delay(10); com3=0; } //***********延迟函数********** void delay(unsigned char temp) //在晶振为12M的时候,延迟函数最多256毫秒 { unsigned char time0,mstime=230; for (time0=0;time0 while(--mstime );//mstime=230 延迟程序1毫秒 }; } //***********短延迟函数********** void ldelay(unsigned char temp) //在晶振为12M的时候,延迟函数最多256毫秒 { unsigned char time0,mstime=2 ; for (time0=0;time0 while(--mstime );//mstime=230 延迟程序1毫秒 }; } //***********读max6675数据的函数********** void readmax6675() //调试MAX6675数据的读取 { unsigned int Temp1, wendu; unsigned char i,twdge=0,twdshi=0,twdbai=0; //要是不初始化为0,会使数码管乱显示 CS=1; //为片选做准备 SCK=0; //P3.5口与SCK相连IC的5脚,给IC脉冲 wendu=0; Temp1=0; ldelay(2); CS=0; //P3.6口与CS相连IC的6脚 ,片选,低电平有效 for(i=0;i<16;i++)//16位数据读取 { Temp1<<=1;//向左移一位 ldelay(2); SCK=1;//sck上升 正脉冲期间读数据输出 //P3^.5口与SCK相连 ldelay(2); if(SO==1) //P3.7口与SO相连 IC的7脚 ,数据输出 { Temp1= Temp1|0x01;} else { Temp1= Temp1|0x00;} ldelay(2); SCK=0; //ldelay(5); } Temp1=Temp1<<1; //向左移一位,取0-14位 Temp1=Temp1>>4; //向右移4位,取3-14位 wendu= (Temp1* 25+ 50)/100 ;//变换为温度值 if(wendu<2000) //最高读取温度设定为500摄氏度 { for(i=0;i twdge++; if(twdge>9) { twdge=0; twdshi++; if(twdshi>9) { twdshi=0; twdbai++; } } } } wdge=twdge; wdshi=twdshi; wdbai=twdbai; }
|
|
相关推荐
1个回答
|
|
谢谢分享,楼主好人!!!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十五章 摄像头实验
846 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
820 浏览 0 评论
910 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
1693 浏览 0 评论
1307 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12070 浏览 31 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-30 19:07 , Processed in 0.494870 second(s), Total 42, Slave 32 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号