单片机之数码管2011.1.17

这篇博客记录了作者按照郭天祥老师的作业,使用位操作和总线操作完成单片机数码管控制的任务。内容包括:建立KEIL工程,点亮数码管的各个位,实现特定组合的显示,以及设计出简单的流水灯程序。通过延时循环实现数码管闪烁和流水灯效果。
摘要由CSDN通过智能技术生成

第一天,根据郭天祥老师留下的作业,分别用位操作和总线操作两种方法完成以下题目:

1.熟练建立KEIL工程;

2点亮第一个发光管

3.点亮最后一个发光管

4.点亮1,3,5,7

5.点2,4,5,6

6.尝试让第一个发光管闪烁

7.尝试设计出流水灯的程序

对于6,7我采用延时灯灭亮,不然看不到灯闪烁,因为太快了

位操作程序如下:

//the bit operation
#include<reg52.h>

 sbit D0=P1^0;
 sbit D1=P1^1;
 sbit D2=P1^2;
 sbit D3=P1^3;
 sbit D4=P1^4;
 sbit D5=P1^5;
 sbit D6=P1^6;
 sbit D7=P1^7;

void main()
{
 /*
   D0=0;   //bright the first light;
 */
/*
   D7=0;   //bright the last light
*/
/*
  D0=0;D2=0;D4=0;D6=0;
*/
/*
 D1=0;D3=0;D4=0;D5=0;  
*/
//the D0 could light every 500ms
/*
  unsigned int i,j,k;
while(1)

{

D0=0;

  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
  D0=1;
}

*/
//turnover the light
  unsigned char i,j,k;
while(1)
{
D0=0;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
D0=1;

D1=0;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)

D1=1;

D2=0;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
D2=1;

D3=0;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
D3=1;

D4=0;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
D4=1;

D5=0;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
D5=1;

D6=0;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
D6=1;

D7=0;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
D7=1;
      
}
}
//还不会调函数

总线操作:

#include<reg52.h>

void main()
{
/*
  P1=0XFE;//bright the first light;
*/
/*
  P1=0X7F;//brignt the last light;
*/
/*
 P1=0XAA;//bright the 1,3,5,7
*/
/*
 P1=0XC5;//bright the 2,4,5,6
*/
 unsigned char i,j,k;

/*while(1){
 P1=0XFE;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
 P1=0XFF;

*/
while(1)
{
 P1=0XFE;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
 P1=0XFF;

 P1=0XFD;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)

 P1=0XFF;

 P1=0XFB;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
 P1=0XFF;

 P1=0XF7;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
 P1=0XFF;

 P1=0XEF;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
 P1=0XFF;

P1=0XDF;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
P1=0XFF;

P1=0XBF;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
P1=0XFF;


P1=0X7F;
  for(i=15;i>0;i--)
  for(j=202;j>0;j--)
  for(k=81;k>0;k--)
P1=0XFF;

      
}

}

花了一点时间,加!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值