5

关于投票
我的第一款单片机实验板

我的第一块单片机实验板V1.2

点击看大图

具备的功能和可以完成的实验有:
1    8路发光LED,可以做跑马灯,流水灯实验,8路LED为独立控制
2    4位数码管静态/动态显示
3    1路蜂鸣器输出,可以输出简单音乐
4    1路继电器输出控制,可以做控制强电实验
5    2个独立按键,可以做独立按键实验,也可以做外部计数/中断输入实验
6    4个扫描按键,可以做键盘扫描实验
7    1路红外遥控解码输入,可以做红外遥控及解码实验
8    1路红外遥控输出,可以通过(7)红外遥控解码输入端进行红外遥控解码
       后,再由此输出端输出,模拟红外遥控器完成对其他红外遥控设备(比如电
      视)的遥控
9    预留1602液晶显示模块接口,可以进行1602显示控制实验 
10  板载I2C总线存储芯片AT24C01,可以进行I2C总线数据读/写实验
11  板载串行电平转换芯片MAX232,可以与计算机进行串口通讯实验
12  具备AT89S5X系列单片机ISP下载插座以及并口下载线,可以进行并口下载程序
13 单片机全部I/O通过40脚插座引出,便于其他自定义实验扩展

销售价格

1     主板 +  单片机STC89C51  + 1602液晶显示模块 + 资料光盘
      RMB      115
     **说明**STC89C51为全面兼容MCS51的一款单片机,它最大的特点是配合其官
     方软件可直接通过计算机串口线下载程序,而无需专用下载线和编程器


2   如果您自己有1602显示模块或者不需要进行液晶显示实验,则可以在上面价格里减去20元
    即:   RMB  95

联系及购买:

Q   Q: 570111467
Email: jqwx@hotmail.com


详细信息见:


http://www.ednchina.com/blog/jqwx
http://blog.gkong.com/blog.asp?name=superplc 

系统分类: 单片机
用户分类: 单片机
标签: 单片机实验板 销售
来源: 原创
发表评论 阅读全文(1968) | 回复(12)

8

关于投票
我也上传一个实验板电路

这是我最近做的一实验板的原理图和PCB,是99se格式.

拟MCU采用AT89S51和STC89C51.

AT89S51可以采用ISP下载线实现程序下载,下载线可以自制,自制的电路可以参考网络上流传很广的Easy 51Pro v2.0宇宙版.在此我一并给出.

STC89C51单片机是宏晶公司出的基于51内核的高性能单片机,同样具有ISP下载功能,更为可贵的是,它的ISP下载是直接通过串口完成,而不像AT89系列单片机需要通过专用的ISP下载端口.也就是说如果你有一个单片机电路系统,并且系统上留有串口,那么你只要将MCU换成STC89C51或者其同系列产品,计算机端配合其专用下载软件,直接通过串口就可以完成程序的下载了,是不是很方便实用啊.

我的实验板rarEasy 51Pro v2.0宇宙版第一个压缩包rarEasy 51Pro v2.0宇宙版第二个压缩包rar

PCB截图点击看大图

 

系统分类: 单片机
用户分类: 单片机
标签: 无标签
来源: 原创
发表评论 阅读全文(1561) | 回复(1)

8

关于投票
关于51单片机P0口的结构及上拉问题

首先请看P0口的结构:

点击看大图

说明:
1。P0作为地址数据总线时,T1和T2是一起工作的,构成推挽结构。高电平时,T1打开,T2截止;低电平时,T1截止,T2打开。这种情况下不用外接上拉电阻.而且,当T1打开,T2截止,输出高电平的时候,因为内部电源直接通过T1输出到P0口线上,因此驱动能力(电流)可以很大,这就是为什么教科书上说可以"驱动8个TTL负载"的原因.

2。P0作为一般端口时,T1就永远的截止,T2根据输出数据0导通和1截止,导通时拉地,当然是输出低电平;截止时,PO口就没有输出了,(注意,这种情况就是所谓的高阻浮空状态),如果加上外部上拉电阻,输出就变成了高电平1.

3。其他端口P1 P2 P3,在内部直接将P1口中的T1换成了上拉电阻,所以不用外接,但内部上拉电阻太大,电流太小,有时因为电流不够,也会再并一个上拉电阻。

(以上来自中山单片机学习论坛,有删减)

