历史上的今天
返回首页

历史上的今天

今天是:2024年11月07日(星期四)

正在发生

2019年11月07日 | pic32单片机RS485通信程序

2019-11-07 来源:51hei

pic32源程序如下:

/********************************************************************************************************

*********************************************************************************************************

*

* File                : RS485.c

* Hardware Environment:        easyPIC pro v2

* Build Environment   : MPLAB V8.66 + PIC32 V2.01

* Microcontroller     : PIC32MX795F512L

* Version             : V1.0

* By                  : JEFF

* DATE                                  : 20150320

*

* Hardware Connection:



  CN5(0~5)-----RB8~RB13, Segment LED Connetion

  CN6(0~7)-----RD0~RD7


  RE/DE------RB15

  RO   ------RF4

  DI   ------RF5

*

*(c) Copyright 2010-2018, Logifind Tech CO.,LTD

*http://www.logifind.com

*All Rights Reserved

*

*********************************************************************************************************

********************************************************************************************************/

//

// 实验描述:串口助手发送数据,接收16 Byte数据,RS485 发出16Byte数据

//           LED及数码管 显示缓冲区数据.

//

// 头 文 件:C:Program FilesMicrochipMPLAB C32 Suitepic32-libsincludeproc

//

// 配 置 位:菜单栏 -> Help -> Topics.. -> PIC32MX Config Setting 

//

// 波 特 率:9600  N 8 1 

//

// 注意事项:每次必须累积 16Byte 数据,单片机才回传数据

//

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


#include                    //调用通用头文件


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

// POSCMOD = XT, FNOSC = PRIPLL, FWDTEN = OFF

// PLLIDIV = DIV_2, PLLMUL = MUL_20

// PBDIV = 4 (default)

// Main clock = 4MHz /2 * 20    =  40MHz

// Peripheral clock = 40MHz /4  =  10MHz

// SYSCLK = 40 MHz (4MHz Crystal/FPLLIDIV * FPLLMUL / FPLLODIV)

// PBCLK  = 10 MHz


#pragma config POSCMOD  = XT         //主振荡器  

#pragma config FNOSC    = PRIPLL     //倍频模式 

#pragma config FPLLIDIV = DIV_2      //输入分频 1:2

#pragma config FPLLMUL  = MUL_20     //PPL 倍频 1:20

#pragma config FPLLODIV = DIV_1      //输出分频 1:1

#pragma config FPBDIV   = DIV_4      //外设时钟

#pragma config FWDTEN   = OFF        //关闭看门狗

//#pragma config ICESEL   = ICS_PGx1   //调试端口1

#pragma config ICESEL   = ICS_PGx2   //调试端口2


#define SysLED     _LATB5                       //CPU LED

#define SPEKAK     _LATD8                       //蜂呜器

#define RELAY      _LATD8                       //继电器

#define bctl_485   _LATB15                      //485控制端



#define Smg_a    0xFE                           //定义段码

#define Smg_b    0xFD

#define Smg_c    0xFB

#define Smg_d    0xF7

#define Smg_e    0xEF

#define Smg_f    0xDF

#define Smg_g    0xBF

#define Smg_dp   0x7F


#define Bmp0Map          Smg_a & Smg_b & Smg_c & Smg_d & Smg_e & Smg_f 

#define Bmp1Map          Smg_b & Smg_c

#define Bmp2Map          Smg_a & Smg_b & Smg_d & Smg_e & Smg_g

#define Bmp3Map          Smg_a & Smg_b & Smg_c & Smg_d & Smg_g

#define Bmp4Map          Smg_b & Smg_c & Smg_f & Smg_g

#define Bmp5Map          Smg_a & Smg_c & Smg_d & Smg_f & Smg_g

#define Bmp6Map          Smg_a & Smg_c & Smg_d & Smg_e & Smg_f & Smg_g

#define Bmp7Map          Smg_a & Smg_b & Smg_c 

#define Bmp8Map          Smg_a & Smg_b & Smg_c & Smg_d & Smg_e & Smg_f & Smg_g

#define Bmp9Map          Smg_a & Smg_b & Smg_c & Smg_d & Smg_f & Smg_g

#define BmpAMap          Smg_a & Smg_b & Smg_c & Smg_e & Smg_f & Smg_g

#define BmpBMap          Smg_c & Smg_d & Smg_e & Smg_f & Smg_g

#define BmpCMap          Smg_a & Smg_d & Smg_e & Smg_f 

#define BmpDMap          Smg_b & Smg_c & Smg_d & Smg_e & Smg_g

#define BmpEMap          Smg_a & Smg_d & Smg_e & Smg_f & Smg_g

#define BmpFMap          Smg_a & Smg_e & Smg_f & Smg_g





const unsigned char SegCode[] =                //显示段码表

{

        Bmp0Map,Bmp1Map,Bmp2Map,Bmp3Map,Bmp4Map,Bmp5Map,Bmp6Map,Bmp7Map,

        Bmp8Map,Bmp9Map,BmpAMap,BmpBMap,BmpCMap,BmpDMap,BmpEMap,BmpFMap

};


unsigned char DpyNum[6] = {Smg_g,Smg_g,Smg_g,Smg_g,Smg_g,Smg_g}; //显示缓冲区   


unsigned char RxBuffer[16] = {0,0,0,0};        //串口接收缓冲区

unsigned char SysTick = 0;                     //系统时基

unsigned char COM2_RecvCnt  = 0;               //计数清零

unsigned char COM2_RecvFlag = 0;               //接收标志

unsigned char COM2_SendDatCnt = 0;             //发送计数        

unsigned char COM2_SendDatLength = 0;          //发送长度


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

//  延时函数

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

void Delay_xmS(unsigned int i)                

{

        unsigned int j;

        for(;i>0;i--)

        {

                Nop();

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

                {

                        Nop();

                        ClearWDT();

                }

        }        

}


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

//  串口2初始化函数

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

void UART2_Init(void)

