需要两个按键、四位七段数码管和一个蜂鸣器,实现功能如下:
1、按键一模拟传感器功能,每按下一次按键,数码管计数加一,最大计数9999;
2、按键二实现计数清零功能,按下后将数码管中的计数恢复为0;
3、每计数到一百,蜂鸣器鸣叫一次;
4、具有初始化功能,四位数码管同时显示8然后熄灭。
/*
按钮与单片机P3.4引脚相连,
P0口通过限流电阻接共阳极数码管(十位),
P2口通过限流电阻接共阳极数码管(个位)。
开始显示2位数00,
每按一次按钮,计数值加1,数码管显示计数值。
文件名还得用英文,汉字文件名总是出错。
*/
//==声明区================================================
#include <reg51.h> // 定义8051暂存器之标头档
unsigned char code TAB[17]= // 共阳7节显示器(g~a)编码
{ 0xc0, 0xf9, 0xa4, 0xb0, 0x99, // 数字0-4
0x92, 0x82, 0xf8, 0x80, 0x98, // 数字5-9
0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E}; //;A~F的共阳极显示码
unsigned int coun=0;
sbit key=P3^4;
void delay1ms(int); // 声明延迟函数
void display();
//==主程序================================================
main() // 主程序开始
{
while(1)
{ // 无穷回圈,程序一直跑
if(key==0) //检查按键
{
delay1ms(10); //延时去抖动
if(key==0) //再检查
{
while(key==0){}; //等待按键释放
coun++; //计数值加1
if(coun==10000) coun=0;
display();
};
};
}
} // 主程序结束
//====显示函数==============================================
void display()
{
unsigned int m;
unsigned char ge;
unsigned char shi;
unsigned char bai;
unsigned char qian;
ge=coun%10;
m=coun/10;
shi=m%10;
m=m/10;
bai=m%10;
m=m/10;
qian=m%10;
P0=shi<<4|ge;
P2=qian<<4|bai;
}
// === 延迟函数,延迟约x*1ms ================================
void delay1ms(int x)
{ int i,j; // 声明整数变数i
for(i=0;i<x;i++) // 计数x次,延迟约*1ms
for(j=0;j<120;j++); // 计数120次,延迟约1ms
}
现在加了一个按钮 不知道怎么修改程序,蜂鸣器也不知道从哪加和怎么写程序
试了网上很多,加上之后不管用,实现不了功能,望指点
主要是能实现要求里的功能即可
你这个问题挺多的,主函数main的类型没有声明,然后display函数只有在key按下时才会执行,若是key不按下是不是就不显示了