标题: 按键控制彩灯亮灯方式简易小程序+电路图 [打印本页]

作者: 森小胖    时间: 2017-3-27 01:21
标题: 按键控制彩灯亮灯方式简易小程序+电路图
按键控制彩灯的仿真电路图:




单片机源程序:
  1. /**********************刘金森 1440302103 电子信息工程*********************/
  2. #include<reg51.h>                      //51单片机头文件
  3. #include<intrins.h>                       //包含crol(循环左移)函数所在的头文件
  4. #define uint unsigned int      
  5. void delay(int z);                   //声明子函数
  6. unsigned char temp;                 //定义一个变量,用来给P1口赋值
  7. int i,j;
  8. sbit Key0=P0^0;
  9. sbit Key1=P0^1;
  10. sbit Key2=P0^2;                           //定义三个按键
  11. /**************按键控制函数************/
  12. uint key()
  13. {
  14.      uint temp;
  15.          Key0=0;
  16.          Key1=0;
  17.          Key2=0;                             
  18.      if(Key0==1)
  19.              {
  20.                 delay(500);                    //延时500毫秒,去按键时的抖动
  21.                          if(Key0==1)
  22.                         {
  23.             temp=0xfc;                    //1111 1100B 只有两盏灯亮
  24.                     P1=temp;
  25.                         while(Key0)
  26.                         {
  27.                     delay(500);
  28.                     temp=_crol_(temp,1);         //将temp循环左移一位后再赋给temp
  29.                 P1=temp;                                     //将移位后的值赋给P1口,从低位到高位逐个点亮发光二极管
  30.                         }
  31.                         }
  32.                                         
  33.               }
  34.              else if(Key1==1)
  35.              {
  36.                 delay(500);                  //延时500毫秒,去按键时的抖动
  37.                          if(Key1==1)
  38.                         {
  39.             temp=0x10;                   //0001 0000B 只有一盏灯不亮
  40.                     P1=temp;
  41.                         while(Key1)
  42.                         {
  43.                     delay(500);
  44.                     temp=_cror_(temp,1);        //将temp循环左移一位后再赋给temp
  45.                 P1=temp;                                     //将移位后的值赋给P1口,从低位到高位逐个点亮发光二极管
  46.                         }
  47.                         }
  48.                                         
  49.               }
  50.                    else if(Key2==1)
  51.              {
  52.                 delay(500);                  //延时500毫秒,去按键时的抖动
  53.                          if(Key2==1)
  54.                         {
  55.             temp=0xfd;                  //1111 1101B 只有一盏灯亮
  56.                     P1=temp;
  57.                         while(Key2)
  58.                         {
  59.                     delay(500);
  60.                     temp=_cror_(temp,1);         //将temp循环左移一位后再赋给temp
  61.                 P1=temp;                                     //将移位后的值赋给P1口,从低位到高位逐个点亮发光二极管
  62.                         }
  63.                         }
  64.                                         
  65.               }
  66.                
  67.                
  68. return temp;
  69. }
  70. void delay(int z)           //延时z毫秒
  71. {
  72.       unsigned int x,y;
  73.           for(x=z;x>0;x--)
  74.                   for(y=110;y>0;y--);
  75. }
  76. /*****************主函数*************/
  77. void main()
  78. {


  79.    …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

下载:
test1.zip (73.8 KB, 下载次数: 63)

作者: admin    时间: 2017-4-2 01:28
好资料,初学者有用,51黑有你更精彩
作者: kimicoo    时间: 2017-4-2 12:10
非常好,给力!
作者: kimicoo    时间: 2017-4-2 12:11
赞一个
作者: hanhongyi    时间: 2018-11-2 11:17
很好  很实用  好东西
作者: cyril2002    时间: 2018-11-2 13:44
硬件仿真是个好方向!
作者: 快乐眼泪    时间: 2018-11-2 18:57
我这菜鸟表示感谢!
作者: 931143848    时间: 2018-11-11 12:03
不错啊
作者: 956907357    时间: 2018-12-28 09:54
不错的文章
作者: 964624514    时间: 2019-4-9 12:42
不错不错不错




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1