表明所测温度大于-55℃。同时,计数器被复位到一个值,这个值由斜坡式累加器电路确定,斜坡式累加器电路用来补偿感温振荡器的抛物线特性。然后计数器又开始计数直到0,如果门周期仍未结束,将重复这一过程,DS1820 测温范围-55℃~+125℃,以0.5℃递增。
DS18B20工作原理图
DS18B20外接电源图 温度显示工作方式
温度传感器DS18B20的接法很简单,它的DQ引脚与MSC-51芯片的P1.7引脚相连接。这里只用到一个温度传感器,若要使用多个则只需将所有的DS18B20的I/O口接在一起即可,在具体操作时,通过读取每个芯片的内部序列号来识别
温度传感器模块
6.项目总结
本次三片机三级项目,本小组对MSC-51单片机为核心的控制芯片,DS12887时钟芯片、DS18B20温度传感器,74LS138译码器及7段数码管进行了大量的资料查阅和研究工作,熟悉并掌握了上述芯片的基本功能和使用方法,将课本学习到的理论知识用于实践操作,熟悉了各种芯片之间的协同工作,和各种工作模块的组合思路。让我们对系统的应用单片机进行功能设计有了更深的
体会。设计人员分工明确,培养了小组成员的团队协作意识和能力,期间也遇到了一些困难,例如我们在定时模块关于累加后如何实现单位的循环上遇到困难而最后我们运用计数重置成功解决了这一问题。普通的仿真软件的安装和学习也让我们耗费了大量的时间。本次三级项目让我们检验了课堂学习的成果,是一次很好的锻炼。
7.程序附录
#include
#define uchar unsigned char #define uint unsigned int /*七段共阴管显示定义*/
//此表为 LED 的字模, 共阴数码管 0-9 - uchar code dispcode[] =
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40}; //段码控制 /*定义并初始化变量*/ uchar seconde=0;//秒 uchar minite=0;//分 uchar hour=12; //时
uchar mstcnt=0;//定时器计数,定时100ms,mstcnt满10,秒加1 uchar shi=0;//闹铃功能 uchar fen=0;
uchar bjcs;//报警次数
sbit P1_0=P1^0; //second 调整定义 sbit P1_1=P1^1; //minite调整定义 sbit P1_2=P1^2; //hour 调整定义
sbit P1_3=P1^3; //闹铃功能,调整时间 sbit L1=P1^6; //调整半秒闪烁灯L1 sbit L2=P1^7; //调整半秒闪烁灯L2 sbit P1_4=P1^4; //关闭闹铃
sbit L3=P2^0; //调整上午指示灯L3 sbit L4=P2^1; //调整下午指示灯L4
/*函数声明*/
void delay(uint k ); //延时子程序
void time_pro( ); //时间处理子程序
void display( ); //显示子程序 void keyscan( ); //键盘扫描子程序
/*延时子程序*/
void delay (uint k) {
uchar j; //k=1,t=0.125ms while((k--)!=0) {
for(j=0;j<125;j++) {;} } }
/*时间处理子程序*/ void time_pro(void) {
if(seconde==60) {
seconde=0; minite++;
if(minite==60) {
minite=0; hour++;
if(hour==24) {
hour=0; } } } }
/*半秒延迟子程序*/ void delay30s (void) {
unsighed char i,j,k;
for(i=50,i>0,i--) //1us*50*100*100=0.5s for(j=100,i>0,i--) for(k=100,i>0,i--); }
/*半秒闪烁子程序*/
void shanshuo30s (void) {
L1=0; //P1^6 为低电平,点亮LED灯
相关推荐: