2020-01-19 14:32:38 zd845101500 阅读数 91
  • 巫妖王51单片机开发板配套视频课程

    本课程是巫妖王51单片机开发板的配套视频课程,本课程的目标是用少的时间带大家初级入门51单片机。配合巫妖王51单片机开发板,让大家花费少的时间少的钱就能轻松开启单片机学习之路。

    18627 人正在学习 去看看 朱有鹏

常用单片机调试方式有仿真器、串口、屏幕显示。

1、仿真器仿真

IAR、keil等集成开发环境配合仿真器调试程序很适合单片机

优点:可设置断点、实时查看内存等

缺点:要有仿真器

2、串口调试

相较于仿真器仿真,串口调试不需要仿真器,在某些没有或者不能使用仿真器的系统上更实用,通用性更强。

一般串口输出我们会使用重定向到串口的printf函数或者自定义的串口输出函数(比如:send_debug_msg(char* msg)),我们在程序中某处输出调试信息

#ifdef DEBUG
    send_debug_msg("exec 002");
#endif

像这样每句输出前后都会带上 #ifdef #endif,看起来不是很简洁,我们换一种写法让他只占用一行。

#ifdef DEBUG
#define DEBUGF(fmt) send_debug_msg(fmt)
#else
#define DEBUGF(fmt)
#endif

or

#ifdef DEBUG
#define DEBUGF(fmt,args...) printf(fmt ,##args)
#else
#define DEBUGF(fmt,args...)
#endif

这样我们在写程序时可以直接写DEBUGF("exec 002");如果DEBUG被定义了这句话就会被替换为send_debug_msg("exec 002");正常输出。否则会被替换为空,用printf函数调试用法也类似。

DEBUGF("exec 002");

等价于

#ifdef DEBUG
    send_debug_msg("exec 002");
#endif

3、屏幕显示

使用屏幕显示调试的信息,这种方式有较大限制,因为很多目标系统并不配有屏幕,不推荐使用

单片机
2019-12-29 03:19:41 weixin_43403286 阅读数 20
  • 巫妖王51单片机开发板配套视频课程

    本课程是巫妖王51单片机开发板的配套视频课程,本课程的目标是用少的时间带大家初级入门51单片机。配合巫妖王51单片机开发板,让大家花费少的时间少的钱就能轻松开启单片机学习之路。

    18627 人正在学习 去看看 朱有鹏

单片机学习
概念
一种集成的电路芯片
采用超大规模的集成电路技术
计算机部件集成
小型微型计算机系统
工业控制领域广泛应用
EDA
电子设计自动化
需求
评估
软件设计
硬件调试
软硬件综合调试
硬件设计
软件调试
模拟电路
电阻
分流,阻流,分压,转化为内能
电容
隔直通交,储能
二极管
正向导通,反向截止
三极管
电路开关
三端稳压芯片
运算放大器
比较器
数字电路
晶振
稳压
Proteus
电路仿真
Keil
程序编写
C语言
Keil编程流程
建立一个工程:project-new project
选择一个器件:Atmel->AT89C51
建立一个.c文件:New -> xxx.c
将.c文件添加到工程里面
编写代码
Build target
proteus里面载入生成的hex文件
或者下载到真实的电路板里面

在这里插入图片描述

2016-11-05 18:27:24 shenziheng1 阅读数 7445
  • 巫妖王51单片机开发板配套视频课程

    本课程是巫妖王51单片机开发板的配套视频课程,本课程的目标是用少的时间带大家初级入门51单片机。配合巫妖王51单片机开发板,让大家花费少的时间少的钱就能轻松开启单片机学习之路。

    18627 人正在学习 去看看 朱有鹏

1.为什么也是C语言?

用C 语言来开发单片机系统软件最大的好处是编写代码效率高、软件调试直观、维护升级方便、代码的重复利用率高等,因此C 语言编程在单片机系统设计中越来越广泛的运用。PIC 单片机的软件开发,同样可以用C 语言实现。
Microchip 公司没有自行开发PIC单片机的C 语言编译器,但其他公司有开发众多支持PIC 单片机的C 语言编译器,常见的有Hitech、CCS、IAR、Bytecraft 等公司。其中最常用的是Hitech 公司的PICC 编译器,它稳定可靠,编译生成的代码效率高,在用PIC 单片机开发者中得到广泛认可。
Hitech-PICC 编译器基本上符合ANSI C标准,但是不支持函数的递归调用。其主要原因是因为PIC 单片机特殊的堆栈结构。PIC 单片机的堆栈是硬件实现的,其深度已随芯片固定,无法实现需要大量堆栈操作的递归算法。  成的代码效率高,在用PIC 单片机开发者中得到广泛认可。

