找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3947|回复: 2
打印 上一主题 下一主题
收起左侧

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. }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:330988 发表于 2018-5-16 09:01 | 只看该作者
怎么没看到附件啊
回复

使用道具 举报

板凳
ID:437026 发表于 2018-12-6 18:27 | 只看该作者
程序也存在错误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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