毕业论文

打赏
当前位置: 毕业论文 > 自动化 >

组态王与单片机通讯的开发 (4)

时间:2017-06-20 23:20来源:毕业论文
4.2 单片机系统的工作原理 图4.1 单片机系统框图 单片机最小系统是将单片机接上时钟电路和复位电路所得,使用的单片机是AT89S52,在单片机最小系统上加


4.2 单片机系统的工作原理
 图4.1 单片机系统框图
单片机最小系统是将单片机接上时钟电路和复位电路所得,使用的单片机是AT89S52,在单片机最小系统上加上温度传感器DS18B20、放大电路OP07、模/数转换器ADC0809就可以进行温度数据的采样。工控机与单片机之间连上MAX232进行MODBUS协议通讯。
AT89S52的功能:
① 拥有灵巧的8位CPU和在系统可编程Flash
② 晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)
③ 内部程序存储器(ROM)为 8KB
④ 内部数据存储器(RAM)为 256字节
⑤ 32 个可编程I/O 口线
⑥ 8 个中断向量源
⑦ 三个 16 位定时器/计数器
⑧ 三级加密程序存储器
⑨ 全双工UART串行通道
4.3 单片机系统的流程图
图4.2 单片机系统主程序流程图
初始化程序
{     SCON=0x50;                //UART为模式1,8位数据,允许接收
    TMOD=0x21;                //定时器1为模式2,8位自动重装,由TCON中的TRx控制
    PCON=0x00;                //SMOD=0
    TH1=0xFD;                //Baud:9600  fosc="11".0592MHz,波特率可变UART为模式1            
    TL1=0x00;
        PS=1;                //串口优先最高
    EA=1;                    //总中断
        ES=1;                //串口中断
    TR1=1;                    //timer 1 run
        Rptr=0;                
    RecvOk=0;
}            
串口中断程序
void Uart() interrupt 4 using 1//串口中断
{     byte m;
    ES=0;
        if(TI)
                TI=0;
    else if(RI)                //判断串口接收寄存器SBUF是否满了,满则RI由硬件置1
        {    RI=0;            //软件清零
            m=SBUF;
            if(Rptr<BufMax)//初始化BufMax=20
            {    Rbuf[Rptr]=m;//将接收到的数据存到数组里(除了HEAD)
                Rptr++;
            }
            if(m==HEAD)
                Rptr=0;
        if(m==OVER)            //判断是否接收完毕
                RecvOk=1;    //接收完毕标志位
        } 组态王与单片机通讯的开发 (4):http://www.751com.cn/zidonghua/lunwen_9546.html
------分隔线----------------------------
推荐内容