电动车论坛

标题: 想学单片机又没有门路的网友赶紧进来 [打印本页]

作者: ddczha    时间: 2012-6-13 16:08
标题: 想学单片机又没有门路的网友赶紧进来
今天是我学单片机的第一天,准备好了所需的各种软件,现在已经可以编程和仿真了,由于我有汇编基础,学习很快,诸位网友可得快点学,以免跟不上。有什么问题尽管提问,下面介绍一下基本工具:
1、Keil uVision2软件,这是编译、仿真的工具,从网上搜一个安装即可,不过普通人可能不会用,可以看教程,从百度搜索Keil_uVision3教程,说得很详细,一般可以学会。
2、选择一种单片机,我看好STC的,又便宜又好用。要让KEIL支持STC单片机,可以去STC官网下载一个文件uv2.cdb,按说明装上就行。
现在你也可以编写单片机程序了,最好买本介绍51系列单片机的书,就万事俱备了。
作者: ddczha    时间: 2012-6-13 16:39
咱们研究充电器的,最好选择一款带AD转换的单片机,因为型号太多,随便找了一个,不好再换:STC12C5205AD。可以去STC官网下载一份说明书。下面的任务就是编一个程序,可以从书上抄一个短一些的程序,自己体验一下开发成功的乐趣。编程语言我推荐汇编,搞控制灵活。也可以用C,代码少。
编好第一个程序以后,就应该干点“大事”了,找一个有一定难度的活,自己干干。我初步设想是做一个一位的电压表,显示结果用发光二极管,第一个二极管亮代表1V,第二个代表2V,依此类推,不过程序内部电压精度是很高的。做完这个东西,咱就把软件和“硬件”都准备全了
作者: 7812    时间: 2012-6-13 17:55
顺便研究一下,科林的EM78P259单片机,如何?
作者: ddczha    时间: 2012-6-13 18:43
STC公司的产品既便宜,又是大陆产的,为什么要用台湾芯片?难道它更好?
作者: rensheng    时间: 2012-6-13 18:45
排队,搬个凳子学习。
作者: enlaixiangyu    时间: 2012-6-13 20:27
自娱自乐也不错··到时候发一下源代码看看
作者: ddczha    时间: 2012-6-14 09:18
本帖的目的是给各位想diy单片机充电器的人做普及工作,请不要乱发帖干扰正常秩序。
郑重声明,本人不是老师,彻头彻尾的一个单片机初学者,一边自学,一边教学,本身就很麻烦,而且上了年纪,家里偶尔还有事,比如今天就没有时间看书,抽空来搞点教育。如果真是高手,应该来帮忙,让广大网友受益,而不是乱出题目干扰。
好了,言归正传,学习单片机,首先要搞明白一个问题,单片机是什么,能干什么,怎么干,而不是纠缠于各种细节,看书速度要快,一天至少100页,不是从头到尾细看,而是始终围绕自己头脑中的各种疑问,有目的的去看,那些无关紧要的细节,就成了资料,需要时一查书就可以了。本人就是在一天内看完了整本书,当然我是有基础的,对高档微机很熟悉,但即使没有基础,也应该保持很高的速度。另外一点,各位对什么是明白一定要有清醒的认识,我听很多人说过,起初研究一个东西,觉得明白了,一动手,又发现自己根本不明白,这种现象在我身上从没发生过,为什么呢,我也不是很清楚,因为我无法知道别人是怎么“明白”的,这一点也很重要,就拿电路来说,什么叫明白,不是看懂电路流程就行了,里面的每一个元件,你得知道它是干什么的,它的参数是怎么得出来的,这才是明白。
作者: ddczha    时间: 2012-6-14 09:31
很多人说自学单片机很苦,我不这么认为,很苦是因为你方法不对,正规搞单片机的,不但要会单片机,还要会画电路图,制作电路版图,要自学这些,确实很麻烦,我的办法就是抛弃一切没有的东西,沿着一条主线全速前进,什么是主线呢,是充电器,只要我们可以做出充电器,能省的都可以省掉。另外一个主线就是出成果,要不断的给自己精神奖励,这要靠不断取得重大进步来实现。为什么电路图可以省呢,因为对初学者,电路图很简单,用手画就行,电路板怎么做呢,我是这样看的,如果没有条件,根本就不用做电路板,完全虚拟,跟我一样,有条件的最好做个实物,这样不但更刺激,还可以起检验作用。但是,做实物如果要迅速的话,不用做印刷电路板,有一种上面布满了小孔的电路母版,我不知道名字,普通电路用这个做完全可以,单片机最好做个插座,便于修改代码。
作者: ddczha    时间: 2012-6-14 09:40
好了,下面继续咱们的预定任务:电压表,这个STC带AD转换的单片机我的课本上没有,如果有的话你最好买一本介绍STC的书,STC网站公布了详细说明书,我看了一下,有400多页,电脑上看不方便,打印又太多,如果有条件,你可以把关键部分打出来。反正咱们现在看书速度超快,用电脑看也行(我打印不方便)。今天我还有些事,没有安排大的任务,主要就是看看STC的AD转换怎么用。各位初学者可以去准备一下课本,自学一下汇编语言。好了,就说这么多吧。
作者: ddczha    时间: 2012-6-14 15:04
事情忙的差不多了,抽空看了看STC说明书,不但有AD转换的详细介绍,还有源代码,这样咱们这个活就很简单了,现在应该做的是打好基础了,那些必须知道的规定,那些常用的指令,最好仔细看一看,初步预测,一周之后出成品,这个时间应该比较宽松了,可以完善一下细节,比如画电路图什么的。有了好东西,统统发上来,不过各位不要有依赖心理,不要指望什么都用别人的,那样其实对自己很不利,还是好好打好基础,想想以后可以编程来充电,多么过瘾啊。
作者: ddczha    时间: 2012-6-14 16:19
wufang2004 发表于 2012-6-14 15:11
STC的AD转换程序到STC网站下载AD芯片的说明,里面有现成的源代码可以用。

