找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1823|回复: 0
打印 上一主题 下一主题
收起左侧

电暖桌调温的单片机源程序

[复制链接]
跳转到指定楼层
楼主
ID:201874 发表于 2017-5-17 19:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
51单片机源程序:
  1. #include<reg51.h>  //包含单片机寄存器的头文件,四档为一档,主程序体现。有点过热,占空比为了4比1或者5比1为好。晶振为4。43MHZ
  2. sbit S1=P3^4;     //将S1位定义为P1.4
  3. sbit D1=P2^5;  //将D1位定义为P2.0引脚
  4. sbit D2=P2^6;  //将D2位定义为P2.1引脚
  5. sbit D3=P2^7;
  6. sbit D4=P2^4;
  7. unsigned char Countor1; //设置全局变量,储存定时器T1中断次数
  8. unsigned char Countor2; //设置全局变量,储存定时器T1中断次数

  9. void delay(void)
  10. {
  11. unsigned int n;
  12. for(n=0;n<10000;n++)
  13.         ;
  14. }

  15. void dang1d(void)        
  16.   {
  17.            TMOD=0x10;
  18.     P0=0xfe;  //第一个LED亮,高档
  19.         D1=0;
  20.         D2=0;
  21.         while(1){
  22.         D1=0;
  23.         D2=0;
  24.         delay();
  25.     break;
  26.         }
  27. }

  28. void dang2d(void)        
  29.   {
  30.            TMOD=0x10;
  31.     P0=0xfd; //第二个LED亮,二档
  32.         D1=0;
  33.         D2=0;
  34.         while(1){
  35.         D1=0;
  36.         D2=0;
  37.         delay();
  38.     delay();
  39.     delay();
  40.     delay();
  41.     D1=1;
  42.         D2=1;
  43.         delay();
  44.     delay();
  45.     break;
  46.         }
  47. }

  48. void dang3d(void)        
  49.   {
  50.            TMOD=0x10;
  51.     P0=0xfb;  //第三个个LED亮,三档
  52.         D1=0;
  53.         D2=0;
  54.         while(1){
  55.         D1=0;
  56.         D2=0;
  57.         delay();
  58.     delay();
  59.     delay();
  60.     D1=1;
  61.         D2=1;
  62.         delay();
  63. #include<reg51.h>  //包含单片机寄存器的头文件
  64. sbit S1=P3^4;     //将S1位定义为P1.4
  65. sbit D1=P2^5;  //将D1位定义为P2.0引脚
  66. sbit D2=P2^6;  //将D2位定义为P2.1引脚
  67. sbit D3=P2^7;
  68. sbit D4=P2^4;
  69. unsigned char Countor1; //设置全局变量,储存定时器T1中断次数
  70. unsigned char Countor2; //设置全局变量,储存定时器T1中断次数

  71. void delay(void)
  72. {
  73. unsigned int n;
  74. for(n=0;n<10000;n++)
  75.         ;
  76. }

  77. void dang1d(void)        
  78.   {
  79.            TMOD=0x10;
  80.     P0=0xfe;  //第一个LED亮,高档(39脚低电位)
  81.         D1=0;
  82.         D2=0;
  83.         while(1){
  84.         D1=0;
  85.         D2=0;
  86.         delay();
  87.     break;
  88.         }
  89. }

  90. void dang2d(void)        
  91.   {
  92.            TMOD=0x10;
  93.     P0=0xfd; //第二个LED亮,二档(38脚)
  94.         D1=0;
  95.         D2=0;
  96.         while(1){
  97.         D1=0;
  98.         D2=0;
  99.         delay();
  100.     delay();
  101.     delay();
  102.     delay();
  103.     D1=1;
  104.         D2=1;
  105.         delay();
  106.     delay();
  107.     break;
  108.         }
  109. }

  110. void dang3d(void)        
  111.   {
  112.            TMOD=0x10;
  113.     P0=0xfb;  //第三个个LED亮,三档(37脚下)
  114.         D1=0;
  115.         D2=0;
  116.         while(1){
  117.         D1=0;
  118.         D2=0;
  119.         delay();
  120.     delay();
  121.     delay();
  122.     D1=1;
  123.         D2=1;
  124.         delay();
  125.     delay();
  126.     delay();
  127.     break;
  128.         }
  129. }

  130. void dang4d(void)        
  131.   {
  132.            TMOD=0x10;
  133.     P0=0xf7;  //第四个LED亮,四档(36脚)
  134.         D1=0;
  135.         D2=0;
  136.         while(1){
  137.         D1=0;
  138.         D2=0;
  139.         delay();
  140.         D1=1;
  141.         D2=1;
  142.         delay();
  143.     delay();
  144.     delay();
  145.         break;
  146.         }
  147. }

  148. void main(void)
  149. {  
  150.    unsigned char i;
  151.         i=0;    //将i初始化为0
  152.         while(1)
  153.          {
  154.                   if(S1==0)     //如果S1键按下
  155.                    {
  156.                           delay();  //延时一段时间
  157.               delay();
  158.                           if(S1==0) //如果再次检测到S1键按下
  159.                             i++;    //i自增1
  160.                           if(i==6)  //如果i=9,重新将其置为1
  161.                             i=1;
  162.                                 
  163.                    }
  164.                  switch(i)   //使用多分支选择语句
  165.                                  {
  166.                                    case 1: dang4d();  //第一个LED亮
  167.                                                         break;
  168.                                         case 2: dang3d();  //第二个LED亮
  169.                                               break;
  170.                                         case 3:dang2d();   //第三个LED亮
  171.                                               break;
  172.                                         case 4:dang1d();   //第四个LED亮
  173.                                               break;
  174.                                         case 5:P0=0xff;
  175.                                                  D1=1;
  176.                                                     D2=1;   //关机

  177.                                               break;
  178.                                              default:   //缺省值,关闭所有LED
  179.                                               P0=0xff;

  180.                                                   
  181.                                  }
  182.                  }         
  183. }


复制代码


AT89S51单片机C语言程序范例.doc

1.64 MB, 下载次数: 3

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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