【音乐站php源码】【百分比尺指标源码】【网页源码查看器手机版下载】单片机源码源码_单片机程序源码

2024-11-18 20:15:48 来源:期货拐点指标公式源码 分类:综合

1.��Ƭ��Դ��Դ��
2.单片机语言 include<reg52.h>是单片什么意思
3.求超声波发生器的单片机源代码

单片机源码源码_单片机程序源码

��Ƭ��Դ��Դ��

       #include <reg.h>

       #include <math.h>

       #include <intrins.h>

       #define  uint unsigned int

       #define  uchar unsigned char

       #define INBUF_LEN 6 //数据长度

       unsigned char inbuf1[INBUF_LEN]={ '0','0','0','0','0','0'};//发送缓冲区

       unsigned char code table[] = { 0xc0,0xf9,0xa4,0xb0,0x,0x,0x,0xf8,0x,0x,0x,0x,0xc6,0xa1,0x,0x8e};//共阳数码管显示0~F

       unsigned char code dis_8[]={ '0','1','2','3','4','5','6','7','8','9',' ','-'};

       sbit CS=P2^5; //定义片选信号IO口

       sbit SCLK=P2^4; //定义时钟信号IO口

       sbit DIN=P2^3; //定义数据输入IO口

       uint temp;

       void init_serialcomm( void )

       {

       SCON = 0x ; //SCON: serail mode 1, 8-bit UART, enable ucvr

       T2CON=0x;

       TH2=0x;

       TL2=0x;

       RCAP2H=0xFF;

       RCAP2L=0xDC;

       TR2=1;

       }

       //向串口发送一个字符

       void send_char_com( unsigned char ch)

       {

       SBUF=ch;

       while (TI== 0 );

       TI= 0 ;

       }

       //向串口发送一个字符串,strlen 为该字符串长度

       void send_string_com( unsigned char *str,机源 unsigned int strlen)

       {

       unsigned int k= 0 ;

       do

       {

       send_char_com(*(str + k));

       k++;

       } while (k < strlen);

       }

       void delay(uint k)    //延时函数    

       {                         

       uint i,j;                    

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

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

       { ;}}                    

       }            

       //实现DA转换

       void DAConvert(uint Data){

         uchar i;

         Data<<=6;

         CS=0;

         SCLK=0;

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

           DIN=(bit)(Data&0x);

           SCLK=1;

           Data<<=1;

           SCLK=0;

         }

         CS=1;

         SCLK=0;

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

       }

        //定时器0中断处理中键扫描和显示

       void KeyAndDis_Time0(void) interrupt 1 using 2

       {

         TH0=0xdc;

         TL0=0x;//设定时值为ms

         P0= table[ temp/];    

         P2=0x;                

         delay(2);

         P0= table[ (temp%)/];    

         P2=0x;                

         delay(2);

         P0= table[ (temp%)/];    

         P2=0x;                

         delay(2);

         P0= table[ temp%];    

         P2=0x;                

         delay(2);

       }            

       //主程序

       main(){

          uint i;

       init_serialcomm(); //初始化串口

           EA = 1;                    //允许CPU中断

           ET0 = 1;                 //定时器0中断打开

           TMOD = 0x;            //设定时器0为模式1,位模式

           TH0=0xdc;

           TL0=0x;                //设定时值为ms

           TR0 = 1;

        while(1){

       for(i=;i<;i+=2){  

       DAConvert(i);//启动转换

             temp=i;

       inbuf1[0]=dis_8[temp/];

       inbuf1[1]=dis_8[(temp%)/];

        inbuf1[2]=dis_8[(temp%)/];

        inbuf1[3]=dis_8[temp%];

       inbuf1[4]=0x0d;

         inbuf1[5]=0;

       send_string_com(inbuf1,码源码单INBUF_LEN);//串口输出到上位机

              delay(1);

             }

       for(i=;i>;i-=2){  DAConvert(i);//启动转换

             temp=i;

          inbuf1[0]=dis_8[temp/];

          inbuf1[1]=dis_8[(temp%)/];

          inbuf1[2]=dis_8[(temp%)/];

          inbuf1[3]=dis_8[temp%];

          inbuf1[4]=0x0d;

          inbuf1[5]=0;

       send_string_com(inbuf1,INBUF_LEN);

              delay(1);

             }

         }

       }

       希望对你有帮助。