虽然晚了一步,还是谢谢你的支持,要是网友都像你这么热心,很快咱们很多人就用上单片机控制的充电器了。
作者: ddczha    时间: 2012-6-14 21:17
单片机控制充电器不是很简单啊,先不说单片机的速度能否跟得上实时的变化,就是上电初期单片机没启动时模拟系统如何初始化就是个问题,高压大电流工作,稍有不慎就是血的代价。除非做一种控制功能弱或需要别的集成电路配合的系统,可能还简单一些。
单片机做液晶表没有实用价值啊,如果为了好玩,做个数码管的更简单,反正电子表其他地方用不着多少引脚。做学问要耐得住寂寞,等到可以控制自如充电了,那时大家的兴趣就来了。
作者: pan9599    时间: 2012-6-14 21:42
精神上支持下吧,慢慢来,只要开始就别放弃!加油!
作者: x2425y2425    时间: 2012-6-15 09:03
强烈支持楼主的奉献精神,单片机可以用在电动车上很多地方的。比如仪表显示,电压、电流显示,充放电容量显示之类
作者: ddczha    时间: 2012-6-15 21:17
今天很抱歉,忙家里的事,一天没学习,不过有了一个新构思,我想和众网友一起开发一种完全基于单片机控制的“充电器母板”,意思就是各种控制功能都做成子程序,用户直接调用,公开全部源代码,用户(指发烧友)可以自由发挥想象,想怎么充就怎么充。这样可以极大的发挥民间智慧,大大促进电池延寿技术进步。
以我个人的力量办这件事不但要花钱,还要走很多弯路,所以我想联合大家的力量。我原先计划的学习进度保持不变,即使没有人帮忙,也可以按时完成(当然我非常欢迎各位帮忙),学好后我会考虑上面的事情,那时要诸位网友多多帮忙。先谢谢了。
作者: ddczha    时间: 2012-6-16 15:39
今天事情少,学了不少,不过好几年没这么学东西了,总喜欢三天打鱼,两天晒网。这样也好,可以保持和上班族一样的进度。
今天把课本有用的章节从头至尾又看了一遍,除了有些无关紧要的细节没看外基本上看完了。有一点体会就是当你看书看得差不多时,就要多看看别人的程序,这样可以知道很多东西,也可以熟悉一下学过的知识。现在各种知识已经准备的差不多了,我想抽空学学protel,改天发个电路图上来,就可以开始编程了。
作者: ddczha    时间: 2012-6-17 14:30
这是我画的电路图,初学乍练,错误难免,欢迎指正。
[attach]56919[/attach]
作者: ddczha    时间: 2012-6-17 14:36
我的电路图是用Protel99se画的,开始下载了一个protel,不会用,又找了一份说明书,名字叫Protel99SE精彩教程,各位不会的话可以自己找找看,里面不但有说明,还有元件库,听说Protel还有新版本,本想下来看看,一看1个多G,直接放弃了。因为水平很差,就不上传设计文件了。
作者: ddczha    时间: 2012-6-18 08:00
各位学的怎么样了?看反应好像给吓跑了,单片机真的那么难吗?我不信。
今天本想休息休息,一想还有很多活没干,就准备把STC说明书的例子代码输进微机,不过懒人自有懒办法,先上网搜索现成代码,居然找到了,核对了一下,基本完全一样,上传给各位看看。
作者: bg4wby    时间: 2012-6-18 08:12
提示: 作者被禁止或删除 内容自动屏蔽
作者: 力萌电器    时间: 2012-6-18 12:58
我是来看他用PROTEL仿真STC单片机的
作者: ddczha    时间: 2012-6-18 13:44
力萌电器 发表于 2012-6-18 12:58
我是来看他用PROTEL仿真STC单片机的

