|
單片機電機測速仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載):
0.png (38.95 KB, 下載次數(shù): 91)
下載附件
2017-6-1 17:52 上傳
0.png (51.92 KB, 下載次數(shù): 125)
下載附件
2017-6-1 17:52 上傳
單片機源程序:
- #include "LCMDRV_1602.h"
- #include <reg51.h>
- #define TIMER1DEF ( 65536 - 50000 )
- // 全局變量定義
- uint8 bRefreshDisp = 0; // 顯示刷新標(biāo)志
- uint16 wSpeed = 0; // 速度測量值
- /***********************************************************************
- * 名稱:main()
- * 功能:主函數(shù)。
- ***********************************************************************/
- void main(void)
- {
- // 初始化
- LCM_Init(); // 初始化LCM
- // 中斷設(shè)置
- TMOD=0X15;
- // 定時/計數(shù)設(shè)置
- TH1=TIMER1DEF/256;
- TL1=TIMER1DEF%6;
- TL0=0;
- TH0=0;
- // 啟動內(nèi)部定時
- TR0=1;
- TR1=1;
- TR0=1;
- TR1=1;
- // 開中斷
- EA = 1;
- // 主循環(huán)
- while( 1 )
- {
- while( bRefreshDisp )
- {
- bRefreshDisp = 0;
- LCM_DispUIntXY(1, 5, wSpeed);
- }
- }
- }
- // 內(nèi)部定時中斷服務(wù)程序 **************************
- void INT_Timer1() interrupt 3 using 1
- {
- static uint8 bCount = 20; // 秒計數(shù)
- // 重置定時常數(shù)
- TH1=TIMER1DEF/256;
- TL1=TIMER1DEF%6;
- // 判斷1秒時間到
- if( --bCount == 0)
- {
- // 重置秒計數(shù)
- bCount=20;
- wSpeed = TH0 * 256 + TL0;
- TL0 = 0;
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
下載:
定時器計數(shù)器.zip
(23.1 KB, 下載次數(shù): 81)
2017-6-1 11:33 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|