单片机语言 include<reg.h>是片机什么意思

       在单片机编程中,`#include ` 是程序音乐站php源码一个预编译指令,它的源码百分比尺指标源码作用是将系列单片机的专用头文件 reg.h 整合到你的源代码中。当程序遇到这个指令时,单片编译器会从指定路径查找并插入文件reg.h的机源内容,使得你可以直接使用其中定义的码源码单寄存器和函数,而无需重复编写相关的片机地址和操作指令。

       reg.h文件实质上是程序一份包含了或系列单片机特定资源的函数库,比如对P0、源码P1、单片网页源码查看器手机版下载P2、机源P3口的码源码单特殊寄存器(如P0口特殊寄存器寻址位sfrP0),程序状态字寄存器PSW,累加器ACC,武汉溯源码燕窝哪里有卖的以及一系列定时器、计数器控制寄存器等的声明和操作说明。通过这个头文件,你可以方便地访问和操作这些单片机的通达信最准超短线指标源码硬件资源。

       举几个例子,sfrP0=0x说明P0口的特殊寄存器可以通过0x的地址寻址,sfrSP=0x则是堆栈指针寄存器的地址。这样,当你的代码中写入`P0.0 = 1;`这样的语句时,实际上是在对P0口的第0位寄存器进行操作。

       总之,`include ` 是为了简化对系列单片机硬件资源的访问,提高了编程效率和代码的可读性。

求超声波发生器的单片机源代码

       //设计:ch

       //模块使用方法:一个控制口发一个US以上的高电平,就可以在接收口等待高电平输出.

       //一有输出就可以开定时器计时,当此口变为低电平时就可以读定时器的值,此时就为此次测

       //距的时间,方可算出距离.如此不断的周期测,就可以达到你移动测量的值了

       //波特率(晶振M)

       #include <reg.h>

       #include <intrins.h> //调用 _nop_(); 延时函数

       #define uchar unsigned char

       #define uint unsigned int

       sbit trigger=P2^0; //触发引脚

       sbit rx=P2^1; //接收引脚

       sbit key=P3^6; //按键

       unsigned char key_scan(void);

       uchar chaoshengbo(void);

       void uart_init(void);

       void uart(uchar distance);

       void chaoshengbo_init(void);

       uchar distance; //距离

       void main()

       {

        uart_init(); //串口初始化

        chaoshengbo_init(); //超声波初始化

        uart('A') ; //串口发送'A'

        while(1)

        {

        if (key_scan() == 1) //按键按下

        {

        distance = chaoshengbo(); //超声波测距

        uart(distance); //串口发送距离 单位厘米

        }

        }

       }

       unsigned char key_scan(void) //按键查询

       {

        unsigned char on = 0,i;

        while(1)

        {

        if(key==0) //判断是否按下

        {

        for(i=0;i<;i++); //软件延时

        if(key==0) //再次判断是否按下

        {

        on = 1;

        break; //跳出循环

        }

        }

        }

        while(key==0);

        return 1;

       }

       void uart_init(void) //串口初始化,用的是T1

       {

       TMOD=TMOD & 0x0f | 0x;

        TH1=0Xfd; //波特率(晶振M)

        TL1=0Xfd;

        TR1=1;

        REN=1;

        SM0=0;

        SM1=1;

       }

       void uart(uchar distance) //发送一个字节

       {

        SBUF = distance;

        while(!TI);

        TI = 0;

       }

       void chaoshengbo_init(void) //超声波初始化

       {

        trigger = 0;

       }

       uchar chaoshengbo(void) //超声波测距,返回厘米值

       {

        trigger=1; //给至少us的高电平信号

        _nop_();

        _nop_();

        _nop_(); //延时

        _nop_();

        _nop_();

        _nop_();

        TMOD=TMOD & 0xf0 |0x; //T0初始化

        TH0=0X0;

        TL0=0X0;

        trigger=0;

        while(!rx); //等待上升沿

        EA = 0; //关中断

        TR0=1; //开启T0定时器

        while(rx); //等待下降沿

        TR0=0; //关闭T0定时器

        EA = 1; //开中断

        return (TH0*+TL0)*0./2; //计算距离 单位厘米

       }

本文地址:http://8o.net.cn/html/87c165298260.html 欢迎转发