请仔细看完每一贴再来回复。
作者: ddczha    时间: 2012-6-18 14:10
现在就剩最后一步,编写程序,调试仿真了。不过没干之前觉得这是最难的一步,因为咱们的程序主要是AD转换,大部分代码必须看电子版说明书,而我最不喜欢整天看屏幕。由于页数太多,打印不便,目前还没有找到好办法,不过无论如何我会记住说过的进度,争取按时完成。哪位如果有什么好主意不妨给介绍一下。
作者: bg4wby    时间: 2012-6-19 15:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: ddczha    时间: 2012-6-19 16:09
等了一天,没见到什么好主意,只好强行突破,利用电脑显示器作学习资料。一看说明和源代码,终于明白为什么有些人说单片机难学了,不过本人自学了一辈子,这点小问题难不倒我,我有两个绝招,一是看不懂就使劲看,一遍不行两遍,两遍不行三遍,直到看懂为止,二是充分发挥自己的想象力,把没有任何资料介绍的东西啃出来。举例来说,跳转代码中有个$符号,不知什么意思,仔细想了想,认定为跳转到本行(如不对欢迎拍砖)。大体看了一下源代码,问题可以说基本都解决了(代码没全看懂,估计的),只有最后一个问题,估计不给我个单片机实验一下,我无法猜出来。那就是转换的结果是按什么方式编码的(当然,说明书里也许有,没细看)。我这个人虽然聪明,但是很懒,不给点压力不喜欢学习,所以我会记得一星期的预定进度,争取按时完成。
作者: DIY大叔    时间: 2012-6-19 17:41
本帖最后由 DIY大叔 于 2012-6-19 17:52 编辑
ddczha 发表于 2012-6-19 16:09
等了一天,没见到什么好主意,只好强行突破,利用电脑显示器作学习资料。一看说明和源代码,终于明白为什么 ...


——我这个人虽然聪明,但是很懒,不给点压力不喜欢学习
我给你点压力吧?
记住毛主席他老人家的话:战略上藐视敌人,战术上重视敌人!
还有一些。。。:知识不是只属于聪明人的,"聪明反被聪明误!"的教训太多啦!!(这个不是老人家说的哦)
要学到一些知识、要想干出一点事情来,没有付出、想走捷径。。。那是”一厢情愿“的事情!
过好自己的晚年,活到老学到老这个思想不错!但是还是希望楼主活在现实中,不服老是不行的!即使你是奇人,但老了接受能力还是慢了点!学习新的东西难度不小啊!劝你还是把它当做一种娱乐?快快乐乐的、高高兴兴的、非常充实的度过自己的剩下不多的日子吧!
作者: 老顽童    时间: 2012-6-19 20:16
DIY大叔 发表于 2012-6-19 17:41
——我这个人虽然聪明,但是很懒,不给点压力不喜欢学习
我给你点压力吧?
记住毛主席他老人家的 ...

DIY大叔 发表于 2012-6-19 17:41

我给你点压力吧?
记住毛主席他老人家的话:战略上藐视敌人,战术上重视敌人!
还有一些。。。:知识不是只属于聪明人的,"聪明反被聪明误!"的教训太多啦!!(这个不是老人家说的哦)
要学到一些知识、要想干出一点事情来,没有付出、想走捷径。。。那是”一厢情愿“的事情!
过好自己的晚年,活到老学到老这个思想不错!但是还是希望楼主活在现实中,不服老是不行的!即使你是奇人,但老了接受能力还是慢了点!学习新的东西难度不小啊!劝你还是把它当做一种娱乐?快快乐乐的、高高兴兴的、非常充实的度过自己的剩下不多的日子吧!


1老 校长对单片机有独到的见解,我就不说了。想知道---就联系校长,QQ和电话找我要即可。

