用51单片机做16*16点阵需要哪些材料

请大神详细点,大一新生,0基础,可以的话附上电路图,而且是带重力感应的.......谢谢

师弟。。。不能做伸手党丫。。。: )

好吧说正经的。。

首先最基本的要求是点阵驱动。
因为16x16,要用32个I/O口,对于89S51单片机这是不现实的。所以需要I/O口扩展。I/O扩展有很多方法,比较常用的是用四个锁存器(74HC573),把一组八个I/O口的数据在四个时钟周期内分别锁存在四个锁存器里。这是最简单最笨的方法(用12个IO口),而且有缺陷。。
更好的方法是利用移位寄存器(74HC595),用SPI总线通信的方式(单片机的硬件SPI接口,或软件I/O模拟SPI)。四个595就能存32位了——用环形SPI总线的方式在时钟的驱动下把32位数据逐一移入595内部的寄存器,然后再让595的输出端口刷新。这样非常节省IO口(用3个就行),硬件电路也简单很多

第二,你说的“重力感应”。。。
这个也是能实现的 :P
重力感应(其实就是测量倾角)需要加速度传感器。测量倾角其实就是测量重力在传感器的水平轴向的分量(这分量和传感器与水平面间夹角呈三角函数的关系),这个分量测量值与传感器测量1G时的输出数值之比做arcsin变换就是倾角。
加速度传感器要用数字的,因为89s51单片机没有模拟量采集用的A/D接口。淘宝有售,一般还有例程,可以参考。我用过的是MMA8451。当然你也可以用带A/D的增强型51——STC12C5A60S2,然后用模拟加速度计MMA7361,不用总线通信编程。

这样的工程网上是找不到现成东西的,希望你能自己学习,这对你也很有帮助。零基础学51可以看杜阳《爱上单片机》。买块开发板最好。

另外想要快速开发用arduino比51好。。。是用老外用AVR搞的,不但运算速度快、接口丰富,而且有现成的驱动函数调用就行。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-26
单片机最小系统,+点阵块和按键+传感器

用51单片机做16*16点阵需要哪些材料
首先最基本的要求是点阵驱动。因为16x16,要用32个I\/O口,对于89S51单片机这是不现实的。所以需要I\/O口扩展。I\/O扩展有很多方法,比较常用的是用四个锁存器(74HC573),把一组八个I\/O口的数据在四个时钟周期内分别锁存在四个锁存器里。这是最简单最笨的方法(用12个IO口),而且有缺陷。。更...

【51单片机系列】proteus中创建16x16LED点阵
首先,文章详细介绍了在Proteus中测试8x8点阵的电流方向和行列控制接口的方法,结果表明红色点阵电流方向为上->下,蓝色、绿色和橘色点阵为下->上,红色点阵接口为上列下行,其他颜色点阵为上行下列。其次,文章提供了使用8x8点阵制作16x16点阵的详细步骤,包括创建、分解、复制、制作Symbol等操作,最终得到16x...

我用51系列单片机做16*16汉字点阵,但是点阵显示偏暗怎么办?我想是单片 ...
一般都用595来做,8行一个595 需要2个595送数据;再用2个595当列扫描,共需要4个595 就可以完成;另外,你也可以用三极管来驱动行,但是这样会造成行列显示亮度不一致,但绝对比用IO直接驱动要好的多,单片机的驱动电流是很弱的,即便是加上拉电阻也不足以驱动点阵 ...

基于51单片机的16x16 led点阵显示屏设计原理与电路图
DJNZ R4,SCAN8 MOV R4,#16 DJNZ R3,SCAN16 AJMP END16 SCAN16:MOV A,R2 CLR C SUBB A,#32 MOV R2,A AJMP START END16:INC DPTR INC DPTR MOV A,R2 CLR C SUBB A,#32 MOV R2,A MOV A,R0 MOV R3,A AJMP START SLOW:LCALL DELAY20000 DEC R0 JB P1.0,AJMP BACK SOON:LCALL...

51单片机用汇编语言驱动16*16点阵显示“机电工程系”汉字
;16X16LED点阵流动显示 ;逐列、逆向(低位开始)扫描 ORG0000H AJMPMAIN ORG0030H MAIN:MOVDPTR,#TAB;字码表初址赋值 MOVR1,#00H;列控制码 MOVR4,#96;移动" "及"机电工程系"6个字符,共96列 CM:MOVR5,#5;每屏反复显示5次 MOVR3,#16;列数 C1:MOVR2,#0;取码指针 C16:MOVP0,#00H ...

我想编写16*16点阵的左移程序。用C语言,51单片机。你能否帮我编一个小...
sbit SH_CP=P2^0;sbit DS=P2^1;sbit ST_CP=P2^2;uchar code tab[ ]= { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,\/*" ",0*\/...

51单片机驱动160160点阵显示屏字太大的问题
LCD_OpenWindow(x, y,16, 16); \/\/16 *16 LCD_ILI9341_CMD(0X2C); \/\/这是ILI9341的一个命令 for( page=0; page < 32; page+=2 ) \/\/16行写16次 { temp1 = hanzi[n][page];\/\/一行的左半部8个点 占一字节 temp2 = hanzi[n][page+1];\/\/一行的右半部8个点 占另一字节 ...

51单片机16*16点阵4个汉字LED屏显示 请帮忙修改下程序,其他都不变...
共16行,第三次中断,从行缓存头上开始,每行送18个BIT,共16行,。。。依此类推。第九次中断,更新缓存字节的内容,每行送16个BIT。每次送的BIT超过了实际显示的象素,这样从显示的效果看起来就是字在向左移动。与之对应,如果先送24个BIT,然后,23,然后22,则显示效果是右移 ...

...关于51单片机用4个8*8点阵怎么连成16*16的点阵啊?电路图不会,帮帮忙...
用74ls595和74ls154

...驱动16*16点阵完成上下左右滚动的功能的51单片机程序
\/\/74HC595练习程序 \/\/串入并出实现16流水灯效果 \/\/2009.12.28 includereg52.h sbit shcp=P2^0; \/\/数据在上升沿进入移位寄存器 sbit date1=P2^1; \/\/串行数据输入端 sbit clock=P2^2; \/\/上升沿时将数据输出到并行端口 unsigned char tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe...

相似回答