2、编写一个数码管函数。先使数码管显示数字0,延时1s后,数码管显示数字1,依此类推,当数码管显示数字9时,数码管再次显示数字0,如此周而复始。要求:1s是准确的一秒,必须使用计时器T0,方式0来来实现。按下某个按键K4,蜂鸣器响一声,数码管开始启动,再次按下该按键,蜂鸣器响一声,数码管停止。
#include <reg51.h>
void
delay(unsigned char n);
int main(void)
{
unsigned char led[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90}; //0-9μ?×?Dí??
unsigned char i;
P2 = 0x00;
while (1)
{
for (i = 0; i < 10; i++)
{
P0 = led[i];
delay(250);
if (P0 == led[9])
{
P0 = led[0];
i++;
}
}
}
}
void delay(unsigned char n)
{
unsigned char i, j;
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
;
}
编写一个数码管函数。
先使数码管显示数字0,延时1s后,数码管显示数字1,依此类推,当数码管显示数字F时,数码管再次显示数字0,如此周而复始。
要求:1s是准确的,必须使用计时器T1,方式2来实现。按下某个按键K3,蜂鸣器响一声,数码管开始启动,再次按下该按键,蜂鸣器响一声,数码管反向启动。按键必须是用外中断0来实现。要求数码管必须使用数组来实现。