历史上的今天
返回首页

历史上的今天

今天是:2024年10月23日(星期三)

正在发生

2019年10月23日 | ARM基本知识

2019-10-23 来源:51hei

除了正常的保存之外,在编译无误后,选择另存为相同名称的.h文件,将点h文件中的main函数名称修改成其他名称,如xmain,或main1等,则新项目就可以调用原项目中的函数!

一、项目1先编写LCD1602,编译无错误后再将LCD1602.c另存为LCD1602.h,将LCD1602.h中的main()函数文件改为main0()

#include

#include

sbit rs=P2^0;

sbit rw=P2^1;

sbit e=P2^2;

void delay(unsigned char us)

{

  while(us--);

}

void w1602(bit r,unsigned char dat)

{

  rs=r;

rw=0;

e=0;

P1=dat;

delay(3);

e=1;

delay(7);

e=0;

}

void init1602()

{

    w1602(0,0x38);

 w1602(0,0x06);

 w1602(0,0x0c);

 w1602(0,0x01);

}

void main()

{

  char i;

init1602();

w1602(0,0x80);

for(i=0;i<10;i++)

 {

        

 w1602(1,0x30+i);

    }

二、建立DS1302万年历项目DS1302

#include"reg52.h"

#include"intrins.h"    //注意上面项目作为头文件调入该项目

#include"LCD1602.h"

sbit rst=P2^3;

sbit sclk=P2^4;

sbit Dio=P2^5;

sbit A7=ACC^7;

sbit B0=B^0;

void w1302(unsigned char addr,dat)

{

  char i;

rst=0;

sclk=0;

rst=1;

for(i=0;i<8;i++)

{

B=addr>>i;     

sclk=0;

Dio=B0;

sclk=1; 

   }

for(i=0;i<8;i++)

{

     B=dat>>i;     

sclk=0;

Dio=B0;

sclk=1;

   }

rst=0;

}

unsigned char r1302(unsigned char addr)

{

  char i;

rst=0;

sclk=0;

_nop_();

rst=1;

for(i=0;i<8;i++)

{

     B=addr>>i;     

sclk=0;

Dio=B0;

sclk=1;

   } 

for(i=0;i<8;i++)

{     

A7=Dio;

sclk=1;

ACC=ACC>>1;

sclk=0; 

   }

rst=0;

return(ACC);

}

void main()

{

init1602();            //上以项目中的函数可以无条件调用

w1302(0x80,0x33);

while(1)

{

    w1602(0,0x80);

w1602(1,0x30+((r1302(0x81)>>4) & 0x0f));//调用

w1602(1,0x30+(r1302(0x81) & 0x0f));//调用

  }

三、建立温度DS18B20程序项目

#include"reg52.h"

#include"intrins.h"

#include"LCD1602.h"

sbit ds18b20=P2^6;

unsigned char dd[]="date:";

unsigned char dd1[]="temp:";

unsigned char temp1,temp2,TT,ttT;


bit Reset(void)

{

   bit k;

   ds18b20=0;   

   delay(145);     

   ds18b20=1;      

   delay(10);   

   k=ds18b20; 

   delay(90);

   return k;

}

//---------------------------

unsigned char ReadByte(void)

{

   unsigned char j,buf=0;

   for(j=0;j<8;j++)

   {

        buf=buf>>1;

        ds18b20=0; 

        _nop_(); 

        _nop_();

        ds18b20=1; 

        _nop_(); 

        _nop_();

        _nop_();

        _nop_();

        _nop_();

        _nop_();

        if(ds18b20==1)

            buf|=0x80;

        delay(8);

                   

     }

   return buf;

}

//-------------------------------

void WriteByte(unsigned char dat)

{

    unsigned char j;

    for(j=0;j<8;j++)

     {             

       if(dat&0x01)

         {      

            ds18b20=0; 

            _nop_();

            _nop_();

            ds18b20=1;

            delay(10);

         }

      else 

         {            

            ds18b20=0;

            delay(10);

            ds18b20=1; 

            _nop_();

            _nop_();

         }

    dat=dat>>1;

 }

}

//------------------

bit Convert(void)

{    

 if(Reset()==0)

     {  

        WriteByte(0xcc);

        WriteByte(0x44);

        return 1; 

     }

 else   

     {   

        return 0; 

     }

}

//---------------------------------------

void ReadFlash(void)

{    

 unsigned char Lsb,Msb; 

    if(Reset()==0)

      {

        WriteByte(0xcc);

        WriteByte(0xbe);

        Lsb=ReadByte();

        Msb=ReadByte();

        temp1=Lsb;//L 8bit

        temp2=Msb;//H 8bit

      } 

     else

      {

        temp1=0;

        temp2=0;

      }

}

void disp_temp(unsigned char addr)

{

char i,m;

   

         if(Convert()==1)      

              {      

                ReadFlash();               

                TT=(temp2<<4)|(temp1>>4)&0x7F;

if((TT & 0x80)==0x80)

                     ttT=(~TT & 0x3F)+1;

else

     ttT=TT;

              }

m=20;

while(m--)

{

w1602(0,addr);

for(i=0;i<5;i++)

    w1602(1,dd1[i]);

if((TT & 0x80)==0x80)   //-

    {

       if(TT==0x80)

{

   ttT=128;

    w1602(1,0x20);

                                            w1602(1,0X30+(ttT/100));

    w1602(1,0x30+(ttT%100)/10);

     w1602(1,0x30+ttT%10);

                                         }

else

{

    w1602(1,0x20);

    w1602(1,0x2d);

                    if(ttT/10>0)

w1602(1,0x30+ttT/10);

    else

        w1602(1,0x20);

     w1602(1,0x30+ttT%10);

}

}

  else               //+

                                           {

w1602(1,0x20);

  if(ttT/100>0)

{

       w1602(1,0X30+(ttT/100));

w1602(1,0x30+(ttT%100)/10);

w1602(1,0x30+(ttT%10));

}

   else

{

if((ttT%100)/10>0)

{

w1602(1,0x30+(ttT%100)/10);

w1602(1,0x30+ttT%10);

}

else    

   w1602(1,0x30+ttT%10); }       

              }

                                              w1602(1,0x22);

w1602(1,0x43);

w1602(1,0x20);

w1602(1,0x20);

}

}

void main()

{

init1602();

while(1)

{

        disp_temp(0xc3);

       }

}

 四、建立综合项目DS1302_18B20

#include"reg52.h"

#include"intrins.h"

#include"DS1302.h"

sbit ds18b20=P2^6;


unsigned char dd[]="date:";

unsigned char dd1[]="temp:";

unsigned char temp1,temp2,TT,ttT;


bit Reset(void)

{

   bit k;

   ds18b20=0;   

   delay(145);     

   ds18b20=1;      

   delay(10);   

   k=ds18b20; 

   delay(90);

   return k;

}

//---------------------------

unsigned char ReadByte(void)

{

   unsigned char j,buf=0;

   for(j=0;j<8;j++)

   {

        buf=buf>>1;

        ds18b20=0; 

        _nop_(); 

        _nop_();

        ds18b20=1; 

        _nop_(); 

        _nop_();

        _nop_();

        _nop_();

        _nop_();

        _nop_();

        if(ds18b20==1)

            buf|=0x80;

        delay(8);

                   

     }

   return buf;

}

//-------------------------------

void WriteByte(unsigned char dat)

{

    unsigned char j;

    for(j=0;j<8;j++)

     {             

       if(dat&0x01)

         {      

            ds18b20=0; 

            _nop_();

            _nop_();

            ds18b20=1;

            delay(10);

         }

      else 

         {            

            ds18b20=0;

            delay(10);

            ds18b20=1; 

            _nop_();

推荐阅读

史海拾趣

BRIGHT公司的发展小趣事

近年来,BRIGHT公司积极投身于太阳能领域的发展。他们推出了一种创新的商业模式,即帮助用户免费安装太阳能面板,并随后收取服务费。这一模式类似于有线电视的收费方式,有效降低了用户安装太阳能系统的门槛。通过与私人投资者的合作,BRIGHT公司成功承担了安装成本,并致力于向全球提供优质的屋顶太阳能解决方案。这一突破性的举措使得BRIGHT公司在太阳能领域取得了显著的成绩。

Forge Europa Ltd公司的发展小趣事

随着技术实力的不断增强,Forge Europa Ltd公司开始将目光投向国际市场。公司积极参与国际展会,与全球客户建立联系,并通过优化供应链管理,确保产品能够迅速响应国际市场需求。在欧洲市场,Forge Europa凭借其高品质的产品和专业的服务,迅速赢得了众多知名客户的青睐。同时,公司还不断拓展北美、亚洲等新兴市场,逐步建立起覆盖全球的销售网络。

Chemtronics公司的发展小趣事

自1958年成立以来,Chemtronics公司在电子维护和维修领域不断进取。最初,公司专注于生产一系列清洁剂产品,以其高效清洁能力获得了市场的认可。随着时间的推移,Chemtronics逐渐将产品线扩展至超纯溶剂、净化室级别擦拭棒和擦拭布等领域,进而又扩展到电子电气和电信工业的精密返工和维修工具。这一转变不仅体现了公司对市场需求的敏锐洞察,也彰显了其不断创新的精神。

广东长利光电(Changli Optoelectronic)公司的发展小趣事

进入21世纪,广东长利光电开始将目光投向国际市场。公司积极参加各种国际展览和交流活动,与世界各地的客户建立了广泛的联系。凭借优质的产品和服务,公司逐渐在国际市场上崭露头角。为了更好地服务全球客户,广东长利光电在中国设立了多个办事处,并建立了完善的销售和服务网络。

宁波晨翔电子(CONNFLY)公司的发展小趣事

在市场竞争日益激烈的环境下,晨翔电子始终坚持产品创新,不断推出具有市场竞争力的新产品。同时,公司还注重品牌建设,通过提升产品质量、优化服务流程、加强市场营销等方式,不断提高品牌知名度和美誉度。这一时期的努力,使得晨翔电子在电子连接器行业树立了良好的品牌形象。

AMI [American Megatrends Inc]公司的发展小趣事

为了提高产品质量和客户满意度,晨翔电子高度重视质量管理体系建设。公司先后通过了ISO9001质量管理体系认证、ISO14001环境体系认证、OHSAS18001职业健康安全体系认证及TS16949汽车质量体系认证。这些认证不仅证明了公司在质量管理方面的实力,也为公司赢得了更多客户的信任和支持。

问答坊 | AI 解惑

第五届全国大学生电子设计竞赛获奖作品选编

本帖最后由 paulhyde 于 2014-9-15 09:03 编辑 文件为pdg格式,用超星阅读器就可以打开了 四个文件要全部下载到同一个文件夹下才能全部解压出来  …

查看全部问答>

低频功率放大器

设计一多媒体放大器  要求失真小 功率大 [ 本帖最后由 315515297 于 2009-5-6 14:00 编辑 ]…

查看全部问答>

新买的示波器,怎么才能知道是不是全新的!

司新买了个普源的DS1052E,但商家送过来的时候已经拆封了 看起来是新的,商家也坚持是新的 怎么样才能知道是新的呢,听说有一个地方可以看开机次数!…

查看全部问答>

首届时代民芯杯电子设计大赛奖项揭晓,24万奖金全部有主

首届“时代民芯”杯电子设计大赛评审专家对参赛作品进行了评审,评审采取设计报告评审和现场答辩及实物演示相结合的方式进行,最终评审出11项大奖。从即日起进入异议期。 评委名单: 中国半导体行业协会 秘书长 陈 贤 《单片机与嵌入式系统应用 ...…

查看全部问答>

哪种SDRAM 是64M BYTE?

S3C2440的开发板,原带32M BYTE * 2 的内存。想扩大到64M BYTE * 2,请问哪家公司提供64M的SDRAM, 什么型号?SAMSUNG的SDRAM不想再用了…

查看全部问答>

#include 出现 C:\KEIL\C51\INC\SYNCMOS\SM8958A.H(11): error C231: 'P0':

我的project 里24C16.C、24C16.h、CS5532.C、cs5532.h、main.c五个文件,使用的是syncmos 的sm8958a 。其中在24C16.H里有#include ,在cs5532.h里也有#include ,现在我在main.c里有#include \"24c16.h\" 和 #include \"cs5532.h\",当我build main ...…

查看全部问答>

如何提高NAT效率?

系统加了NAT功能后,吞吐率很低。有没有fast NAT之类的方法提高系统性能啊? 给个思路即可…

查看全部问答>

CCS下调试EK-8962时出错得原因?

前几天我在调试EKK-8962时,IDE为CCS4.2.4,在debug时出现如下的错误:CORTEX_M3_0: Error connecting to the target: The target board you are attempting to connect to does not appear to be a Stellaris IDK and is not supported with thi ...…

查看全部问答>

伤了

#include<reg52.h>#include\"74hc595.h\"#define uchar unsigned char#define uint unsingned intuchar sa[32]={0};uchar sb[32]={0};uchar sx=0,sy=0,num,sf=1,i,sl=1; void main(){        TMOD = 0x11;&nb ...…

查看全部问答>