4.在某个时刻,P0口上输出的是作为总线的地址数据信号还是作为普通I/O口的电平信号,是依靠多路开关MUX来切换的.而MUX的切换,又是根据单片机指令来区分的.当指令为外部存储器/IO口读/写时,比如 MOVX  A,@DPTR ,MUX是切换到地址/数据总线上;而当普通MOV传送指令操作P0口时,MUX是切换到内部总线上的.

 

PS:

Because Ports 1, 2, and 3 have fixed internal pullups, they are sometimes called “quasi- bidirectional” ports.

我的e文不怎么样,参照金山在线后的解释:
因为端口1、2、3有固定的内部上拉,所以有时候他们被称为"准双向"口.

Port 0, on the other hand, is considered “true” bidirectional, because when configured as an input it floats.  
   
端口0, 从另外一方面来说,就被 认为是"真正的"双向,因为当它被设置为输入的时候是浮空(高阻态)的.     

本文为原创,转载请注明出处.  机器文学

  

系统分类: 单片机
用户分类: 单片机
标签: 上拉电阻
来源: 原创
发表评论 阅读全文(3741) | 回复(7)

10

关于投票
74LS273与74LS373的区别

一位网友在中华工控网上问的问题,我看没什么人回答,就整理了一下,给他回答了,并发到我的blog上

74LS273  是 带公共时钟复位八D触发器

74LS373  是 三态同相八D锁存器

273与373的引脚排列是相同的,唯一的差别是两者1、11脚的功能不同.

对273
(1).1脚是复位CLR,低电平有效,当1脚是低电平时,输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部输出0,即全部复位;

(2).当1脚为高电平时,11(CLK)脚是锁存控制端,并且是上升沿触发锁存,当11脚有一个上升沿,立即锁存输入脚3、4、7、8、13、14、17、18的电平状态,并且立即呈现在在输出脚2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)上.

对373:
(1).1脚是输出使能(OE),是低电平有效,当1脚是高电平时,不管输入3、4、7、8、13、14、17、18如何,也不管11脚(锁存控制端,G)如何,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)全部呈现高阻状态(或者叫浮空状态);

(2).当1脚是低电平时,只要11脚(锁存控制端,G)上出现一个下降沿,输出2(Q0)、5(Q1)、6(Q2)、9(Q3)、12(Q4)、15(Q5)、16(Q6)、19(Q7)立即呈现输入脚3、4、7、8、13、14、17、18的状态.


所以,如果分别用273和373来作为单片机的地址存器的话,
对273来说,1(CLR)脚必须接高电平,ALE信号经过反相后接11脚(因为单片机的ALE信号是以下降沿方式出现)
对373来说,1脚接低电平,保证使能,11脚直接接单片机的ALE信号.

系统分类: 单片机
用户分类: 单片机
标签: 74LS273 74LS373 地址锁存
来源: 原创
发表评论 阅读全文(5779) | 回复(1)

4

关于投票
平凡老师的经典单片机教程

 

平凡老师的经典单片机教程
网络上流传的最经典的单片机教程应该算平凡老师的这个教程吧.
教程为"E书"格式,直接点击打开,很方便的,665K大.难得进行压缩,所以我直接改了后缀名,下载后                    请将".rar"后缀名字改成".exe"就行了rar

                          

系统分类: 单片机
用户分类: 单片机
标签: 单片机 教程
来源: 整理
发表评论 阅读全文(2148) | 回复(5)

5

关于投票
STC89C52RC串口编程的冷启动法与带电编程法

STC89C52RC单片机可以直接用串口进行ISP编程,对于使用者来说,这就变得很简单了.

这里要说的是,对STC89C52RC进行串口ISP编程的两种方法.

第一种   冷启动,即彻底关断用户目标板的电源,再上电.这一方法为厂家推荐之方法.宏晶公司在STC89C52RC数据手册上给出了下面的编程流程.

点击看大图

具体做法如下:

1.首先确保有STC89C52RC的目标板至少有最小系统.

2.到宏晶公司的网站下载一个软件,下载地址为:
http://www.mcu-memory.com/datasheet/stc/stc-isp-v2.9-setup/stc-isp-v2.9-setup-beta5.exe
如有更新的软件,请到http://www.mcu-memory.com查看。安装后运行该软件,其界面如下.点击看大图

  先在MCU Type下拉列表中选择正确的单片机型号,这里就选STC89C52RC啦,然后点击“Open File”打开待下载的文件,接着选择正确的COM口以及本机可用的最高波特率,COM口根据你接的串口来确定,最高波特率通常不必改动,接下来就是选择是否启用单片机的倍速特性,根据自己的需要来定,选择芯片内置振荡器的增益大小,可以根据提示,按提示要求去做,可得到较低的EMI特性。
