标题: 51单片机测速系统仿真_LCD1602显示 [打印本页]

作者: 51黑电子迷    时间: 2017-2-19 01:01
标题: 51单片机测速系统仿真_LCD1602显示
51单片机测速系统仿真原理图如下:


源程序:
  1. #include "include.h"  //包含头文件

  2. sbit BEEP = P2^4;
  3. sbit LED = P2^5;
  4. sbit OE = P3^3;
  5. sbit EOC = P3^2;
  6. sbit ST = P3^1;
  7. sbit CLK = P3^0;
  8. u16 globalADCValue = 0;//存放ADC的值
  9. void TimeInitialize(void);
  10. void main(void)
  11. {
  12.         u16 MSpeed = 0;//显示速度的大小
  13.         u8 MDisplayBuff[5];//用来显示的BUFF
  14.         lcd1602_initialize();
  15.         TimeInitialize();//初始化定时器
  16.         lcd1602_writestring("SPEED system",0,0);
  17.         lcd1602_writestring("speed:1000rpm",1,0);
  18.         while(1)
  19.         {
  20.                 ST = 0;
  21.                 ST = 1;
  22.                 ST = 0;
  23.                 while(EOC == 0);
  24.                 OE = 1;
  25.                 globalADCValue = P1;
  26.                 OE = 0;
  27.                
  28.                 MSpeed = (u16)(globalADCValue * 1000.0 / 255);//换算成速度
  29.                
  30.                 if(MSpeed > 800)//大于800rpm就蜂鸣器响
  31.                 {
  32.                         BEEP = 0;//蜂鸣器响
  33.                         LED = 0;//蜂鸣器响
  34.                 }
  35.                 else
  36.                 {
  37.                         BEEP = 1;//蜂鸣器不响
  38.                         LED = 1;//蜂鸣器不响
  39.                 }
  40.                
  41.                 MDisplayBuff[0] = MSpeed / 1000 + 0x30;
  42.                 MDisplayBuff[1] = MSpeed % 1000 / 100 + 0x30;
  43.                 MDisplayBuff[2] = MSpeed % 100 /10 + 0x30;
  44.                 MDisplayBuff[3] = MSpeed % 10 + 0x30;
  45.                 MDisplayBuff[4] = 0;
  46.                 lcd1602_writestring(MDisplayBuff,1,6);
  47.                 //ADC读取       
  48.         }
  49. }
  50. void TimeInitialize(void)//??????
  51. {
  52.         TMOD = 0x02;
  53.         TH0 = 0x9c;
  54.         TL0 = 0x9c;
  55.         IE = 0x82;
  56.         TR0 = 1;
  57. }

  58. void Timer0_INT() interrupt 1
  59. {
  60.         CLK =! CLK;
  61. }
复制代码




作者: 刘德华二号    时间: 2018-5-16 09:01
怎么没看到附件啊

作者: skt5550    时间: 2018-12-6 18:27
程序也存在错误





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1