当前位置:首页 > 基于AT89S52单片机的电机控制C语言程序设计 - 图文
sbit K4=P3^3; //减速 sbit STCP=P2^0; sbit SHCP=P2^1; sbit DS=P2^2;
uchar code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xA4,0x8E}; // 程序存储区定义字型码表 uint N=0; uint high=5; extern uint num=1; extern uint n; extern uint e=0;
void xianshi() ; //数码管显示 void testkey(); //键盘扫描 void chuli(); //正反转处理
void main() {ENA=1;
TMOD=0x01; //T0方式1定时 TH0=(65536-1000)/256;
TL0=(65536-1000)%6; //周期1ms
ET0=1; //允许T0定时器中断 EA=1; //开启总中断 TR0=1; //启动定时器T0 while(1) {testkey(); xianshi(); } }
void delay (uint m) //延时函数 {uint n; while(m--)
{for(n=0;n<25;n++) { ;} } }
void timer0()interrupt 1 //T0定时器中断 {TH0=(65536-1000)/256;
TL0=(65536-1000)%6; //重装T0 N++; n=N;
if(n {ENA=0; } if(N==10) {N=0; } } void shuchu() {STCP=0; STCP=1; ; } void shuru(uchar a) {uchar i; for(i=8;i>0;i--) {SHCP=0;a<<=1; DS=CY; SHCP=1; } } void xianshi() {CY=0; shuru(tab[high]); shuru(tab[high0/10]); shuru(tab[high/100]); if(num==1) {shuru(tab[10]); } else {shuru(tab[11]); } shuchu(); delay(100); } void testkey() {if(K1==1) {delay(1); if(K1==1) {e=0; chuli(); } while(K1); } else if(K2==1) { delay(1); //速度显示子程序 //按键扫描程序 //正转 //反转 if(K2==1) if(e==0) {e=1; chuli(); } while(K2); } else if(K3==1) //加速 {delay(1); if(K3==1) {if(high<10) {high++; } } while(K3); } else if(K4==1) {delay(1); if(K4==1) {if(high>0) {high--; } } while(K4); } } void chuli() {switch(e) {case 0: {IN1=0; IN2=1; num=1; } break; case 1: { IN1=1; IN2=0; num=0; } break; } } //减速 //正转 //反转 第六章 原理图 第七章 元件清单 元件型号 AT89S52 带锁开关 晶振11.0592M 霍尔元件CS3020 L298N IN4148 IN4007 电阻 1k 数量 1 1 1 1 1 1 12 1
共分享92篇相关文档