一切选项最好之后,可以开始下载.

     关断电源,然后点击“Download/下载”按钮,点完后,再接通电源,这里要注意,关断电源到接通电源时间应稍微长一些,保证板子充分放电.只要注意操作顺序应该没有什么问题,如果点击“Download/下载”未及时插上电源,会出现如下图所示画面,不必担心,直接将电源插上即可。
  
  下载时出现超时错误界面

第二种  不切断电源的方法

与冷启动相比,前面的操作都一样,只是从冷启动需要关断电源的操作步骤开始不一样.当冷启动需要关断电源时,在本方法下,不需要关断电源.此时,请按照下面步骤进行:

需要用到串口,因此要占用单片机串行口和定时器T1或者T2作为波特率发生器,因此,定时器T1或者T2你就不能用了(在调试阶段)。下面,我们要在程序里加上一段串口初始化的程序:
serial_init ()  {
  SCON  = 0x50;       /* mode 1: 8-bit UART, enable receiver   */
  C_T2=0; /*Timer2 runing in Timer mode*/
    RCLK=1;
    TCLK=1;
   RCAP2H=0xff;
   RCAP2L=0xee;
  TR2=1; /*enable Timer2 run  */
   ES   = 1; REN=1; EA=1; SM2=1;     /*SM2=1时收到的第9位为1才置位RI标志*/
}
  这段程序加在主程序初始化那里,特别要提示的是,在初始化之前要有一段延时,时间约为0.1s即可,也就是主程序应该是这样的:
  void main()
  { …..      变量的定义,其他初始化语句
  mDelay(100); //延时100ms
  serial_init();
  ……
  其他语句
  为什么一定要在初始化串口之前加一段延时呢?这在后面交待。
  然后要加一段串口收数的程序,直接复制下面这一段就可以,了解清楚原理后自己写也行:
  uchar bitset(uchar num,uchar cbit) /*设置某一位*/ 
{  uchar bit_value[]={1,2,4,8,16,32,64,128}; 
return num|bit_value[cbit]; 

////////////////////////////////////////////////////////
void Ser() interrupt 4
{
static uchar Count=0;
GetCharBuf[Count]=SBUF;
if(GetCharBuf[Count]==(Count+0x10)) 
//要求stc下载软件发送的数是10 11 12 13 14 15 16 17
{ sMark="bitset"(sMark,Count);
//如果收到的数符合要求,则将sMark这个相应位置1
}
Count++;
if(Count>=8)
{ Count="0";
mGet=1; //置位标志
}
RI=0;
}
  看懂了没有呢?这里定义了8个字节的命令字,如果从主机传来连续的8个数正好与所定义的8个数相符合,那么就说明主机有要求重新下载的指令了。定义哪8个数,如何判定,这都可以发挥你自己的聪明才智来写,这里就简单地要求主机发送0x10 0x11 0x12 0x13 0x14 0x15 0x16和0x17这8个数,看程序中的这一行:
if(GetCharBuf[Count]==(Count+0x10)) 
  由于每次收到数Count会加1,从开始的0计到7为止,因此,接收到的数如果是Count加上0x10,就认为是相符的。
  相符之后就要做个记号,这里用了一个字节sMark,开机时,该字节为0,相符一次,则将相应位置1,如果收到的8个数均相符,那么sMark=0xff,如果收到的数中有一个不符,那么sMark不等于0xff。利用sMark即可判断是否接收到了正确的8个数。
  一旦收到8个数之后,即置位标志位mGet,然后在main函数里面做个判断,如果mGet=1且sMark=0xff,说明要求重新下载,下面即延时1s,然后将数0x60写入特殊功能寄存器:ISP_CONTR即可,main函数中的这一部份程序如下:
if(mGet)
{ if(sMark==0xff) //收到数符合要求
{ sMark="0"; //复位
mDelay(2000);
ISP_CONTR=0x60;//复位到isp下载区
}
else
{ sMark="0";
}
}
  你可以把这一段放在main函数的for(;;)循环当中。
  ISP_CONTR是STC89C52RC的一个特殊功能寄存器,其地址为0xE7,可以在程序的开头用sfr关键字来定义:
  sfr ISP_CONTR=0xe7;
  接下来看一看PC机程序端应该怎么做。
点击界面右侧的“自定义下载”,先选定特率,按上面的程序,如果选用stc89C52rc的倍速特性的话,波特率就是38400,否则就是19200,其他按图4设置即可。接着到自定义下载文本框中输入自定义下载指令为10 11 12 13 14 15 16 17 输入好了以后,点击发送,即可在不断电的情况下进行程序的下载了。

图3 自定义下载的设置
  那么为什么一开始初始化的时候一定要延时呢?这是我们在实际使用中发现,在下载完成后,软件似乎会多发送一些数据,由于我们的程序中没有设置超时等处理,所以就会干扰数据的正确接收,为此采取了一个简的方法就是延时一段时间再开启串口。当然你也可以采用其他的方法来解决这个问题,不过我们认为这种方法简单有效。
  为了更有效地进行程序的开发,建议你将“选项”下方的“每次下载前自动刷新已打开在缓冲区的文件,以方便调试”前面打上勾,如图4所示。
  
图4 方便调试的选项

 

参考资料: 平凡单片机工作室 http://www.mcustudio.com/
  

系统分类: 单片机
用户分类: 单片机
标签: 单片机 ISP编程 STC89C52RC
来源: 原创
发表评论 阅读全文(2208) | 回复(0)

7

关于投票
51系列单片机最小系统

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.
对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路.
下面给出一个51单片机的最小系统电路图.
点击看大图

说明

复位电路:由电容串联电阻构成,由图并结合"电容电压不能突变"的性质,可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定.典型的51单片机当RST脚的高电平持续两个机器周期以上就将复位,所以,适当组合RC的取值就可以保证可靠的复位.一般教科书推荐C 取10u,R取8.2K.当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平.至于如何具体定量计算,可以参考电路分析相关书籍.

晶振电路:典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作)

单片机:一片AT89S51/52或其他51系列兼容单片机

特别注意:对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;当接低电平时,复位后直接从外部ROM的0000H开始执行.这一点是初学者容易忽略的.

因此可以看出,其实要熟悉51单片机的40个引脚功能也很容易:
总共40个脚,电源用2个(Vcc和GND),晶振用2个,复位1个,EA/Vpp用1个,剩下还有34个.29脚PSEN,30脚ALE为外扩数据/程序存储器时才有特定用处,一般情况下不用考虑,这样,就只剩下32个引脚,对于初学者,这32个引脚就是要经常跟它们打交道的了.它们是:
P0端口P0.0~P0.7共8个
P1端口P1.0~P1.7共8个
P2端口P02.0~P2.7共8个
P3端口P3.0~P3.7共8个

本文为原创,转载请注明出处.  机器文学




 

系统分类: 单片机
用户分类: 单片机
标签: 单片机 最小系统
来源: 原创
发表评论 阅读全文(5140) | 回复(2)

4

关于投票
单片机的C语言

今天起开始学习51的C语言.

以前一直都是用的汇编,就是有点太懒,明明是知道汇编不如C的,但是,一直沉迷于汇编的表面简单化,不想去思考那些令人头疼的#include、{}等标记或者符号,所以就一直使用汇编.

汇编的表面简单化表现在51的基本指令直接使用,没有什么转换,我当时上单片机课的时候,老师在上面讲,我就在下面拼命记基本指令,按照典型教科书的分组记忆,也很快就记住100多条指令,呵呵~记忆力还是不错的

后来练习写程序,不知道什么C的,直接就进入用汇编指令写,所以久而久之就对汇编产生了依赖.

现在看网上铺天盖地的都是C的程序,再不学就落伍了!

按照我个人的理解,像Keil之类的软件,无非就是把按照C语法写出来的程序转换成机器码罢了.其实这就是编译,我想我这样理解没有错吧.其实我们用任何高级语言写程序,最终都是要转换成机器码的,因为凡是讲与计算机有关的"程序",其实最终都是以"0"和"1"的机器码在智能器件内部运行.机器码就是最最最基本、最最最本质、不能再分解的、直接就控制硬件的代码了!

~~

我使用的是大虾电子网的30章C51入门教程,个人觉得还不错

大家可以到http://www.daxia.com/bbs/moredata30.asp?id=13&syid=45283处下载

                                                             

系统分类: 单片机
用户分类: 单片机
标签: 单片机 C语言
来源: 原创
发表评论 阅读全文(1836) | 回复(8)
总共 , 当前 /