2.MpLab中配置PIC C编译环境,并进行项目开发

为便于PICC编译器的编译环境设置,应先在MPLAB IDE集成开发环境下创建一个PICC  C编译器的项目。
1.启动MPLAB IDE7.00集成开发环境窗口。选择集成开发环境中的Project->New菜单项,打开如下所示的新项目对话框,在此对话框中设置项目名和项目路径。

在项目名文本框中输入项目名led,在项目路径文本框中输入项目路径D:\led,也可以通过单击Browse按钮选择项目名的保存路径。
2.器件选择,其操作过程如下所示。首先在MPLAB集成开发环境中打开Configure菜单,然后单击Select Device菜单项,弹出如下所示的器件选择对话框。此处可以选择PICl6F877A作为开发芯片。

3.设置项目
在创建项目和选定器件后,接下来就可以设置工程的编译环境。首先进行语言组件的设置。
在Active Toolsuite下拉列表框中选择HI-TECH PICC Toolsuite作为开发工具组件,然后在Toolsuite Contents列表框中选择PICCCompiler项,如下图所示。  

3.PICC基本编程

3.1 PICC 中的基本变量类型

PICC 支持的基本变量类型见下表:

3.2 PICC 中的高级变量

基于上表的基本变量,除了bit 型位变量外,PICC 完全支持数组、结构和联合等复合型高级变量,这和标准的C 语言所支持的高级变量类型没有什么区别。例如:
数组:
unsigned int data[10];
结构体:
struct commInData {
unsigned char inBuff[8];
unsigned char getPtr, putPtr;
};
联合体:
union int_Byte {
unsigned char c[2];
unsigned int i;
};

3.3 PICC 对数据寄存器bank 的管理

在PIC单片机编程时,单片机数据寄存器的bank是由编程员管理的,因此在定义变量时必须决定这些变量具体放在哪一个bank 中缺省时,所定义的变量将被定位在bank0中,例如下面所定义的这些变量:
unsigned char buffer[32];
bit flag1,flag2;
float val[8];
以上变量都是分布在bank0 中。定义在其它bank 内的变量前面必须加上相应的bank 序号,例如:
bank1 unsigned char buffer[32];  //变量定位在bank1 中
bank2 bit flag1,flag2;  //变量定位在bank2 中
bank3 float val[8];  //变量定位在bank3 中

3.4 volatile 修饰词 

PICC 中还有一个特殊的变量修饰词“volatile”,用来说明一个变量的值是会随机变化的,即使程序没有刻意对它进行任何赋值操作。
在单片机中,作为输入的IO 端口其内容将是随意变化的;很多特殊功能寄存器的值也将随着指令的运行而动态改变。所有这种类型的变量必须将它们明确定义成“volatile”类型,例如:
volatile unsigned char STATUS @ 0x03;
volatile bit commFlag;

3.5 标准库函数

PICC 提供了较完整的C 标准库函数支持,其中包括数学运算函数和字符串操作函数。在程序中使用这些现成的库函数时需要注意的是入口参数必须在bank0 中。
如果需要用到数学函数,则用 “#include <math.h>” 包含头文件;如果要使用字符串操作函数,就需要包含“#include <string.h>”头文件。在这些头文件中提供了函数类型的声明。直接查看这些头文件就可以知道PICC 提供了哪些标准库函数。
C 语言中的格式化输出函数“printf/sprintf”用在单片机的程序中时要特别谨慎。printf/sprintf 是一个非常大的函数,一旦使用,你的程序代码长度就会增加很多。 

4.C和汇编混合编程

用C 语言进行单片机应用程序开发时经常要使用汇编语句。比如,单片机的一些特殊指令操作在标准的C 语言语法中没有直接对应的描述,例如PIC 单片机的清看门狗指令“clrwdt”和休眠指令“sleep”。这样,一个项目中就会出现C 和汇编混合编程的情形,我们在此讨论一些混合编程的基本方法和技巧。
在C 原程序中直接嵌入汇编指令是最直接最容易的方法。如果只需要嵌入少量几条的汇编指令,PICC 提供了一个类似于函数的语句:
asm(“clrwdt”)  ;
双引号中可以编写任何一条PIC 的标准汇编指令。例如:
for (;;) {
asm("clrwdt"); //清看门狗
asm("sleep"); //休眠
asm(“nop”); //空操作延时 
 }
