完全外行的问题:PC外设和单片机之间有多大的联系呢?

Kane204   2010-5-1 12:34 楼主
    其实想问的问题很杂,完全不知道该怎么定标题,希望大家看完帖子别喷我是标题党- -

    最近和朋友突发奇想打算做一个PC外设,功能类似键盘。因为原本的出发点是自娱自乐,所以最开始确实试过对键盘直接进行改造。但是实际效果不太理想,特别是电脑同时只能接受一个键盘这点实在很不方便。
     但是兴趣完全被调动起来,实在不想就这么半途而废,于是来问一些小白的问题,希望大家帮忙

Q1、PC外设和单片机之间的联系有多大?利用单片机开发pc外设这个方向是否正确?
   其实之所以发到单片机版块,单纯是因为硬件方面听到最多的词汇是单片机- -,而实际对于单片机的了解也仅限于理论上知道是一个简化版的PC这点(如果理解错误请大家指正)。另外一个方面,也是考虑到单片机的控制主要用到了自己比较熟悉C编程,所以觉得比较亲切一些。
   去书店找过单片机的书籍,实际看到的例子大都是一些独立的小系统。所以现在很迷茫,对于想利用单片机来制作这个简单的pc外设这个方向是否正确很没底。

Q2、制作类似于键盘这种功能的PC外设需要哪些方面的知识?
   现在自己具备的知识,软件方面ASM/C/C++/C#都算用过一段时间,windows编程也比较熟悉,windows下驱动编程花时间也应该是力所能及的范畴。硬件方面的知识比较贫乏,只有曾经学过的数电模电、接口技术这点而已。不知道还需要补充哪些方面的知识呢?
   如果哪位有类似的例子或者教程可以分享给我,实在感激不尽

Q3、制作外设的成本一般在多少?
    因为是完全不会有收益的自娱自乐行为,所以预算不太多。不知道软硬件方面的投入大概会有多少呢?

THX for reading

回复评论 (5)

自己制作这种小玩意的话,首先要做的是规划好整个架构。要明确自己想要实现什么功能。若是新手的话,更是首先要搞清楚自己想要实现和怎么实现想象中的功能。这点尤其重要,因为如果在设计中对于功能的需求不明确的话,最后能成功的很少。
其次就是要想明白,用什么方式实现与PC的通讯。单片机可以算是阉割版的PC,其实想要用单片机实现某些简单的功能并不难。但是想要建立起一个单片机与PC之间的行之有效且健壮快捷的通讯方式,则有那么一点难度。这个需要PC端和单片机端两方面都有一定程度的了解,才能够达到完全按照自己的想法做成功的层次。一般初学的话,使用现有的开发板是一条捷径。
以你所介绍的情况来看,难点应该在于硬件调试。成本投入方面,则要看你想要用什么方式来实现通讯功能了,串口?USB?RJ45网络?等等各种设备芯片都是不同的范畴。虽说价格差不多,但是相应的学习过程以及开发板的费用,差距还是很大的。一般来说,串口最便宜
点赞  2010-5-1 13:56
谢谢楼上指点

对于这个东西规划和构架,因为还不太清楚需要用到多少东西,多少有点无从下手的无力感。属于知道自己想实现什么却不知道该怎么努力的阶段

毕竟是初学,所以想实现的功能对单片机运算、存储方面要求都很低(好比键盘)。所以最头疼的还是不太清楚外设和PC的实时通信如何实现,请各位推荐一些这个方面的书籍或者资料

PS:对于我这种要求的情况,购买哪种开发板比较合适呢?
点赞  2010-5-1 15:56
如果是初学的话,51单片机是最容易上手同时资料也最多的单片机了。各项性能指标也能够达到你所说的要求。在网上随便搜搜都能找到不错的视频教材。不过我最近没关注这方面的东西,听说貌似郭天祥的视频不错,论坛里不少其他帖子也提到这个问题,你可以翻一翻参考一下
和PC的实时通信,要看你在PC端的接收程序是怎么写的,如果使用自己专门编写的接收程序的话,通信是很容易实现的,51的串口是与PC最容易实现的通信功能之一。但如果想使用PC自带的程序来进行通信的话(比如你说的自制键盘,我推测应该是想要让PC操作系统自己识别和使用吧),难度就提高了不止一个层次了,这个就需要啃PC相关协议的资料还有操作系统的API接口资料了
点赞  2010-5-1 19:01
C_Rabbit果然是好人啊,多谢你的指导

我已经下载到郭天祥的视频和单片机相关书籍,剩下就是要开始慢慢学习了

PS:对于你最后说的稍微有点疑惑。自己编写PC端识别串口通信程序的话,不需要驱动程序让PC端识别这个外设么?
点赞  2010-5-1 19:49
你的疑惑……
自己编写PC上位机程序也是用工具编写的,很少说用C语言直接一个个模块函数自己搞定
VC,VB等等很多编译环境都是有串口通讯的模块,可以直接使用的。这种模块其实就是驱动程序的一种表现
点赞  2010-5-1 23:01
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复