打印
[51单片机]

求開導, proteus通信仿真問題

[复制链接]
796|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
q13706622|  楼主 | 2015-5-7 11:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
附件有圖片.

鄙人通過VB做上位機, 通過RS232與下位機51通信.   希望通過VB輸入的數值與單片機AD採集到的數值做比較 然後控制相應端口輸出.
VB是通過TEXT輸入的.

1.但是通過RS232發送到51單片機的是ASCLL碼.如何進行數值的比較呢?
2.每次發送只能發一個字節. 有沒有辦法發送多字節, 帶正負號小數點的怎麼實現呢?
3.我通過仿真,將上位機的數據( 1 ),發送.  下位機的LCD中卻  顯示是小寫( q ). 是什麼問題呢.
通過查表發現( q ) 的LCD字符碼為 0111 0001.  ( 1 )的ASCLL碼為  0011 0001.

求大神幫忙開導. 十分感謝  

相关帖子

沙发
q13706622|  楼主 | 2015-5-7 11:31 | 只看该作者
附件XLSX 裡面有截圖

123.zip

145.32 KB

使用特权

评论回复
板凳
q13706622|  楼主 | 2015-5-7 11:46 | 只看该作者
#include <reg52.h>
#include "MICRO.h"
#include "LCD1602.h"
#include "TLC1543.h"
#include "AD5320.h"
#include "com.h"
#include "delay.h"
void usart_recenvie();
//void usart_send();
int z;


void main()
{
    uint16 volt;
        init_com();
    LCD1602_Init();                    // LCD1602上电初使化
    draw1602_basic();
    TLC1543_init();

    while(1)
    {
        volt = ReadADC_TLC1543(0);         

                da_conver(volt);
       
        write1602_DDRAM_pos(7,1);
        write1602_byte(volt/1000+0x30,1);
        write1602_byte(volt/100%10+0x30,1);
        write1602_byte(volt/10%10+0x30,1);
        write1602_byte(volt%10+0x30,1);

                write1602_byte(z,1);
        //write1602_byte(z/10%10+0x30,1);
        //write1602_byte(z%10+0x30,1);

                //usart_recenvie();       
    }
}


void ser() interrupt 4
{
        //unsigned char z;
        if(RI==1)
        {
                z=SBUF;               
        }
        while(!RI);
        RI=0;
}

使用特权

评论回复
地板
JY-DX-JY| | 2015-5-7 11:53 | 只看该作者
1.用ASCII码进行比较。
2.多发几次。
3.感觉数据不对。

使用特权

评论回复
5
ayb_ice| | 2015-5-7 16:57 | 只看该作者
将ASCII码转换成数值

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

13

帖子

0

粉丝