参考文献
[1] 李朝青.单片机原理及接口技术(修订版).北京:北京航空航天大学出版
社,1998
[2] 李广弟.单片机基础.北京:北京航空航天大学出版社,1992
[3] 何立民.单片机应用技术大全.北京:北京航空航天大学出版社,1994 [4] 张毅刚.单片原理及接口技术.哈尔滨:哈尔滨工业大学出版社,1990 [5] 谭浩强.单片机课程设计.北京:清华大学出版社,1989
[6]马家辰.MCS-51单片机原理及接口技术.哈尔滨: 哈尔滨工业大学出版社,
1997
[7]康华光.数字电子技术.第四版.北京:高等教育出版社,1998
[8]OMAC Baseline Architecture Functional Requirement.Version 1.0.WWW.arcweb.com. [9]付家才.单片机测控工程实践技术.北京: 化学工业出版社, 2001 [10]李广弟.单片机基础(修订本).北京:北京航空航天大学出版社, 2001 [11] 诸昌铃.LED显示屏系统原理及工程技术.西安:西安电子科技大学出版
社,2000.9
[12]Astrom, Karl J. (Karl Johan).Computer-controlled systems: theory and design.
Beijing: Tsinghua University Press, 2002.2
[13]沈红卫.单片机应用系统设计实例与分析.北京:北京航空航天大学出版
社,2003
附录
附录一 电路图
附录二 代码
//DS18B20的读写程序,数据脚P2.4 // //温度传感器18B20汇编程序,采用器件默认的12位转化 // //最大转化时间750微秒,显示温度-55到+125度,显示精度 // //为0.1度,显示采用4位LED共阳显示测温值 // //P1口为段码输入,P2^0~P2^3为位选 // /***************************************************/
#include \
#include \延时函数用 #define Disdata P1 //段码输出口 #define discan P2 //扫描口 #define uchar unsigned char #define uint unsigned int
sbit DQ=P2^4; //温度输入口 sbit DIN=P1^7; //LED小数点控制 uint h; uchar flag;
//**************温度小数部分用查表法***********// uchar code ditab[16]=
{0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09}; // uchar code dis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};
//共阳LED段码表 \\不亮\
uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7}; //列扫描控制字 uchar data temp_data[2]={0x00,0x00}; //读出温度暂放
uchar data display[5]={0x00,0x00,0x00,0x00,0x00}; //显示单元数据,共4个数据和一个运算暂用 // // //
/***********11微秒延时函数**********/ //
void delay(uint t) {
for(;t>0;t--); } //
/***********显示扫描函数**********/ scan() {
char k;
for(k=0;k<4;k++) //四位LED扫描控制 {
Disdata=0xff;
Disdata=dis_7[display[k]]; if(k==1){DIN=0;}
discan=scan_con[k];delay(90); discan=0xff; } } // //
/***********18B20复位函数**********/ ow_reset(void) {
char presence=1; while(presence) {
while(presence) {
DQ=1;_nop_();_nop_(); DQ=0; //
delay(50); // 550us DQ=1; //
delay(6); // 66us
presence=DQ; // presence=0继续下一步 }
delay(45); //延时500us presence = ~DQ; } DQ=1; } // //
/**********18B20写命令函数*********/ //向 1-WIRE 总线上写一个字节 void write_byte(uchar val) {
uchar i;
for (i=8; i>0; i--) // {
相关推荐: