手机闹钟不响是怎么回事
工具/原料
手机
方法/步骤
1 首先,先设置一下闹钟响铃时间,然后查看状态栏处的闹钟图标是否显示,若显示说明则说明闹钟正在后台运行。
2 打开360手机卫士或其他优化软件,在忽略名单里查看是否忽略了闹钟程序,若没有,那么一旦执行清理内存时便结束了闹钟程序。
3 还有可能是闹钟铃声静音了。打开闹钟程序,按手机底部的menu键,打开“设置”,然后点击“闹钟音量”,加大闹钟的音量,不要静音。
4 点击“默认闹钟设置”,查看是否没有选择闹钟铃声,将其设置成“无”了,若是,则设置一个有声音的铃声。
手机怎么设置闹钟详细方法介绍:
工具/原料
手机(安卓)
方法/步骤
1 打开手机的主菜单,在窗口小工具中找到“天气时钟”的小工具添加到桌面。
2 存放到主界面的天气时钟
点击上面的时钟数字进入闹钟的设置页面。
3 在闹钟的设置页面中,默认的有几个时间点作为闹钟,点击“添加闹钟”对闹钟添加。
4 在闹钟的设置页面中点击“时间”进行闹钟时间的添加设置。
5 设置完时间点之后,返回设置闹钟的响铃方式和然后设置“启用闹钟”使闹钟发挥作用。
6 点击“确定”完成闹钟的保存。
7 如需对此闹钟进行更改,再次点击进入这个闹钟的设置就行了。
手机闹钟不响是怎么回事
工具/原料
手机
方法/步骤
1 首先,先设置一下闹钟响铃时间,然后查看状态栏处的闹钟图标是否显示,若显示说明则说明闹钟正在后台运行。
2 打开360手机卫士或其他优化软件,在忽略名单里查看是否忽略了闹钟程序,若没有,那么一旦执行清理内存时便结束了闹钟程序。
3 还有可能是闹钟铃声静音了。打开闹钟程序,按手机底部的menu键,打开“设置”,然后点击“闹钟音量”,加大闹钟的音量,不要静音。
4 点击“默认闹钟设置”,查看是否没有选择闹钟铃声,将其设置成“无”了,若是,则设置一个有声音的铃声。
手机怎么设置闹钟详细方法介绍:
工具/原料
手机(安卓)
方法/步骤
1 打开手机的主菜单,在窗口小工具中找到“天气时钟”的小工具添加到桌面。
2 存放到主界面的天气时钟
点击上面的时钟数字进入闹钟的设置页面。
3 在闹钟的设置页面中,默认的有几个时间点作为闹钟,点击“添加闹钟”对闹钟添加。
4 在闹钟的设置页面中点击“时间”进行闹钟时间的添加设置。
5 设置完时间点之后,返回设置闹钟的响铃方式和然后设置“启用闹钟”使闹钟发挥作用。
6 点击“确定”完成闹钟的保存。
7 如需对此闹钟进行更改,再次点击进入这个闹钟的设置就行了。
正好我最近一直在搞C51方面的,或许能给些补充,希望有帮助。
#include<reg52h>
sbit ksec=P3^0; //定义端口,秒的调整按键对应p30
sbit kmin=P3^1; //分的调整按键对应p31
sbit khour=P3^2; //时的调整按键对应p32
unsigned char secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0;
unsigned int num=0,sec=0,min=0,hour=0;
unsigned char code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//定义数码管显示的0-9的代码
void delay(unsigned int z)
{ //延时程序
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);//如果是12MHz晶振,就是110us对应z=1
}
void keyscan();
void display();
void main()
{TMOD=0x01;//T0定时器,模式1定时,13位定时
TH0=(65536-50000)/256; //定时1S的数据设置,定时50000个机器周期后中断一次
TL0=(65536-50000)%256;
EA=1;ET0=1;TR0=1;//开启总中断,允许T0中断,开启T0中断
while(1)
{display();//显示
keyscan();//读取按键
}
}
void time0() interrupt 1
{num++;//T0中断服务程序,定时中断一次后num加一
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//重装计数值,因为模式1是非自动重装的
}
void display()
{if(num==20)
{num=0; //定时20次后sec加一,那应该是6MHz的晶振,机器周期为2us,500002us20=1s
sec++;
if(sec==60)
{sec=0;
min++;//到60s,min加一,sec清零
if(min==60)
{min=0;
hour++;//到60分,hour加一,分清零
if(hour==24)
{hour=0;
min=0;//到24小时则所有时间清零,新的一天从零时开始计时
sec=0;
}
}
}
}
secge=sec%10;//秒的个位,秒除以10的余数
secshi=sec/10;//十位,秒整除10的商
minge=min%10;
minshi=min/10;
hourge=hour%10;
hourshi=hour/10;
P2=0xfe;//1111 1110,0选通一位数码管,
P0=table[secge];//送秒的各位显示
delay(5);//延时一会儿
P2=0xfd;//选通下一位数码管,1111 1101
P0=table[secshi];//送秒的十位显示
delay(5);
P2=0xfb;//1111 1011,选通再下一位
P0=0x40;//显示分与秒之间的那个点
delay(5);
P2=0xf7;//1111 0111,再下一位
P0=table[minge];//分的个位
delay(5);
P2=0xef;//1110 1111
P0=table[minshi];//分的十位
delay(5);
P2=0xdf;//1101 1111
P0=0x40;//分与时间的点
delay(5);
P2=0xbf;//1011 1111
P0=table[hourge];//小时的个位
delay(5);
P2=0x7f;//0111 1111
P0=table[hourshi];//小时的十位
delay(5);
}
void keyscan()
{if(ksec==0)
{delay(10);//延时防抖动
if(ksec==0)//这里应该按键上接地的,有按键按下就是0
{sec++;//有秒对应的按键按下,则秒加一
if(sec>=60)//秒数到60则清零
sec=0;
}
while(ksec==0)//等待按键释放,
display();}//不做别的 *** 作,就一直显示,等待按键释放,防止一次按键多次 *** 作
if(kmin==0)
{delay(10);//分对应的按键
if(kmin==0)
{min++;
if(min>=60)
min=0;
}
while(kmin==0)
display();
}
if(khour==0)
{delay(10);//小时对应的按键
if(khour==0)
{hour++;
if(hour>=60)
hour=0;
}
while(khour==0)
display();
}
}
这是你们毕业设计的课题吗?我现在大三了,也快面临毕业设计了,比较担心的,不知道怎么做,你们具体怎么 *** 作?就是自己做也该设计吗?
#include<reg52h>
sbit ksec=P3^0;
sbit kmin=P3^1;
sbit khour=P3^2;
unsigned char secshi=0,secge=0,minshi=0,minge=0,hourshi=0,hourge=0;
unsigned int num=0,sec=0,min=0,hour=0;
unsigned char code table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(unsigned int z)
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void keyscan();
void display();
void main()
{TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;ET0=1;TR0=1;
while(1)
{display();
keyscan();
}
}
void time0() interrupt 1
{num++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
void display()
{if(num==20)
{num=0;
sec++;
if(sec==60)
{sec=0;
min++;
if(min==60)
{min=0;
hour++;
if(hour==24)
{hour=0;
min=0;
sec=0;
}
}
}
}
secge=sec%10;
secshi=sec/10;
minge=min%10;
minshi=min/10;
hourge=hour%10;
hourshi=hour/10;
P2=0xfe;
P0=table[secge];
delay(5);
P2=0xfd;
P0=table[secshi];
delay(5);
P2=0xfb;
P0=0x40;
delay(5);
P2=0xf7;
P0=table[minge];
delay(5);
P2=0xef;
P0=table[minshi];
delay(5);
P2=0xdf;
P0=0x40;
delay(5);
P2=0xbf;
P0=table[hourge];
delay(5);
P2=0x7f;
P0=table[hourshi];
delay(5);
}
void keyscan()
{if(ksec==0)
{delay(10);
if(ksec==0)
{sec++;
if(sec>=60)
sec=0;
}
while(ksec==0)
display();}
if(kmin==0)
{delay(10);
if(kmin==0)
{min++;
if(min>=60)
min=0;
}
while(kmin==0)
display();
}
if(khour==0)
{delay(10);
if(khour==0)
{hour++;
if(hour>=60)
hour=0;
}
while(khour==0)
display();
}
}
已经编译通过了:发现的错误很多! 你自己比对一下吧!
QQ:361179146
目录
摘 要 I
Abstract II
目录 III
第一章 绪 论 - 1 -
11课题的背景 - 1 -
12课题意义 - 2 -
13本章小结 - 3 -
第二章 总体设计方案与论证 - 4 -
21 电源模块方案的选择与论证 - 4 -
22 时钟电路方案的选择与论证 - 4 -
23 显示电路方案的选择与论证 - 5 -
24 闹钟电路方案的选择与论证 - 5 -
25 键扫描电路方案的选择与论证 - 6 -
26 本章小结 - 6 -
第三章 系统硬件设计 - 7 -
31 主控芯片STC89C52的介绍 - 7 -
311 STC89C52的主要性能参数 - 7 -
312 STC89C52单片机的功能特性概述: - 8 -
32时钟部分功能介绍及电路设计 - 11 -
33显示模块功能介绍及电路设计 - 14 -
34闹钟电路模块介绍及电路设计 - 16 -
35功能按键模块介绍及电路设计 - 17 -
36电源模块介绍及电路设计 - 17 -
37 本章小结 - 18 -
第四章 系统软件设计 - 19 -
41日历程序设计 - 19 -
42 时间调整程序设计 - 20 -
43 闹钟设置程序设计 - 22 -
44 闹钟蜂鸣程序设计 - 23 -
45本章小结 - 23 -
第五章 系统调试 - 24 -
51系统的调试 - 24 -
52系统的调试出现的问题及解决 - 24 -
53本章小结 - 24 -
第六章 结 论 - 25 -
参考文献 - 26 -
致 谢 - 27 -
附录 - 28 -
附录一 :本设计电路原理图 - 28 -
附录二:数字日历钟电路设计的C程序 - 29 -
1、闹钟设置界面。
2、存储响闹时间。
3、时间中断,设置读取时间的flag
4、主程序中判断flag设置,读取时钟。
5、比较当前时钟在响闹时间范围内,输出闹铃(如果是蜂鸣器,给他一个输出频率的信号)。
;
; 带有时间设置和秒显示的数字闹钟
; Date : 20071026 12MHZ晶振
; Create by :星星 缘木求鱼
; P32设置键 P33小时调整键 P35分钟调整键 P37定时输出指示
;
;
; 变量地址分配
;
SwDelay equ 2; 设置按键时去抖动时间
DisplayBuffer equ 30h; 设置显示缓冲区的地址为30h-35h共6个字节
BeepVal equ 38h; 蜂鸣时间长短存储器地址
OneSecondCounter equ 39h; 设置1秒计数器的地址,1秒计数器是用来计数1秒内计时器的中断次数
Hour equ 3ah; 设置小时计数器的地址
Minute equ 3bh; 设置分钟计数器的地址
Second equ 3ch; 设置秒计数器的地址
Year equ 3dh; 设置月日年计数器的地址
Month equ 3eh;
Day equ 3fh;
P1Val equ 40h; 设置数码管位驱动值的地址
ClockMode equ 20h0; 模式(正常走时/闹时)设置寄存器地址,值为0时正常走时,为1时闹时设定
AlarmOnOff equ 20h1; 闹钟开启/关闭标志,为0关闭,为1开启
AlarmTimeOn equ 20h2; 此位为1时表示闹时时间到
DataMode equ 20h3
DispHour equ 21h; 设置小时显示寄存器的地址
DispMinute equ 22h; 设置分钟显示寄存器的地址
DispSecond equ 23h; 设置秒显示寄存器的地址
Dnum equ 24h
AlarmHour equ 2eh; 设置闹时小时计数器的地址
AlarmMinute equ 2fh; 设置闹时分钟计数器的地址
AlarmSetKey bit P32; 闹钟设置键
MinuteKey bit P33; 定义分设置键
HourKey bit P34; 定义小时设置键
DataSetKey bit p35;
RelayOut equ P37; 定义输出引脚
;
; 程序开始
;
org 00h
ajmp Reset ;程序开始
org 0bh ;Timer0中断向量地址
ajmp TimeInt ;跳到中断处理程序
org 0020h
Reset: ;以下为初始化程序,为各个变量赋初值
mov sp,#70h;
setb RelayOut
mov OneSecondCounter,#125
;
mov Hour,#23
mov Minute,#59
mov Second,#30 ;设置上电时时钟显示的初值
;
mov Year,#07
mov Month,#12
mov Day,#27
;
mov AlarmHour,#00
mov AlarmMinute,#00 ;设置上电时闹时时间的初值
;
clr AlarmOnOff ;上点复位后闹时功能处于关闭状态
clr ClockMode ;正常走时模式
clr AlarmTimeOn
setb RelayOut ;清闹时输出
clr DataMode
;
mov 36h,#10
mov 37h,#11
;
;
; Use Timer 0 Mode 1
; 400us interrupt
;
mov tmod,#00000001b
mov th0,#0E3h
mov tl0,#5Dh
mov ie, #82h ;开全局中断
SETB EA
SETB ET0
setb tr0 ;开定时中断
;
; 以下为主程序
;
MainLoop:
jb AlarmSetKey,CheckMinuteKey ;闹时设置键按下了吗?没有则转去检测秒设置键
call Delay
jb AlarmSetKey,CheckMinuteKey ;按下的时间超过500ms吗?
setb ClockMode ;置为闹时设置模式
call AlarmSet
CheckMinuteKey:
jb MinuteKey,CheckHourKey ;分设置键按下了吗?没有则转去检测小时设置键
;如按下调用蜂鸣器发音程序
mov a,Minute
add a,#1; 如果按下则将分钟加一 十进制调整
mov Minute,a;
cjne a,#3ch,NotOver1; 到60分钟了吗?
mov Minute,#0; 到60分钟则将分钟清0
NotOver1: ;以下等待按键释放及防抖动
jnb MinuteKey,$
CheckHourKey:
jb HourKey,CheckDataKey;
; 如按下调用蜂鸣器发音程序
mov a,Hour
add a,#1; 如果按下则将小时加1
mov Hour,a
cjne a,#18h,NotOver2
mov Hour,#0; 到24小时则将小时清0
NotOver2: ;以下等待按键释放及防抖动
jnb HourKey,$
CheckDataKey:
jb DataSetKey,CheckAlarm
call Delay
jb DataSetKey,CheckAlarm
setb DataMode
call Dataset
CheckAlarm:
jnb AlarmTimeOn,ToReturn
call AlarmProcess
ToReturn:
ajmp MainLoop
;
; 定时器Timer0中断服务程序(此程序每8ms执行一次)
;
TimeInt:
mov th0,#0E3h; 重新加载定时参数
mov tl0,#5Dh;
push acc
push psw; 保护累加器及程序状态字的内容
setb rs0; 选择工作寄存器组1,
clr rs1; 这样可保护原工作寄存器组(0组)的内容
djnz OneSecondCounter,NotoneSecond; 中断了125次了吗?即够1秒了吗?
mov OneSecondCounter,#125; 如够1秒则重新设置"OneSecondCounter"计数器
call Clock ; 调用将时钟内容加1秒的子程序
call Daynum
call ConvertoBuffer ; 调用将时钟内容转换到显示缓冲区子程序
NotoneSecond:
call ScanDisplay ; 调用扫描显示子程序
pop psw
pop acc ; 恢复累加器及程序状态字的内容
reti ; 中断返回
;
; 扫描显示子程序
;
ScanDisplay:
MOV R1,#DisplayBuffer ;指向显示数据首址
MOV R5,#0FEH ;扫描控制字初值
PLAY:
MOV A,R5 ;扫描字放入A
MOV P2,A ;从P2口输出
MOV A,@R1 ;取显示数据到A
MOV DPTR,#TAB ;取段码表地址
MOVC A,@A+DPTR ;查显示数据对应段码
MOV P1,A ;段码放入P1口
LCALL Delay
INC R1 ;指向下一地址
MOV A,R5 ;扫描控制字放入A
JNB ACC7,ENDOUT ;扫到第六位时结束
RL A ;A中数据循环左移
MOV R5,A ;放回R5内
AJMP PLAY ;跳回PLAY循环
ENDOUT: MOV P2,#0FFH ;一次显示结束,P2口复位
MOV P1,#00H ;P1口复位
RET ;子程序返回
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H,39h
;共阴段码表 "0""1""2" "3""4""5""6""7" "8""9""-""c"
;
; 时钟内容加1秒的子程序
;
Clock:
mov a,Second; 将原秒值送入a
add a,#1; 加1秒
mov Second,a
cjne a,#3cH,NotOverFlow; 够60秒了吗?
mov Second,#0; 够了则将秒值清0
;
mov a,Minute
add a,#1
mov Minute,a; 分钟加1
cjne a,#3cH,NotOverFlow; 够60分了吗?
mov Minute,#0; 够了则将分值清0
;
mov a,Hour
add a,#1
mov Hour,a; 小时加1
cjne a,#18H,NotOverFlow; 够24小时吗?
mov Hour,#0; 够了则将小时值清0
;
mov a,Day
add a,#1
mov Day,a
cjne a,Dnum,NotAlarm
mov Day,#1
;
mov a,Month
add a,#1
mov Month,a
cjne a,#13,NotAlarm
mov Month,#1
;
mov a,Year
add a,#1
mov Year,a
cjne a,#11,NotAlarm
mov Year,#0
NotOverFlow:
jnb AlarmOnOff,NotAlarm; 闹钟开启了吗?如没有开启则无需理会是否到闹时时间
mov a,Second
jnz NotAlarm; 秒为零吗?
mov a,Minute
cjne a,AlarmMinute,NotAlarm; 时间分钟值和闹时设置分钟值相等吗?
mov a,Hour
cjne a,AlarmHour,NotAlarm; 时间小时值和闹时设置小时值相等吗?
setb AlarmTimeOn; 到了闹时时间则将“闹时时间到”标志设为1
NotAlarm:
ret
;
; 将时钟内容或闹时设置值转换到显示缓冲区子程序
;
ConvertoBuffer:
mov r1,#DisplayBuffer
jnb dataMode,TimeDisp
mov a,Day
mov DispSecond,a
mov a,Month
mov DispMinute,a
mov a,Year
mov DispHour,a
ajmp Convert
TimeDisp: jb ClockMode,DispAlarmSet; 判断时钟模式,以决定是显示实时时间还是闹时时间
mov a,Second;
mov DispSecond,a;
mov a,Minute;
mov Dispminute,a;
mov a,Hour;
mov DispHour,a; 显示实时时间
;
ajmp Convert
DispAlarmSet:
jb AlarmOnOff,AlarmOn
mov DispSecond,#00h
ajmp Next
AlarmOn:
mov DispSecond,#11; 显示闹时时间及显示闹钟状态:显示“00”表示关闭闹钟,
Next: ;“11”表示开启闹钟
mov a,AlarmMinute;
mov Dispminute,a;
mov a,AlarmHour;
mov DispHour,a;
;
Convert:
mov a,DispSecond; 取秒值
mov b,#10
div ab
mov @r1,b;
inc r1; 缓冲寄存器的地址加1
mov @r1,a; 将秒值的十位值存入缓冲区
;
inc r1
mov a,DispMinute
mov b,#10
div ab
mov @r1,b;
inc r1; 缓冲寄存器的地址加1
mov @r1,a; 将秒值的十位值存入缓冲区
;
inc r1
mov a,DispHour
mov b,#10
div ab
mov @r1,b;
inc r1; 缓冲寄存器的地址加1
mov @r1,a; 将秒值的十位值存入缓冲区
ret;
;
;天数判断,平年,闰年
;
Daynum: mov a,Month
mov dptr,#TABL
movc a,@a+dptr
mov Dnum,a
mov a,Year
mov b,#4
div ab
mov a,b
cjne a,#0,BB
mov a,Month
cjne a,#2,BB
inc Dnum
BB: RET
TABL: DB 31,32,29,32,31,32,31,32,32,31,32,31,32
;
; 闹时设置子程序
;
AlarmSet:
jnb AlarmSetKey,$
call Delay; 等待“AlarmSetKey”键释放
CheckArmMinuteKey: ;
jb MinuteKey,CheckArmHourKey; 分设置键按下了吗?没有则转去检测小时设置键
setb AlarmOnOff
mov 37h,#0
mov a,AlarmMinute
add a,#1; 如果按下则将分钟加1 十进制调整
mov AlarmMinute,a;
cjne a,#3ch,ArmNotOver1; 到60分钟了吗?
mov AlarmMinute,#0; 到60分钟则将分钟清0
ArmNotOver1: ;以下等待按键释放及防抖动
jnb MinuteKey,$
CheckArmHourKey:
jb HourKey,AlarmSetEnd; 小时设置键按下了吗?没有则返回反复检测
setb AlarmOnOff
mov a,AlarmHour
add a,#1; 如果按下则将小时加1
mov AlarmHour,a
cjne a,#18h,ArmNotOver2
mov AlarmHour,#0; 到24小时则将小时清0
ArmNotOver2: ;以下等待按键释放及防抖动
jnb HourKey,$
AlarmSetEnd:
jb AlarmSetKey,AlarmSet; 设置完毕了吗?
jnb AlarmSetKey,$;
clr ClockMode; 从设置模式转为走时模式
ret
;
; 日期调整
;
DataSet:
jnb DataSetKey,$
call Delay
CheckDataYearKey:
jb HourKey,CheckDataMonthKey
mov a,Year
add a,#1
mov Year,a
cjne a,#11,DataNotOver1
mov Year,#0
DataNotOver1:
jnb HourKey,$
CheckDataMonthKey:
jb MinuteKey,CheckDataDayKey
mov a,Month
add a,#1
mov Month,a
cjne a,#13,DataNotOver2
mov Month,#1
DataNotOver2:
jnb MinuteKey,$
CheckDataDayKey:
jb AlarmSetKey,DataSetEnd
mov a,day
add a,#1
mov Day ,a
cjne a,Dnum,DataNotOver3
mov Day,#1
DataNotOver3:
jnb AlarmSetKey,$
DataSetEnd:
jb DataSetKey,DataSet
jnb DataSetKey,$
clr DataMode
ret
;
; 闹时服务子程序
;
AlarmProcess:
clr RelayOut;
jb AlarmSetKey,AlarmReturn; 停止闹时键(即闹时设置键)按下了吗?
clr AlarmOnOff
jnb AlarmSetKey,$;
setb RelayOut; 如停止闹时键按下则停止闹时
clr AlarmTimeOn;
mov 37h,#11
mov AlarmMinute,#00
mov AlarmHour,#00
AlarmReturn:
ret
;
; 延时子程序
;
Delay:
mov r6,#2
Del:
mov r7,#124
djnz r7,$
djnz r6,Del
ret
DL1s: mov r3,#4
dd: call Delay
djnz r3,dd
ret
end
以上就是关于闹钟怎么弄声音全部的内容,包括:闹钟怎么弄声音、时钟怎么设置闹钟、C语言 AT89C52数字钟的程序问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)