zoukankan      html  css  js  c++  java
  • Proteus仿真与实际的差别

    最近刚做好一个站,基于rails 3,教程为主,大家捧场看看,谢谢!www.yo945.com

        弄了几天的Proteus仿真,终于觉得自己想做的东西,已经全部用Proteus仿真过了,应该可以动手做了。于是先用Proteus画好原理图,再用ARES画好PCB板图——虽然我只是用洞洞板焊接,但是有个PCB板图做参照,连线会容易很多。花了两个小时,去中关村买了必要的原件,开始动手。

        单片机用的是STC89C552RC,原因除了价廉物美之外,最大的原因是,STC的单片机可以直接使用串口往里面下程序,这样我可以直接焊接好板子,然后连接好串口,一边写一边调试,不用把单片机拿来拿去了。为了焊的好看些,把线基本都布在了反面,前前后后,修修改改,共焊了3天才弄好,搞得眼睛一闭上都是洞洞板的圈圈。

        不过通过这次的实际制作,还真发现了不少Proteus仿真中不会想到的问题,现记录如下,希望以后再碰到时,可以作为参考。

        碰到的第一个问题,就是程序怎么也下载不到单片机中去。在Proteus仿真的时候,并不需要往单片机中写程序,编译好后,程序就已经在单片机中了,但是实际制作时,就得编译一次程序,下载一次。结果我在下载时,发现提示“不能连接到串口”,让我实在是头疼不已。试着用“串口助手”往单片机发数据时,发现数据指示类会闪烁,说明线路是通了。百思不得其解之下,同事提醒我说,是不是你这两个数据传送指示灯有问题?虽然我觉得成分的不可能,可是试着把两个LED灯去掉之后,还真可以了……

        这是先前的电路图(省略MAX232芯片)

    image

    结果串口在给单片机发数据的时候,灯是会闪烁的,让我坚定的以为,串口的通路是没问题的。后来把电路改成这样,串口不能通信,不能下载程序的问题就好了

    image

        终于把串口弄好了,程序下载到了单片机上,结果效果和proteus上模拟的完全不一样。Proteus上的话,1602显示器直接就显示数据了,结果到了现实,什么都没有……死命的调节对比度电阻,也还是什么都没有,真的感觉无从下手了。后来去群里问,群里的老大给了一个示例程序,用上去也还是不行,这让我真的是感觉要崩溃了。不过想想焊了这么多天,放弃实在是不甘心,于是把所有和液晶显示不相关的代码全注释掉了,突然发现莫名其妙的,液晶出现了色块——当时感觉是太开心了,一天了,终于液晶上有显示了!不过此时仍然不能设置显示字符,不过相比没有任何显示已经好太多了。

        同样的代码,为什么这次可以了呢?仔细的分析了代码,发现这次的代码,唯一的不同,就是我为了少写几个字,延时函数用的是群里老大给的。这是唯一的不同之处。比对一下两个延时1毫秒的函数。

    我自己的:

    void delay(unsigned char ms)
    {
        unsigned char i,j;
        for(i=0; i<ms; i++)
            for(j=0; j<120; j++);
    }
    

    群里老大给的:

    void delay(int ms)
    {
        int i,j;
        for(i=0; i<ms; i++)
            for(j=0; j<120; j++);
    }
    

    没错,两个函数唯一的区别,就是变量的类型,我写的时候,看变量都不会超过255,为了省点空间,定义的都是unsigned char,而一般的延时函数,用的是int类型,就是这两个变量类型的不同,导致了延时的不同,同样是想延时1毫秒,我的函数实际上只能延时0.4到0.5毫秒左右,就是这个的区别,让我在操作液晶时,各个时序的延时不够,给液晶的命令不能到达。后来修改后,再修改了一下程序其他地方,终于让液晶正确的显示了。

    再说一个比较郁闷的事情,在Proteus里面,1602是这样显示的

    image

    image

    买来实物后,我也理所当然的认为,有焊点的是下方(事实上我确实认为这样比较符合心理,哈哈)。结果程序写后好,一显示出来,全倒过来了…………

    不管怎么说,今天总算让板子上的元件都工作正常了。明天开始改程序,实现具体功能。

  • 相关阅读:
    Leetcode 92. Reverse Linked List II
    Leetcode 206. Reverse Linked List
    Leetcode 763. Partition Labels
    Leetcode 746. Min Cost Climbing Stairs
    Leetcode 759. Employee Free Time
    Leetcode 763. Partition Labels
    搭建数据仓库第09篇:物理建模
    Python进阶篇:Socket多线程
    Python进阶篇:文件系统的操作
    搭建数据仓库第08篇:逻辑建模–5–维度建模核心之一致性维度2
  • 原文地址:https://www.cnblogs.com/varlxj/p/1745751.html
Copyright © 2011-2022 走看看