单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 81|回复: 0
收起左侧

汽车磨损报警器程序和pcb,ECAS翘板开关的单片机源程序

[复制链接]
wuzhezhewu 发表于 2019-4-23 21:27 | 显示全部楼层 |阅读模式
汽车磨损报警器程序和pcb,需要的朋友可以参考一下

0.png

单片机源程序如下:
  1. /**
  2. **
  3. **---------------文件信息-------------------------------------------------------------------------------
  4. ** 文 件 名: main.c
  5. ** 版    本: V1.0
  6. ** 描    述: 系统功能处理
  7. ** 工    程; ECAS翘板开关程序
  8. ***/
  9. #include <hidef.h> /* for EnableInterrupts macro */
  10. #include "derivative.h" /* include peripheral declarations */
  11. #include "config.h"
  12. uint8  AutoCheck_Num;
  13. uint16 AutoCheck_Time;
  14. byte ad_flag;
  15. /******************************************************************************
  16. 功    能:void Key_Init(void)
  17. 描    述:所有IO口初始化
  18. 参    数: 无
  19. 返    回:无
  20. 修 改 人:
  21. 修改日期:
  22. ******************************************************************************/
  23. void Key_Init(void)
  24. {

  25.   PTADD = 0x0f; //端口方向:1.输出/0.输入
  26.   PTAPE = 0x0f; //内部上拉:1.上拉/0:不上拉
  27.   PTASE = 0x00; //输出斜率抑制(减少EMC)
  28.   PTADS = 0x0F; //大电流输出
  29.   
  30.   PTBDD = 0x0F; //端口方向:1.输出/0.输入
  31.   PTBPE = 0x0F; //内部上拉:1.上拉/0:不上拉
  32.   PTBSE = 0x00; //输出斜率抑制(减少EMC)
  33.   PTBDS = 0x0F; //大电流输出

  34.   PTCDD = 0x00; //端口方向:1.输出/0.输入
  35.   PTCPE = 0xFF; //内部上拉:1.上拉/0:不上拉
  36.   PTCSE = 0x00; //输出斜率抑制(减少EMC)
  37.   PTCDS = 0x00; //大电流输出
  38. }


  39. /******************************************************************************
  40. 功    能:void Time_Init(void)
  41. 描    述:定时器初始化
  42. 参    数: 无
  43. 返    回:无

  44. 创建日期: 2011/06/29
  45. 修 改 人:
  46. 修改日期:
  47. 说    明: fBUSCLK = 1MHz fTPM1=1MHz 1uS
  48. ******************************************************************************/
  49. void Time_Init(void)
  50. {
  51.   TPM1SC = 0<<7|    //定时器1溢出标志
  52.            1<<6|    //溢出中断使能
  53.            1<<5|    //PWM中心选择:0,由MSnB:MSnA决定;1,所有的TPMx
  54.            0<<4|    /********bit4,bit3-时钟源选择***********/
  55.            1<<3|    /*00:禁止,01:BUSCLK,10:XCLK,11:外部时钟*/
  56.            0<<2|    /******bit2,bit1,bit0-分频系数**********/
  57.            0<<1|    /* 000-> 1,001-> 2,010-> 4,011->  8    */  
  58.            0<<0;    /* 100->16,101->32,110->64,111->128    */
  59. // TPM1CNTL        //计数器
  60. // TPM1CNTH
  61. TPM1MODH=0x03;
  62. TPM1MODL=0xE8;

  63. // TPM1C0SC = 0x04;
  64. // TPM1C1SC =0x04;
  65. // TPM1C2SC =0x04;
  66. // TPM1C3SC =0x04;
  67. // TPM1C4SC =0x04;
  68. // TPM1C5SC =0x04;
  69.   //TPM1C0VL
  70.   //TPM1C0VH
  71.   //TPM1C1VL
  72.   //TPM1C1VH
  73.   //TPM1C2VL
  74.   //TPM1C2VH
  75.   //TPM1C3VL
  76.   //TPM1C3VH
  77.   //TPM1C4VL
  78.   //TPM1C4VH
  79.   //TPM1C5VL
  80.   //TPM1C5VH
  81. }



  82. /******************************************************************************
  83. 功    能:void SysInit(void)
  84. 描    述:系统初始化
  85. 参    数: 无
  86. 返    回:无

  87. 创建日期: 2011/06/29
  88. 修 改 人:
  89. 修改日期:
  90. 说    明: fICGOUT = 8MHz,内振.fTPM1=1MHz
  91. ******************************************************************************/
  92. void SysInit(void)
  93. {
  94.   SOPT1  = 1<<7|         //看门狗定时器(1):0,禁止;1,使能
  95.           1<<6|         //看门狗溢出周期(1):1,2^18;0,2^13
  96.           0<<5;         //STOP模式(0):1,使能;0,禁止
  97.   RTCSC = 0<<7|         //晶振选择:1,高增益;0,低电压
  98.           0<<6|         //频率范围选择:1,高频P=1;0,低频P=64
  99.           1<<5|         //0:外部时钟输入;1,振荡器或
  100.           0<<4|         /*******bit4,bit3-时钟模式选择*************/
  101.           0<<3|         /*00:self clock,01:内部时钟,10:外部,11外部*/
  102.           0<<2|         //OFF MODE振荡器:1,使能;0,禁止
  103.           0<<1|         //时钟丢失检测:0:使能;1,禁止
  104.           0<<0;         //保留
  105.   
  106.   
  107.   Time_Init();          //定时器初始化
  108.    Key_Init();
  109.   EnableInterrupts;     //中断使能

  110. }

  111. /******************************************************************************
  112. 功    能:void ISR_Time(void)
  113. 描    述:定时器中断服务
  114. 参    数: 无
  115. 返    回:无

  116. 创建日期: 2011/06/29
  117. 修 改 人:
  118. 修改日期:
  119. 说    明: 1mS
  120. ******************************************************************************/
  121. interrupt 11 void ISR_Time(void)
  122. {
  123. byte a;
  124. a = TPM1SC_TOF ;
  125. TPM1SC_TOF = 0 ;
  126. if (AutoCheck_Time>0)
  127.     AutoCheck_Time++;
  128. if (AutoCheck_Time>1000)
  129. {  
  130.   AutoCheck_Num ++;
  131.   if(AutoCheck_Num>=8)
  132.       AutoCheck_Time= 0;
  133.   else
  134.       AutoCheck_Time= 1;
  135.      
  136. }
  137. }


  138. /******************************************************************************
  139. 功    能:void AutoCheck(void)
  140. 描    述:系统自检处理
  141. 参    数: 无
  142. 返    回:无

  143. 创建日期: 2011/06/29
  144. 修 改 人:
  145. 修改日期:
  146. ******************************************************************************/
  147. void AutoCheck(void)
  148. {
  149.   
  150.    switch(AutoCheck_Num)
  151.   {
  152.     case 0:
  153.     {
  154.       LED_CON1 = 1;
  155.       break;
  156.      }
  157.    case 1:                  
  158.     {
  159.       LED_CON1 = 0;
  160.       LED_CON2 = 1;   
  161.        break;
  162.     }
  163.     case 2:                  
  164.     {
  165.       LED_CON2 = 0;
  166.       LED_CON3 = 1;   
  167.        break;
  168.     }
  169.    
  170.      case 3:                  
  171.     {
  172.       LED_CON3 = 0;
  173.       LED_CON4 = 1;   
  174.        break;
  175.     }
  176.    
  177.      case 4:                  
  178.     {
  179.       LED_CON4 = 0;
  180.       LED_CON5 = 1;   
  181.        break;
  182.     }
  183.     case 5:                  
  184.     {
  185.       LED_CON5 = 0;
  186.       LED_CON6 = 1;   
  187.        break;
  188.     }
  189.      case 6:                  
  190.     {
  191.       LED_CON6 = 0;
  192.       LED_CON7 = 1;   
  193.        break;
  194.     }
  195.      case 7:                  
  196.     {
  197.       LED_CON7 = 0;
  198.       LED_CON8 = 1;   
  199.        break;
  200.     }
  201.      case 8:                  
  202.     {
  203.       LED_CON8 = 0;   
  204.        break;
  205.     }
  206.       default:
  207.       {
  208.        break;
  209.         }  
  210. }  
  211. }
  212. void main(void)
  213. {

  214.   SysInit(); //系统初始化
  215.    AutoCheck_Time = 1;
  216.       
  217.   for(;;)
  218.   {
  219.     __RESET_WATCHDOG(); /* feeds the dog */
  220.     AutoCheck(); //自检
  221.     if(SIGN1&(AutoCheck_Time>0))  LED_CON1 = 1;
  222.     else       LED_CON1 = 0;
  223.     if(SIGN2&(AutoCheck_Time>0))  LED_CON2 = 1;
  224.     else       LED_CON2 = 0;
  225.     if(SIGN3&(AutoCheck_Time>0))  LED_CON3 = 1;
  226.     else       LED_CON3 = 0;
  227.     if(SIGN4&(AutoCheck_Time>0))  LED_CON4 = 1;
  228.     else       LED_CON4 = 0;
  229.     if(SIGN5&(AutoCheck_Time>0))  LED_CON5 = 1;
  230.     else       LED_CON5 = 0;
  231.     if(SIGN6&(AutoCheck_Time>0))  LED_CON6 = 1;
  232.     else       LED_CON6 = 0;
  233.     if(SIGN7&(AutoCheck_Time>0))  LED_CON7 = 1;
  234.     else       LED_CON7 = 0;
  235.     if(SIGN8&(AutoCheck_Time>0))  LED_CON8 = 1;
  236.     else       LED_CON8 = 0;
  237.   }
  238. }
复制代码

所有资料51hei提供下载:
程序BJQ-3-V1.0.zip (291.63 KB, 下载次数: 1)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛5群 联系QQ:125739409;技术交流QQ群174280738

Powered by 单片机教程网

快速回复 返回顶部 返回列表