如题:STC12C5A60S2_IO扩展应用实例,带原理图,带源代码
说明:文档主要内容就是想说下:STC12C5A60S2-IO的扩展(74LS138+74HC244+74HC273)+74LS164驱动数码管+STC12C5A60S2内存的操作
设计背景:
本项目是做的是一款包含了四个工位的治具,要求单个工位能够独立操作,其中每个工位的IO需求是:输入点:2个按钮+4个感应器=6个输出点:2个电磁阀。另外整个治具有一个启动按钮+一个急停按钮,加上数码管模块需要的一些按钮,总之,一个STC12C5A60S2的所有IO加起来都不能满足需求,也考虑过用ARM,但是本屌那时是对ARM一无所知,设计周期又短,于是不得不采用IO扩展的模式去设计!
设计功能:
主要是通过单片机来处理的几个按钮及感应器的相关信号,从而控制电磁阀的动作。
设计心得:
首先想说的是,本屌的设计之路一开始没那么顺利,总共设计了两套板,当然,其原由也包括客户需求的改动。由于治具内部安装空间有限,不可能把所有的功能都集成到一块板上,而且就算放到一块板上,走起线来也是非常的不方便,影响美观。于是本设计被分成了三个模块:按钮转接模块、感应器&电磁阀转接模块、主控制模块。其中按钮转接模块为四个小板,感应器&电磁阀转接模块、主控制模块均为单一板,板与板之间除了24V和0V之外的信号线均用排线连接。最初的设计由于考虑不周全,数据口只设计了单边上拉,结果调试的时候电磁阀的输出总是有问题,尤其是开电源的瞬间,总是会有个别的电磁阀自动就输出了,而且输出是随机的,找了半天都找不出原由,有人说滤波电容大了,结果换成小的还是不行(由于不淡定,换错了个小电容,但是就炸了,吓死我了,淡定,淡定!);以为芯片有问题,又换芯片,结果还是不行;用测试程序下载进去,还是会乱跳;最终本屌头脑一发热,在感应器&电磁阀转接模块的数据口上均加了上拉电阻,结果设备运行正常了!当时好几个领导在旁边一直等着,本屌差点没急出尿来!至于为什么加了上拉就没事了,本屌分析可能是排线过长,信号有干涉吧,至于具体什么原因,请各位大侠指点指点!
第一次的打样总算是熬过去了,有了第一的经验,第二次的设计就顺利的多了。根据客户的需求,第二次的设计增加了调时间的模块,也就是板上的数码管显示模块,三组数码管分别显示三个不同的时间,且时间可调,于是乎又用到了74LS164驱动数码管的知识了,由于设置好的时间需要掉电保存,于是乎有涉及到了STC12C5A60S2 内存的操作了,攻破了这两个难点,问题就简单了!使用74LS164驱动数码管的时候要注意了,本屌选用的是1位的共阳数码管,至于为啥要选一位的数码管,而且还是共阳的,为什么不选6位一体的共阳数码管呢?这个呢怎么说呢,个人使用习惯吧,具体为啥我也说不清楚,哈哈……然后就是STC12C5A60S2内存的操作了,这个嘛附件的PDF有详细的数码,需要的童鞋可自行下载查阅。剩下的工作就是敲代码了,这个一个很繁琐的过程,自己慢慢去体会吧……
以上是本屌的工作心得,由于文采有限,写的太过草率,感兴趣的童鞋们还是可以借鉴一下的,最后本屌想说的是:作为一名设计人员,在设计产品之前就应该对所有可能遇到的问题考虑周全,比如:有些信号需要上拉,有些需要用零欧姆的电阻或磁珠隔离的,等等,多动脑才会避免不必要的二次设计,节约了成本同时也节约了时间!
注:原理图及代码经验证无误,个别地方有不对之处望指点!
讲个良心话,这个帖子是是有技术的,是很不错的,
我很喜欢,这楼主以后发帖,我持续关注
顶一个!!楼主这是要做啥作品?