目前个人思维:除了健康和养老金,神马都是浮云。
作者: bg4wby    时间: 2012-6-20 08:13
提示: 作者被禁止或删除 内容自动屏蔽
作者: ddczha    时间: 2012-6-20 14:02
今天开始编程,先把原来的代码编译了一下,居然没通过,可能是keil对有些语句支持不好,或是STC的工作人员有失误,不过问题不大,改了一点就好了,不过没有帮助,书上也没提,不知道改的对不对,然后把一些没用的代码注释掉(前面加分号),添了一点自己的代码,就算完成了。不过没有好书,不知道jc语句到底什么时候跳转,各位不明白可以自己编个程序实验一下就知道了,我都老了,就不麻烦了。本想写点注释,听说编译器对中文支持不好,没敢加,反正代码不长,自己看看就行了。我写的代码全是小写字母,很好认。
至此,第一步工作完成,不过最近越来越懒,没有调试看看到底是否正确,各位可要认真一些啊。功能说明,不停测试电压,如果高于2.5V(忘了说了,电源是5V的),就下面的二极管亮,如果低于2.5V,就上面的二极管亮。
作者: ddczha    时间: 2012-6-20 15:12
各位有相同志向的人,看看我这么大的年纪,都把它啃下来了,各位还怕什么?如果舍得花钱,多买几本书,再买个编程器,几块芯片,一两个月就能入门,半年就精通(比真正的专家稍差一点),至于我嘛,由于知识面广,经验丰富,不在此列。
顺便说一下,各个公司出的51系列单片机,好像以STC为最大(它网站上说的),而且估计最便宜,做好这个应该有前途,初学时用什么无所谓,学好后不要忘了还有个STC。
作者: ddczha    时间: 2012-6-20 19:08
DIY大叔 发表于 2012-6-19 17:41
——我这个人虽然聪明,但是很懒,不给点压力不喜欢学习
我给你点压力吧?
记住毛主席他老人家的 ...

东西做完了,又闲下来了,就讨论讨论这个帖子吧,知识不是只属于聪明人?本人发帖,正是对目前网络上很多人仅仅学了个皮毛,就觉得自己有好大的本事,生怕别人也学会了,所以涉及稍微深一些的问题,从来都不公开,搞得网上的人学习困难,恶性循环,本人公布所有源代码和学习过程,正是要让这些知识属于所有人。不知为什么,你总爱拿毛主席的话来说,老毛是天才,咱不敢反驳,不过你那句不是老毛说的聪明反被聪明误,本人并不认同。就说说历史吧,看看当初中国搞的两弹一星,运十飞机,不都是在别人封锁打压之下迫于压力搞出来的?封锁会培养一个人独立自主的宝贵品质,会让一个人知道很多正常人无法知道的东西,从而达到一个别人难以企及的高度。本人不怕付出,不指望能走什么捷径,但本人强烈希望别人不要再走我这些弯路,所以本人公布所有的技术资料和学习方式。讨论完了,最后只想送你一句话,不好意思,不是老毛说的,是我说的,一个人有多大的心胸,就有多大的本事。把你知道的告诉别人,如果你还想知道的比别人多,只需继续学习就可以了。
作者: DIY大叔    时间: 2012-6-20 20:13
标题: RE: 想学单片机又没有门路的网友赶紧进来
本帖最后由 DIY大叔 于 2012-6-21 07:49 编辑
ddczha 发表于 2012-6-20 19:08
东西做完了,又闲下来了,就讨论讨论这个帖子吧,知识不是只属于聪明人?本人发帖,正是对目前网络上很多 ...

老夫息怒!你不是说没有压力吗?给你点压力怎么又这样了?
你、我情况基本类似,到论坛来无非是找点乐。。。 如果为此生气就划不来拉。。。
好了,其他的就不多说了吧。。。还是一句话:好自为之吧!
祝你学习顺利,心情愉快!
作者: kyby    时间: 2012-6-20 23:27
建议楼主买多个显示器,一个桌面分2边看就不麻烦了
作者: ddczha    时间: 2012-6-21 09:23
DIY大叔 发表于 2012-6-20 20:13
老夫息怒!你不是说没有压力吗?给你点压力怎么又这样了?
你、我情况基本类似,到论坛来无非是找点乐 ...

还好,没怒,只是有些感触而已。
作者: ddczha    时间: 2012-6-21 09:43
穷人,买不起两个显示器,也不会接线路,就让恶劣的条件抵消一下我的聪明才智,以免让人觉得太狂了吧。
言归正传,今天开始下一步的任务,很不幸,还是电压表,不但这次是电压表,下次还是电压表,而且是没有正规显示的电压表。原因后面再说,说句题外话,很多东西,面上看到的往往很简单,真正复杂的是看不见的东西,对充电器来说,控制远远难过显示。所以仅仅一个电压表,我就准备分三步走。
这次的任务是提高测量精度,原因可以看看STC说明书AD转换部分。技术不是很复杂,估计很快就可以搞定,除了一个小问题。(可以和后面的合并,详见后)。第三步是做一个10位的AD转换,可能要换芯片。因为对咱们的活来说,8位AD精度不够。下面说说有什么问题,不管8位也好,10位也罢,都要用到乘除法,这个东西不但以前没研究过,而且我没有书(有些大学课本或讲算法的书上可能有),就看网上能不能搞到资料了。哪位网友如果有汇编语言的乘除法算法,特别是8位单片机10位的乘除法算法,可以提前发上来,先谢谢了。
作者: yanjian    时间: 2012-6-21 12:24
建议初学还是用C吧.
汇编会吓退一堆人的,
我看到汇编就头疼
作者: yanjian    时间: 2012-6-21 12:25
另外可以考虑先调通串口.
调通串口后就可以用串口做输入输出了

