|
该程序适用于刚刚熟悉51单片机编程的初学者,对于编程思路具有一定的锻炼效果,个人建议先尝试自己编写,完成之后在查看。
该程序对于刚刚掌握51单片机编程的学者而言,难度主要在于多个功能的嵌套
能实现流水灯的同时,蜂鸣器间歇鸣叫,数码管同时流水显示
- #include <reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- #include <intrins.h>
- sbit DUAN=P2^6;
- sbit WEI=P2^7;
- sbit FM=P2^3;
- uchar code sz[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
- 0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
- void delay(uint xms) //延时函数 xms为延时的毫秒
- {
- uchar i,j;
- for(i=xms;i>0;i--)
- for(j=112;j>0;j--);
- }
- void main()
- {
- P1=0xfe; //定义led 1111 1110
- while(1)
- {
- uchar i,j;
- P3=0xfe; //1111 1110 //借用P3引脚,给P0赋值
- FM=0;
- for(i=8;i>0;i--) //八个数码管同时显示,运行八次 作用:增加延迟时间
- {
- for(j=1;j<=8;j++) //八个数码管同时显示
- {
- P0=sz[j];
- DUAN=1;
- DUAN=0;
- P0=P3; //位选
- WEI=1;
- WEI=0;
- P3=_crol_(P3,1); //P3左移一位
- delay(10);
- }
- }
- FM=1; //蜂鸣器关闭
- P1=_crol_(P1,1); //P1左移一位
- for(i=8;i>0;i--) //八个数码管同时显示,运行八次 作用:增加延迟时间
- {
- for(j=1;j<=8;j++) //八个数码管同时显示
- {
- P0=sz[j];
- DUAN=1;
- DUAN=0;
- P0=P3;
- WEI=1;
- WEI=0;
- P3=_crol_(P3,1);
- delay(10);
- }
- }
- FM=0; //蜂鸣器关闭
- }
- }
复制代码
|
评分
-
查看全部评分
|