随笔分类 -  单片机学习

摘要:单片机TwinCAN调试心得1、 帧类型(1) 数据帧:数据帧将数据从发送器传输到接收器(2) 远程帧:总线单元发出远程帧,请求发送具有同一标识符的数据帧。/ MSGDRn4。(3) 错误帧:任何单元检测到总线错误就发出错误帧(4) 过载帧:过载帧用于在先行和后续数据帧(或远程帧)之间提供一附加的延时。数据帧和远程帧即可使用标准帧,也可使用扩展帧。2、 帧格式介绍1 数据帧数据帧由7个不同的位场组成,即帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结束。2 远程帧远程帧由6个不同的位场组成,即帧起始、仲裁场、控制场、CRC场、应答场、帧结束。3 错误帧错误帧由两个不同的场组成。第一个场是 阅读全文
posted @ 2012-10-29 16:22 StearArre 阅读(1990) 评论(0) 推荐(0)
摘要:学习1602液晶,也是把握要好其初始化的有关知识1. RS数据命令选择端 我们的板子上连的是P10 R/W读写选择短端 我们的板子上连的是P11 E使能信号 我们的板子上连的是P12 D0-D7 我们的板子上连的是P20-P272. 我们只训练的写命令,所以R/W就可以一直置零3. 基本时序操作: 写指令:RS=0 R/W=0 D0-D7=指令码 E=高脉冲 写数据:RS=1 R/W=0 D0-D7=数据 E=高脉冲4. 初始化设置 (1)显示模式设置(通过写指令写入):0x38(设置16x2显示,5x7点,8位数据口) (2)显示开/关及光标设置(具体详见老郭... 阅读全文
posted @ 2012-03-23 15:42 StearArre 阅读(507) 评论(0) 推荐(0)
摘要:(1)SCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志:SCON 位 7 6 5 4 3 2 1 0位于98h SM0 SM1 SM2 REN TB8 RB8TI RI1.SM0与SM1是工作方式控制位2.SM2与方式有关,一般只用方式1所以,SM2一般用不到,3.REN,允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。4.TB8,在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。 在方式0和方式1中,该位未用。5.RB8,在方式2 阅读全文
posted @ 2012-03-21 20:22 StearArre 阅读(4229) 评论(0) 推荐(1)
摘要:工作中遇到一个关于电平选择的问题,居然给忘记RS232电平的定义了,当时无法反应上来,回来之后查找资料才了解两者之间的区别,视乎两年多的时间,之前非常熟悉的一些常识也开始淡忘,这个可不是一个好的现象.:-),还是把关于三种常见的电平的区别copy到这里.做加深记忆的效果之用..什么是TTL电平、CMOS电平、RS232电平?它们有什么区别呢?一般说来,CMOS电平比TTL电平有着更高的噪声容限。(一)、TTL电平标准 输出 L: <0.8V ; H:>2.4V。 输入 L: <1.2V ; H:>2.0V TTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入, 阅读全文
posted @ 2012-03-21 16:49 StearArre 阅读(35206) 评论(0) 推荐(4)
摘要:串行口工作之前首先应对其进行初始化,主要是设置产生波特率的定时器1,、串行口控制和中断控制。具体步骤如下:1.确定T1的工作方式(编程TMOD寄存器);2.计算T1的初值,装载TH1,TL1;3.启动T1(编程TCON中的TR1位);4.确定串行口控制(编程SCON寄存器);串行口在中断方式工作时,要进行中断设置(编程IE,IP寄存器) 阅读全文
posted @ 2012-03-20 20:42 StearArre 阅读(3273) 评论(0) 推荐(0)
摘要:程序如下:# include<stdio.h>int in(int elem,int s[],int size);void main(){ int x; int s[]={1,2,3,5,4,5}; x=in(2,s,6); printf("x=%d\n",x); }int in(int elem,int s[],int size){ for(int i=0;i<size;i++) if(elem==s[i]) return 0; return 1;}注意点:1、 子程序中,注意,for语句只是管到r... 阅读全文
posted @ 2012-03-19 22:43 StearArre 阅读(606) 评论(0) 推荐(0)
摘要:今儿学习了动态数码管显示的知识,其实很简单,只要是首先让数码管逐个显示1,2,3,4...间隔1秒钟,用定时器0控制时间,未选也用一个table数组表示出来,然后减小间隔时间,我这用的是5ms显示效果不错,利用人眼的视觉暂留(<20ms),将东西完全显示在数码管上。 注意:如果在设计硬件电路时候,有雨动态显示数码管时候,亮度较静态显示时候低,所以,限流电阻应取小一些。(具体电路网上应该找得到) 调试经验如下: 1.若keil调试出现乱码,还有出现invalid ...path原因:(1)工程文件名是否存在中文,最好修改为英文;(2)程序文件中是否出现中文状态下的字符,建议自己编写,或.. 阅读全文
posted @ 2012-03-13 11:34 StearArre 阅读(6547) 评论(0) 推荐(1)
摘要:51C 用循环作延时的程序比汇编不好写多了。它不能计算的,只能用逐一试验的方法。这里也作个1 秒延时的,用P1口输出,每秒求反一次。仿真中可看出每秒红或蓝电平切换一次。改ms参数,可以改动延时时间,当然也是不断试验出的。这另外2 个延时时间也是很有用的,3ms延时,可作为数码管显示中的防鬼影,10ms延时可作为按键防抖用,留着备用。#include <reg51.h>#define uint unsigned int#define uchar unsigned charvoid delayms(ms);void main (){ while(1) { delayms(10); // 阅读全文
posted @ 2012-03-12 23:13 StearArre 阅读(1457) 评论(0) 推荐(0)
摘要:这是写的一个简单的测试定时器0的程序:要实现的目标是,LED第一个跟第二个灯先循环亮起,第三盏灯则以间隔一秒钟的时间亮起一次,其中,第三盏灯的亮起时间以定时器0的中断来执行,里边有亮点需要注意。一、不要忘记中断程序中进if语句中的后的tt清零二、不要忘了把定时器里边的语句回归哦,否则老是认为中断服务程序没返回主函数呢三、这个if语句不应写在主函数中,因为如果写在主函数中,时序会出现问题。因为如果在main函数中的话,前边的几个delay时间会与定时器定的准确时间产生时序问题,因为delay()的时间长,早过了20个tt时间了,所以会出现时序问题!四、另外,那个delay函数的时间也有问题,我还 阅读全文
posted @ 2012-03-12 19:39 StearArre 阅读(1196) 评论(0) 推荐(0)
摘要:真的很郁闷,鼓捣了半天也没弄出来,郁闷哇。。。 阅读全文
posted @ 2012-03-12 15:05 StearArre 阅读(818) 评论(1) 推荐(0)