网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
11月03日漏签0天
c语言吧 关注:800,837贴子:4,369,894
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 10回复贴,共1页
<<返回c语言吧
>0< 加载中...

C语言51单片机时钟程序(1) 请求高手们帮忙修改程序

  • 只看楼主
  • 收藏

  • 回复
  • hhj223223hhj
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
按键K1:返回时间显示
按键K2:每按一次,分加1,当分增加到60时,分归零
按键K3:每按一次,时加1,当时增加到24时,时归零
按键K4:进入时间校对设置
按键K5:进入闹铃设置
按键K6:进入秒表功能及确定设置
按键K7:启动、暂停秒表
按键K8:秒表清零
#include<reg51.h>
#include<intrins.h>
unsigned char code
table[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98,0xbf,0xff}; //
定义数字0~9及横杆、管灭 共阳极 低电平有效
unsigned char code bitcode[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0x7f}; //位选信号
unsigned int IntCount=0; //计算T0中断次数 计时次数为20次,为1秒 0.5s*20=1s 显示



  • hhj223223hhj
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
unsigned int IntCount1=0; //计算T1中断次数 计时次数为20次为10ms 5ms*10=0.1s 秒表
unsigned char disp[8]={0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0,0xc0}; //声明显示区数组初始为8个0
unsigned char scan=0;
unsigned int N; //声明标志位N=0时,返回时间显示,N=1闹钟时间显示,N=2秒表时间显示
unsigned int miao=0; //声明秒 数码管显示的数
unsigned int fen=0; //声明分 数码管显示的数
unsigned int shi=0; //声明时 数码管显示的数
unsigned int tfen=0; //闹铃 设置分
unsigned int tshi=0; //闹铃 设置时
unsigned int mm=0; //声明秒表毫秒 数码管显示的数



2025-11-03 09:02:47
广告
不感兴趣
开通SVIP免广告
  • hhj223223hhj
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
unsigned int mmiao=0; //声明秒表秒 数码管显示的数
unsigned int mfen=0; //声明秒表分 数码管显示的数
sbit k1 = P1^4; //定义按键k1 返回时间显示
sbit k2 = P1^5; //定义按键K2 调分
sbit k3 = P1^6; //定义按键K3 调时
sbit k4 = P1^7; //定义按键k4 时间校对设置 可以校对时间
sbit k5 = P3^2; //定义按键k5 进入闹钟设置 可以设置闹铃
sbit k6 = P3^3; //定义按键k6 确定设置和进入秒表功能
sbit k7 = P3^4; //启动\暂停秒表计时



  • hhj223223hhj
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
sbit k8 = P3^5; //秒表清零按键
sbit beep=P3^7; //蜂鸣器
unsigned int i;
unsigned char wei=0x7f;
void delay1ms(int x) //延时子程序
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void beeper(unsigned char tt) //蜂鸣器响子序
{ unsigned char t=tt;
beep=~beep;
delay1ms(t);
}
void alarm() //闹钟响子程序
{if((shi==tshi)&&(fen==tfen)) // 当时钟与设定值相同时 发出声音
beeper(500);
}
void zdbs() //整点报时
{if(shi==0&&fen==0&&miao==0)
beeper(50);
}
void keyscan() //设置时分秒子程序
{if(k2==0)
{
delay1ms(10);
while(k2==0);
fen++;



  • hhj223223hhj
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
if(fen==60)
{
fen=0;
}
}
if(k3==0)
{
delay1ms(10);
while(k3==0);
shi++;
if(shi==24)
{
shi=0;
}
}
}
void display() //显示子程序
{
disp[0]=table[miao%10];//秒的个位
disp[1]=table[miao/10];//秒的十位
disp[2]=table[10]; //显示横杠
disp[3]=table[fen%10]; //分的个位
disp[4]=table[fen/10]; //分的十位



  • hhj223223hhj
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
disp[5]=table[10]; //显示横杆
disp[6]=table[shi%10]; //时的个位
disp[7]=table[shi/10]; //时的十位
}
void init () //
中断设置子函数
{
P0=0xff;
P2=0xff;
IE=0x8f; //开启总中断,定时器0、1及外部中断0、1
TMOD=0x12; //0001 0010,T1采用mode1 T0采用mode2 以内部中断来启动定时器
TH0=(256-250); //设置定时器0为2mA中断一次
TL0=(256-250);
TR0=1; //启动计数
TH1=(65536-50000)/256; //设置定时器1为50mA中断一次



  • hhj223223hhj
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
TL1=(65536-50000)%256;
TR1=1;
}
void mb() //秒表计时功能
{
if(k6==0)
{
delay1ms(10);
while(!k6)
{
N=2;
for(i=0;i<8;i++) //扫描位
{
P0=0xff;
wei = _crol_(wei,1); // 位选通值左移, 下次中断时选通下一位数码
P2 = wei;
P0= disp[i]; // 显示代码传送到P0口
delay1ms(2);



  • hhj223223hhj
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
}
delay1ms(2000);
k7=~k7;
delay1ms(10);
mm++;
if(mm==100)
{
mm=0;
mmiao+=1;
if(mmiao==60)
{
mmiao=0;
mfen+=1;
if(mfen==60)
{
mfen=0;
}
}
}
if(k8==0)
{
delay1ms(10);
while(k8==0)
{
mm=0;
mmiao=0;



2025-11-03 08:56:48
广告
不感兴趣
开通SVIP免广告
  • hhj223223hhj
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
mfen=0;
}
}
}
}
if(k1==0)

{
delay1ms(10);
while(k1==0)
{
N=0;
}
}
}
void main()
{
init(); //调用中断设置子函数
alarm(); //闹钟响子程序
zdbs(); //整点报时
k1=k2=k3=k4=k5=k6=1;
k7=1;k8=1;
beep=1;//蜂鸣器初始为关
while(1)

{
mb();



  • hhj223223hhj
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
display();//调用显示子程序
switch(N); //N=1时,返回时间显示,N=2闹钟时间显示,N=3秒表时间显示
{
case 1: disp[0]=table[miao%10];//秒的个位
disp[1]=table[miao/10]; //秒的十位
disp[2]=table[10]; //显示横杆
disp[3]=table[fen%10]; //分的个位
disp[4]=table[fen/10]; //分的十位
disp[5]=table[11]; //显示横杆
disp[6]=table[shi%10]; //时的个位
disp[7]=table[shi/10]; //时的十位
case 2: disp[0]=table[0];//秒的个位显示0
disp[1]=table[0]; //秒的十位显示0



  • hhj223223hhj
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
disp[2]=table[10]; //显示横杆
disp[3]=table[tfen%10]; //分的个位
disp[4]=table[tfen/10]; //分的十位
disp[5]=table[11]; //显示横杆
disp[6]=table[tshi%10]; //时的个位
disp[7]=table[tshi/10]; //时的十位
case3: disp[0]=table[mm%10]; //毫秒的个位
disp[1]=table[mm/10]; //毫秒的十位
disp[2]=table[11]; //显示横杆
disp[3]=table[mmiao%10]; //秒的个位
disp[4]=table[mmiao/10]; //秒的十位
disp[5]=table[11]; //显示横杆
disp[6]=table[mfen%10]; //分的个位
disp[7]=table[mfen/10]; //分的十位
}
}
}


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 10回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示