作者: ddczha    时间: 2012-6-21 14:47
yanjian 发表于 2012-6-21 12:24
建议初学还是用C吧.
汇编会吓退一堆人的,
我看到汇编就头疼

对单片机来说,我也是个初学者,对高档微机来说,我既学过汇编也学过C,但是一开始学单片机,我主动选择了汇编,当然下面的是我猜测的,我估计用c编程容易,但时序等控制恐怕不如汇编便利,所以我猜测汇编学起来麻烦用起来简单。哪位明白人士给介绍一下用单片机搞实时控制用汇编好还是C好。

作者: ddczha    时间: 2012-6-21 14:49
还有一点,我唯一的一本课本就是汇编的,你们学习用的什么?
作者: yanjian    时间: 2012-6-21 16:50
用C写的单片机程序,很容易看明白
一般器件用C写的时序问题不大.
真的对时序要求很严格,据说可以内嵌汇编代码的.
作者: bg4wby    时间: 2012-6-22 08:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: ddczha    时间: 2012-6-22 09:42
昨天我上网搜了一下汇编算法,一抓一大把,看来汇编早已深入人心,已经学会汇编再去转C,无异于自废武功。这样吧,我先用汇编,等设计完成了,再整一个C的就两全其美了。高档微机我十几年前用过C内嵌汇编,学起来好像不是很容易,而且代码整合不好,就是代码之间无法密切联系。当然那时候没有互联网,学习难度大一些。很多年前的事了,都忘得差不多了。想真正做出一个好产品,就要从各个方面优中选优,你看我选的单片机,就不是最易学的,但却是最廉价,最有竞争力的。另外如果自己做实物想显示的话,用数码管很简单,就用一个查表算法,很容易就显示出来,只是单片机管脚占用多一些。我实际编过的汇编程序,可执行文件(不是源代码)有接近4K的,编程用了20天业余时间,而且该程序由于用处特殊,出错后难以调试。所以据我估计4K之内C与汇编相比没有优势。如果你选择了c,在廉价单片机领域,基本上就比别人差了一个档次。
作者: ddczha    时间: 2012-6-22 10:18
本帖最后由 ddczha 于 2012-6-22 10:21 编辑

开始设计代码前,先把电路图发上来,需要说明的是,单片机供电电压为5V,由稳压管供电(电流没细算,不够就换稳压块),两个电阻分压,作为参考电压,这样就可以克服稳压管电压误差问题。阻值待定是为了编程方便和精度,到编程时再考虑省事。好了,今天就干到这里,各位可要抓紧时间学习啊。不要跟我上年纪的人攀比。另外R7阻值要根据需要调整,由于没有实物,暂定为1K。
[attach]56974[/attach]
作者: 力萌电器    时间: 2012-6-22 10:22
廉价也只是你自己认为的 电子行业水很深,不要自以为是蛟龙号,要知道蛟龙号也只能7000米
作者: 力萌电器    时间: 2012-6-22 10:24
不过用汇编的想法还是不错的!汇编唯一的缺点是兼容性不好,也就是可移植性差 换了单片机基本要重新设计程序,汇编效率是仅次于机器语言的编程语言,当然前提是算法要精!
作者: ddczha    时间: 2012-6-22 10:30
力萌电器 发表于 2012-6-22 10:22
廉价也只是你自己认为的 电子行业水很深,不要自以为是蛟龙号,要知道蛟龙号也只能7000米

打响中国大陆本土MCU设计公司统一全球8051市场的第一枪,相同规格,我们保证用最低价统一全球市场

上面不是我说的,是STC网站上说的,难道它敢在全球面前撒谎?如果还有更便宜的,请推荐一款。
作者: 力萌电器    时间: 2012-6-22 10:35
自己上网找!51系列是通用型的单片机 价格普遍偏高 STC小公司 连个正儿八经的网站都没有, 反正我非常不看好!
作者: ddczha    时间: 2012-6-22 16:50
楼上不是整天用单片机的吗,怎么连个正经牌子都说不出来?就一句水很深就把我们打发了?
我上网查了查,是有一些单片机很便宜,但不是管脚少(8个)就是4位机,而且都不带AD转换。简单一点的51机我都嫌功能不够,难道你是神仙,可以用这些单片机做正儿八经的充电器?果真如此,那你就赚大发了,一个充电器就算比别人贵20(网上单片机充电器和普通充电器的差价),成本只高一两块钱,你的研发利润丰厚的很啊。
单片机这个行当我是不熟悉,但工业生产批量越大越便宜这个道理我还是懂的,通用型在相同功能下价格应该低于不兼容的。如果它便宜,十有八九是简化了功能。
STC这个公司我是不熟悉,但我知道它不是个很小的公司,看它网站上说的:宏晶科技现已成长为全球最大的8051单片机设计公司,我唯一知道的一点内幕就是STC营销模式与众不同,它是靠价格取胜,而不是回扣和面子工程什么的。确实有些公司的采购人员不喜欢STC,因为回扣少。STC网站上说有些大学都用
它来做课本了,难道一个大学敢拿一个连正经网站都架不起的小公司的产品搞教学?

