[DemoCode下载] 一个串口加LCD显示的测速程序

[复制链接]
1424|7
 楼主| Mancherstun 发表于 2015-11-8 20:38 | 显示全部楼层 |阅读模式
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #include<lcd.h>
  4. void Delayms() ;
  5. sbit LED1=P2^7;
  6. unsigned int send[4]={0,1,2,3};
  7. unsigned char code digit[ ]={"0123456789"};
  8. unsigned char lcd0,lcd1,lcd2,lcd3;
  9. int zhuan,count=0,msec;
  10. int ge,shi,bai,qian;
  11. void WriteAddress(unsigned char x)
  12. {
  13.      LcdWriteCom(x|0x80);
  14. }
  15. void Delayms(unsigned int c)   
  16. {
  17.     unsigned char a, b;
  18.     for (;c>0;c--)
  19.         {
  20.                 for (b=10;b>0;b--)
  21.                 {
  22.                         for (a=10;a>0;a--);
  23.                 }         
  24.         }      
  25. }

  26. void counter(void) interrupt 0
  27. {   
  28. EX1=0;       //1Øía2¿ÖD¶Ï1  
  29. count++;  
  30.   EX1=1;
  31. Delayms(10);        //¿aía2¿ÖD¶Ï1  
  32.      return;

  33. }
  34. void Timer_0(void) interrupt 1
  35. {  
  36.    TH0=0x4B;      //50ms¶¨ê±  
  37.    TL0=0xFF;  
  38.    msec++;  
  39.    if(msec==20)      //50*20=1S  
  40. {    EX0=0;                        //1Øía2¿ÖD¶Ï0
  41.      msec=0;   
  42.      zhuan=count-1;   
  43.      count=0;
  44.            TH0=0x4B;     //ÕaàïÖØD¼ÆêyÆ÷¸33õÖμ50ms¶¨ê±  
  45.      TL0=0xFF;  
  46.            EX0=1;          //¿aía2¿ÖD¶Ï0
  47. }
  48. }

  49. void display_sym(void)
  50. {
  51.   WriteAddress(0x00);  
  52.         LcdWriteData('v');      
  53.         LcdWriteData('=');     

  54. }

  55. void display_unit(void)
  56. {
  57.   WriteAddress(0x06);   
  58.         LcdWriteData('r');   
  59.         LcdWriteData('/');   
  60.         LcdWriteData('m');   
  61.         LcdWriteData('i');   
  62.         LcdWriteData('n');   
  63. }
  64. void uart_init(void)
  65. {
  66.         SCON=0X50;                       
  67.         TMOD=0X20;               
  68.         PCON=0X80;//2¨ìØÂê¼ó±¶
  69.         TH1=0XFD;                    
  70.         TL1=0XFD;
  71.         TR1=1;      
  72. }
  73. void jisuan()
  74. {    int i=0;
  75.           zhuan=zhuan*60;
  76.                 send[0]=zhuan/1000;
  77.                 send[1]=(zhuan%1000)/100;
  78.                 send[2]=(zhuan%100)/10;
  79.                 send[3]=zhuan%10;
  80.         for(i=0;i<4;i++)
  81.         {
  82.                 SBUF='0'+send;
  83.                 while(!TI);
  84.                 TI=0;
  85.   }
  86.         lcd0=send[0];
  87.         lcd1=send[1];
  88.         lcd2=send[2];
  89.         lcd3=send[3];
  90.         WriteAddress(0x02);     
  91.         LcdWriteData(digit[lcd0]);   
  92.         LcdWriteData(digit[lcd1]);   
  93.         LcdWriteData(digit[lcd2]);   
  94.         LcdWriteData(digit[lcd3]);   
  95.         zhuan=0;
  96.         Delayms(10) ;
  97. }
  98. void int_all()
  99. {  
  100. LED1=1;
  101. zhuan=0;
  102. count=0;        //3õê¼»ˉzμÄÖμ  
  103. TMOD=0x01;      //Äú2¿ÖD¶Ï¶¨ê±Æ÷Ñ¡Ôñ  
  104. TH0=0x47;      //50ms¶¨ê±  
  105. TL0=0xC9;  
  106. EA=1;       //¿aÖD¶Ï×ü¿a1Ø  
  107. ET0=1;       //¿aÄú2¿ÖD¶Ï0
  108. TR0=1;       //¼Æê±Æ÷¿aê¼1¤×÷  
  109. IT0=1;       //ía2¿ÖD¶Ï0ÎaϽμÑØê½′¥·¢  
  110. EX0=1;       //¿aía2¿ÖD¶Ï0
  111. }

  112. void main ()
  113. {
  114.         LcdInit();
  115.         int_all();
  116.         uart_init();
  117.         display_sym();                  
  118.   display_unit();
  119.         while(1)
  120.         {
  121.                 if(zhuan>0)
  122.                 {
  123.                 LED1=0;
  124.           jisuan();                              
  125.     }      
  126.         }
  127. }


跟屁虫 发表于 2015-11-9 21:27 | 显示全部楼层
测的速度是什么啊?读写速度吗
cformula 发表于 2015-11-9 23:02 | 显示全部楼层
程序中有乱码,转贴的?:L
643757107 发表于 2015-11-10 19:33 | 显示全部楼层
这个应该是51单片机做主控,1602的LCD作为显示屏。
侣行天下 发表于 2015-11-10 20:36 | 显示全部楼层
这个应该是51单片机上用的,不知道能不能直接用到新唐上面

评论

新唐有做51单片机呀.  发表于 2015-11-10 22:01
643757107 发表于 2015-11-10 22:47 | 显示全部楼层
通过串口接收PC的数据后,写入到LCD的一个例程。
玛尼玛尼哄 发表于 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

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