• 大小: 51KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-18
  • 语言: 其他
  • 标签:

资源简介

直流电机PWM调速系统的要求 (1)可输入0~1范围的占空比,占空比可用电位器输入、拨码开关输入或键盘输入。 (2)设计电机驱动电路,根据输入的占空比控制电机转速。 (3)检测电机转速,并用LED或LCD显示。 (4)在PROTUES下仿真。 全套包论文

资源截图

代码片段和文件信息

 #include
#include
#include
#include
#include   



#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long

#define LCD_DB       P0
        sbit         LCD_RS=P2^0;
        sbit         LCD_RW=P2^1;
        sbit         LCD_E =P2^2;

void delayms(unsigned char ms);
void LCD_init(void);//初始化函数   
void LCD_write_command(uchar command);//写指令函数 
void LCD_write_data(uchar dat);//写数据函数  
void LCD_disp_char(uchar xuchar yuchar dat);
void delay_n40us(uint n);//延时函数 

unsigned char code self_table1[]={
0x080x0f0x120x0f0x0a0x1f0x020x02//年
0x0f0x090x0f0x090x0f0x090x110x00//月
0x0f0x090x090x0f0x090x090x0f0x00//日
0x010x0c0x170x140x170x0c0x010x00//闹钟标志
0x100x180x1c0x1e0x1f0x1c0x180x10 };//三角形符号


//================================LCD子函数 ==============================   

//*******初始化函数***************
void LCD_init(void)
{
delayms(400);
LCD_write_command(0x38);//设置8位格式,2行,5x7
delayms(10);
LCD_write_command(0x38);
delayms(10);
LCD_write_command(0x38);

LCD_write_command(0x0c);//整体显示,关光标,不闪烁
LCD_write_command(0x06);//设定输入方式,增量不移位
LCD_write_command(0x01);//清除屏幕显示 
delay_n40us(100);//实践证明,我的LCD1602上,用for循环200次就能可靠完成清屏指令。
}
//********************************
//********写指令函数************
void LCD_write_command(uchar dat)
{
LCD_DB=dat;
LCD_RS=0;//指令 
LCD_RW=0;//写入 
LCD_E=1;//允许 
LCD_E=0;
delay_n40us(1);//实践证明,我的LCD1602上,用for循环1次就能完成普通写指令。
}
//*******************************
//********写数据函数*************
void LCD_write_data(uchar dat)
{
LCD_DB=dat;
LCD_RS=1;//数据 
LCD_RW=0;//写入 
LCD_E=1;//允许 
LCD_E=0;
delay_n40us(1);
}

//******************************
//********光标闪烁*************
void cursor_flash(uchar auchar b)
{
// LCD_write_command(0x80+a*0x40+b);
// LCD_write_command(0x14);
LCD_write_command(0x0f);
LCD_write_command(0x80+a*0x40+b);
}


//********************************
//*******显示一个字符函数*********
void LCD_disp_char(uchar xuchar yuchar dat)
{
uchar address;
if(y==1)
         address=0x80+x;
else
         address=0xc0+x;
LCD_write_command(address);
LCD_write_data(dat);
}
/********************************************************
函数名称:按指定位置显示一个字符串
功能描述:按指定位置显示一个字符串
全局变量:无
参数说明:X行  Y列  S显示字符串
返回说明:无
说    明:
********************************************************/
void DisplayChar(uchar xuchar yuchar *s)
{
   uchar addressilengh;
   if(y==1)
         address=0x80+x;
   else
         address=0xc0+x;
     LCD_write_command(address);
     lengh=strlen(s);

 for(i=0;i {  
     LCD_write_data(*s);
      s++;
 }

}

/********************************
/*******检查忙函数*************
void LCD_check_busy()      //实践证明,在我的LCD1602上,检查忙指令通过率极低,以
{                                          //至于不能正常使用LCD。因此我没有再用检查忙函数。而使
do                                       //用了延时的方法,延时还是非常好用的。我试了一下,用
        { LCD_E=0

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      16282  2011-12-19 11:52  PWM调试程序

     文件       4685  2011-12-19 11:52  PWM调试程序.hex

     文件         48  2011-12-19 11:52  PWM调试程序.lnp

     文件      19566  2011-12-19 11:52  PWM调试程序.M51

     文件        986  2011-12-19 11:52  PWM调试程序.Opt

     文件        220  2011-12-19 11:52  PWM调试程序.plg

     文件       2149  2011-12-19 11:52  PWM调试程序.Uv2

     文件        984  2011-12-19 11:52  PWM调试程序_Opt.Bak

     文件       2149  2011-12-19 11:52  PWM调试程序_Uv2.Bak

     文件       7600  2011-12-19 11:52  Text1.c

     文件      14285  2011-12-19 11:52  Text1.LST

     文件      18489  2011-12-19 11:52  Text1.OBJ

     文件     148369  2011-12-19 11:52  直流电机PWM调速系统.DSN

     文件        792  2011-12-19 12:26  直流电机PWM调速系统.PWI

----------- ---------  ---------- -----  ----

               236604                    14


评论

共有 条评论

相关资源