作者: ddczha    时间: 2012-6-23 06:46
今天是端午节,放假休息一天,只简单说一下现在的形势和我们的任务。经过两遍看课本和一个简单小程序的编写,已经初步入门了,剩下的问题就是在自己头脑中形成一个整体印象,STC单片机各种指令心里要有数,具体代码用哪些指令编写,如何编写要明白。这些东西指望看书看明白既枯燥又进展缓慢,最好的办法就是看别人的代码。所以我初步打算,等放完假,找一些例子程序看看,学好后再一鼓作气,把第二步的任务完成。
作者: bg4wby    时间: 2012-6-24 08:23
提示: 作者被禁止或删除 内容自动屏蔽
作者: ddczha    时间: 2012-6-24 20:53
本帖最后由 ddczha 于 2012-6-24 20:57 编辑

其实不辛苦,就是每天不整点什么新东西觉得对不起观众。上年纪了嘛,做事要慢,一天进步一点点,持之以恒,2个月(我原定的学习进度)可以干很多事情的。今天上网搜索别人的源代码,汇编的,不管是干什么的,统统下载下来,不过不是很多,也不是很好,不知是上错了网站还是51机用的少了,听说都用更高级的了,不过咱们做充电器的,用几十个管脚的高级芯片纯粹是高射炮打蚊子,还是用简单一点的实用。今天的一点收获就是换了一个单片机型号,stc12c5608ad,这个AD是10位的,8Kflash,用C编程也足够用。而且查到了价格,3.8元,大批量可能还便宜。从这个价格看,未来单片机控制的充电器价格跟现在的普通充电器价格不会有5元以上的差距。
作者: ddczha    时间: 2012-6-25 10:47
今天开始考虑编程,由于指示简单,如果只完成指示的工作代码异常简单,不过就是这么简单的代码还是出现了一个问题,那就是到底哪个内存地址可用。说起这个问题,先要搞清楚单片机的内存结构,咱们的内存有两种,flash和ram。程序在flash中,代码在flash中执行,跟高档微机不一样。ram很小,且很多被系统占用,还有堆栈占用,要在夹缝里找一段空间就要全面了解它们到底占用了哪些空间。我的书上没讲,网上倒是找到了一份说明,不过stc自己好像也定义了一些地址,要把这些也排除。各位有明白的没有,给介绍介绍。
作者: ddczha    时间: 2012-6-25 16:00
没有人介绍,还是自己看书吧,经过仔细翻看课本,发现原来课本上有介绍,不过不在数据传送章节,而是在第一章,基础介绍里。要知道,课本我可是看了两遍啊,这说明什么呢?说明我看一遍课本不超过两三个小时。本人不是在吹牛,只是在介绍一种学习方法。这种快速看书法其实没有什么大问题,只要一做项目,那些看得不仔细的地方就给补上了。为什么开始不细看呢?因为什么都细看太费时间,枯燥无味,而且也未必就能一遍看懂。
言归正传,据书上介绍和我看各种资料的印证,30到7F这段地址可以作为数据区,但要给堆栈留足空间。因为我们不用很多数据,所以可以用30~50这段区域。应该不会出什么问题。
作者: ddczha    时间: 2012-6-25 16:09
我常常在想,如果评选世界上既想干活,又最懒的程序员,我能排第几。应该可以名列前茅吧,我现在又在想偷懒了,这个偷懒分两步,一是第二步目标,如果只要求高精度显示,其实连乘除法都可以不用。第二是第三步目标,如果只用于充电器的话,好像也不用老老实实的研究乘除法,具体怎么办还没想好,只是想偷懒。没办法,因为以前偷懒,没学好基础理论,所以对基础的东西研究水平就差一些,这是大大的缺点,各位不要跟我学啊。
作者: ddczha    时间: 2012-6-25 16:37
不好意思,刚刚发现,上传的第二个程序有一个小错误,少了一个分号,在这次的代码里一并更正。今天干了不少了,明后天再上传第二步的代码。
作者: DIY大叔    时间: 2012-6-25 16:58
本帖最后由 DIY大叔 于 2012-6-25 17:01 编辑

