电子之都

电脑版
提示:原网页已由神马搜索转码, 内容由www.dzdu.com提供.
查看:4058|回复:6

各位帮忙看一下这数码管程序怎样写?

[复制链接]
发表于 2016-6-10 15:45:00来自手机|显示全部楼层|阅读模式

注册家电维修技术论坛,与同行畅聊维修技术,享更多技术论坛功能。

您需要 登录才可以下载或查看,没有帐号?快速注册

x
要求用三个独立按键控制一个数码管,按 s1键时,数码管显示1,控 s2键时数码管显示2, 控 s3键时,数码管显示3。数码管是共阳极数码管,接到51单片机的 P0口,按键接在单片机的 P1口的0,1,2端口,请大俠们帮忙写一下,谢谢
发表于 2016-6-10 15:52:17|显示全部楼层
这是最简单的了吧,找个汇编的书看一下,写不了几行就可以了
发表于 2016-6-10 17:14:32|显示全部楼层
#include<reg52.h>
sbit S1=P1^0;
sbit S2=P1^1;
sbit S3=P1^2;
/**************************************/
void delay30ms(void)   //误差 0us
{
   unsigned char a,b;
   for(b=101;b>0;b--)
       for(a=147;a>0;a--);
}
/*------------------------------------------------
               主函数
------------------------------------------------*/
void main (void)
{
  
   while (1)       //主循环
   {

       if(S1==0)                
     {
         delay30ms();              
         if(S1==0)
         {
           while(!S1);
           P0=0XF9;     //数码管显示1
         }          
     }
       if(S2==0)                
     {
         delay30ms();              
         if(S2==0)
         {
           while(!S2);
           P0=0XA4;     //数码管显示2
         }          
     }
       if(S3==0)                
     {
         delay30ms();              
         if(S3==0)
         {
           while(!S3);
           P0=0XB0; //数码管显示3
         }          
     }
  
  
  
   }
}
LED.jpg
  楼主|发表于 2016-6-10 17:56:20来自手机|显示全部楼层
谢谢!研究一下
  楼主|发表于 2016-6-10 19:54:51来自手机|显示全部楼层
请问 while(!s1)这句是什么意思?
发表于 2016-6-10 21:40:58|显示全部楼层
本帖最后由 446823943 于 2016-6-10 21:44 编辑

检测松开按键后,执行下面的指令。在你这个场合加上这句没起到什么用。
如果是只要一个按键来完成1.2.3的选择,就要加上这句了。
另外本人没上过什么专业课,都是有空时候看看人家写的程序学来的。可能会解释错。请专业大师来分析吧。
  楼主|发表于 2016-6-11 07:07:30来自手机|显示全部楼层
我也是自学,你强多了,共同学习

手机版|家电维修技术论坛( 鄂ICP备09003585号-2)

GMT+8, 2024-6-25 03:03, Processed in 0.066720 second(s), 7 queries , Gzip On, MemCache On.

Qiji. All Rights Reserved


服务条款| 站长声明