版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验任务及要求在焊接的电路板中,4个LED数码管,设计带有闹铃功能的数字时钟,要求:1、在4位数码管上显示当前时间。显示格式“时时分分”:2、由LED闪动做秒显示;3、利用按键可对时间及闹玲进行设置,并可显示闹玲时间。当闹玲时间到 蜂鸣器发出声响,按停止键使可使闹玲声停止。二.方案论证与比较数字时钟方案数字时钟是本设计的最主要的部分。根据需要,可利用两种方案实现。方案一:本方案采用Dallas公司的专用时钟芯片DS12887Ao该芯片内部采用 石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能, 因此,可直接对其以用于显示或设置,使得软件编程相对简单。为保证时钟 在电网电压
2、不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电 池。当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以 备随时提供正确的时间。方案二:本方案完全用软件实现数字时钟。原理为:在单片机内部存储器设 三个字节分别存放时钟的时、分、秒信息。利用定时器与软件结合实现5毫 秒定时中断,每产生一次中断,存储器内相应的计数值加1;若计数值达到 200,则将其清零,并将方案一:静态显示。所谓静态显示,就是当显示器显示某一字符时,相应的 发光二极管恒定的导通或截止。该方式每一位都需要一个8位输出口控制。静态显示时较小的电流能获
3、得较高的亮度,且字符不闪烁。但当所显示的位 数较多时,静态显示所需的I/O口太多,造成了资源的浪费。方案二:动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显 示器的每一位来说,每隔一段时间点亮一次。利用人的视觉暂留功能可以看 到整个显示,但必须保证扫描速度合适,字符才不闪烁。显示器的亮度既与 导通电流有关,也于点亮时间与间隔时间的比例有关。调整参数可以实现较 高稳定度的显示。动态显示节省了I/O口,降低了能耗。从节省I/O口和降低能耗出发,本设计采用方案二。三、各个部分的分析1)显示电路:通过4个LED显示屏显示分钟和小时两个两联的LED显示器,通过与单片机P1接口连接实现显示功能。
4、而实现4 个LED灯动态显示,靠的是位选电路2)位选电路四位共阳LED数码管,其标号分别为HourH, HourL, MinL, MinH,低电平选 通,且任何时候仅有一位输出低电平,显示时对各显示器进行动态扫描,显 示器分时轮流工作。虽然每次只有一个显示器显示,但是由于人的视觉暂留 现象我们仍会感觉所有的显示器都在同时显示。P0 口作为输出口控制8个发 光二极管的亮灭,控制数码管的显示。因此,可以实现4个LED在我们看来 同时亮,显Z5时间。3)闹铃部分:使用蜂鸣器实现闹钟功能其中,buzzer端口接到单片机的输出。(端口连接在最后介绍)4)开关部分:使用了 5个开关控制整个电路的启动,修改
5、时间,设置闹钟,关闭电路等 功能为查询方式典型电路。其中Setbutton为复位开关,swtich为转 换模式开关,即工作模式和调时间模式,Increase为调时间模式中控制时间 变化的按钮,STRAT和STOP分别为开启和结束按钮,这5个开关分别接到端 口,以控制其输入。5)串转并电路为了进一步节省I/O 口,有添加了一个额外的串转并电路由以上电路,我们将扩展到7个I/O 口,我们采用的是74HC595芯片,管脚图如下:7)复位电路整体电路图如下:、软件设计 由于汇编语言繁琐,我们采用的是C语言编程,源程序及注释如下:#include <> #include <>/时
6、分#define TYPE unsigned char#define HOUR 0#define MIN 1/显示状态#define NORMAL0#define BELLTIME 1#define SETTING_N2#define SETTING_C3闪烁显示#define NoMask 0#define MaskHour 1 #define MaskMin 2#define MaskAll 3#define uchar unsigned char#define uint unsigned int/Bit Definition/数码管sbit HourH = P3; 低电平,数码管使能sb
7、it HourL = P4;sbit MinH = P5;sbit MinL = P6;/蜂鸣器sbit Buzzer二Pl 7; /低电平,蜂鸣器响/键盘sbit SetButton = P2S;/按键定义,设置(正常,定时显示切换)键,时位分位转换键,增加键sbit Switch 二P2“l;sbit Increase = P2“2;sbit Start = P2八3;sbit Stop = P2八4;/LEDsbit SecLed二P2“5;/秒显示,低电平点亮sbit ClockStartLED 二 P2飞; 闹钟定闹开始/74HC595输入管脚定义sbit SH_CP = PlO;s
8、bit DS = Pri;sbit ST_CP = P2;/Function Definitionvoid delay5ms(void);void Clock();void Display ();void Set ();void RingO ;void StopRingO ;void ShowANum(uchar i);void StartRingO ;void delaykey(void);void MaskShow(uchar Num, TYPE t);/Variable Definition正常时间uchar hour=8:uchar min=0;uchar sec=0;uint cou
9、nt二0;/闹钟定时uchar mp=l;uchar st二0;uchar cHour二8;uchar cMin=0;模式标示uchar di sp1ayMode=NORMAL;uchar currentSelect二HOUR;/数码管数字显示编码uchar Hl;uchar H2;uchar Ml;uchar M2;uchar temp;uchar codeDSY_CODE = OxcO, 0xf9, 0xa4, OxbO, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, Oxf f;闪烁显示uchar MaskTvpe=NoMask;uint blinkcount二
10、0;/音乐uchar p=0; uchar temp=O;uchar jiepai=O;uchar yindiao=0;uchar Pai.1 _4=20;uchar jpLength二0;音调数组unsigned char code music=OxFF, OxFF, 0xF8, 0x89, 0xf9, 0x59, Oxfa, 0x13, Oxfa, 0x68,Oxfb, 0x04, Oxfb ,0x90, Oxfc, 0x0c,Oxfc, 0x44, Oxfc, Oxad, Oxfd, 0x0a, Oxfd, 0x34, Oxfd, 0X82, Oxfd, Oxc& Oxfe,0x
11、06,Oxfe, 0x22, Oxfe, 0x56, Oxfe, 0x85, Oxfe, 0x9a, Oxfe, Oxcl, Oxfe, 0xe4, Oxff,0x03,Oxff,Oxll;音乐编码unsigned char code Mmusic 二/音阶测试/l, 4, 2, 4, 3,4, 4, 4, 5, 4, 6, 4, 7, 4, & 4,/9, 4, 10, 4, 11, 4, 12, 4, 13, 4, 14, 4, 15, 4,/16, 4, 17, 4, 1& 4, 19, 4, 20, 4, 21, 4, 22, 4,/两只老虎1, 4, 2, 4, 3,
12、 4, 1, & 1, 4, 2, 4, 3, 4, 1, & 3, 2, 4, & 5, 5, 3, 2, 4, & 5, 5,5, 5, 6, 2, 5, 5, 4, 4, 3, 4, 1, & 5, 5, 6, 2, 5, 5, 4, 4, 3, 4, 1, & 3, 4, 1, 4, 2, & 3, 4, 1,4, 2, 8,Oxff, 0x00结束标记;void main()设置TO, T1TMOD = 0x11;THO = OxOEC:TLO = 0x78;TH1 = OxOFO:TL1 = 0x60;ETO=1;ET1=1;
13、EA二 1;TRO=1;/设置定时器的优先级PTO=1; /5ms标准时钟设为高优先级,保证计时的准确性PT1=O;顺序执行(主循坏)while (1)/设置何时开启T1定时器if(displavMode!=NORMAL|mp=O)TR1=1;elseTR1=O;MaskType=NoMask;方法并行Display ();Display ();Set ();StartRingO ;RingO;StopRingO ; void Clock() interrupt 1THO 二 OxOEC;TLO 二 0x78;count+;辻(mp=0)/控制音乐节拍if(jpLength-<=0)ji
14、epai二Mmusic2*p+l;jpLength=Pai 1_4*jiepai; /控制每个音调持续多少个1/4节拍P+;if(Mmusic2*p+l=0x00)p=0; /重放/控制屏幕随乐曲闪烁辻(MaskType=NoMa s k)MaskTvpe=MaskAl1;elseMaskTvpe=NoMask;if(count%100=0)/控制秒灯闪烁,每秒闪一次SecLed二 SecLed;void MaskClock() interrupt 3if(mp=0) /生成音调频率方波yindiao=Mmusic2*p;TH1二music2*yindiao;TL1二music2*yindia
15、o+l;Buzzer二 Buzzer;else 响铃时,屏蔽闪烁显示的功能if(displayMode二二BELLTIME|displayMode=SETTING_C)TH1 = OxOFO;TL1 = 0x60;elseTH1 = 0x0F8;TL1 = 0x30;blinkcount+;if(blinkcount>=100)blinkcount二0;辻(displayMode二二BELLTIME)辻(MaskType=NoMa s k)MaskTvpe=MaskAl1;elseMaskTvpe=NoMask;else if(displayMode=SETTING_C|displavM
16、ode=SETTING_N)if(currentSelect二二HOUR)辻(MaskType=NoMa s k)MaskTvpe=IaskHour;elseMaskTvpe=NoMask;if(currentSelect二二MIN)if(MaskType二二NoMask)MaskTvpe=MaskMin;elseMaskTvpe=NoMask;void StartRingOif(Start二二0)ClockStartLED=0;st 二 1;Start二1;void RingOif(st二二1&&cHour=hour&&cMin=min)/Buzzer二0;m
17、p=0;void StopRingOif(Stop=0)Buzzer=l;mp二 1;P=0;ClockstartLED=1;st=0;Ma s kT vp e=NoMa s k;void Display()/分析 COUNT,合成 HOUR, MINif(count二200)count二count-200;sec+;if(sec=60)sec二0;min+;if(min二二60)min二0;hour+;if(hour=25)hour=0;显示时间if(displayMode=NORMAL| displayMode=SETTING_N)HourH=l;HourL=l;MinH=l;MinL=l
18、;Hl=hour/10;H2=hour%10;Ml二min/10;M2=min%10;MaskShow(Hl, HOUR);HourH=0;delay5ms ();HourH=l;MaskShow(H2, HOUR);HourL=0;delay5ms ();HourL=l;MaskShow(Ml, MIN);MinH=0;delay5ms ();MinH=l;MaskShow(M2, MIN);MinL=0;delay5ms ();MinL=l;if(displayMode二二BELLTIME|displavMode=SETTING_C)Hl=cHour/10;H2=cHour%10;Ml二c
19、Min/10;M2=cMin%10;MaskShow(Hl, HOUR);HourH=0;de lay 5ms ();HourH=l;MaskShow(H2, HOUR);HourL=0;de lay 5ms ();HourL=l;MaskShow(Ml, MIN);MinH=0;de lay 5ms ();MinH=l;MaskShow(M2, MIN);MinL二0;de lay 5ms ();MinL=l;void MaskShow(uchar Num, TYPE t)if(MaskType=MaskHour)if(t=HOUR)ShowANum(lO);elseShowANum(Num
20、);else if(MaskType=MaskMin)if(t=MIN)ShowANum(10);elseShowANum(Num);else if(MaskType=MaskAll)ShowANum(lO);elseShowANum(Num);void ShowANum(uchar Num)uchar i;temp=DSY_CODENum;串行输入74HC595for(i=0;i<8;i+)t emp«=l;DS=CY;SH_CP=1;_nop_ ();nop_();SH_CP=0;/传送至存储寄存器,出现在输出端ST_CP=O;_nop_();ST_CP二1;_nop_()
21、;ST_CP二0;void Set()响铃时,显示模式锁定在正常,停闹后解除if(mp二二0)displayMode二NORMAL;显示转换键作用(注:响铃时,屏蔽显示转换)if (mp! =0&&SetButton=0)delaykey ():if(SetButton=0)displayMode+;if(displavMode>=4)displayMode=0;设置模式下,时分转换键作用if(Switch二二0&&(displayMode=SETTING_C|displavMode=SETTING_N)delaykey ();if(Switch=O)currentSelect二!currentSelect;/设置模式下,数值增加键作用辻(Increase=0&&disp
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 车辆使用管理制度
- 《青蒿素 人类征服疾病的一小步》青蒿素研究的知识产权保护课件
- 技术实物试题及答案
- ISO 9001-2026《质量管理体系-要求》培训师、咨询师和审核员工作手册之9-1:“9绩效评价-9.1监视、测量、分析和评价-9.1.1总则”雷泽佳编制-2026A0
- 药品不良反应监测培训试题及答案
- 广东省广州市增城区2026年中考一模英语试题附答案
- 药品价格管理试题及答案
- 药品配制规范试题及答案
- 医疗废物管理三基三严考试题库及答案
- 销售内勤竞聘试题及答案
- 2025年月嫂考试题及答案
- 药品管理追溯管理制度
- 媒介融合抵抗形态-洞察及研究
- 光伏运维管理制度
- 村文书考试题及答案甘肃
- 河南省郑州市建筑职业技术学院2024年4月单招考试职测试题
- 高职应用语文教程(第二版)教案 上篇 文学鉴赏
- 征地补偿申请书范文
- 甲方业主项目管理手册
- 冶炼过程数值模拟技术-洞察分析
- 踝泵运动健康宣教课件
评论
0/150
提交评论