[51单片机] 求開導, proteus通信仿真問題

[复制链接]
1030|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 裡面有截圖

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 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.感觉数据不对。
ayb_ice 发表于 2015-5-7 16:57 | 显示全部楼层
将ASCII码转换成数值
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部