资源简介

PROTEUS仿真单片机最小系统,需要的就下吧

资源截图

代码片段和文件信息

#include 
/**********测温*************************/
#define uchar unsigned char
#define uint unsigned int
sbit DS=P1^7; 
sbit E=P2^4;
sbit RS=P2^6;
sbit RW=P2^5;
const uchar NoDisp=0;
const uchar NoCur=1;
const uchar CurNoFlash=2;
const uchar CurFlash=3;
/**********测温*************************/
void long_delay(void); 
void short_delay(void); 
void delay10ms(unsigned char); 
void write7279(unsigned char unsigned char); // 写入HD7279
void send_byte(unsigned char);         //发送1个字节    

unsigned char read7279(unsigned char);           // 读HD7279
unsigned char receive_byte(void);      //接受1个字节
unsigned char digit[5];                //变量即I/O口定义
unsigned char key_number j k;
unsigned int tmr;
unsigned long wait_cnter;

sbit cs=P2^0;  // 
sbit clk=P2^1;  //
sbit dat=P2^2;  //  
sbit key=P2^3;  // 
//****** HD7279A ******
#define CMD_RESET 0xa4      //复位指令
#define CMD_TEST 0xbf       //测试指令
#define DECODE0 0x80        //方式0译码
#define DECODE1 0xc8        //方式1译码
#define CMD_READ 0x15       //读键盘指令
#define UNDECODE 0x90       //不译码指令
#define RTL_CYCLE 0xa3      //循环左移
#define RTR_CYCLE 0xa2      //循环右移
#define RTL_UNCYL 0xa1      //左移
#define RTR_UNCYL 0xa0      //右移
#define ACTCTL 0x98         //消隐
#define SEGON 0xe0          //段电亮
#define SEGOFF 0xc0         //闪烁控制
#define blinkCTL 0x88
/*****************测温**********************************/
void mdelay(uint z)
{
uint xy;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void WaitIdle()
{

RS=0;
RW=1;
//_nop_();也可以不要
E=1;
mdelay(5);
while((P0&0x80)==0x80)
   {
     E=0;  //这两句protues仿真必须加;仿真器仿真也通过。
     E=1;  
   };
E=0;
}

void LcdWcn(uchar c)
{
RS=0;
RW=0;
P0=c;
mdelay(5);
E=1;
mdelay(5);
E=0;
}

void LcdWc(uchar c)
{
WaitIdle();
LcdWcn(c);

}

void LcdWd(uchar c)
{
WaitIdle();
RS=1;
RW=0;
P0=c;
mdelay(5);
E=1;
mdelay(5);
mdelay(5);
E=0;
}

void ClrLcd()
{
LcdWc(0x01);
}

void RstLcd()
{

// dula=0;//关闭数码管锁存端,避免电流不够
// wela=0;
E=0;
LcdWc(0x38);
LcdWc(0x0f);
LcdWc(0x06);
LcdWc(0x01);
}
void SetCur(uchar Para)
{
mdelay(2);
switch(Para)
{
case 0:LcdWc(0x08);break;
case 1:LcdWc(0x0c);break;
case 2:LcdWc(0x0e);break;
case 3:LcdWc(0x0f);break;
default:break;

}
}
void LcdPos(uchar xPosuchar yPos)
{
uchar tmp;
xPos&=0x0f;
yPos&=0x01;
if(yPos==0)
tmp=xPos;
else
tmp=xPos+0x40;
tmp|=0x80;
LcdWc(tmp);
}
void WriteChar(uchar cuchar xPosuchar yPos)
{
LcdPos(xPosyPos);
LcdWd(c);
}

void WriteString(uchar *suchar xPosuchar yPos)
{
uchar i;
if(*s==0)
return;
for(i=0;;i++)
{
if(*(s+i)==0)
break;
WriteChar(*(s+i)xPosyPos);
xPos++;
if(xPos>=15)
break;
}
}

void dsreset(void)       // DS18B20初始化
{
  uint i;               
  DS=0; // 首先拉低,要求480us
  i=103;
  while(i>0)i--;
  DS=1; // 上升沿,要求15~60us
  i=4;
  while(i>0)i--;
}
void rxwait()//等待应答脉冲
{
uint i;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      87871  2008-08-14 15:19  最小系统2\system_814 - CADCAM.ZIP

     文件     130070  2008-08-14 15:19  最小系统2\system_814.LYT

     文件     184384  2008-08-11 12:32  最小系统2\system_end_new.DSN

     文件      10824  2008-08-24 19:44  最小系统2\复件 1\1.c

     文件      24946  2008-08-24 19:28  最小系统2\复件 1\1.LST

     文件      26474  2008-08-24 19:28  最小系统2\复件 1\1.OBJ

     文件      23369  2008-08-24 19:28  最小系统2\复件 1\df

     文件       7534  2008-08-24 19:28  最小系统2\复件 1\df.hex

     文件      31649  2008-08-24 19:28  最小系统2\复件 1\df.M51

     文件       1010  2008-08-25 18:14  最小系统2\复件 1\df.Opt

     文件        193  2008-08-25 18:14  最小系统2\复件 1\df.plg

     文件       1983  2008-08-24 09:48  最小系统2\复件 1\df.Uv2

     文件       1006  2008-08-25 18:11  最小系统2\复件 1\df_Opt.Bak

     文件          0  2008-08-24 08:58  最小系统2\复件 1\df_Uv2.Bak

     目录          0  2009-08-12 15:09  最小系统2\复件 1

     目录          0  2009-08-12 15:09  最小系统2

----------- ---------  ---------- -----  ----

               531313                    16


评论

共有 条评论