找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5670|回复: 5
收起左侧

单片机定时器计数器实现电机测速程序和proteus仿真

[复制链接]
ID:206649 发表于 2017-6-1 11:34 | 显示全部楼层 |阅读模式
单片机电机测速仿真原理图如下(proteus仿真工程文件可到本帖附件中下载):
0.png
0.png

单片机源程序:
  1. #include "LCMDRV_1602.h"
  2. #include <reg51.h>
  3. #define TIMER1DEF ( 65536 - 50000 )
  4. // 全局变量定义
  5. uint8 bRefreshDisp = 0;  // 显示刷新标志
  6. uint16 wSpeed = 0;    // 速度测量值
  7. /***********************************************************************
  8. * 名称:main()
  9. * 功能:主函数。
  10. ***********************************************************************/
  11. void  main(void)
  12. {
  13. // 初始化
  14. LCM_Init();    // 初始化LCM
  15. // 中断设置
  16.         TMOD=0X15;
  17. // 定时/计数设置
  18.         TH1=TIMER1DEF/256;
  19.         TL1=TIMER1DEF%6;
  20.         TL0=0;
  21.         TH0=0;
  22. // 启动内部定时
  23.         TR0=1;
  24.         TR1=1;
  25.         TR0=1;
  26.         TR1=1;
  27. // 开中断
  28. EA = 1;
  29. // 主循环
  30. while( 1 )
  31. {
  32.   while( bRefreshDisp )
  33.   {
  34.    bRefreshDisp = 0;
  35.    LCM_DispUIntXY(1, 5, wSpeed);
  36.   }
  37. }
  38. }
  39. // 内部定时中断服务程序 **************************
  40. void INT_Timer1() interrupt 3 using 1
  41. {
  42. static uint8 bCount = 20; // 秒计数
  43. // 重置定时常数
  44.         TH1=TIMER1DEF/256;
  45.         TL1=TIMER1DEF%6;
  46. // 判断1秒时间到
  47. if( --bCount == 0)
  48. {
  49.   // 重置秒计数
  50.                 bCount=20;
  51.   wSpeed = TH0 * 256 + TL0;
  52.   TL0 = 0;

  53.   …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

下载:
定时器计数器.zip (23.1 KB, 下载次数: 80)
回复

使用道具 举报

ID:1 发表于 2017-6-1 17:55 | 显示全部楼层
好资料,51黑有你更精彩!!!
回复

使用道具 举报

ID:217754 发表于 2017-7-14 20:06 | 显示全部楼层
学习一下。可惜不能看完下载币不够。留个字,回头够币来下
回复

使用道具 举报

ID:314752 发表于 2018-11-12 20:38 | 显示全部楼层
好资料
回复

使用道具 举报

ID:261219 发表于 2018-11-18 21:19 | 显示全部楼层
程序不完整,欺骗读者,浪费黑币
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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