数码管实验报告

该实验报告详细介绍了三个使用单片机实现数码管动态扫描的方法。实验一展示了在六位数码管上稳定显示654321;实验二利用定时器1实现了数码管前三位显示秒表,精确到1%秒;实验三则演示了数码管从765432递减至764987的过程,并配合流水灯效果和蜂鸣器提示。
摘要由CSDN通过智能技术生成

/*************************************************

实验名称:数码管实验一

实验目的:利用动态扫描方法在六位数码管上显示出稳定

          的654321

*************************************************/

#include<reg52.h>


#define uchar unsigned char

#define uint unsigned int


sbit DUAN = P2^6;

sbit WEI = P2^7;


uchar code duan_table[]=

{0x3f,0x06,0x5b,0x4f,

 0x66,0x6d,0x7d,0x07,

 0x7f,0x6f,0x77,0x7c,

 0x39,0x5e,0x79,0x71};


uchar code wei_table[]=

{0xfe,0xfd,0xfb,

 0xf7,0xef,0xdf};


void delay_1ms(int);


void main()

{

int i,j;

j =0;

while(1)

{

for(i = 7;i > 1; i--)

     {

/*P0 = duan_table[i-1];

DUAN = 1;

DUAN = 0;

P0 = 0xff;

P0 = wei_table[j++];

WEI = 1;

WEI = 0;

delay_1ms(1);

    以上代码将会产生余晖,改用以下代码消除余晖*/


DUAN = 1;

P0 = duan_table[i-1];

DUAN = 0;


P0 = 0xff;//消除余晖

WEI = 1;

P0 = wei_table[j++];

WEI = 0;

delay_1ms(1);

}

if(j == 6)

j = 0;

}

}


void delay_1ms(int x)

{

int i, j;

for(i = 0; i < x; i++)

for(j = 0; j < 110; j++);

}


/**************************************************

实验名称:数码管实验二

实验目的:利用动态扫描方法和定时器1在数码管的前三位

          显示出秒表,精确到1%秒,即后两位显示1%秒,

      一直循环下去。(TH/TL填装9216)

**************************************************/


#include<reg52.h>


#define uchar unsigned char

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值