打印
[DemoCode下载]

一个串口加LCD显示的测速程序

[复制链接]
1242|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Mancherstun|  楼主 | 2015-11-8 20:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
#include<intrins.h>
#include<lcd.h>
void Delayms() ;
sbit LED1=P2^7;
unsigned int send[4]={0,1,2,3};
unsigned char code digit[ ]={"0123456789"};
unsigned char lcd0,lcd1,lcd2,lcd3;
int zhuan,count=0,msec;
int ge,shi,bai,qian;
void WriteAddress(unsigned char x)
{
     LcdWriteCom(x|0x80);
}
void Delayms(unsigned int c)   
{
    unsigned char a, b;
    for (;c>0;c--)
        {
                for (b=10;b>0;b--)
                {
                        for (a=10;a>0;a--);
                }         
        }      
}

void counter(void) interrupt 0
{   
EX1=0;       //1Øía2¿ÖD¶Ï1  
count++;  
  EX1=1;
Delayms(10);        //¿aía2¿ÖD¶Ï1  
     return;

}
void Timer_0(void) interrupt 1
{  
   TH0=0x4B;      //50ms¶¨ê±  
   TL0=0xFF;  
   msec++;  
   if(msec==20)      //50*20=1S  
{    EX0=0;                        //1Øía2¿ÖD¶Ï0
     msec=0;   
     zhuan=count-1;   
     count=0;
           TH0=0x4B;     //ÕaàïÖØD¼ÆêyÆ÷¸33õÖμ50ms¶¨ê±  
     TL0=0xFF;  
           EX0=1;          //¿aía2¿ÖD¶Ï0
}
}

void display_sym(void)
{
  WriteAddress(0x00);  
        LcdWriteData('v');      
        LcdWriteData('=');     

}

void display_unit(void)
{
  WriteAddress(0x06);   
        LcdWriteData('r');   
        LcdWriteData('/');   
        LcdWriteData('m');   
        LcdWriteData('i');   
        LcdWriteData('n');   
}
void uart_init(void)
{
        SCON=0X50;                       
        TMOD=0X20;               
        PCON=0X80;//2¨ìØÂê¼ó±¶
        TH1=0XFD;                    
        TL1=0XFD;
        TR1=1;      
}
void jisuan()
{    int i=0;
          zhuan=zhuan*60;
                send[0]=zhuan/1000;
                send[1]=(zhuan%1000)/100;
                send[2]=(zhuan%100)/10;
                send[3]=zhuan%10;
        for(i=0;i<4;i++)
        {
                SBUF='0'+send;
                while(!TI);
                TI=0;
  }
        lcd0=send[0];
        lcd1=send[1];
        lcd2=send[2];
        lcd3=send[3];
        WriteAddress(0x02);     
        LcdWriteData(digit[lcd0]);   
        LcdWriteData(digit[lcd1]);   
        LcdWriteData(digit[lcd2]);   
        LcdWriteData(digit[lcd3]);   
        zhuan=0;
        Delayms(10) ;
}
void int_all()
{  
LED1=1;
zhuan=0;
count=0;        //3õê¼»ˉzμÄÖμ  
TMOD=0x01;      //Äú2¿ÖD¶Ï¶¨ê±Æ÷Ñ¡Ôñ  
TH0=0x47;      //50ms¶¨ê±  
TL0=0xC9;  
EA=1;       //¿aÖD¶Ï×ü¿a1Ø  
ET0=1;       //¿aÄú2¿ÖD¶Ï0
TR0=1;       //¼Æê±Æ÷¿aê¼1¤×÷  
IT0=1;       //ía2¿ÖD¶Ï0ÎaϽμÑØê½′¥·¢  
EX0=1;       //¿aía2¿ÖD¶Ï0
}

void main ()
{
        LcdInit();
        int_all();
        uart_init();
        display_sym();                  
  display_unit();
        while(1)
        {
                if(zhuan>0)
                {
                LED1=0;
          jisuan();                              
    }      
        }
}


沙发
跟屁虫| | 2015-11-9 21:27 | 只看该作者
测的速度是什么啊?读写速度吗

使用特权

评论回复
板凳
cformula| | 2015-11-9 23:02 | 只看该作者
程序中有乱码,转贴的?:L

使用特权

评论回复
地板
643757107| | 2015-11-10 19:33 | 只看该作者
这个应该是51单片机做主控,1602的LCD作为显示屏。

使用特权

评论回复
5
侣行天下| | 2015-11-10 20:36 | 只看该作者
这个应该是51单片机上用的,不知道能不能直接用到新唐上面

使用特权

评论回复
评论
cformula 2015-11-10 22:01 回复TA
新唐有做51单片机呀. 
6
643757107| | 2015-11-10 22:47 | 只看该作者
通过串口接收PC的数据后,写入到LCD的一个例程。

使用特权

评论回复
7
玛尼玛尼哄| | 2015-11-11 23:08 | 只看该作者
void int_all()
{  
LED1=1;
zhuan=0;
count=0;        //3õê¼»ˉzμÄÖμ  
TMOD=0x01;      //Äú2¿ÖD¶Ï¶¨ê±Æ÷Ñ¡Ôñ  
TH0=0x47;      //50ms¶¨ê±  
TL0=0xC9;  
EA=1;       //¿aÖD¶Ï×ü¿a1Ø  
ET0=1;       //¿aÄú2¿ÖD¶Ï0
TR0=1;       //¼Æê±Æ÷¿aê¼1¤×÷  
IT0=1;       //ía2¿ÖD¶Ï0ÎaϽμÑØê½′¥·¢  
EX0=1;       //¿aía2¿ÖD¶Ï0
}

这些注释乱码了,还好,我认识51代码。

使用特权

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

本版积分规则

35

主题

294

帖子

2

粉丝