标题:
直流电机正反转及PWM调速的单片机仿真与源程序
[打印本页]
作者:
HHHHHHHHK2332
时间:
2017-7-7 12:14
标题:
直流电机正反转及PWM调速的单片机仿真与源程序
直流电机正反转及PWM调速的proteus仿真原理图如下:
0.png
(28.47 KB, 下载次数: 50)
下载附件
2017-7-8 05:12 上传
0.png
(61.84 KB, 下载次数: 42)
下载附件
2017-7-8 05:12 上传
单片机源程序如下:
#include<reg51.h>
sbit In1 = P1^0;
sbit In2 = P1^1;
sbit ENa = P1^2;
sbit up = P1^4;
sbit dn = P1^5;
sbit Kp = P1^6;
sbit Kn = P1^7;
sbit LE1 = P2^6;
sbit LE2 = P2^7;
bit p = 0;
unsigned char w = 70;
void disp2(){
if(w == 100){
P2 = P2&0xf0;
LE2 = 0;LE2 = 1;
LE1 = 0;LE1 = 1; }
else{
P2 = (P2&0xf0 )| (w/10);
LE2 = 0;LE2 = 1;
P2 = (P2&0xf0)| (w%10);
LE1 = 0;LE1 = 1;} }
void k_up(){
unsigned char n = 0;
unsigned int t;
if(w!=100){ w++; }
else w = 100;
disp2();
for(t=0;t<5000;t++);
while(up == 0){
for(t=0;t<2000;t++);
n++;
if(n==20) { n = 0;
if(w!=100) { w++;}
else w = 100;
disp2( );}}}
void k_dn( ){
unsigned char n = 0;
unsigned int t;
if(w!=20) w--;
else w = 20;
disp2();
for(t=0;t<5000;t++);
while(dn == 0){
for(t=0;t<2000;t++);
n++;
if(n==20) { n = 0;
if(w!=20)
w--;
else w = 20;
disp2();}}}
void main(){
TMOD = 0x10;
TH0 = 256 - w*2;
TL0 = 256 - (100 - w) *2;
IP = 0x02;
IE = 0x82;
TR0 = 1;
disp2();
while(1){
if((up == 0)&(dn != 0)) k_up();
if((up != 0)&(dn == 0)) k_dn();}}
void t0() interrupt 1{
if (w==100) p=1;
else p = ~p;
if(p ==0) TH0 = 256 - (100-w) *2;
else TH0 = 256 - w*2;
if ((Kp == 0)& (Kn !=0)) {
if(p==1) {
ENa = 1;
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
直流电机正反转及PWM调速.rar
(60.65 KB, 下载次数: 105)
2017-7-7 12:14 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
DUDU瓶子
时间:
2018-4-29 20:10
有没有程序的流程图
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1