经典常用的单片机c程序 - 深圳led背光源生产厂家,lcd显示屏,lcm液晶显示模块|模组厂-尊龙凯时

  • 尊龙凯时


  • 

    •  深圳市尊龙凯时产品分类列表

      联系我们

      公司名称:深圳市尊龙凯时光电有限公司
      厂址:中国.广东省.深圳市宝安西乡臣田工业区

      营销专线
      吴先生 手机:13538278608
      胡先生 手机 :13823360976
      固定电话:86-0755-28246146/
      28246906/28246536/28247229
      电话传真 :86-0755-89715671
      投诉与售后咨询 黄小姐 :13823217679
      胡先生 :13928021976

      Email:bly@zgquming.com

      公司网址 :https://www.zgquming.com/

      经典常用的单片机c程序

      经典常用的单片机c程序

      //16进制<->10进制互换程序

      unsigned char d[10]; //用于显示的10位显示缓存

      //========================================================

      //16进制to10进制输出子程序:显示数据,起始位 ,结束位,有无小数点

      //========================================================

      void output(unsigned long dd,unsigned char s,unsigned char

      e,unsigned char DIP) {

      unsigned long div;

      unsigned char tm[8],i,j;

      div=10000000;

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

      tm[i]=dd/div;

      dd%=div;

      div/=10;

      }

      for (i=0;i<6;i++) {

      if (tm[i]!=0) break;

      tm[i]=nul;

      }

      tm[5]|=dip; //小数点控制,请看“串行LED数码管显示驱动程序”

      j=7;

      for (i=s;i d[i]=tm[j];

      j–;

      }

      }

      //把显示位5-9位的10进制数转换成为16进制数

      unsigned int input(void) {

      unsigned int dd,dat;

      dd=10000;dat=0;

      for (i=5;i<10;i++) {

      dat+=dd*temp;

      dd/=10;

      }

      return(dat);

      }

      /* 89C51系列CPU编程器接收CPU程序*/

      #i nclude

      #i nclude

      #i nclude

      #define e 8

      #define p 9

      #define l 10

      sbit led=P3^2;

      sbit p27=P2^7;

      sbit p26=P2^6;

      sbit p36=P3^6;

      sbit p37=P3^7;

      sbit rst=P3^3;

      sbit ale=P3^5;

      sbit vpp=P3^4;

      bit b_break;

      unsigned int adds;

      // 13.8mS

      void int_t0(void) interrupt 1 {

      TH0=-100;

      b_break=1;

      }

      void wait(unsigned char w) {

      unsigned int t=w*184;

      b_break=0;

      TL0=-t%256-1;TH0=-t/256;

      while (b_break==0) {}

      }

      void nop(void) {

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      _nop_();_nop_();_nop_();_nop_();

      }

      unsigned char command(void) {

      TH0=-100;b_break=0;

      while (RI==0) {if (b_break==1) return(0);}

      RI=0;

      return(SBUF);

      }

      void earsure(unsigned char cpu) {

      switch (cpu) {

      case 1: //89C51

      case 2:rst=p26=1;p27=p36=p37=0;nop();vpp=1;nop();

      ale=0;wait(110);ale=1;nop();

      break;

      case 3:

      case 4:break;

      case 5:

      case 6:break;

      }

      }

      void program(unsigned char cpu) {

      unsigned int bdata adds=0;

      unsigned char d;

      switch (cpu) {

      case 1: //89C51

      case 2:

      p36=p37=1;rst=1;

      while (1) {

      TH0=-100;b_break=0;

      while (RI==0) {if (b_break==1) return;}

      RI=0;

      d=SBUF;

      //address

      P0=adds%256;

      P2=adds/256;

      p27=1;

      //data

      P1=d;

      nop(); //48clcl

      //vpp

      vpp=1;

      nop(); //48clcl

      //ale

      ale=0;

      wait(1);//100uS

      ale=1;

      nop(); //10uS

      vpp=0;

      nop(); //48clcl

      p27=0;

      nop(); //48clcl

      P1=0xff;

      TH0=-100;b_break=0;

      while (d!=P1) {if (b_break==1) return;} //data

      polling

      SBUF=d;

      adds++;

      }

      break;

      case 3:

      case 4:

      case 5:

      case 6:break;

      }

      }

      void LOCk(unsigned char cpu) {

      unsigned char i;

      switch (cpu) {

      case 1: //89c51

      case 2:

      //lock 1

      rst=p26=p36=p27=p37=1;nop();

      vpp=1;

      nop();

      ale=0;

      // for (i=0;i<6;i++) wait(100);

      wait(1);

      ale=1;

      nop();

      vpp=0;

      nop();

      //lock 2

      rst=p26=p27=1;p36=p37=0;nop();

      vpp=1;

      nop();

      ale=0;

      // for (i=0;i<6;i++) wait(100);

      wait(1);

      ale=1;

      nop();

      vpp=0;

      nop();

      //lock 3

      rst=p26=p36=1;p27=p37=0;nop();

      vpp=1;

      nop();

      ale=0;

      // for (i=0;i<6;i++) wait(100);

      wait(1);

      ale=1;

      nop();

      vpp=0;

      nop();

      break;

      case 3:

      case 4:

      case 5:

      case 6:break;

      }

      }

      void main(void) {

      unsigned char disp,flash,temp,cpu;

      EA=1;

      SCON=0xd8;PCON=0×80;

      TMOD=0×21;

      TL1=TH1=0xff;TR1=1;

      TH0=-100;ET0=TR0=1;

      flash=0×80;

      while (1) {

      temp=command();

      switch (temp) {

      case 0:

      case 1: //89c51

      case 2: //89C52

      case 3: //80f51

      case 4: //80F52

      case 5: //87F51

      case 6:cpu=temp;SBUF=temp;break;//87f52

      case e:SBUF=temp;earsure(cpu);break; //erasure

      case p:SBUF=temp;program(cpu);break; //program

      case l:LOCk(cpu);SBUF=temp;break; //lock

      default:SBUF=temp;break;

      }

      b_break=0;

      if ((++disp)>flash) {disp=0;LED=!led;}

      }

      }

      //HT1380实时时钟驱动程序

      sbit clock_dat=P0^1;

      sbit clock_clk=P0^2;

      sbit clock_rst=P0^3;

      sbit a0=ACC^0;

      sbit a1=ACC^1;

      sbit a2=ACC^2;

      sbit a3=ACC^3;

      sbit a4=ACC^4;

      sbit a5=ACC^5;

      sbit a6=ACC^6;

      sbit a7=ACC^7;

      void clock_out(unsigned char dd) {

      ACC=dd;

      clock_dat=a0;clock_clk=1;clock_clk=0;

      clock_dat=a1;clock_clk=1;clock_clk=0;

      clock_dat=a2;clock_clk=1;clock_clk=0;

      clock_dat=a3;clock_clk=1;clock_clk=0;

      clock_dat=a4;clock_clk=1;clock_clk=0;

      clock_dat=a5;clock_clk=1;clock_clk=0;

      clock_dat=a6;clock_clk=1;clock_clk=0;

      clock_dat=a7;clock_clk=1;clock_clk=0;

      }

      unsigned char clock_in(void) {

      clock_dat=1;

      a0=clock_dat;

      clock_clk=1;clock_clk=0;a1=clock_dat;

      clock_clk=1;clock_clk=0;a2=clock_dat;

      clock_clk=1;clock_clk=0;a3=clock_dat;

      clock_clk=1;clock_clk=0;a4=clock_dat;

      clock_clk=1;clock_clk=0;a5=clock_dat;

      clock_clk=1;clock_clk=0;a6=clock_dat;

      clock_clk=1;clock_clk=0;a7=clock_dat;

      return(ACC);

      }

      unsigned char read_clock(unsigned char ord) {

      unsigned char dd=0;

      clock_clk=0;

      clock_rst=0;

      clock_rst=1;

      clock_out(ord);

      dd=clock_in();

      clock_rst=0;

      clock_clk=1;

      return(dd);

      }

      void write_clock(unsigned char ord,unsigned char dd) {

      clock_clk=0;

      clock_rst=0;

      clock_rst=1;

      clock_out(ord);

      clock_out(dd);

      clock_rst=0;

      clock_clk=1;

      }

      
      首 页 | 公司简介 | 企业荣誉 | 产品中心 | 新闻中心 | 联系我们 | 集团首页

      版权所有 深圳市尊龙凯时光电有限公司     粤ICP备08129267号-1

    • XML地图