tag 标签: 课程设计

相关博文
  • 热度 19
    2016-3-4 13:47
    1340 次阅读|
    3 个评论
    一个蛮简单的要用三篇博文也是够够的。主要是我把程序贴得太仔细了。。囧。。应该详略得当,,,好吧。就最后cut掉一点了。。继上面的电子时钟的设计(二)了。  /****************************************************************** //函 数 名: Time_ProcessDisp() //功能描述:  //说明: 钟表模式 。 调用函数: void Time_HorMinDisp(void) void Time_MonDayDisp(void) void Time_YearDisp(void) void Time_HouMinDisp(void) ********************************************************************/  void Time_ProcessDisp(void )  { KeyIn( ); KeyChk( ); if(KeyCvtBuf==KeyOldBuf) return; else  { KeyOldBuf = KeyCvtBuf; switch ( KeyCvtBuf) { case 0x00 :    { return ; }   case 0x02 :      {   if (ShowPage == 1)     //显示小时:分钟 {    ShowPage = 2 ; Time_HorMinDisp( );  //若按KEY2上翻,显示日期 } else if( ShowPage == 2)  //若继续按KEY2,再上翻 显示  年 { ShowPage = 3; Time_MonDayDisp(); } else if( ShowPage == 3 )  //若继续按KEY2 回到主页面,显示 小时分 {        ShowPage = 1 ; Time_YearDisp();  } break ;   } case 0x04:      {   if( ShowPage == 3 ) //若按KEY3 下翻,显示 日期 { ShowPage = 2 ; Time_YearDisp(); } else if( ShowPage == 2)   //若继续按KEY3 下翻,显示 时间 { ShowPage = 1 ; Time_MonDayDisp(); } else if( ShowPage == 1) //若继续按KEY3 下翻,显示 年份 { ShowPage = 3 ; Time_HorMinDisp(); }  break ;      } case 0x08:   //若  按KEY4 返回上一层进入模式设置 { SetMode = 5; //进入模式设置的选择 DispModePage = 0; ShowPage = 1 ; //还原初始化的标记 break ; } default:{return;}  } }   }  /*******************************  函数名: void Set_Time(void)  功能: 当KEY4按下后,退出显示模式,按KEY1进行模式选择。   当数码管上显示为--01说明是时钟校对模式,按KEY4确定进入该模式。 按KEY2为加 按KEY3为减,每项设置好后按KEY4键进行确认,当时间设置好后按KEY4键确认并退出  *********************************/    void Set_Time(void)    {     KeyIn( ); KeyChk( ); if(KeyCvtBuf==KeyOldBuf)   return; else if(StFg == 3) { Time_YearDisp(); KeyOldBuf = KeyCvtBuf; switch(KeyCvtBuf) { case 0x00: {return;} case 0x02:    //KEY2 加 { YEAR ++ ; YearFlag ++ ; Time_YearDisp(); break ; } case 0x04: { YEAR -- ; YearFlag -- ; Time_YearDisp(); break ; } case 0x08: {     StFg = 2 ;  //当年份修改完成后变为2,进入日期设置 Time_MonDayDisp(); break ; } default:{return;} } } else if(StFg == 2) { KeyOldBuf = KeyCvtBuf; switch(KeyCvtBuf) { case 0x00: {return;} case 0x02:    //KEY2 加 { if(MONTH == 4 || MONTH == 6 || MONTH == 9 || MONTH == 11) { DAY ++; if(DAY ==31) // { DAY = 1; MONTH  ++ ; } Time_MonDayDisp();   } else if(MONTH == 2) { DAY ++; if(YearFlag % 4 == 0)     { if(DAY == 30)  { DAY = 1; MONTH ++ ; }     }  else if(DAY == 29) { DAY = 1; MONTH ++ ; } Time_MonDayDisp(); } else  //1、3、5、7、9、10、12 { DAY ++; if(DAY == 32) { DAY = 1; MONTH  ++ ; if(MONTH == 13) { MONTH = 1; YEAR ++ ;  YearFlag  ++ ; } } Time_MonDayDisp(); } break ; } case 0x04:  //- { if(MONTH == 4 || MONTH == 6 || MONTH == 9 || MONTH == 11 || MONTH == 2) { DAY --;   if(DAY ==0) { DAY = 31; MONTH  -- ; } Time_MonDayDisp();   } else if(MONTH == 3) {  DAY --; if(YearFlag % 4 == 0)   // || YearFlag == 0 )     { if(DAY == 0)      { DAY = 29; MONTH  -- ;  }     } else if(DAY == 0) { DAY = 28; MONTH  -- ; } Time_MonDayDisp(); } else if(MONTH == 1) { DAY --; if (DAY ==0) { DAY =31; YEAR --; YearFlag --;  //朕懒得判断了 } Time_MonDayDisp(); } else  //3、5、7、9、10、12 { DAY -- ; if(DAY == 0) { DAY = 30; MONTH  --; } Time_MonDayDisp(); } break ;          } case 0x08: {    StFg = 1 ;  //当日期修改完成后变为1 Time_HorMinDisp(); break ; } default:{return;} } }     else if(StFg == 1) { KeyOldBuf = KeyCvtBuf; switch(KeyCvtBuf) { case 0x00: {return;} case 0x02:    //KEY2 加 { MINUTE ++ ; if( MINUTE == 60) { MINUTE = 0; HOUR ++ ; } Time_HorMinDisp(); break ; } case 0x04: { MINUTE -- ;     if( MINUTE == 0) { MINUTE = 59; HOUR -- ; } Time_HorMinDisp(); break ; } case 0x08: {    StFg = 3 ;  //当时间修改完成后变为,3供下一次使用。   Time_HorMinDisp(); SetMode = 0;    //确定按下后,方可退出时钟的校准模式,回到模式设置首页 DispModePage = 0 ; break ; }      default:{return;} } }    } 其他的函数博主我就不贴了。。。也没啥技术含量的拉了三篇。。怪不好意思的。。囧。。
  • 热度 17
    2016-3-4 13:39
    1103 次阅读|
    0 个评论
    上接电子时钟的设计(一)。 由于篇幅和板式的限制,将.h和.c 合并在同一个文件,便于大家查看。 这里再贴上 模式选择函数和秒表函数。  /******************************************** //*****文件名:Mode.c //***** 说明: 每次按KEY4进入模式选择 显示--P_ 按KEY1 键进行模式的切换, 显示--P1 钟表校对模式,按KEY4后进入该功能 ,调用函数Set_Time();   --P2 秒表模式 ,按KEY4后进入该功能,调用函数 Cnt_Time() --P3 定时器模式,按KEY4后进入该功能,调用函数 Limt_Time (); --P4 闹钟模式 ,按KEY4后进入该功能,调用函数  Rin_Time() ;      uchar SetMode  = 0 ; //时间的显示//1 :钟表校对模式, 2:秒表模式 3:定时器模式 4:闹钟模式  按KEY1切换显示的模式,按KEY4确定当前显示的模式,选择进入该模式。 **********************************************/  #include "reg51.h" #define uchar  unsigned char #define uint  unsigned int //=======================变量================================= uchar DispModePage = 0 ;  //显示的页面的标记,1为P1,2为P2,3为P3。 extern  uchar SetMode ;//用于模式的选择 extern  uchar data KeyCvtBuf ; extern  uchar data KeyOldBuf ; //**************函数调用******** extern  void KeyIn(void); extern  void KeyChk(void); extern  void    LedDisp(uchar i, uchar j, uchar m, uchar n) ;  /******************************************** //*****函数名:ModeSetDisp() //*****函数功能: 数码管显示模式 //*****输入参数: 无 //*****输出参数:无 说明:uchar SetMode  = 0 ; //时间的显示//1 :钟表校对模式, 2:秒表模式 3:定时器模式 4:闹钟模式    P1为钟表校对模式,调用函数Set_Time();   P2为 秒表模式 ,调用函数 Cnt_Time()   p3为定时器模式,调用函数 Limt_Time ();   P4为闹钟模式 ,调用函数  Rin_Time() 。 按KEY1切换显示的模式,按KEY4确定当前显示的模式,选择进入该模式。 **********************************************/   void ModeSetDisp (void ) { KeyIn();     KeyChk(); if(KeyCvtBuf==KeyOldBuf) return; else if (DispModePage == 0) { LedDisp(21 ,21, 17 ,24);   //显示--P_ DispModePage = 1; } else if  (DispModePage != 0 )  //--P_ 消隐 {    KeyOldBuf = KeyCvtBuf; switch ( KeyCvtBuf) { case 0x00 :    { return ; } case 0x01 :     {   if (DispModePage ==1) //当前显示为P1,为时钟校对模式 ,再按KEY1,切换至P2模式 { LedDisp(21 ,21, 17 ,1); DispModePage = 2 ; }   else if(DispModePage == 2)  //当前显示为P2,为秒表模式 ,再按KEY1,切换至P3模式 { LedDisp(21 ,21, 17 ,2);   DispModePage = 3 ; } else if(DispModePage == 3)   //当前显示为P3,为定时器模式,再按KEY1,切换至P4模式 { LedDisp(21 ,21, 17 ,3); DispModePage = 4 ; } else if( DispModePage == 4)   //当前显示为P4,为定时器模式,再按KEY1,切换至P1模式 { LedDisp(21 ,21, 17 ,4); DispModePage = 1; } break ;  } case 0x08 : { if( DispModePage == 2 )    //显示为P1,为时钟校对模式 { DispModePage= 1; //退出时还原    SetMode = 1; } else if( DispModePage == 3 )    //显示为P2,为时秒表模式  { DispModePage = 2; //退出时还原 SetMode = 2 ; } else if(DispModePage == 4)  //当前显示为P3,为定时器模式, { DispModePage = 3; //退出时还原 SetMode = 3 ; } else if(DispModePage == 1)    //当前显示为P4,为闹钟模式 { DispModePage = 4; //退出时还原 SetMode = 4 ; } break ; } } } }   /************************************************ //文件名: clock.c // 说明:   时钟功能文件, 电子表时钟初始化为2012年10月13日06点00分 四个按键的定义: KEY1 S0 ;  KEY2 S1 ;  KEY3 S3 ;  KEY4 S4 ; 演示步骤: 1. 钟表功能: 初始化主页面上显示2012年10月13日06点00分。 首先四个数码管显示06:04   (1)不对此页面进行设置。查看年月日:按KEY2表示上翻查看日期,再按KEY2上翻查看年;    类似地,按KEY3下翻查看年分显示 2012 ;    再按KEY3表示查看日期,显示 10 -13。  按KEY4跳至功能选择 .   (2)功能模式的选择。按KEY4进入此页的设置(从年开始进行设置),显示--P_   按KEY1键进行功能切换。 *************************************************/ #include "reg51.h" #define uchar  unsigned char #define uint  unsigned int //=======================变量=================================  //显示小时分钟时为1 ,显示 日期 标志 为2// 显示年的标志 3 //模式页时为0//   4:不显示--P_ uchar ShowPage  = 1 ;  //数码管显示页面标记,初始化为1,显示小时分 extern uchar SetMode; extern uchar SetFlag   ; //1 :钟表模式,2:计时模式。。。。 extern uchar DispModePage  ; uchar StFg = 3 ; //修改标志,初始化为3,当年份修改完成后变为2,当日期修改完成变为1,当时间设置后变为0; uchar SECOND = 3 ;  // 秒 uchar MINUTE = 14 ;  // 分 uchar HOUR = 6 ; // 6 时 uchar DAY = 13 ;  // 13日 uchar MONTH = 10 ; // 10月 uint YEAR = 2012 ;   //  2012年 uchar YearFlag = 0 ; extern uchar DispModePage ; extern uchar SecondFlag  ; //每秒的标志位 uchar SecondFlagOld ;  //每秒的上一次标志位 //******************外部变量********************** extern  uchar data KeyChkBuf ; extern  uchar data KeyOldBuf ; extern  uchar data KeyCvtBuf ; extern  DataPort ;   //=======================调用函数=================================== extern  void    LedDisp(uchar i, uchar j, uchar m, uchar n) ; extern  void    Led_Init(void); extern  void    MnKey(void); extern  void KeyIn(void); extern  void KeyChk(void); /****************************************************************** //函 数 名: Time_Process() //功能描述:  //说明:时间进程函数,时间: 秒、分、小时、日、月、年 ********************************************************************/  void Time_Process(void)  {   if(SecondFlag != SecondFlagOld) {   SECOND ++ ; SecondFlagOld = SecondFlag;  if(SECOND == 60 ) { MINUTE ++;     SECOND = 0; if(MINUTE ==60)     { HOUR++;     MINUTE = 0;     if(HOUR == 24)     {    HOUR = 0; if(MONTH == 4 || MONTH == 6 || MONTH == 9 || MONTH == 11) { DAY ++; if(DAY ==31) { DAY = 1; MONTH  ++ ; }  } else if(MONTH == 2) { DAY ++ ; if(YearFlag == 4||YearFlag == 0)     { if(DAY == 30)  DAY = 1;     } else if(DAY == 29) { DAY = 1; } } else  //1、3、5、7、9、10、12 { DAY ++; if(DAY == 32) { DAY = 1; MONTH  ++ ; if(MONTH == 13) { MONTH = 1; YEAR ++ ;  YearFlag  ++ ; } }   }     }     } } }  }    /****************************************************************** //函 数 名: Time_HorMinDisp() //功能描述:  //说明:显示  小时:分种 调用函数:void  LedDisp(void); ********************************************************************/ void Time_HorMinDisp(void) { uchar led1 = HOUR/10 ;  uchar led2 = HOUR%10 ; uchar led3 = MINUTE/10 ;  uchar led4 = MINUTE%10 ;  LedDisp(led1, led2, led3, led4); }   /****************************************************************** //函 数 名: Time_MonDayDisp( ) //功能描述:  //说明:显示  月份:日期 调用函数:void  LedDisp(void); ********************************************************************/ void Time_MonDayDisp(void) { uchar led1 = MONTH / 10 ; uchar led2 = MONTH %10 ; uchar led3 = DAY / 10 ; uchar led4 = DAY % 10 ;  LedDisp(led1, led2, led3, led4); }    /****************************************************************** //函 数 名: Time_ProcessDisp() //功能描述:  //说明:显示  年 调用函数:void  LedDisp(void); ********************************************************************/ void Time_YearDisp(void) { uchar led1 = (YEAR / 1000 ) ; uchar led2 = (YEAR- led1*1000) / 100 ; uchar led3 = (YEAR - led1*1000 - led2*100)/10  ; uchar led4 = YEAR  % 10  ; LedDisp(led1, led2, led3, led4); }
  • 热度 18
    2016-3-4 13:19
    1994 次阅读|
    2 个评论
         前几天想起来单片机课设没做,于是赶紧开始动手。板子是老师当时上51组织大家焊接的板子。今天把课设的内容贴在这里。这是没有加FIFO版的,把每个功能是模块化的,可以做为新手的练习。有时间可以加上FIFO,将每次按键的键值都存放到FIFO内,将底层隔开。这样系统设计就真正意义上实现层次化,底层、界面层、和应用层。 下面是我初步的程序: /************************ ************************ //文件名: main. // 说明:  电子表时钟初始化为2012年10月13日06点00分 四个按键的定义: KEY1 S0 ; KEY2 S1 ; KEY3 S3 ; KEY4 S4 ;   演示步骤: 1. 钟表功能: 初始化主页面上显示2012年10月13日06点00分。 首先四个数码管显示06:04  (1)不对此页面进行设置。查看年月日:按KEY2表示上翻查看日期,再按KEY2上翻查看年;   类似地,按KEY3下翻查看年分显示 2012 ; 再按KEY3表示查看日期,显示 10 -13。  按KEY4跳至功能选择 .  (2)功能模式的选择。按KEY4进入此页的设置(从年开始进行设置),显示--P_   按KEY1键进行功能切换。 显示--P1 表示 钟表校对功能 显示--P2 秒表模式  显示--P3 定时模式 显示--P4 闹钟模式  按KEY4键进入该 模式功能。   *************************************************/ #include "reg51.h" #define uchar unsigned char #define uint unsigned int //==============变量================================= uchar SecndCntFl g = 0 ; uchar SecondFlag = 0; //每秒的标志位 uchar SecndLimtFl g = 0 ; // 定时器 uchar Flag_10ms = 0 ; //中断中每10ms +1   uchar FlagCnt_10ms = 0 ;//秒表每10ms uchar FlagCntOld_10ms = 0 ; uchar SetMode  = 0 ; //================申明外部变量======================= extern uchar data KeyChkBuf ; extern uchar data KeyOldBuf ; extern uchar data KeyCvtBuf ; extern  DataPort ; //=================调用函数====================== extern  void    Init_Key(void); extern void MnLed(void); extern  void Time_Process(void); extern  void Time_ProcessDisp(void ) ; extern  void ModeSetDisp (void ); extern  void Set_Time(void); extern  void Cnt_Time( void ); extern  void CntTime_Disp( void ); extern  void Limt_Time(void) ; extern  void LimtTime_Disp(void); extern  void Rin_Time(void);  /********************************e********************************** //函 数 名: T0_Init() //功能描述: 设置定时器 //说明: 使用定时器0,工作方式1,每10ms产生一次中断 ********************************************************************/ void T0_Init(void) { TMOD = 0x01 ; // 设置定时器0,工作方式1 TH0 = 0xd8 ; TL0 = 0xf0 ; EA = 1 ; // 开总中断 ET0 = 1 ; // 开T0 中断 TR0 = 1 ;//  启动定时器 0  }   void T0_Intr(void)   interrupt 1  {     Flag_10ms ++ ;   //中断中每10ms +1      TH0 = 0xd8 ;      TL0 = 0xf0 ;      FlagCnt_10ms = ~ FlagCntOld_10ms ;  //秒表10ms的标志      if(Flag_10ms == 100)   //后期改:中断内尽量少程序      {          Flag_10ms = 0 ;          SecondFlag = ~SecondFlag; //每秒标志位置1          SecndCntFl g = ~SecndCntFl g; //每秒标志位置1          SecndLimtFl g = ~ SecndLimtFl g ;//定时器时间标志      }  }   /************************************************************* //函 数 名: main() //功能描述: LED动态扫描主循环 说明 :SetMode 用于模式的选择;   SetMode = 0  显示时间或者是默认时间,即进入钟表模式 (初始化值为0 );   SetMode = 1  进入钟表校对模式 ;   SetMode = 2  进入秒表模式 ;   SetMode = 3 进入定时模式 ;   SetMode = 4 进入闹钟模式 ;   SetMode = 5 进入 模式的选择。 ***********************************************************/ void main (void) { Init_Key() ; T0_Init() ; while(1) { MnLed(); Time_Process ();   switch( SetMode ) { case 0 : {    Time_ProcessDisp(); break ; } case 1 : { Set_Time(); break ; } case 2 : { Cnt_Time(); CntTime_Disp(); break ; } case 3 : { Limt_Time(); LimtTime_Disp(); break ; } case 4 : { Rin_Time(); break ; } case 5 : { ModeSetDisp (); break ; } }     } } /*************************************************** //文件名称: led.c //功能说明: 数码管动态扫描4位数码管动态扫描,根据LedNum可配置为低于8位 //硬件描述: 段口P1,位口P0.0-P0.3 ****************************************************/ #include "reg51.h" #define uchar unsigned char #define uint  unsigned int //=====================常量========================================= #define LedNum 4 //数码管个数6 #define ScanTime    10 //扫描时间,根据实际情况调整 #define DataPort P1 //段口 #define ComPort P0 //位口(4 bit) /响定时器/ 0x ef ,关闭是0xff //=====================变量========================================= uchar data LedDispBuff ;  //Led4Num个数码管 //数点缓冲区 uchar data ComPortBuf; uchar data ScanBitCnt; uchar data ScanTimeCnt; extern  uchar data KeyBuf ; //===============数码管码表(共阳极)=============================== uchar data CODE ]; //段选 ComPort=ComPortBuf; //位选 ScanTimeCnt=ScanTime; while(ScanTimeCnt--); //扫描延时 ComPort=0xff; ComPortBuf=1; ComPortBuf++; } }  /******************************************** //*****函数名:Led4Disp() //*****函数功能: LED数码管显示内容修改函数 //*****输入参数: 无 //*****输出参数:无 **********************************************/ void LedDisp(uchar i ,uchar j, uchar m ,uchar n) {      // LedDispBuff = KeyBuf ; // LedDispBuff = KeyBuf ; // LedDispBuff = KeyBuf ; // LedDispBuff = KeyBuf ;  LedDispBuff = i ; LedDispBuff = j ; LedDispBuff = m ; LedDispBuff = n ;  } 因为按键程序在前面的博文有涉及到,因此不再赘述。 博文略长,只能分两篇分享。
  • 热度 38
    2011-6-2 16:54
    3331 次阅读|
    9 个评论
    最近有位师弟在课程设计方面遇到了点问题,想一想自已当年也是菜鸟一只,课程设计也把自己弄的不知所措,不知道从何下手,所以能帮就帮了。通过这几天与师弟交流发现了一些初学者容易犯的错误。也突然想起了格物致知这个词语。   什么是格物致知 ,所谓格就是推究的意思,致就是求得的意思,整句话的意思就是穷究事物原理,从而获得知识。这句话出自《礼记·大学》:“致知在格物,物格而后知至。”是的只有掌握了事物的本质规律才能很好的驾驭它。然而当初我刚学习电子设计时常常是为了赶时间或是其它原因,总是草草的了解一下原理就开始轰轰烈烈的搞,结果幸运的话问题很少,一调就通过了,但是大部分时候问题一大堆,然后呢就东修一下,西碰一下,问题解决了也不知道为什么,下次设计中可能还会遇到这个问题,于是再东一下西一下的调整。其实中国有句古话哪做“磨刀不误砍柴功”,就像写程序,把思路理清楚了,流程做好了,敲代码可能是最简单的事了。   想一想当年在学校,师兄说学电子有两点必须会,一、会搜集资料;这个网络泛滥的时代,只要你用心找什么都有,套用阿基米德的话:给我一根网线,我可以把原**搞定。当然网上什么乱七八糟的资料都有,一定要学会去伪存真找到精华所在。二、多实践多练习;没错就是多实践多练习,这个不用多论证,纸上谈兵的故事应该早就在民间流传了。   当然当年我菜鸟那样很想多练习,但却不知道怎么搜资料,只是在网上乱搜,而且只看中文资料,现在想想那时真做了好多无用功,芯片资料嘛,当年是要到官方网站上找了,而且上面有好多应用文档,白皮书什么的多读一下,有益处的。在此说一下我那小师弟的事,有一个问题是CD4501,在这个电路中的作用?我没有先回答他,我就让他去网上找一下他资料,我说看了它资料你自然就明白,下面是我与他的对话内容:   懒猫爱飞 13:45:43  首先你要弄清这个芯片是什么,然后才能搞明白它在电路中的作用 懒猫爱飞 13:46:23  它是什么芯片,可以从googl上搜 如下图: 请看图1-2 懒猫爱飞 13:46:26  好的 懒猫爱飞 13:46:44  然后我们可以定位到下图  请看图1-1   懒猫爱飞 13:46:55  那我们就知道他是模拟开关了 懒猫爱飞 13:47:09  是开关当然是起开关作用了 XX★XX 13:47:24  (此处是一个QQ表情,不再上传,真的不会在这里排版-_- 改天好好请教一下网站人员-_-) 懒猫爱飞 13:47:27  然后你就可以看看它的数据手册  详细的了解一下它的功能 懒猫爱飞 13:47:34  再看看这个电路 懒猫爱飞 13:47:45  就会明白它在这个电路里面的作用了 懒猫爱飞 13:48:27  如果你一问我它是什么作用,我马上告诉你,你可能记住这个电路上的作用了,但到下个电路可能它的用法就不一样了 懒猫爱飞 13:48:38  所以我觉得你要学着看芯片的数据手册 懒猫爱飞 13:48:48  最好看英文原版 XX★XX 13:48:47  恩恩 你说的有道理~~ …… 这个跑的有点远了,其实不管做为电子工程师还是其它行业,都应该努力去探寻事物的本质规律。拿我大一时做的一个简单的5V稳压电源做例子,它只有几个小部分,整流、变压、稳压、滤波。只要稍微深入一下,就可以把思路拓展开来,先弄明白为什么要整流,再想一下整流的原理,下一步搭建这个整流电路就易如反掌了。再比如说这个滤波部分,想一下,为什么要滤波,不滤波有什么危害,电容有什么特性,电感有什么特性,等把这些弄清楚,滤波选用什么器件,参数怎么定,我想这些都会明白的。   也许各人有各人的学习方法,但其实还是想说格物致知,掌握事物的规律才能驾驭它,细心工作,深究事物的本质,才能做出优质的电路,才能做个更合格的工程师^_^   最后,祝师弟课程设计顺利通过,并祝他学习更上一层楼。   再吼一下懒猫的口号:   每天进步一点点,开心多一点 ^_^  
相关资源
  • 所需E币: 3
    时间: 2019-12-27 19:33
    大小: 1.1MB
    上传者: givh79_163.com
    本系统以单片机PIC16F877A为控制核心的单相全桥式电压型SPWM逆变电源。系统主要由交流220V变压隔离成可调交流电,再整流变换成直流电,SPWM信号通过光耦隔离器控制由开关管MOEFET组成的逆变器件的工作状态,实现对输出的控制,即AC-DC-AC变换。从而得到频率和幅度都可调的正弦交流电,后端再对电压、电流以及频率的采样,从而实现闭环的控制。漳州师范学院毕业论文(设计)基于PIC单片机单相SPWM逆变电源的设计TheDesignofInverterBasingonPICMicrocontrollerSingle-phaseSPWM姓名:学号:系别:物理与电子信息工程系专业:电子信息科学与技术年级:指导教师:2011年12月31日摘要本系统以单片机PIC16F877A为控制核心的单相全桥式电压型SPWM逆变电源。系统主要由交流220V变压隔离成可调交流电,再整流变换成直流电,SPWM信号通过光耦隔离器控制由开关管MOEFET组成的逆变器件的工作状态,实现对输出的控制,即AC-DC-AC变换。从而得到频率和幅度都可调的正弦交流电,后端再对电压、电流以及频率的采样,从而实现闭环的控制。该逆变电源输出的正弦交流电精度高,性能稳定,实用价值高,在电力电子技术中应用广泛。关键词:SPWM;逆变器;驱动电路;场效应管IRF840AbstractThissystemisasingle-phasefull-bridgevoltage-typeinverterwhichisbasedonPIC16F877Amicrocontroller.Itismainlytransformedfrom220VACtoad……
  • 所需E币: 3
    时间: 2019-12-31 16:37
    大小: 1.09MB
    上传者: 238112554_qq
    课程设计内容1、多功能数字滤波器前面板设计;前面板要求:仪器操作均在前面板进行;仪器操作方便,人性化设计;前面板美观大方。2、多功能数字滤波器框图程序设计。框图程序要求:设计思路简洁;功能完善,达到设计要求;布线合理,便于查看。……
  • 所需E币: 3
    时间: 2019-12-31 16:41
    大小: 318.13KB
    上传者: wsu_w_hotmail.com
    设计目标:1、设计集成功率放大器电路图2、计算最大不失真输出功率3、计算集成功率电路的效率4、测量输入灵敏度5、噪声电压小于15mv模拟电子技术课程设计设计题目:集成功率放大器专业:姓名:班级:学号:指导老师:2010年5月28日引言集成功率放大器由集成功放块和一些外部阻容元件构成。它具有线路简单,性能优越,工作可靠,调试方便等优点,已经成为在音频领域中应用十分广泛的功率放大器。集成功放块的种类很多。上图为集成功放LA4112的内部电路图,由三级电压放大,一级功率放大以及偏置、恒流、反馈、退耦电路组成。最主要的组件为集成功放块,它的内部电路与一般分立元件功率放大器不同,通常包括前置级、推动级和功率级等几部分。有些还具有一些特殊功能(消除噪声、短路保护等)的电路。其电压增益较高(不加负反馈时,电压增益达70~80db,加典型负反馈时电压增益在40db以上)。目录一、设计题目……………………………………………………………………4二、设计要求……………………………………………………………………4三、题目分析……………………………………………………………………4四、整体构思……………………………………………………………………51.功率放大器特点…………………………………………………………52.功率放大器的状态………………………………………………………63.功率放大器的散热…………………………………………………………
  • 所需E币: 4
    时间: 2019-12-24 14:56
    大小: 1.44MB
    上传者: 238112554_qq
    单片机C语言课程设计以及相应的课程设计题目更多精品电子资料可以到21ic中国电子网http://dl.21ic.com/免费下载……
  • 所需E币: 4
    时间: 2020-1-9 13:50
    大小: 759.87KB
    上传者: givh79_163.com
    课程设计报告:随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。设计课题时构思了两种方案:一种是用以AT89s51为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求,所以本文采用前一种方案。基于单片机控制的电子密码锁摘要:本系统由单片机系统、矩阵键盘、LED显示和报警系统组成。系统能完成开锁、超时报警、超次锁定、管理员解密、修改用户密码基本的密码锁的功能。除上述基本的密码锁功能外,还具有调电存储、声光提示等功能,依据实际的情况还可以添加遥控功能。本系统成本低廉,功能实用关键词:AT89S51,AT24C02,电子密码锁,矩阵键盘一、引言随着人们生活水平的提高,如何实现家庭防盗这一问题也变的尤其的突出,传统的机械锁由于其构造的简单,被撬的事件屡见不鲜,电子锁由于其保密性高,使用灵活性好,安全系数高,受到了广大用户的亲呢。设计本课题时构思了两种方案:一种是用以AT89s51为核心的单片机控制方案;另一种是用以74LS112双JK触发器构成的数字逻辑电路控制方案。考虑到数字电路方案原理过于简单,而且不能满足现在的安全需求,所以本文采用前一种方案。二、方案论证与比较方案一:采用数字电路控制。其原理方框图如图1-1所示。图2-1数字密码锁电路方案采用数字密码锁电路的好处就是设计简单。用以74LS112双JK触发器构成的数字逻辑电路作为密码锁的核心控制,共设了9个用户输入键,其中只有4个是有效的密码按键,其它的都是干扰按键,若按下干扰键,键盘输入电路自动清零,原先输入的密码无效,需要重新输入;如果用户输入密码的时间超过40秒(一般情况下,用户不会超过40秒,若用户觉得不便,还可以修改)电路将报警80秒,若电路连续报警三次,电路将锁定键盘5分钟,防止他人的非法操作。电路由两大部分组成:密码锁电路和备用电源(UPS),其中设置……
  • 所需E币: 4
    时间: 2020-1-9 14:12
    大小: 2.33MB
    上传者: 238112554_qq
    包含详细的电路原理图及PID算法。设计并制作一个恒温空调自动控制系统,控制对象为在有机玻璃容器内的空气。温度可以在一定范围内由人工设定,并能在环境温度升高时实现自动调整,以保持设定的温度基本不变。(1)温度设定范围为15~26℃,最小区分度为1℃,标定温差≤1℃。(2)环境温度升高时,温度控制的静态误差≤1℃。(3)采用适当的控制方法,当设定温度突变(由26℃提高到16℃)时,减小系统的调节时间和超调量。(4)用十进制数码显示容器中空气的实际温度。……
  • 所需E币: 4
    时间: 2020-1-5 21:43
    大小: 333.87KB
    上传者: 微风DS
    任务:利用集成运放在各种运算电路上的一些应用设计一个反相比例运算电路,并测量反相比例运算放大器的电压增益。测定反相比例运算放大器输出与输入电压波形之间的相位差。-1--1-学号:09091310692010-2011学年第2学期模拟电子技术课程设计报告模拟电子技术课程设计报告题目:基本运算电路(反相比例运算)专业:通信工程班级:09通信(二)班姓名:2222指导教师:2222电气工程系2011年5月25日-2--2-课程设计任务书学生班级:09通信(二)班学生姓名:徐伟星学号:0909131069设计名称:基本运算电路(反相比例运算)起止日期:2011-5-23――2011-5-29指导教师:周珍艮设计要求:1、明确设计题目,确定方案。对于考虑的方案,经过比较后,确定选择哪个方案。2、单元电路的设计和元器件的选择。要列出元器件清单3、画出完整的电路原理图和必要的波形图,并说明主要工作原理。4、计算出各元器件的主要参数,并标在电路图中恰当的位置。5、画出电路图。6、对电路性能进行测试,并分析是否满足要求。7、按要求撰写课程设计报告。报告内容包括目录、正文(概述……