支持一下!
再请问一下:单片机在充电器整个电路中占的比例是多大?它能实现哪些功能?咱们学好了单片机后,充电器的设计就不在话下了?
作者: 幸福和美家居    时间: 2012-6-25 19:50
以后稍微中端的充电器都会用单片机,只不过控制的功能有点区别。
作者: enlaixiangyu    时间: 2012-6-25 20:15
最简单单片机功能是定时关闭输出的,还有检测电流,小于设定值,关闭输出的
作者: ddczha    时间: 2012-6-26 09:54
DIY大叔 发表于 2012-6-25 16:58
支持一下!
再请问一下:单片机在充电器整个电路中占的比例是多大?它能实现哪些功能?咱们学好了 ...

单片机占的比例不大,但起的作用很关键,它可以让充电器采用复杂的充电方式,是彻底解决欠充、过充、失水的最佳方案。它的主要作用就是替代358和324。单纯学好单片机,想设计真正的单片机充电器难度相当大,还需要炉火纯青的充电器改装技术。
但是,需要说明的一点就是这些改装难在技术(主要是首创的技术,后人就方便了),而不是成本,其实改装成本真的不需要5元。所以,等到单片机应用在充电器领域充分发展,技术和观念成熟以后,没有单片机的充电器估计只能以骗人的方式销售了。
作者: ddczha    时间: 2012-6-26 14:16
由于我的懒惰再一次发挥作用,新改的代码很快就完工了,这次加了中文注释,没出什么问题。
电路图上分压电阻可分别用2.5K左右的,通过调整电位器达到精确的2.5V输出。因为没有实物,只能随便选一个数值,实际使用可能不太准。原先的例子代码中有很多和串口有关的代码,因为懒得看说明书,也没有实物可以测试结果,没有注释掉,估计不会影响程序执行。
作者: ddczha    时间: 2012-6-28 10:31
今天上网搜了一个很不错的程序,俄罗斯方块,彻底改变了我的想法,做小程序没有什么进步,不如研究点复杂的,该程序不但源代码无错误(我用Keil编译成功),而且有全部的中文注释,上传上来大家看看,学学高手是怎么编程的。研究完了这一个程序,你就彻底入门了。
作者: 电车发烧友    时间: 2012-6-28 12:10
支持! 学习啊
作者: ddczha    时间: 2012-7-1 10:07
单片机AD转换已经没有多少意思了,做充电器要用到i的另一个技术就是pwm,哪位了解的可以给介绍一下怎么个用法。没人介绍就自己看说明书。
作者: ddczha    时间: 2012-7-1 10:13
pwm是设计充电器前的最后一项储备技术,关于单片机控制的充电器,我在别的帖子里也谈到了一些,各位可以参考一下,是说单片机充电器设计难点的。
抗干扰和程序失控我都考虑过,还想到了一点,就是单片机启动前的控制。不过这些都不是问题,下面我一个一个给解决方案。
抗干扰:单片机工作在低压区,只要布线合理,远离高压区辐射大区域,再配上电容电感滤波,应该问题不大,如果不能解决,还可以提高单片机电压,实在不行就干脆整个屏蔽罩,花不了几个钱。另外编程技巧和工作频率对抗干扰也有一定作用。
程序失控:干扰越小,失控的概率越低,再配以后面所说的电路,失控并不可怕,单片机里有个看门狗,就是解决失控的。
单片机启动前的控制:单片机是个高智能的东西,控制功能很强,但功能越强,有时就越可怕,所以我构思的单片机充电器,还有电路上的保障措施,即使单片机不控制或失控,最大电流,最高电压也是受控的。单片机只能减小最大电流和最高电压,这样就保证了充电器的可靠性。
作者: bg4wby    时间: 2012-7-2 08:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: ddczha    时间: 2012-7-2 09:48
bg4wby 发表于 2012-7-2 08:35
其实我觉得充电器用单片机来做pwm控制的话还不如加块3842,也不要几个钱,稳定性比单片机应该好不少,单片机 ...