{

        bctl_485 = 0;                    // 接收模式

        U2MODEbits.SIDL  = 0;            // IDLE工作

        U2MODEbits.IREN  = 0;            // 禁止IrDA

        U2MODEbits.UEN   = 0;            // 使能RX TX引脚

        U2MODEbits.WAKE  = 0;            // 禁止唤醒

        U2MODEbits.ABAUD = 0;            // 禁止自动BUD

        U2MODEbits.RXINV = 0;            // 空闲状态为1

        U2MODEbits.BRGH  = 0;            // 16x标准波特率

        U2MODEbits.PDSEL = 0;            // 8位无奇偶校验

        U2MODEbits.STSEL = 0;            // 1个停止位

        

        U2STAbits.ADM_EN   = 0;          // 关自动地址检测

        U2STAbits.UTXISEL1 = 0;          // 发送完所有字符后中断

        U2STAbits.UTXISEL0 = 1;

        U2STAbits.UTXINV   = 0;          // 空闲状态为1

        U2STAbits.URXEN    = 1;          // 接收器使能        

        

        U2STAbits.UTXBRK   = 0;          // 禁止发送间隔位

        U2STAbits.UTXEN    = 1;          // 发送器使能

                                                       

        U2STAbits.URXISEL1 = 0;          // 接收1个字符中断

        U2STAbits.URXISEL0 = 0;

        

        U2BRG = 64;                      // PBCLK 10MHz  N 8 1 9600 BRG = 64;

        

        IPC8bits.U2IP   = 4;             // 主优选级

        IPC8bits.U2IS   = 1;             // 次优选级

        

        IEC1bits.U2RXIE = 1;             // 接收中断

        IEC1bits.U2TXIE = 0;             // 发送中断

        

        U2MODEbits.ON   = 1;             // 串口使能 

推荐阅读

史海拾趣

Alcatel-Lucent公司的发展小趣事
  1. Alcatel-Lucent 的起源可以追溯到 19 世纪末的法国。1880 年,一家名为 Compagnie Générale d'Électricité (CGE) 的公司在法国成立,主要从事电信和电气设备的制造和销售。这家公司后来成为了 Alcatel-Lucent 的前身之一。

  2. 20 世纪初,CGE 开始涉足电信领域,并开始在法国和国际市场上发展。该公司逐渐成为了一家领先的电信设备制造商,并参与了许多重要的电信基础设施项目。

  3. 2006 年,法国的 Alcatel 和美国的 Lucent Technologies 公司宣布合并,成立了 Alcatel-Lucent 公司。这次合并创造了一个综合性的电信设备制造商,覆盖了通信网络、软件和服务等多个领域。

  4. 合并后,Alcatel-Lucent 成为了全球领先的电信设备供应商之一,为全球各地的电信运营商提供了广泛的产品和解决方案,包括固定和移动网络、光纤通信、宽带接入和数据中心等领域。

  5. 在成立后的几年里,Alcatel-Lucent 继续推出创新的产品和技术,包括下一代移动通信技术 LTE、IP/MPLS 网络和云计算解决方案等,为数字化时代的通信基础设施发展做出了重要贡献。

ELANTEC (Renesas )公司的发展小趣事

近年来,随着全球半导体市场的不断变化和技术的快速发展,Renesas也面临着一些挑战。为了应对这些挑战并保持竞争力,Renesas开始进行战略转型和结构调整。公司加强了与客户的合作和沟通,深入了解市场需求和趋势;同时,Renesas还加大了对新技术和新产品的研发投入,不断提升自身的技术实力和创新能力。此外,Renesas还注重人才培养和引进,打造了一支高素质、专业化的团队。这些措施的实施使Renesas在应对挑战和转型过程中取得了积极的成效。

芯邦(Chipsbank)公司的发展小趣事

近年来,芯邦科技的营收规模逐渐增大,从2020年到2022年,公司的营业收入分别达到了0.99亿元、1.75亿元和1.92亿元。尽管增速呈现下降趋势,但芯邦科技在电子行业中依然保持着稳健的市场表现。同时,公司也注重研发投入,不断提升产品的技术水平和市场适应性。

CDIL[Continental Device India Pvt. Ltd.]公司的发展小趣事

自1964年起,CDIL便踏上了半导体制造的先驱之路。当时,电子产业正处于蓬勃发展的初期,CDIL凭借对技术的敏锐洞察和不懈追求,迅速成为印度乃至全球半导体制造领域的佼佼者。其硅芯片和器件的制造质量和技术水平均达到了世界级标准,为印度电子产业的发展奠定了坚实基础。

Good Sky Electric Co Ltd公司的发展小趣事
Z32A、Z32K、Z3025J型摇臂钻床广泛应用于机械加工领域中的钻孔、扩孔、铰孔、平面及攻螺纹等工序。它们适用于小批生产和在装配、修理车间加工大、重型零件等场景,具有工艺先进、性能可靠、操作维修方便等特点。
中环(Central)公司的发展小趣事

中环公司的前身可以追溯到1958年成立的天津市半导体材料厂。随着技术的不断进步和市场需求的增长,公司在1978年开始涉足区熔单晶硅制造领域,并于1981年正式进入太阳能单晶硅制造领域,成为国内最早涉足光伏领域的企业之一。这一转变不仅体现了中环对市场趋势的敏锐洞察,也为其后续在光伏领域的发展奠定了坚实的基础。

问答坊 | AI 解惑

网络摄像机各个部分的技术浅析

  关键字:网络摄像机   网络摄像机是传统摄像机与网络视频技术相结合的新一代产品,除了具备一般传统摄像机所有的图像捕捉功能外,机内还内置了数字化压缩控制器和基于WEB的操作系统,使得视频数据经压缩加密后,通过网络送至终端用户。本文 ...…

查看全部问答>

MFC requires WINVER to be #defined to 0x0400 or greater

MFC requires WINVER to be #defined to 0x0400 or greater…

查看全部问答>

如何利用VOIMAGE实现特效浏览图片

如何利用VOIMAGE实现特效浏览图片,包括JPG等格式,,我找到了BMP的代码,,,但用VOIMAGE的时候不知道该怎么做了....…

查看全部问答>

C8051F060

谁能给我一个C8051F060的16位高速AD采集的原理图 小弟的邮箱:hgl_killer@yahoo.com.cn 多谢…

查看全部问答>

计算机组成原理课程设计、电子钟、电子琴、智能交通灯电路图!用8255!~和汇编程序!

各位高手:今年计算机组成原理课程设计,电子钟,电子琴,智能交通灯! 这些电路图!我们是用实验箱做实验的!主要电路图不会画  和借口不知道从哪接! 希望大家能看看有没有会的,和做过这样的课程设计!还有相关的汇编语言程序! 希 ...…

查看全部问答>

STM32实现SPI简单通信配置

/******************************************************* 说明:        次程序成功实现SPI简单通信配置,能实现SPI1发送 数据,SPI2接收数据简单通信功能,仅供测试使用。 *********************************** ...…

查看全部问答>

南华大学黄智伟系列 --2011年赛前赛题大分析!

本帖最后由 paulhyde 于 2014-9-15 09:27 编辑 2011.8.25全国大学生电子设计竞赛组委会专家组在网上公布本次全国大学生电子设计竞赛需要的基本仪器和主要元器件清单,以便参赛学校做好准备。通过对所公布的基本仪器和主要元器件清单进行分析,可以 ...…

查看全部问答>

LM3S中断程序调通了!

   经过奋斗,LM3S811的中断程序调通了! ** Created By:                    hu_hejiaun lai_qingmin** Created date:  & ...…

查看全部问答>