精华内容
下载资源
问答
  • 在74HC595等串口并口芯片接线的时候,我们会遇到两个问题:74HC595有时候按次序接线较困难。比如上图,我的我这样接线是方便,但是一些图形显示的库就不能直接用了,因为这些库需要按固定次序连线,当然,我们可以...

    在74HC595等串口转并口芯片接线的时候,我们会遇到两个问题:

    74HC595

    有时候按次序接线较困难。比如上图,我的我这样接线是方便,但是一些图形显示的库就不能直接用了,因为这些库需要按固定次序连线,当然,我们可以改造数码管字库数据,但太麻烦了。

    我的74HC595某引脚连接的电路坏了,或者我只想使用部分引脚。比如我焊接的8个LED有3个坏了,我想在LED顺序点亮的时候只点亮5个。或者我只想用4个LED,传数据的时候,我只传0~15即可。

    我写了两个函数来解决这些问题。这两个函数均是可变长参数,感觉还比较好用。

    shiftOutQPins 这个函数可以用来解决问题2。用法和shirtOut相同,后面多了几个参数,表示你要使用的针脚。数字对应使用的Q引脚号。引脚使用的次序是按MSBFIRST和LSBFIRST来的,和输入的次序无关。

    如果要们要使用Q7,Q5,Q3,Q2,前几个参数和shiftOut类似,后面加上4,7,5,3,2。4表示参数的个数。

    shiftOutQPinsOrder 可以用来解决问题1和2。和shiftOutQPin不同的是,是按次序使用制定的引脚的,所以少了bitOrder参数。

    shiftOutQPinsOrder(dataPin, clockPin, val, 8, 7, 6, 5, 4, 3, 2, 1, 0);

    等同于shiftOut(dataPin, clockPin, MSBFIRST, val);

    shiftOutQPinsOrder(dataPin, clockPin, val, 8, 0, 1, 2, 3, 4, 5, 6, 7);

    等同于shiftOut(dataPin, clockPin, LSBFIRST, val);

    上图应该用shiftOutQPinsOrder(dataPin, clockPin, val, 8, 6, 7, 1, 2, 3, 5, 4, 0);

    这两个函数本质是对shiftOut的封装,能用shiftOut的情况皆可用这两个封装。

    // 只使用74HC595等芯片部分引脚输出数据

    //

    // 和系统shiftOut函数参数对比

    // shiftOutQPins(dataPin, clockPin, bitOrder, value, count, pins...);

    // shiftOut(dataPin, clockPin, bitOrder, val);

    // dataPin, clockPin, bitOrder:用法与shiftOut函数相同

    // value:使用的针脚能表示的数值,如果用到n个针脚,数值最大应为2^n-1,若超过范围,只截取后面n位的数据

    // count:要使用的QPin个数

    // pins:使用的QPin针脚,次序可任意

    //

    // 使用范例

    // DS,SH_CP分别接在Arduino 11,12引脚,使用Q6, Q4, Q2, Q1, Q0五个引脚,使 Q6 与 Q2 输出高电平:

    // shiftOutQPins(11, 12, MSBFIRST, B10100, 5, 6, 4, 2, 1, 0);

    void shiftOutQPins(uint8_t dataPin, uint8_t clockPin, uint8_t order, uint8_t value, int count, ...) {

    int8_t pins[8] = { -1, -1, -1, -1, -1, -1, -1, -1};

    if (count <= 0) return;

    if (count > 8) count = 8;

    int8_t pin;

    va_list ap;

    va_start(ap, count);

    uint8_t index = 0;

    for (uint8_t i = 0; i < count; i++) {

    pin = va_arg(ap, int);

    if (pin < 0 || pin > 7) continue;

    pins[index] = pin;

    index++;

    }

    va_end(ap);

    qsort(pins, index, sizeof(int8_t), &ascending);

    if (order == LSBFIRST) {

    shiftOutQPinsOrder(dataPin, clockPin, value, 8, pins[0], pins[1], pins[2],

    pins[3], pins[4], pins[5], pins[6], pins[7]);

    } else {

    shiftOutQPinsOrder(dataPin, clockPin, value, 8, pins[7], pins[6], pins[5],

    pins[4], pins[3], pins[2], pins[1], pins[0]);

    }

    }

    // 使74HC595等芯片按指定的引脚次序输出数据,可只使用部分引脚

    //

    // void shiftOutQPinsOrder(uint8_t dataPin, uint8_t clockPin, uint8_t value, int count, pins...)

    // dataPin, clockPin:用法与shiftOut函数相同

    // value:使用的针脚能表示的数值,如果用到n个针脚,数值最大应为2^n-1,若超过范围,只截取后面n位的数据

    // count:要使用的QPin个数

    // pins:使用的QPin针脚,有次序

    //

    // shiftOutQPinsOrder(dataPin, clockPin, val, 8, 7, 6, 5, 4, 3, 2, 1, 0);

    // 等同于shiftOut(dataPin, clockPin, MSBFIRST, val);

    //

    // shiftOutQPinsOrder(dataPin, clockPin, val, 8, 0, 1, 2, 3, 4, 5, 6, 7);

    // 等同于shiftOut(dataPin, clockPin, LSBFIRST, val);

    //

    // 使用范例(1)

    // DS,SH_CP分别接在Arduino 11,12引脚,要按照Q7, Q6, Q2, Q1, Q0,Q3, Q5, Q4次序输出:

    // shiftOutQPinsOrder(11, 12, B11111111, 8, 7, 6, 2, 1, 0, 3, 5, 4);

    // 使用范例(2)

    // DS,SH_CP分别接在Arduino 11,12引脚,使用Q6, Q4, Q2, Q1, Q0五个引脚,使 Q6 与 Q2 输出高电平:

    // shiftOutQPinsOrder(11, 12, B10100, 5, 6, 4, 2, 1, 0);

    void shiftOutQPinsOrder(uint8_t dataPin, uint8_t clockPin, uint8_t value, int count, ...) {

    int8_t pins[8] = { -1, -1, -1, -1, -1, -1, -1, -1};

    if (count <= 0) return;

    if (count > 8) count = 8;

    int8_t pin;

    va_list ap;

    va_start(ap, count);

    uint8_t index = 0;

    for (uint8_t i = 0; i < count; i++) {

    pin = va_arg(ap, int);

    if (pin < 0 || pin > 7) continue;

    pins[index] = pin;

    index++;

    }

    va_end(ap);

    // 7, 4, 6, 1, 2 // 引脚数组pins(忽略未使用的引脚)

    // 1, 2, 4, 6, 7 // 排序后数组pinsOrdered

    // 4, 2, 3, 0, 1 // 7,4,6,1,2在pinsOrdered中的索引(position)

    int8_t pinsOrdered[8];

    memcpy(pinsOrdered, pins, sizeof(pins)); // 复制pins数据到pinsOrdered

    qsort(pinsOrdered, index, sizeof(int8_t), &ascending);

    uint8_t val = 0;

    for (uint8_t i = 0; i < index; i++) {

    uint8_t position = 0;

    for (; position < index; position++) {

    if (pins[i] == pinsOrdered[position]) break;

    }

    uint8_t bitValue = (!!(value & (1 << position))) << (index - 1 - i);

    val += bitValue;

    }

    shiftOut(dataPin, clockPin, 1, val);

    }

    // 用于qsort函数,从小到大排列

    int ascending(const void * a, const void * b) {

    return *((int8_t *)a) - *((int8_t *)b);

    }

    展开全文
  • 串口(SATA)改并口(PATA)

    2008-10-23 13:57:28
    串口硬盘和并口硬盘BIOS中的设置2008-09-24 16:15两种接口的问题,有些兄弟倒是在WINDOWS中出了些莫明其妙的问题 让SATA和PATA和平共处的关键在于其占用的IDE通道位置不能冲突。还要注意,DOS/Win98/WinMe系统...
    串口硬盘和并口硬盘BIOS中的设置2008-09-24 16:15两种接口的问题,有些兄弟倒是在WINDOWS中出了些莫明其妙的问题


    让SATA和PATA和平共处的关键在于其占用的IDE通道位置不能冲突。还要注意,DOS/Win98/WinMe系统只能支持4个IDE设备,而Win2000/XP/2003系统可支持6个设备(注:第三方的SATA控制器可突破此限制)。关于SATA占用IDE通道位置的设置部分,各厂家有所不同。

    以Intel 865PE芯片组的ICH5南桥为例:
    进入BIOS后,选择Main下的IDE Configuration Menu,在Onboard IDE Operate Mode下面可以选择两种IDE*作模式:
    兼容模式和增强模式(Compatible Mode和Enhanced Mode)。
    其中Compatible Mode,可以理解为把SATA硬盘端口映射到并口IDE通道的相应端口,通常适用于DOS/Win98/WinMe系统;
    Enhanced Mode下的SATA硬盘将使用独立的IDE通道,不与原PATA设备冲突,但仅适用于Win2000/XP/2003系统。


    一、BIOS设置部分

      由于各家主板的BIOS不尽相同,但是设置原理都是基本一致的,在此只介绍几种比较典型的BIOS设置,相信读者都能够根据自己主板BIOS的实际情况参考本文解决问题。

      1.南桥为ICH5/ICH5R的主板

      先以华硕的P4C800为例,这款主板芯片组为i865PE,南桥为ICH5/ICH5R。进到BIOS后,选择Main下的IDE Configuration Menu,在Onboard IDE Operate Mode下面可以选择两种IDE*作模式:兼容模式和增强模式(Compatible Mode和Enhanced Mode)。其中兼容模式Compatible Mode,可以理解为把SATA硬盘端口映射到并口IDE通道的相应端口,当你选择这种模式时在下面的IDE Port Settings中会有三个选项:

      Primary P-ATA+S-ATA:并行IDE硬盘占据IDE0+1的主通道(Primary IDE Channel),串行SATA硬盘占据IDE2+3的从通道(Secondary IDE Channel)。也就是说这时主板上的第二个并行IDE接口对应的端口不可用。

      Secondary P-ATA+S-ATA:与上面正相反,此时主板第一个并行IDE接口(Primary P-ATA)上对应的端口不可用,因为给SATA硬盘占用了。

      P-ATA Ports Only:屏蔽了串行SATA硬盘接口,只能使用并行接口设备。

      注:前两种模式中,主板上的SATA1接口自动对应IDE通道中*主盘位置,SATA2接口自动对应IDE通道中*从盘位置。

    当选择模式为增强模式Enhanced Mode时,其下的端口设置的字样变为Enhanced Mode Supports On,其中也有三个选项:

      P-ATA+S-ATA:并行和串行硬盘并存模式,此时SATA和PATA通道都相互独立互不干扰,理论上4个P-ATA和2个S-ATA可同时接6个设备,实际上得根据不同主板而定,有的南桥芯片就只支持4个ATA设备。此时SATA1口硬盘对应Third IDE Master(第三IDE通道主盘),SATA2口硬盘对应Fourth IDE Master(第四IDE通道主盘)。

      S-ATA:串行硬盘增强模式,此时理论上支持4个串行硬盘,但还得看主板的支持情况(如果是ICH5R芯片组如P4P800,想组RAID模式,则必须要选择此项,并将Configure S-ATA as RAID项设为Yes,S-ATA BOOTROM项设为Enable,设置后BIOS自动检测的时候按“Ctrl+I”进行RAID设置)。

      P-ATA:其实还是一种映射模式,SATA硬盘占据的是第一个IDE通道,SATA1口对应第一个通道的主盘,SATA2口对应第一个通道的从盘。

      当你使用的是Win98/Win NT/Win2000/MS-DOS等传统的*作系统时,由于它们只支持4个IDE设备,所以请选择兼容模式Compatible Mode,并根据你的实际硬盘数量和位置选择IDE Port Settings中*对应选项;当你使用的是WinXP/Win2003等新型的*作系统时,可以选择增强模式Enhanced Mode来支持更多的设备。当然如果你安装Win98+Win XP双系统的话,也只好选择Compatible Mode了。另外,有的主板BIOS有BUG,致使在单个SATA硬盘上安装Windows 98SE系统时不能正确安装SATA硬盘(如:华擎P4VT8),只需要升级BIOS版本到最新版就可以解决了。

      注:虽然SATA硬盘本身并没有主从之分,但是如果使用了端口映射的模式,当你想要并行硬盘和串行硬盘共存时,还是得注意硬盘所占的位置不要冲突了,而且启动顺序也需要在BIOS中根据实际情况进行相应调整。
    展开全文
  • 1292板80G并口改1335串口黑白盘通用固件
  • 将PATA的硬盘设为从盘,比如我这个是把帽拔掉,然后将SATA的插到主板的SATA1口上,接下来在bios中boot选项里将hard disk drivesSATA的硬盘为第一启动,将hard disk drives上面的那个选项也对应一下即可:)...
    将PATA的硬盘设为从盘,比如我这个是把帽拔掉,然后将SATA的插到主板的SATA1口上,接下来在bios中boot选项里将hard disk drives改SATA的硬盘为第一启动,将hard disk drives上面的那个选项也对应改一下即可:)
    展开全文
  • (一)环境 windows XP下使用vmware+redhat 9,因为主板是微星的neo2,不带串口并口,所以使用了串并口组合卡(2个串口1个并口)(二)串并组合卡引起的问题 1.在windows环境下,做wince实验,并口烧写(修改sjf...

    (一)环境
               windows XP下使用vmware+redhat 9,因为主板是微星的neo2,不带串口和并口,所以使用了串并口组合卡(2个串口1个并口)


    (二)串并组合卡引起的问题
              1.在windows环境下,做wince实验,并口烧写(修改sjf的源代码,主要修改并口地址,修改后烧写没有问题)没有问题,但是串口有问题。串口1有显示,串口3和串口4都没有显示信息。串口的问题仍没有解决。
             2.在linux环境下,vmware“可移动设备”里选择串口,连接物理串口3,用minicom -s设置时,选择的是/dev/ttyS0,如此设置串口可以用。但是Linux环境下的并口有问题。使用linux下的Jfalsh烧写时,总是提示找不到并口(在修改过Jfalsh的源码,修改过并口的地址之后仍不起作用)。


            3.最后采取两者结合的方式。并口烧写在windows下用sjf,串口通信在linux下用minicom。通过vmware提供的共享功能,把v配置完成的vivi拷到windows系统,然后利用修改过的sjf烧写vivi。
            4.对sjf源代码的修改:sjf提供了vc的源代码,主要对ppt.h进行修改。

     

    #define LPT1 0×378  // the search order is LPT1 then 2 then 3
    #define LPT2 0×278  // first valid address found is used (re-order if needed for multiple ports)
    #define LPT3 0×3bc  // hardware base address for parallel port

     

    通过设备管理器查看自己的并口对应的地址,把源程序中LPT1的地址换成自己并口的地址。

    展开全文
  • 往往植移u-boot或做裸板开辟,有诸多不便,电脑没有并口也没有openjtag,大多数人都望而止步,也不忍心坏破新买板子的系统。我想到一种方法,电脑没有并口,没有openjtag还是能做裸板开辟,也能植移u-boot。一般新买...
  • 然而,对于日益普及应用的笔记本电脑而言,由于没有提供扩展插槽,不能够直接做成插卡的形式,因此就需要充分利用笔记本提供的外围接口,例如并口串口等来实现。由于串口速度的限制,对于速度比较高的数据采集与...
  • 新学期开始,老师出个题,让我写个串口通信程序,因为我学的是java,所以就采用java语言。在百度上搜索了一番,找到了一些资料,然后就在别人的demo上面做...Rxtx是个提供串口并口通信的开源java类,  RXTX的旧版
  • 买了个华塑的Express转串并口开,给的Linux驱动是2.4和2.6的,现在用的Linuxmint17.1 内核是3.13,特别是现在大部分Linux发行版的内核都是3.0以上,故询问,技术支持,被告知没有新内核的驱动,因此,打算自己跟着...
  • 设备名称sd*串口的传输速度比并口的更块,为什么?单个磁盘来说,由一个个的同心圆组成,一个同心圆就是一个磁道,每个磁道由多个扇区组成,每个扇区之间由没有磁性的间隙分隔。扇区有磁性物质,支持...
  • 如题。举个例子,收银机连接打印机实现收银、打印小票,现在想在中间接个硬件Android系统,截取打印数据上传到后台服务器,不对现有收银系统改造,不能影响正常...注:该硬件两端通过串口/并口/usb连接收银机与打印机
  • 这个环境和真实的计算机一样,都有芯片组、CPU、内存、显卡、声卡、网卡、软驱、硬盘、光驱、串口并口、USB控制器等。 VM安装 下载VMware虚拟机,双击进行安装 CentOS安装 修改虚拟机路径及文件名 这里...
  • 用于更改打印机内存设置,如是否检测黑标等,支持并口串口,只要你知道相关数值,就一定能
  • * 2.1 安装虚拟机 一. 虚拟机简介 二. VMware workstation 6.5的安装 三....用户可以随意修改虚拟机的设置而不用担心对自己的计算机造成损失虚拟机中有自己的CPU主板内存BIOS显卡硬盘光驱软驱网卡声卡串口并口和US
  • JT-9.0编程器驱动包括编程器烧录驱动、编程器串口驱动,液晶并口驱动及NT系列驱动。内含多款刷机软件:REALTEK刷机工具/MSTAR刷机软件/RTICE、NOVATEK刷机,华亚微刷机及MTK刷机,凌阳刷机软件及其他刷机软件。MTK...
  • 再分别将串口线、并口线和网线与 pc 机连接好。 2.建立超级终端 3.启动实验平台 4.修改 xp 系统与 redhat 虚拟机的 ip, 使得它们均与 arm 机的 ip 在同一网段 5.安装 arm 编译器 6.配置环境变量 7.建立 h...
  • 将原有的蜂鸣器改成了可以发出音乐的扬声器将液晶屏从串口改为了并口通信方式 9.采用了无需要任何外围元器件的高集成液晶屏模块 10.增加了单片机对LCD背光的控制功能(将在V3.0版中体现) 11.修正了程序中的几处...
  • 支持串口并口、USB、网口 1.4是目前最新的公用版本了,其它后续版本都有厂家的标示 包含DLL文件,帮助,VB/VC/DELPHI例程 下边是POS_OPEN函数原型 HANDLE POS_Open(LPCTSTR lpName, int nComBaudrate, int ...
  • 一、确定硬盘的类别硬盘除了品牌上的差异之外,还有端口上的区别,早些年使用的硬盘多一并口为主,而随着技术的更新迭代,硬盘体积逐渐在缩小,而并口也变成了传输速度更快、更稳定的串口。然而,随着近几年硬盘技术...
  • 调试u-boot的方法

    千次阅读 2009-07-21 23:57:00
    但是这样做就有个问题,当你按照别人的办法修改好了u-boot,好不容易把编译时的错误都排除掉,编译链接通过,然后通过并口download到nandflash上,一上电,如果串口有输出,那么恭喜你,你很幸运,但这种情况的概率...
  • STAT为串口 /dev/sda /dev/sdb (注:/dev是设备文件目录 sda为设备文件 s代表sata就是串口 d代表磁盘 a为第一块。) 分区方式 MBR:MBR支持最大的磁盘容量是 <2TB。设计时分配4个分区 如果希望超过4个分区,需...
  • <br />现在的硬盘基本都是串口(SATA)的了,相比并口硬盘(IDE)而言,串口硬盘有很多好处。但是大多数人电脑的硬盘其实依然是使用IDE模式在工作着。这是因为XP SP3之前的操作系统都不带SATA驱动,因此安装SP2版...
  • 由于串口传输速度较慢,故此实验是在“LCD12864 液晶显示-汉字及自定义显示(并口)”基础上进一步修改而来。在写代码之前还是得先搞清楚每一步的动作,具体步骤如下: 一、先找到一张128*64大小的图片,自己也可以...
  • 继 u-boot-2012.10移植一串口正常输出,继续修改代码支持单板NAND启动。最后直接用NOR Flash里的u-boot烧写自己移植的u-boot到NAND,方便电脑没有并口或手上没有openjtag,照样能移植u-boot,当然有openjtag更方便。...
  • 继 u-boot-2012.04.01移植一串口正常输出,继续修改代码支持单板NAND启动。最后直接用NOR Flash里的u-boot烧写自己移植的u-boot到NAND,方便电脑没有并口或手上没有openjtag,照样能移植u-boot,当然有openjtag更...
  • 硬盘IDE和AHCI模式的区别

    万次阅读 2018-01-11 09:33:39
    通俗易懂的说法就是,IDE就是ATA模式,是并口传输模式,04年前普及的技术,理论最大133Mb每秒,AHCI就是SATA模式,串口传输模式,新技术,传输速度快,理论最大300Mb每秒,简单点说就是这样。  调成IDE模式是为了...
  • IDE和ACHI区别

    万次阅读 2018-05-14 09:44:05
    IDE和ACHI区别 通俗易懂的说法就是,IDE就是ATA模式,是并口传输模式,04年前普及的技术,理论最大133Mb每秒,AHCI就是SATA模式,串口传输模式,新技术,传输速度快,理论最大300Mb每秒,简单点说就是这样。...

空空如也

空空如也

1 2 3
收藏数 60
精华内容 24
关键字:

串口改并口