搜索
bottom↓
回复: 4

串口如何显示十进制?

[复制链接]

出0入0汤圆

发表于 2012-7-28 09:49:10 | 显示全部楼层 |阅读模式
我想在串口上显示十进制数,不知怎么改 程序,望大侠指点!



#include<reg52.h>                //头文件
#define FOSC 11059200
#define uchar unsigned char
#define uchar unsigned char
sbit key1=P3^2;
uchar num,num1;
uchar m,j;
/**************************************************************************/
  //初始化子程序
void Time1_1(void)
       {

             TH0=(65536-5000)/256;//高位赋初值50毫秒
         TL0=(65536-5000)%256;//低位赋初值50毫秒
         EA=1;//开总中断
         ET0=1;//设置定时器0中断
         TMOD  = 0x21;//定时器0方式1
         TR0=1; //启动Timer0
           }
void uart1_Init()//串口初始化
{
TMOD=0x20;                   //用定时器设置串口波特率                   9600
        TH1=0xfd;
        TL1=0xfd;
        SCON=0x50;
        TR1=1;
        REN=1;          //串口初始化
        SM0=0;
        SM1=1;
        EA=1;           //开启总中断
        ES=1;                
}
void delayms(int t)
{
        int i;
        for(;t>0;t--)
        for(i=FOSC/13186;i>0;i--);
}
//--------------------------------------------------
//串口1初始化
//--------------------------------------------------
//
//void uart1_init(int baud,char es)
//{
//        char v;
//        TMOD&=0x0f;
//        TMOD|=0X20;        //T1方式2
//        v=256-(( FOSC*10/12/32/baud+5)/10);//四舍五入
//        TH1=v;
//        TL1=v;
//        //IOSET(AUXR,BIT(6));//T1x12,让T1的时钟变为原来的12倍,波特率也提高了
//        TR1=1;
//        SCON=0X50;                //0101 0000 方式1,允许接收
//        ES=1;                //允许串行中断
//        //EA         =1;                //全局中断允许
//}                                  
//--------------------------------------------------
//串口1发送单个字符
//--------------------------------------------------
void uart1_sendbyte(char ud)
{
        SBUF=ud;
        while(TI==0);                                //等待它由0变为1
        TI=0;                                                //清发送标志
}

void main(void)
{
int i;
uart1_Init();
Time1_1();
        while(1)
        {
                 if(num==31)
             {
                  if(!key1)m=j;
                  
                  i=m;
                  i++;  j++;
                 num1=1;
                 if(i==51)i=0;
                        num=0;
                                                         
                }
                if(num1==1)
                {
       uart1_sendbyte(i);
                num1=0;
                }
           }
}
void uart1_1(void) interrupt 4 //串口中断函数
        {
        TI=0;
        RI=0;
        ES=0;
        }
void Time1_0(void) interrupt 1  //定时器0中断入口
        {   
                                                 
         
                    
         TH0=(65536-50000)/256;                              //定时50毫秒
         TL0=(65536-50000)%256;
             TR0=1;
                 num++;
                  
               
         }

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-7-28 09:54:53 | 显示全部楼层
一般我是分解出十位,个位,然后分开发送,上位机字符显示就可以,还有,你这一堆码贴上来叫人给你改,不带这么直接伸手的吧!!!

出0入0汤圆

发表于 2012-7-28 10:23:49 | 显示全部楼层
比如数据是0x11  我一般发送的话发送0x17  就是转换成BCD码的形式了

出0入0汤圆

 楼主| 发表于 2012-7-30 09:04:30 | 显示全部楼层
蓝海de梦 发表于 2012-7-28 09:54
一般我是分解出十位,个位,然后分开发送,上位机字符显示就可以,还有,你这一堆码贴上来叫人给你改,不带 ...

谢谢,小弟初来乍到,还望见谅!

出0入0汤圆

 楼主| 发表于 2012-7-30 09:05:23 | 显示全部楼层
taiyangshendi1 发表于 2012-7-28 10:23
比如数据是0x11  我一般发送的话发送0x17  就是转换成BCD码的形式了

谢谢, 朋友回帖,小弟试一下。。。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 16:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表