如果需要编写一段连续的汇编指令,PICC 支持另一种语法描述:用“#asm”开始指令段,用“#endasm”结束。
例如下面的一段嵌入汇编指令实现了将0x20~0x7F 间的RAM 全部清零:
#asm
      movlw 0x20
      movwf  _FSR
      clrf  _INDF
      incf _FSR, f
      btfss _FSR,7
      goto  $-3
#endasm
2019-02-27 22:07:13 qq_27158179 阅读数 441
  • 巫妖王51单片机开发板配套视频课程

    本课程是巫妖王51单片机开发板的配套视频课程,本课程的目标是用少的时间带大家初级入门51单片机。配合巫妖王51单片机开发板,让大家花费少的时间少的钱就能轻松开启单片机学习之路。

    18627 人正在学习 去看看 朱有鹏

最新写的博客感觉越来越低端了……

今天焊接、调试了一快板子。板子比较小,功能简单,使用了STC单片机,型号:STC15W408AS,封装:TSSOP20。

焊板后的第一次下载程序。单片机5V供电,使用FT232RL模块,将FT232RL配置成IO口5V供电。按照以前的流程下载程序,STC-ISP软件一直无法检测单片机。

解决思路:

1、排除硬件故障。

1.1 单片机VDD供电正常5V。

1.2 单片机UART0和串口模块UART交叉连接

单片机TxD <-> 串口模块 RxD

单片机RxD <-> 串口模块 TxD

单片机GND <-> 串口模块GND

1.3 串口模块IO口和单片机VDD相等

我的单片机板子没有LDO,直接是5V供电的。UART电平需要5V。而FT232RL模块的VDDIO不知为何,一直大于3.3V小于4V。可能是这个原因,无法和5V单片机系统正常通信。我不用FT232RL了,使用CP2102N。CP2102N是3.3V系统。单片机如果使用CP2102作为UART转USB,需要使用LDO或者DC-DC,将单片机系统设置为3.3V电源供电。

2、排除软件故障

使用STC官方的软件,第一次为板子下载程序,需要注意的地方如下。

2.1 单片机型号需要和板子对应

2.2 串口号要和实际情况对应。

2.3 第一次试验,可以选择范例程序中的某一个例程,直接下载Hex文件。

所以最后,我的试验平台变成了三个部分。

第一个部分STC芯片(STC15和STC8的都是一样的最小系统,可以不用外置晶振,下载程序接口同样为UART0。我手头上有STC8A8K64S4和STC15W408AS,都很类似):

这里需要注意的是官方的单片机规格书中,使用STC+PL2302做最小系统,通常推荐我们在单片机的TXD接二极管。我使用STC+CP2102N,需要把这个二极管短路。上次也是这个原因,熬了我一个晚上。

第二部分CP2102N模块:

第三部分是5V转3.3V降压稳压电源模块。模块输出3.3V电压为单片机供电,使得整个单片机系统都是3.3V。

同时注意的是,STC单片机都是,要先把STC单片机的UART部分和UART转USB模块连接好。然后STC单片机再上电。单片机才可以BOOT from UART(从UART下载程序)。

 

到这里,可能读者会觉得一头雾水,这种电子项目是需要经验的,不过也不是太难的逻辑。总之在这里我算是自己记录一下过程。希望下次在这个基础上做些新的东西。而不是每次都犯同样的错误。

2018-07-22 10:58:47 krain__ 阅读数 932
  • 巫妖王51单片机开发板配套视频课程

    本课程是巫妖王51单片机开发板的配套视频课程,本课程的目标是用少的时间带大家初级入门51单片机。配合巫妖王51单片机开发板,让大家花费少的时间少的钱就能轻松开启单片机学习之路。

    18627 人正在学习 去看看 朱有鹏

1.PLC是应用单片机构成的比较成熟的控制系统,是已经调试成功、成熟稳定的单片机应用系统,具有较强的通用性。

2.单片机可以构成各种各样的应用系统,适用范围更广,他只是一种集成电路,还必须与其他电路元器件及软件构成系统才能应用。

3.从工程的使用来看,对但单项工程或重复数极少的项目,采用PLC方便快捷,可靠性好,但成本较高。

4.对于量大的配套项目,采用单片机系统具有成本低、效益高的优点,但需要一定的研发力量和行业经验。

 

PLC的关键技术在于其内部固化了一个能解释梯形图语言的程序,梯形图语言解释程序的效率决定了PLC的性能,通讯程序决定了PLC与外界交换信息的难易程度。设计PLC的主要工作就是开发梯形图语言解释程序。

单片机模块化编程

阅读数 3308

没有更多推荐了,返回首页