博客列表

数码管编码快速移植
发表于:2015-04-30 10:27:23 | 分类:单片机
浏览( ) | 评论( )

8段数码管是设备上常见模块,为了完成显示,必须对数码进行编码。数码管一般是a、b、c、d、e、f、g、dp,在C51单片机中刚好可以使用一组IO控制。在一般教科书中原理图的连接是一一对应。Px0~Px7刚好驱动a~g以及dp.可以写出0~F编码。一般使用数组来实现。可以通过以下电路来驱动编码表如下:unsigned char code ledTable[] ={ 0XC0,0XF9,0XA4,0XB0,0X99,0X92,

数码管编码的快速移植
发表于:2015-04-29 21:17:11 | 分类:单片机
浏览( ) | 评论( )

8段数码管是设备上常见模块,为了完成显示,必须对数码进行编码。数码管一般是a、b、c、d、e、f、g、dp,在C51单片机中刚好可以使用一组IO控制。在一般教科书中原理图的连接是一一对应。Px0~Px7刚好驱动a~g以及dp.可以写出0~F编码。一般使用数组来实现。可以通过以下电路来驱动编码表如下:unsigned char code ledTable[] ={ 0XC0,0XF9,0XA4,0XB0,0X99,0X92,

NTC传感器测量温度防抖动
发表于:2015-04-05 23:21:19 | 分类:单片机
浏览( ) | 评论( )

单位同事在使用NTC传感器测量温度,发现在电源收到冲击时设备通过NTC传感器测量的温度值会发生跳动。在EMC试验时4KV 2.5KHz试验时,温度会出现正负5°的抖动。这显然是电源输入的干扰引起的。因为我们公司的产品主要用于吸干机的控制,在吸干机中温度变化比较缓慢,如果一秒出现3°的偏差那么一定是一个干扰。所以必须避开这些干扰,因为在某些关键的温度点,会引起致冷分机的打开。温度回落后又会导致风机关闭。这样会引起系统震荡,缩短风机寿命。 解决这个问题,可以在电源的入口加装电源滤波器,在传

两种键盘扫描程序的比较
发表于:2015-03-18 16:32:34 | 分类:单片机
浏览( ) | 评论( )

新到公司同事写了一个键盘处理程序,我们可以浏览一下这段代码/*********************************///采集当前键盘端口数据,并且返回键盘端口的值/*********************************/unsigned char scanKey( ){ unsigned char value1,value2; unsigned char m,n; P2 =0xff; value1 = P2; if(value1!=0xff) { for(m

关于数码管显示编码
发表于:2015-02-11 15:51:17 | 分类:单片机
浏览( ) | 评论( )

数码管是电子产品设计中不可或缺的显示原件,驱动简单、可靠性高、抗干扰能力强、温度适应性广、价格低廉。在实际项目中使用非常广泛。 数码管的驱动也非常简单,在所有的电子类教程中都有。我们随便可以写一个。 数码管的原理图与电路图如上所示。这是一款共阴极的数码管。共阳极数码管处理方式与共阳极非常相似。我们来写出该款数码管的编码表。参照以下电路图我们写出该数码管的驱动。 为了布线方便,并不是P2_0至P2^7依次驱动a至dp.而是根据布线方便任意连接。这个不

C语言精确微秒级的延时
发表于:2014-08-27 22:23:48 | 分类:单片机
浏览( ) | 评论( )

        在使用C语言编程时延时程序是非常常见的,但是实现一个精确的延时是不太容易的,在给一个朋友的公司产品做维护时,发现一段代码,可以实现微妙级的延时。看起来代码非常简单。但是我以前没有想到过。我们一起来看看这段代码。  //-----------------------------------------------------------------------------// Delay_us//-----------------------------------------------------------------------------//// Return Value : None// Parameters   : 1. time_us - time delay in microseconds//                   range: 1 to 255//// Creates a delay for the sp

怎样保存系统运行状态
发表于:2014-08-17 08:25:27 | 分类:单片机
浏览( ) | 评论( )

     为了使系统在断电后可以恢复到断电以前的状态继续运行。如果运行状态不停的改变,那就必须持续不断的保存运行状态。这样在断电后再恢复供电系统即可恢复到最后一次保存的状态。    在过去的一次项目中尤为同事提出了一个可行的解决方案。使用24AA16即可解决该问题。系统每隔2秒保存一次运行状态,大约13个字节。24AA16是16千位的存储器,根据产品的资料可以获得,24AA16存储数据可以保存200年,擦写次数在1,000,000以上。     如果两秒保存一次运行状态,那么同一隔物理地址按照擦写1,000,000以上,为了保证系统可靠性,我们假设可以安全可靠的擦写次数是800,000。那么同一块物理地址开始使用18.5天。800000/(24*60*(60/2))=18.5    18.5时间还很短的,因为一个产品连续使用的寿命必须超过3年。因为24AA16有16K位的存储空间。我们可以在一个物理位置存储600,000后,将存储物理位置向下移动13个字节继续存储600,000次以上。这样的话我们来估计一下这个

AD采集一段代码分析
发表于:2014-08-12 09:14:12 | 分类:单片机
浏览( ) | 评论( )

      昨天见到一位朋友的AD采集代码,这段代码在他们公司产品中已经使用的。当然是正确的。我们来分析一下他的实现方法。 选择采集端口,采集端口电压,保存在 temp_l 、 Min_Value、  Max_Value中 采集端口电压7次,每次采集的值与   Min_Value、  Max_Value比较。如果小于 Min_Value将其值赋给 Min_Value,如果大于 Max_Value将其值赋给 Max_Value。并且将其值累加到numtemp 值中。 numtemp 减去 Min_Value、 Max_Value,结果除于5.该结果就是本次采集的电压值。      这段代码的中心目的就是,采集7个值,去掉最大和最小的值,然后求平均值即可。过程很简单,流程图就不给出了。代码如下:/********************************************************函数名: read_ad_inputs功能 &nbs

单片机-FTU制作十四
发表于:2014-06-23 14:59:05 | 分类:单片机
浏览( ) | 评论( )

 mc52i的启动过程如下: 1,  MC52i上电,延时10mS以上,等待电压稳定。2, MC52I的管教清零IGT,延时200mS。IGT置1.3, 等待MC52I输出“^SYSSTART\r\n”.MC52I启动已经完成。4, 发送同步命令“AT\r\n”等待MC52I回复"AT\r\n OK\r\n".5,  设定MC52I工作频率,    发送“"AT+IPR=9600\r\n"。6, 设定短信格式,        发送 "AT+CMGF=1\r\n"。7, 设定新消息,提示方式   发送"AT+CNMI=1,1,2\r\n"。8, 设定来电显示的方式,  发送"AT+CLIP=1\r\n" 9,  查询信号质量           发送"AT+

单片机-FTU制作十三
发表于:2014-06-20 23:18:46 | 分类:单片机
浏览( ) | 评论( )

          使用MC52I其实就是收发短信和GPRS通讯,实现以上功能使用AT指令就可以完成。如果您仔细浏览mc52i的手册会发现制作一个有基本通话功能手机其实非难事。也即是诺基亚早期的3310应该没问题。现在智能机当然不是那么容易实现。    下面我们看看收发短信是怎么实现的。     当MC52i收到短信后,会从串口发出接收到短信的提示符“+CMTI: "SM",1\r\n”。 “1”是短信的索引位置。指明当前收到短信的逻辑位置。在接收到短信提示符后发送“AT+CMGR=1\r\n”。mc52i就将索引位置为1的短信的内容输出。如以下格式:AT+CMGR=1+CMGR: "REC UNREAD","+8613359265201",,"13/05/30,15:26:27+32"JCFHENDOK“AT+CMGR=1”是