|
- #include <stc8.h>
- #include "hc595.h"
- #include "pwm.h"
- #define CYCLE 100 // 設置PWM周期為1000H個PWM時鐘
- unsigned char table[] = {90,70,50,30,10};// 定義5個檔位的占空比
- sbit keyContrl = P0^7; // 獨立按鍵總開關
- sbit key1 = P0^0; // 獨立按鍵1
- void Delay(unsigned int xms) // 毫秒級延時
- {
- unsigned int i, j;
- for(i=xms;i>0;i--)
- {
- for(j=921;j>0;j--);
- }
- }
- void main()
- {
- unsigned char i = 0;
- P_SW2 = 0x80;
- PWMCKS = 0x00; // PWM時鐘為系統時鐘
- PWMC = CYCLE; // 設置PWM周期為CYCLE個PWM時鐘
- PWM5T1= 0; // 在計數值為0時,開始輸出低電平
- PWM5T2= 0; // 在計數值為0時,開始輸出高電平
- PWM5CR= 0x88; // 使能PWM5_2輸出
- P_SW2 = 0x00;
- PWMCR = 0x80; // 啟動PWM模塊
- keyContrl = 0;
- while (1)
- {
- if(!key1) // 獨立按鍵1,被按下
- {
- Delay(10); // 延時消抖
- if(!key1)
- {
- i++; // 檔位增加1
- if(i>4) // 大于最大檔位后,歸零
- {
- i = 0;
- }
- }
- while(!key1); // 等待按鍵抬起
- }
- PWM5T2= table[i]; // 把i檔位的占空比賦給PWM5T2
-
- // 訪問邏輯地址位于XDATA區域的特殊功能寄存器前需要
- // 將 P_SW2(BAH)寄存器的最高位(EAXFR)置 1
- P_SW2 |= 0x80;
-
- display(0,i); // 顯示檔位(0~4,共5個檔位)
- }
- }
復制代碼 |
-
列表.JPG
(16.94 KB, 下載次數: 60)
下載附件
2019-9-24 19:29 上傳
清單.jpg
-
-
STC8手冊-增強型PWM部分.pdf
2019-9-24 19:27 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
921.73 KB, 下載次數: 81, 下載積分: 黑幣 -5
-
-
內置PWM控制直流電機調轉速.rar
2019-9-24 19:28 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
36.17 KB, 下載次數: 148, 下載積分: 黑幣 -5
|