|
发表于 2011-4-21 23:08:06
|
显示全部楼层
大侠 我的单片机开发板端口和你所给程序定义的不一样,因此我改了程序中的端口定义,然后Proteus的连线图也换了,但是最后仿真失败了,实在不知道什么原因。。。能帮我看下嘛
我把改了的程序贴在下面,proteus连线图也贴出来
程序中换端口所在行 我有做记号 【】中的是原来的端口定义
/*****************************就开头这一部分有端口定义****************************************/
#include<reg51.h>
#include"DS18B20_3.H"
#define uint unsigned int
#define uchar unsigned char
uchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp;
//flag用于读取头文件中的温度值,和显示温度值
#define yh 0x80 //LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80)
#define er 0x80+0x40 //LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)
//液晶屏的与C51之间的引脚连接定义(显示数据线接C51的P0口)
sbit rs=P3^5;//【【【【【【sbit rs=P2^0;】】】】】
sbit en=P3^4;//【【【【【【sbit en=P2^2;】】】】】
sbit rw=P3^6; //【【【【【【sbit rw=P2^1;】】】】】 //如果硬件上rw接地,就不用写这句和后面的rw=0了
sbit led=P2^6; //LCD背光开关
//DS1302时钟芯片与C51之间的引脚连接定义
sbit IO=P2^4;//【【【【【【sbit IO=P1^1;】】】】】
sbit SCLK=P2^5;// 【【【【【【sbit SCLK=P1^0;】】】】】
sbit RST=P3^3;//【【【【【【sbit RST=P1^2;】】】】】
sbit ACC0=ACC^0;
sbit ACC7=ACC^7;
/************************************************************
ACC累加器=A
ACC.0=E0H
ACC.0就是ACC的第0位。Acc可以位寻址。
累加器ACC是一个8位的存储单元,是用来放数据的。但是,这个存储单元有其特殊的地位,
是单片机中一个非常关键的单元,很多运算都要通过ACC来进行。以后在学习指令时,
常用A来表示累加器。但有一些地方例外,比如在PUSH指令中,就必须用ACC这样的名字。
一般的说法,A代表了累加器中的内容、而ACC代表的是累加器的地址。
***************************************************************/
//校时按键与C51的引脚连接定义
sbit key1=P1^0; // 【【【【【【sbit key1=P1^5; 】】】】】 //设置键
sbit key2=P1^1; //【【【【【【sbit key2=P1^6; 】】】】】 //加键
sbit key3=P1^2; //【【【【【【sbit key3=P1^7;】】】】】 //减键
sbit buzzer=P2^3;//【【【【【【sbit buzzer=P1^3; 】】】】】//蜂鸣器,通过三极管9012驱动,端口低电平响
/**************************************************************/
uchar code tab1[]={"20 - - "}; //年显示的固定字符
uchar code tab2[]={" : : "};//时间显示的固定字符
//延时函数,后面经常调用
void delay(uint xms)//延时函数,有参函数
{
uint x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
/*****************************就开头这一部分有端口定义****************************************/
【【【【【【【【【【【【【【【【
还有DS18B20_3.h开头一段程序
】】】】】】】】】】】】】】】】
/*****************************就开头这一部分有端口定义****************************************/
sbit DQ = P2^2; //【【【【【【sbit DQ = P3^3; 】】】】】 // 定义DQ引脚为P3.3
/******************************* 延时函数 ********************************
* 功能:在11.059MHz的晶振条件下调用本函数需要24μs ,然后每次计数需16μs
**************************************************************************/
void DS18_delay(int useconds) {
int s;
for (s=0; s<useconds;s++);
}
/*****************************就开头这一部分有端口定义****************************************/
[ 本帖最后由 carlhzy 于 2011-4-21 23:34 编辑 ] |
|