这是个2片74HC595级联的程序,我现在需要5片级联,请问要怎么改?(AVR GCC) 20 这个代码很方便,debug()就可以了,静态显示,一片595一个数码管,我现在有5片595级联,但不清楚怎么修改。下面代码中有一处看不懂,请指教。/*Changethe
可以用74hc595+74hc138 组点阵,然后一排一排的刷
1、一片AT89S51单片机2、由4个8*8点阵LED模块组成一个16X16点阵LED3、4个按键开关(功能预留)4、一个REST手动复位按键 注意:本电路板耗电较大,正常工作时LM7805稳压器比较烫手,有条件的客户可以加装散热器或者直接用5V/1A开关电源供电
最后程序外面套个while(1)就可以实现无限循环了 还有一种方式就是用74HC595和4个数码管连接起来,74HC595是一个串行锁存寄存器,只需要4个74HC595和4个数码管就行,最少只占用单片机2个IO 这里就说明一下74HC595的控制方式
本系统采用两块74hc595级联作为点阵屏的行控制信号,控制点阵屏的16行。74hc595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在schcp的上升沿输入,在stcp的上升沿进入的存储寄存器中
三极管用8050 C级直接加5伏 B级一般加2至10k的电阻连到595 主要看点阵的型号 有些电流要大点有些要小点 可以自己试试 E级输出到点阵阳极 点阵阴极接200欧就差不多了 也可以大点
写到最后,我个人是不推荐用74hc595 来驱动8x8点阵的,由于点阵是扫描显示,所以在一定程度上来说它只能让我们只显示一个图案,如果说你需要显示动图,或者滚动显示,这个实现起来就会比较麻烦,但是学习使用还是很好的,适合我们这样
Arduino+2片74hc595 驱动8x8(共阳)点阵(1008BS)
而后用单片机的串口编程控制就好,简单些的方法则是:加一片74HC595连接所有数码管的8段管脚,通过51的串口送出显示段码,而用两个P口的16个I/O口控制16个数码管的供电极做位控制,都很简单的。
主要硬件电路:LED 点阵条屏是由 16 个 8*8 的 LED 点阵块组成,形成 16*64 矩形点阵,以AT89S51为控制核心。显示屏的其他主要硬件有: ① 带锁存输出的 8位移位寄存器74HC595,作为LED的列线驱动输入; ② 四六译码器 74LS154,作为
每行显示的时间停留0.5ms就可以了 设置一个0.5ms的定时中断,每次中断就换一行 显示,64行循环显示,64*0.5=32ms 每秒30次刷屏,应该ok
;16*16点阵左移汇编程序 DS_595 EQU P1.5 ;串行数据输入(595-14)CH_595 EQU P1.7 ;移位时钟脉冲(595-11)CT_595 EQU P1.6 ;输出锁存器控制脉冲(595-12)G_595 EQU P1.4 ORG 0000H LJMP M
一个595有8个输出,即可以控制8*n个LED,4个595控制16*16=256,即每个595控制64个LED。n=64/8=8扫,即每个595的输出控制8个LED。不过一般市面上都是做4扫的,至于电路图,就自己画吧。。。
//74HC595练习程序 //串入并出实现16流水灯效果 //2009.12.28 include"reg52.h"sbit shcp=P2^0; //数据在上升沿进入移位寄存器 sbit date1=P2^1; //串行数据输入端 sbit clock=P2^2; //上升沿时将数
} unsigned char buffer[8]={0x01,0,0,0,0,0,0,0};//64列 void main(){ HC595_OE = 0;HC595_OE = 1;//假设行低电平有效,列高电平有效,显示效果为第一行,第一列坐标为(0,0)的像素点亮,其他均
51单片机+10片 74hc595 控制16*64点阵屏显示
要不了这么多驱动两个74HC59和一个74HC154.给你图你看看。
;16*16点阵左移汇编程序 DS_595 EQU P1.5 ;串行数据输入(595-14)CH_595 EQU P1.7 ;移位时钟脉冲(595-11)CT_595 EQU P1.6 ;输出锁存器控制脉冲(595-12)G_595 EQU P1.4 ORG 0000H LJMP M
//74HC595练习程序 //串入并出实现16流水灯效果 //2009.12.28 includereg52.h sbit shcp=P2^0; //数据在上升沿进入移位寄存器 sbit date1=P2^1; //串行数据输入端 sbit clock=P2^2; //上升沿时将数据输出到
16*16点阵用51单片机控制时可以选595或者4094,如果是单个字还可以用三极管作为功率驱动,若是用595的话就不用外加功率驱动电路了,只要在扫描端用三极管隔离154就行(可加限流电阻在三极管基极),同时具有放大作用,若是在数据端
74HC595 2个 74HC164 2个 三极管8550 16个 电阻1K 16个 电阻 200欧姆 16个 点阵底座圆排母 2根 弯排针 1根 点阵PCB空板 1个 参考资料:http://hi.baidu.com/dsu5566/album/item/ff0b438149
要用两片74HC595点亮16*16的点阵,只能用来控制列线,输出16点的字形数据,还要用两片3-8译码器完成逐行扫描。
74hc595要用四片 行列扫描 把两组(一组两片)的锁存脉冲接在一起。然后把第一片的Q7‘接入第二片的SDA。另外把每组SCK接在一起。十六位的移动是只 你往595里送个数据。那么595就会把最先送入的数据丢掉。然后整体向
两片74HC595级联驱动16*16LED点阵,用51 单片机驱动
要仿真的话我发给你,当然实际电路要三极管驱动 include
define pb1 _1d_1//_pb1 define pb3 _1d_3//_pb3 define pd0 _23_0 define LCD _pc / 延时n毫秒程序 / void mydelay(ulong n){ uchar x;while(n--){ x=15;while(x--);} } / Function name:
我做过16*16点阵用了4片595 级联 以下有代码 希望能帮助楼主 include
TxD 两个三八译码器74LS138组成的16个输出端连接 16 个 9012的三极管的基极 B,发射极E 连接5V电源,集电极C连接到三个汉字点阵的16 个行线控制端。
硬件都焊好了,你要把原理图发上来,要不程序写出来也不一定匹配吖
仿真实例试试。
将第一行的点阵(32个位),顺序写入595,输出595. 控制第一行的I/O驱动,点亮第一行。延时5ms 将第二行的点阵(32个位),顺序写入595,关第一行,输出595. 控制第二行的I/O驱动,点亮第二行。延时5ms 同理,顺序
求四片74HC595级联驱动32*16LED点阵,用52 单片机驱动的c语言程序
DS0 EQU P2.1;ST_CP EQU P2.2;ORG 00H AJMP MAIN ORG 30H MAIN:MOV R0,#8 MOV R4,#50 ;MOV DPTR,#TAB MOV R3,#80 MAIN1:MOV A,R2 INC A MOVC A,@A+DPTR ACALL WB INC R2 MOV A,R2 D
CHKSCO BIT P3.2 DAT1 EQU 50H ; 数据1 DAT2 EQU 51H ; 数据2 DA0: MOV A, DAT1 ACALL HC59500 ; 8位移位输出1 MOV A, DAT2 ACALL HC59500 ; 8位移
这是16X16的,自己一改就好了 //74HC595练习程序 //串入并出实现16流水灯效果 //2009.12.28 includereg52.h sbit shcp=P2^0; //数据在上升沿进入移位寄存器 sbit date1=P2^1; //串行数据输入端 sbit clock=P2^
;16*16点阵左移汇编程序 DS_595 EQU P1.5 ;串行数据输入(595-14)CH_595 EQU P1.7 ;移位时钟脉冲(595-11)CT_595 EQU P1.6 ;输出锁存器控制脉冲(595-12)G_595 EQU P1.4 ORG 0000H LJMP M
用2个138级联控制列,2个595,每个595控制2个8x8的点阵 我感觉这个程序就是最简单的滚动显示的程序 了 include
; * ATA89C52 12MHz晶振 ; * 2004.2.11 LRM ;;显示字用查表法,不占用内存,字符用16x16共阳LED点阵,;效果:向上滚动显示5个字,再重复循环。;R1:查表偏址寄存器,B:查表首址,R2:扫
本人用74HC595驱动(行列)LED点阵16*16,由于编程能力有限,求高手指点,发我调试程序即可 带汉字显示哦
两片74HC595确实可以驱动一个8X8的LED点阵。LED的额定电流是10mA,可实际电流并不需要一定要达到额定电流啊,额定不等于实际的。这要看限流电阻是多大。现在LED点阵都高亮度的,电流达到3mA时,就很亮了,所以,不需要真到
可以,595的驱动能力大,所以输出电流足够大,可以驱动点阵阳极,阴极吸收电流也不算大,也可以使用,但是一般不会同时用595。其实就是驱动好多LED而已。你问这个问题,说明你对行列驱动没有理解清楚,另外LED的基本驱动要求,
写到最后,我个人是不推荐用74hc595 来驱动8x8点阵的,由于点阵是扫描显示,所以在一定程度上来说它只能让我们只显示一个图案,如果说你需要显示动图,或者滚动显示,这个实现起来就会比较麻烦,但是学习使用还是很好的,适合我们这样
单片机点阵595驱动芯片通常指的是基于74HC595芯片设计的点阵显示模块驱动电路。74HC595是一种串行输入、并行输出的移位寄存器芯片,可以将串行数据转换为并行输出,常用于单片机驱动LED数码管、点阵显示屏等应用中。点阵显示模块则是
本系统采用两块74hc595级联作为点阵屏的行控制信号,控制点阵屏的16行。74hc595是具有8位移位寄存器和一个存储器,三态输出功能。移位寄存器和存储器是分别的时钟。数据在schcp的上升沿输入,在stcp的上升沿进入的存储寄存器中
74hc595能否驱动点阵
这个图片会压小。看大图到这看 http://0e.images22.51img1.com/6000/kgd235143/e4be871c454f0c1d6f7f46b964dacee7.jpg 要仿真的话我发给你,当然实际电路要三极管驱动 #include #define uchar unsigned char uchar i,j,k=15; sbit xsi=P2^0; sbit xrck=P2^1; sbit xsck=P2^2; sbit ysi=P2^3; sbit yrck=P2^4; sbit ysck=P2^5; sbit kg= P3^2; uchar code zbm[][32]={ {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,}, {0xFF,0xFF,0xFF,0xF7,0xBF,0xF7,0xBF,0xFB,0xBF,0xFD,0x03,0xE0,0xFF,0xFF,0xFF,0xFF, 0x01,0xF0,0x7F,0xEF,0xBF,0xEF,0x9F,0xEF,0xDF,0xEF,0xFF,0xF1,0xFF,0xFF,0xFF,0xFF},/*"北",0*/ {0xF7,0xFF,0xF7,0xFF,0xF7,0xEF,0xF7,0xF3,0x37,0xFF,0xB7,0xFE,0xB6,0xDE,0xD5,0x80, 0xDB,0xFE,0x5B,0xFF,0x9B,0xFB,0xFB,0xF7,0xFB,0xE7,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF},/*"京",1*/ {0xFF,0xEF,0x5F,0xF7,0xDF,0xFA,0xEF,0xFD,0x0F,0xFA,0xFF,0xDF,0xBF,0xEF,0xC7,0xF3, 0x58,0xFC,0xEF,0xFB,0xAF,0xF7,0xCF,0xEF,0xEF,0xCF,0xFF,0xDF,0xFF,0xDF,0xFF,0xFF},/*"欢",2*/ {0xBF,0xF7,0xBF,0xF7,0xBB,0xF6,0x37,0xF1,0xFF,0xF7,0x07,0xF6,0xF7,0xF6,0x7B,0xF7, 0xF9,0xEF,0x0F,0xE8,0xF7,0xEF,0x77,0xCF,0x07,0xCF,0xFF,0xEF,0xFF,0xEF,0xFF,0xFF},/*"迎",3*/ {0xFF,0xFE,0x7F,0xFF,0xBF,0xFF,0x0F,0xC0,0xF1,0xFF,0xFF,0xF7,0xBF,0xF9,0xCF,0xEF, 0xD1,0xDF,0x5F,0xC0,0xEF,0xFF,0xAF,0xFD,0xCF,0xFB,0xFF,0xF3,0xFF,0xFF,0xFF,0xFF},/*"你",4*/ 0x87,0xFF,0x03,0xFF,0x01,0xFE,0x00,0xF8,0x01,0xF0,0x01,0xE0,0x03,0x80,0x07,0x00, 0x07,0x00,0x03,0x80,0x01,0xE0,0x01,0xF0,0x00,0xF8,0x01,0xFE,0x03,0xFF,0x87,0xFF,/*"心",5*/ {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,}, }; uchar code zbm1[][16]={ {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,}, {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0xC0,0x6F,0xDB,0x63,0xEB,0x6C,0xEB}, {0xEF,0xEF,0xEF,0xDF,0x0F,0x80,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"自",0*/ {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3B,0xF0,0xBB,0xEF,0xBB,0xEF,0xBB,0xEF,0xDD,0xEF}, {0xCD,0xEF,0xF1,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0xEF,0xFF,0xF1,0xFF,0xFF,0xFF,0xFF},/*"己",1*/ {0x7F,0xFF,0xBF,0xFF,0x0F,0xC0,0xD1,0xFF,0xDF,0xF1,0x01,0xF6,0xEF,0xF6,0xEF,0xE8}, {0x3F,0xF7,0xCF,0xFA,0xD1,0xFD,0x1F,0xFA,0xEF,0xE7,0xEF,0xEF,0xFF,0xEF,0xFF,0xFF},/*"做",2*/ {0xFF,0xFF,0x3F,0xF8,0x9F,0xE6,0xAF,0xF6,0xD3,0xF7,0x1F,0xE0,0x7F,0xFF,0xBF,0xFF}, {0x5F,0xFF,0xC7,0xFC,0xD9,0xEF,0xEF,0xDF,0x0F,0xE0,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*"的",3*/ {0xFF,0xFF,0x3F,0xCF,0x3F,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF},/*":",4*/ {0xF7,0xDF,0x07,0xC0,0xF7,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xCF,0xFF,0xFF},/*"L",0*/ {0xF7,0xDF,0x07,0xC0,0x77,0xDF,0x77,0xDF,0x17,0xDC,0xF7,0xDF,0xEF,0xE7,0xFF,0xFF},/*"E",1*/ {0xF7,0xDF,0x07,0xC0,0xF7,0xDF,0xF7,0xDF,0xF7,0xDF,0xEF,0xEF,0x1F,0xF0,0xFF,0xFF},/*"D",2*/ {0xFF,0xDF,0xFF,0xE7,0xFF,0xFF,0xFF,0xFF,0x7F,0xF4,0x7F,0xED,0x81,0xFD,0xB7,0xFD}, {0xB7,0xF5,0xBB,0xED,0x3B,0xFE,0xFF,0xF7,0xFF,0xEF,0xFF,0xCF,0xFF,0xFF,0xFF,0xFF},/*"点",3*/ {0xFF,0xFF,0x03,0xE0,0xBB,0xFF,0x6D,0xFF,0x11,0xFB,0xFF,0xFB,0x37,0xFB,0x57,0xFB}, {0x67,0xFB,0x19,0x80,0xBB,0xFD,0xBB,0xFD,0xBF,0xFD,0xFF,0xFD,0xFF,0xFD,0xFF,0xFF},/*"阵",4*/ {0xFF,0xEF,0xFF,0xF7,0xFF,0xF9,0x7F,0xFE,0x81,0xBD,0x75,0xDD,0x65,0xE5,0x55,0xF8}, {0xB6,0xFD,0x9A,0xFD,0x28,0x80,0xBC,0xFE,0xBF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFF},/*"屏",5*/ {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF}, {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,}, }; void ys (uchar a) //延时 { uchar b; for (;a>0;a--) for (b=100;b>0;b--) ; } void yfs() //Y轴发数 { ysck=0; yrck=0; k++; if (k==16) { k=0; ysi=0; } else ysi=1; ysck=1; P2=P2|0X14; //相当于 xrck=1; yrck=1; } void xfs(uchar a) //X轴发数 { uchar b,a1,a2; a1=~zbm[6][a*2+1]; a2=~zbm[6][a*2]; xsck=0; xrck=0; for (b=0;b<8;b++) { a1=a1<<1; xsi=CY; xsck=1; xsck=0; } for (b=0;b<8;b++) { a2=a2<<1; xsi=CY; xsck=1; xsck=0; } } void fs(uchar a) //X轴发数 { uchar b; xsck=0; xrck=0; for (b=0;b<8;b++) { a=a<<1; xsi=CY; xsck=1; xsck=0; } } void gdhs(uchar *zz,uchar N,uchar Time) //流动显示N个汉字 滚动函数 { //参数三个:字符串字模首地址、字数、显示流动速度 uchar FontNum,i,j,row; //循环变量,字数计数、16次流动、16列扫描 for(FontNum=0;FontNum<N;FontNum++) { for(i=0;i<16;i++) //字到字流动 16次左移才能完成 { for(j=0;j<Time;j++) //显示延迟,决定流动速度 { k=15; for(row=0;row<16;row++) //显示16*16屏幕一次 { yfs(); //选通显示列 //行选线,P3 低四位 fs (~*(zz+FontNum*32+(i+row)*2+1)); //以移动偏移为基础获取新数据 fs(~*(zz+FontNum*32+(i+row)*2)); //获取显示数据 循环显示关键算法 ys (12); //适当延时 } } } } } void wbzd () interrupt 0 //外部中断 { j++; if (j>1) j=0; ys(10); while (!kg) { k=15; for (i=0;i<16;i++) { yfs(); xfs(i); ys(10); } } if (j==0) gdhs(zbm,8,2); if (j==1) gdhs(zbm1,10,1); } void main () { EA = 1; //打开总中断 EX0=1; IT0=1; while (1) { if (j==0) gdhs(zbm,8,5); if (j==1) gdhs(zbm1,10,3); } }74hc595要用四片 行列扫描 把两组(一组两片)的锁存脉冲接在一起。 然后把第一片的Q7‘接入第二片的SDA。另外把每组SCK接在一起。 十六位的移动是只 你往595里送个数据。那么595就会把最先送入的数据丢掉。然后整体向前移一位。 另外要注意。OE要接地。而且需要输出的时候锁存要产生一个上升。
仿真实例试试。
硬件都焊好了,你要把原理图发上来,要不程序写出来也不一定匹配吖
要不了这么多驱动两个74HC59和一个74HC154.给你图你看看。
看电路图,行驱动直接接在单片机I/O口上,有问题吧,单片机I/O不管是输入还是输出,都承受不了32LED灯。所以在I/O口上要加放大电路。这个不是小程序,只能说思路。 先要明白汉字显示就是点阵显示。根据电路一次最多只能2个汉字,再多就只能滚动或刷屏。所以以2个汉字为基础开始编程。 将第一行的点阵(32个位),顺序写入595,输出595. 控制第一行的I/O驱动,点亮第一行。 延时5ms 将第二行的点阵(32个位),顺序写入595,关第一行,输出595. 控制第二行的I/O驱动,点亮第二行。延时5ms 同理,顺序点亮16行。一屏扫描完毕,重复循环,汉字就显示出来了。必须重复循环,否则没显示。 显示滚动效果。 滚动效果其实就是控制行点阵的内容,将每行的32个位,右移一位,再写入595,就是滚动效果了。每扫描一屏,移位一个,位扫描多屏,移动一个,可以控制滚动的速度
单片机既可以使用汇编语言也可使用C语言来编写程序。 这与选择的编译环境和下载方法有关。 不过,对于初学者来说,最好使用C语言来完成。 根据选定的单片机型号,来选择适合的编译器和下载器。 自学的话多到论坛里查找一些资料,要是跟着老师的话,一切就听老师的就ok。
单片机编程语言很多,大致分成三类:机器语言、汇编语言、高级语言。机器语言由于繁琐容易出错,大部分用户已经不再便用。 1.单片机的汇编语言 汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少,程序执行效率高,由于它一条指令就对应一条机器码,每一步的执行动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。但是不同的类型的单片机,其汇编语言可能有点差异,所以不易移植,因为他们的指令系统是有区别的。但懂得汇编语言可帮助了解影响川可语言效率的特殊规定。例如,懂得汇编语言指令就可以便用在片内ram作变量的优势,因为片外变量需要几条指令才能设署累加器和数据指针进行存取。同样的,当要求便用浮点数和启用函数时也只有具备汇编编程经验才能避免生成庞大的、效率低的程序,对于这方面的编程,没有汇编语言是做不到的。 2.单片机的C语言 单片机的C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言具有功能丰富的库函数,运算谏磨快,编译效率高,有良好的可移植性,而且可以实现直接对系统硬件的控制。此外,C语言程序具有完整的程序模块结构,从而为软件开发中栗用模块化程序设计方法提供了有力的保障。与汇编相比,有如下优点: 对单片机的指令系统不要求了解,仅要求对51的存储器结构有初步了解,至于寄存器分配、不同存储器的寻址及数据类型等细节均由编译器管理。程序有规范的结构,可分为不同的函数。这种方式可便程序结构化,将可变的选择与特殊操作组合在一起,改善了程序的可读性。 编程及程序调试时间显著缩短,从而提高效率。提供的库包含许多标准子程序,具有较强的数据处理能将已编好程序可容易的植入新程序,因为它具有方便的模块化编程技术。 功能强而有弹性,提供的库包含许多标准子程序,具有较强的数据处理能力,能将已编好程序容易的植入新程序,因为它具有方便的模块化编程技术。 单片机C语言作为一种非常方便的语言而得到广泛的支持,(语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片翻U均不同较快地移植过来。 用单片机c语言进行程序设计,已成为单片机软件开发的一个主流,作为一个技术全面并涉足较大规模的软件系统开发的单片机开发人员最好能够掌握基本的C语言编程。 拓展资料 单片机,全称单片微型计算机(英语:Single-Chip Microcomputer),又称微控制器(Microcontroller),是把中央处理器、存储器、定时/计数器(Timer/Counter)、各种输入输出接口等都集成在一块集成电路芯片上的微型计算机。与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本。它的最大优点是体积小,可放在仪表内部,但存储量小,输入输出接口简单,功能较低。由于其发展非常迅速,旧的单片机的定义已不能满足,所以在很多应用场合被称为范围更广的微控制器;由于单芯片微电脑常用于当控制器故又名single chip microcontroller,但是目前在中国大陆仍多沿用“单片机”的称呼。