我觉得不是你误会了我的意思就是我误会了你的意思。
我的意思是说用3842做高压区pwm,用单片机做低压区pwm,它的作用是通过光耦来控制3842。
如果直接把单片机当作程控多路开关当然也可以,但那样将降低单片机的控制效果。
作者: bg4wby    时间: 2012-7-3 07:41
提示: 作者被禁止或删除 内容自动屏蔽
作者: ddczha    时间: 2012-7-6 06:06
这几天越来越不喜欢学习,主要原因是单片机已经入门,要设计一个真正的产品,需要一个真正的单片机。因为很多程序没有经过验证,不但可能出现错误,而且很多设计参数、经验都来自于人与单片机的交互。许多细节,在没有资料的情况下,都需要做简单的实验。而没有单片机,这一切都麻烦了几十倍。所以我希望有经验的人可以贡献出你们的才智,咱们一起设计一款真正适合发烧友的单片机充电器(指修改充电模式异常简单)。当然,以目前论坛和国内其他论坛的情况看,这种可能性是比较小的,所以我还是做好了独立自主的打算,不过我的任务就从完全设计转为方案设计,当前的主要问题是如何用单片机来控制3842,方案太多,没有实物,难以取舍。主要问题有两个,一是对光耦和741的具体指标不了解,需要做一些简单的实验,但我没有实物。二是对各种集成电路和应用电路不熟悉,也许无法选出最合适的驱动方案(这个可以通过剖析别人的产品来解决)。
作者: xuexi    时间: 2012-7-6 06:58
我有一些普通充电器上的拆机件,管用。
楼主用得着的话,开个单。
送给你。
作者: ddczha    时间: 2012-7-6 15:01
谢谢楼上的大力支持,不过咱们不在一个城市,邮寄很麻烦。如果你真的对制作单片机充电器感兴趣,可否自己动手实验,设计上有什么不明白的尽管问,就算我不懂,大体上也能给个业余条件下的解决方法。
我手头有两个充电器电路,一个是36V的,一个是西普尔sp120-48V的,我看它们控制电路差异较大,等我研究研究,研究好了给写个研究报告,估计对想入门的人有用。具体改装时需要做什么实验再说。
作者: xuexi    时间: 2012-7-6 19:57
惭愧呀,单片机的资料我有许多,
一直没有学的想法,所以才给您凑个热闹
继续支持您的研究
作者: ddczha    时间: 2012-7-7 16:47
该包中有三个图片,分别是3842方框图、36V充电器和西普尔sp120-48V充电器电路图。
这两份充电器电路图采用的是不同的3842驱动方式,下面分别介绍。
1、36V电路3842用法:3842的2脚是放大器负输入端,与正输入端2.5V电压比较,如果负输入端电压高于2.5V,则放大器输出为负。为了保证负输入端电压与输出基本呈线性关系(我随便找的一个词),3842的1、2脚接了一个电阻。如果不明白这个电路可以去看看运算放大器的书。这个放大器的输出很有意思,不但有电阻分压,而且其分压输出端还有一个稳压二极管,它可以保证图中的电流检测比较器负输入端电压不高于1V。这个电流检测比较器的输出就是直接控制脉冲宽度的,输出越高,宽度越小。而其正输入端则接电流反馈电阻,由于稳压二极管的作用,这个正输入端可以起到绝对的控制作用,只要电压高,比较器输出一定高(它可以保证绝对限流),而负输入端则相反,输入电压低,比较器输出高(用于限制电压),但由于稳压二极管的作用,输入电压无法高过1V,只是在1V内调节。
西普尔3842用法:这个比较简单,但须对3842内部电路比较熟悉,且效果未必有上面的用法好,须自己灵活把握。3842的2脚接地,图中误差放大器输出恒为正,但其输出负载能力有限(图中1.0ma不知是否这个意思),所以在1脚接了个光耦之后,放大器输出电压就可以调低,控制脉冲宽度。3脚接法没有变化,跟上面的一样。对1脚负载能力的研究可以看看数字电路内部电路图,图中误差放大器写有仅灌二字,不知道是不是只有灌电流,可以看看数字电路的灌电流和拉电流。不过不看也基本不影响使用。
作者: aking8006    时间: 2012-7-7 17:16
我有不少旧的充电器,很多牌子的,如果有需要,可以邮寄给LZ研究
作者: ddczha    时间: 2012-7-8 08:05
首先谢谢楼上的无私奉献,不过我现在年纪不小了,眼睛不太好使,动手能力也比以前差了一些,大脑分析也是顾此失彼,而且还越来越懒,万一实验时一不小心烧了什么就不好了,我想了一个很好的办法,首先选出一种供修改的电路(或者如果谁想改,只要有电路,我可以专门介绍这个电路),然后提供一种改动思路,再说出具体修改时要测量的一两个参数,很多人都可以自己动手的。改装非常简单。至于单片机,只要单独做个板,接到充电器上就可以。至于编程,可能有些人觉得麻烦,不愿动手,实在不行就交给我。不过以我的水平,无法保证一次编写成功(我没有单片机),可以这样,把复杂的功能分成很多小模块,一次编一点,等网友测试成功或失败,给个反馈,我再修改,这样就可以完成。我准备把代码写成模块,只要一两条语句调用,就可以实现一种功能,这样用户可以自己修改代码,改变充电模式。欢迎各位网友提出自己的宝贵意见,我们一起把这款充电器做好。




欢迎光临 电动车论坛 (http://ev5s.cn/bbs/) Powered by Discuz! X3.2