⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wk.c

📁 51单片机对步进电机的控制程序,可实现步进电机的正反转
💻 C
字号:
/*
系统接线(适用于台式系统):
1、试验箱(台)上的CS244接CS0,244的输入IN0--IN7接平推开关KK1--KK8的输入K1--K8
2、试验箱(台)上的CS0809接CS2,模块上的TEMP_OUT接0809的输入ADIN0,
3、CPU板上的P15接模块上的HEATER.
实验说明:
  全速运行程序后,通过与244输入端相连的8个平推开关kk1---kk8设置设定温度,
并在数码管的左两位显示(10进制),此数值的设定范围为0--79。同时在数码管的右两位显示实际温度,
认真观察数码管的右两位数值的变化,可以了解温度的控制过程。
*/
#include    <reg51.h>
#include    <absacc.h>
#define		input			XBYTE[0xcfa0]
#define		ad				XBYTE[0xcfb0]
#define		Led_dat			XBYTE[0xcfe8]
#define		Led_ctl			XBYTE[0xcfe9]

void Display_byte(unsigned char loc,unsigned char dat)
  {
   unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
   loc &=0xf;
   Led_ctl = loc|0x80;
   if(dat==0xaa) Led_dat = table[10];
   else Led_dat = table[dat/10];     /*显示10位*/
   loc++;
   Led_ctl = loc|0x80;
   if(dat==0xaa) Led_dat = table[10];
   else Led_dat = table[dat%10];    /*显示个位*/    
  }
void delay(unsigned int time)
  {
   for(;time>0;time--);
  }
void drv(unsigned char dat)
  {
   unsigned char tmp;
   for(tmp=0;tmp!=0xff;tmp++)
     {
	  if(tmp<dat) P1|=0x20;
	  else P1&=0xdf;
	  delay(100);
	 }
  }
void main(void)
  {
   unsigned char dat,C_temp,driver=0x80;
   Led_ctl = 0xd1;
   while((Led_ctl&0x80)==0x80);
   Led_ctl = 0x31;
   Display_byte(2,0xaa);
   while(1)
     {
      dat = input;
	  if(dat>79) dat = 79;
	  Display_byte(0,dat);
	  ad = dat;
	  delay(4);
      C_temp = (unsigned char)(((float)(0xe0-ad)/16)*10);
      Display_byte(4,C_temp);
	  if(dat>C_temp)
        {
		 if(dat>(C_temp+5)) driver = 0;
		 else driver=0xf0-(dat-C_temp)*50;
		}
	  else driver = 0xff;
	  drv(driver);
     } 
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -