现金日记账电子表格Alm一闪一闪的。还有一个小时的倒计时

是中国的电视剧。是和警察有关的 应该是破案的。 只记得有一个倒计时(那个倒计时是数字的和电子表的那个数_百度知道
是中国的电视剧。是和警察有关的 应该是破案的。 只记得有一个倒计时(那个倒计时是数字的和电子表的那个数
是一个什么地下的
我有更好的答案
其他类似问题
为您推荐:
破案的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁控制在 LED 上从右向左滚动显示年_月_日 3 次,如:
3.实现每日闹铃提醒功能,闹铃时间可用按键设置。闹铃采用提示音表示。 4.实现秒表功能。 5.实现定时器功能(预置定时时间,按键启动,倒计时,计到 0 响提示音。 6.设计实现音乐提示音。 7.设计串行通信程序,使两台实验系统同步显示。二、硬件环境与软件控制原理1、硬件环境 本次实验使用的单片机型号为 51-MCU,它采用 SST89E564RD 作为仿真的核心芯片,通 2 过串口与 PC 机连接。外设包括使用 SPI 总线驱动的 10 位 ADC、10 位 DAC,I C 总线驱动的 2 E PROM、日历时钟芯片,并行总线驱动的 8 位 8 段数码管、4*4 键盘、外扩 32KRAM(62256) 、 字符型 LCD,单总线驱动的数字式温度传感器,基于 TDA2822M 放大 MIC 的音频功率放大器, 555 信号发生和整形电路,蜂鸣器,红外线发射和接收装置等模块。 SST89E564RD 芯片的主要指标如下: (1)支持 KEIL C51 的开发仿真环境,64K 用户可使用仿真程序空间 0000H~FFFFH。 (2)可仿真 89C51、89C52 等 51 内核单片机。 (3)仿真频率为 0~40MHz 晶振可选,系统配置 11.0592MHz。 (4)程序代码可以重复装载,无需预先擦除用户程序空间。 (5)片内 64K 程序空间可以随时进行在线程序更新。 (6)支持汇编语言、C 语言以及二者混合调试。 (7)支持同时最多 10 个断点。 (8)可单步、断点、全速、可参考变量、RAM 变量。 并行总线器件: (1)8位8段数码管都挂在总线上,数码管的位选地址为8FFFH,段选地址为9FFFH,段选和 位选驱动均为高电平有效。 (2)4×4键盘复用了数码管的位选地址(8FFFH) ,写信号(/WR)控制行,读信号(/RD) 控制列。 (3)62256是32K的数据存储器,有8条数据线(D0~D7) ,15条地址线(A0~A14) 。通过读、 写线(/RD,/WR)及74HC00的组合控制单片机和62256之间的数据传送方向。A15是62256的 片选信号,A15为低电平的时候选择6的地址空间范围是0000H~7FFFH。 2 I C总线器件: 2 2 (1)AT24C02是带I C总线接口的E PROM存储器,具有掉电记忆功能,并能像普通RAM一样用 程序改写,其容量是256B。 (2)PCF8563是一款低功耗的CMOS实时时钟/日历芯片,它提供一个可编程时钟输出,频率 为:32.768KHz,1024Hz,32Hz,1Hz;一个中断输出(接在 INT1/P3.3) ;掉电检测器;报警 和定时器。2 CPU 的引脚分布如图:2、软件控制原理 单片微型计算机简称单片机,是典型的嵌入式微控制器(Microcontroller Unit) 。单 片机由运算器,控制器,存储器,输入输出设备构成。单片机是一种集成电路芯片,是采用 超大规模集成电路技术把具有数据处理能力的中央处理器 CPU、随机存储器 RAM、只读存储 器 ROM、多种 I/O 口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽 调制电路、模拟多路转换器、A/D 转换器等电路)集成到一块硅片上构成的一个小而完善的 微型计算机系统,在工业控制领域的广泛应用。从上世纪 80 年代,由当时的 4 位、8 位单 片机,发展到现在的 32 位 300M 的高速单片机。 8051 由 CPU、 内部程序存储器 ROM、 内部寄存器 RAM、 可编程 I/O 端口、 定时器/计数器、 串行通信接口、中断系统、特殊功能寄存器、内部总线等部分构成。 (1)8051 单片机中的 CPU 是 8 位微处理器,主要由运算器和控制器组成,其中包括振荡电路 和时钟电路。它决定了单片机的性能,是单片机的核心部件,主要完成运算和控制功能。 (2)程序存储器主要用于存放用户的应用程序,也可以存放一些原始数据和表格。在其片外 最大扩展寻址范围为 64KB。单片机片内包括 ROM 或 EPROM 存储器,而现在的单片机都进行 了改进,采用 Flash 闪存作为程序存储器。 (3)8051 片内包含 128BRAM,用于存放单片机在运行期间需要保存的工作变量、中间结果或 最终结果、数据暂存或缓冲、标志位等。单片机片内数据存储器采用高速 RAM 的形式集成在 单片机内部,提高了运行速度,降低了系统功耗。 (4)单片机设有四个 8 位双向并行 I/O 端口(P0、P1、P2、P3),每个端口都能按位编程设置, 独立的用做输入或输出。每个端口功能有所不同,但都包含 8 个位锁存器、8 个驱动器和三 态缓冲器。P0 口是一个三态双向端口,其字节地址为 80H,位地址为 80H~87H。P0 口可作为 地址/数据分时复用总线,也可用做通用 I/O 口;P1 是一个准双向端口,只能用作通用 I/O 口,具有输入、输出、端口操作三种工作方式,其字节地址为 90H,位地址为 90H~97H;P2 口字节地址为 A0H,位地址为 A0H~A7H,具有两种功能,一种作为通用 I/O 口使用,另一种 作为扩展系统时的地址总线口输出高 8 位地址;P3 口作为通用 I/O 口使用、可外接 I/O 设3 备,也可作为第二功能输入口,其字节地址为 B0H,位地址为 B0H~B7H。总之,四个并行口 都有写端口操作、读端口操作、读-修改-写端口操作功能。 (5)定时器/计数器的核心是两个 16 位的加法计数器,可设置为计数方式对外部事件进行计 数;也可设置为定时方式对标准时钟脉冲进行定时计时。定时器/计数器 0 由两个 8 位的特 殊功能寄存器 TH0、TL0 构成,定时器/计数器 1 由两个 8 位的特殊功能寄存器 TH1、TL1 构 成。当启动定时器/计数器工作时,计数器从 THx、TLx 中的初值开始计数。特殊功能寄存器 TMOD 用于选择定时器/计数器 0、1 的工作模式和方式,TCON 用于控制定时器/计数器 0、1 的启动和停止,同时还包含了定时器/计数器 0、1 的状态。定时和计数范围可通过编程进行 设定,一旦定时或计数到位就立即向 CPU 发出中断请求。 (6)单片机具有5个中断源,两级中断优先级,它可以接收外部中断请求、定时器/计数器中 断请求和串行口中断请求, 每一个中断源可以用软件独立地控制为开中或关中断状态。 中断 响应过程为: 置位中断触发器→PC入栈→中断服务程序入口地址入PC→执行中断服务程序→ RETI(清零中断触发器,断点入PC)→返回原断点继续执行。和中断系统相关的特殊功能寄 存器有中断优先级控制寄存器IP、中断使能控制寄存器IE、定时/计数控制寄存器TCON、串 行通信口控制寄存器SCON等。 电路图如下所示:1 2 VC C VC C R9 47 R8 1K LED1 J10 3 2 1 CON3 J9 10 9 8 7 6 5 4 3 2 1 JTAG VC C 5615CS J1 RESET VC C P1.6 P1.7 4 3 2 1 HONGWAI INT0 C5 104 LED4 P1.7 12 13 U16D 74LS00 11 VC C 3 4 5 642CDQ1 B 1 R12 1K3 8K 输出inputRESET 3 OUT U3 555 5 C21 CVOLTVC CR17 20K THOLD TR IG 6 2 C6 1025.1K POWER 3 31VC C DIS CHG87R11J8A B C1 2 3 4D6 U18 LM 104 BR IDGE1 C18 2200uF 1 Vin Vout 3 C17 104 C19 1000uF R36 0.01 SW SPDTVC C LED3 VC CDE80504 3 2 1103GNDGNDR10 10K3S17 R29 1KJ2 CON3 Q2 Clk out 1 .3K P1.6 B1 VC C1322usb2 3BEEP 13.6V C1 30P X1 32.768K C2 30P INT1 1 2 3 4 1N41483D7 1N4148D8 SEG1 4SEG R33 VC C f e SCL SDA DPY a g d b c f e DPY a g d b c f e DPY a g d b c dp f e DPY a g d b c dp f e SEG2 4SEG DPY a g d b c f e DPY a g d b c f e DPY a g d b c dp f e DPY a g d b c dp VC C U8 S18 SW SPST 1602LCD21U2 VS CI VS CO INT VS S 8563 VDD CLKOUT SCL SDA 8 7 6 5 VC C3.3KLEDLED+7 4 2 1 105 39 8 67 42 1 105 3111211129 8 616 1514 13 12 11 10R18 1009 8 76 5 43 2 1VC Ca b c d e f dp gVC C CJ17 3 2 1 1 2 3 4 J3 3 2 1 CON3 R20 J5 2 1 CON2 10K VC C VC C D1 1NN4148 VC C 1 2 3 4U1 A0 A1 A2 GND 24C 02 U11 REF+ IN REFGND TLC1549 U12 VC C 8 7 6 5 VDD OUT REFIN GND DIN SCLK CS DOUT 1 2 3 4 VC C CLOCK DOUT CS 8 7 6 5 VC C WP SCL SDA 8 7 6 5A0 A1R14 VC C 3.3KR13 3.3K SCL SDA U4 U5 1Q 2Q 3Q 4Q 5Q 6Q 7Q 8Q OC 19 18 17 16 15 14 13 12 1 R0 R1 R2 R3 R4 R5 R6 R7 200 200 200 200 200 200 200 200 a b c d e f g dp D0 D1 D2 D3 D4 D5 D6 D7 2 3 4 5 6 7 8 9 11 1D 2D 3D 4D 5D 6D 7D 8D C 74HC573 U14C 74HC02 S1 S0 SW-PB KEY0 KEY1 KEY2 KEY3 AJ00 5 4 S4 SW-PB S8 1Q 2Q 3Q 4Q 5Q 6Q 7Q 8Q OC 19 KEY0 18 KEY1 17 KEY2 16 KEY3 15 14 13 12 1 1 2 3 4 5 6 7 8 9 U19 1B 1C 2B 2C 3B 3C 4B 4C 5B 5C 6B 6C 7B 7C 8B 8C GND COM ULN 16 15 14 13 12 11 10 0 1 2 3 4 5 6 7 D0 D1 D2 D3 D4 D5 D6 D7 1 2 3 4 5 6 7 8 9 11a b c d e f dp gVEE VDD VS Sdp dp a b c d e f g dp3 2 1 0dp dp a b c d e f g dp3 2 1 0R/W EDB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0RSR34 5.1KR30 100KR31 1K C7CON364 5 6 70 1 2 3C R35 10KD0 D1 D2 D3 D4 D5 D6 D7U7B 74HC00 8 12 11 U7D 74HC00 13 3 U7A 74HC00 74HC00 9 1 AJ02 2 /WR U7CVC C SCLK DIO 1549CS AJ01 DIO SCLK 5615CS SCL SDA SCLK DIO 1549CS 5615CS P1.6 P1.7 INT1 INT0 1 2 3 4 5 6 7 8 13 12 P10 P11 P12 P13 P14 P15 P16 P17 INT1 INT0 T1 T0 EA/VP X1 X2 RESET RD WR RXD TXD ALE/P PSEN 10 RXD 11 TXD 30 ALE 29 PSEN AT89C51 U13 /WR 2 3 U14A 74HC02C9 1 MIC1 MICROPHONE 10uFQ410uF90141D 2D 3D 4D 5D 6D 7D 8D C 74HC573 U610 /RD34J14 CON31 2 3DBUSA0 A1 A2 A3 A4 A5 A6 A72J16 1 2 CON2 J4 CON1 U9ATLC5615 VC C R16 3.3K12 1VC C Lin+ Lout Lin7 8 C11 10uF C8 103R19 10KR15 3.3KP00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P24 P25 P26 P2739 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28D0 D1 D2 D3 D4 D5 D6 D7 A8 A9 A10 A11 A12 A13 A14 A15D0 D1 D2 D3 D4 D5 D6 D72 3 4 5 6 7 8 9 111D 2D 3D 4D 5D 6D 7D 8D C 74HC5731Q 2Q 3Q 4Q 5Q 6Q 7Q 8Q OC19 18 17 16 15 14 13 12 1105S2 SW-PB S6 SW-PB S10 SW-PB S14 SW-PBS3 SW-PB S7 SW-PB S11 SW-PB S15 SW-PBSW-PB S5 SW-PB S9 SW-PB S13 SW-PB8/WRJ11 Rin+ Rout RinGND TDA2822VC C C3 30P123 PHONEJACK STEREO SW B 4116 5 103 C1011.0592M X2T1 T015 14 VC C 31 19 18 9 17 169ABUSU21 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 8 /WR 10 9 8 7 6 5 4 3 25 24 21 23 2 26 1 20 22 27 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 CE OE WE DQ0 DQ1 DQ2 DQ3 DQ4 DQ5 DQ6 DQ7 11 12 13 15 16 17 18 19 D0 D1 D2 D3 D4 D5 D6 D7/RD6U14B 74HC02SW-PB U14D 74HC02 S12 SW-PBSW-PBS16C15 22uFC4 30PX1 X2 RESETBR22 1K/RD /WR13U15 19 1 2 3 4 5 6 7 8 9 G DIR A1 A2 A3 A4 A5 A6 A7 A8 SN74HC 245 J12 VC C SCL SDA SCLK DIO 1549CS 5615CS P1.6 P1.7 RESET RXD TXD INT0 INT1 T0 T1 /WR /RD X2 X1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CON20 J13 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 CON20 VC C D0 D1 D2 D3 D4 D5 D6 D7 ALE PSEN A15 A14 A13 A12 A11 A10 A9 A8 VC C B1 B2 B3 B4 B5 B6 B7 B8 18 17 16 15 14 13 12 11A15D0 D1 D2 D3R24 R25 R26 R27 1K 1K 1K 1K/RD VC C PSEN C22 104 C23 104 C24 104 C25 104 C26 104 C27 104 C28 104 C29 104 C30 104 C31 104 C32 104 C33 104 C34 1041 2 U20A 74LS00 39 10 U20C 74LS00KM62256 C13U22 A12 A13 A14 4 A15 5 VC C U20B 74LS00 VC C D3 1N4148 A 1 J6 2 1 CON2 input R32 1K 2 D4 1NN U16C 74LS00 8 DS 18B20 U16A 74LS00 3 4 5 U16B 74LS00 U10 VC C I/O GND 3 2 1 6 T0 R21 3.3K VC C 6 4 5 6 E1 E2 E3 74HC138 1 2 3 A B C Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 15 14 13 12 11 10 9 7 AJ00 AJ01 AJ02 AJ03 AJ04 AJ05 AJ06 AJ07数 码 管 段 选 8xxx 数 码 管 位 选 和 键 盘 行 9xxx LC D使 能104 VC C C14 104 U17 TXD C12 104 13 8 11 10 1 3 R1 IN R2 IN T1 IN T2 IN C1+ C1 VC CR28 1K J7 LED2 usb 5 9 4 8 3 7 2 6 12 6 16R1 OUT R2 OUT T1 OUT T2 OUT C2+ C2 -GND12 9 14 7 4 5V+ VVCCRXDC20 104A15MA X 23 2Title T1 Size C Date: File: 28-Jan-2007 Sheet of J:\单 片 机 学 习 机 资 料 \PH-I型 51MC U学 习 系 统 (终 Drawn 结 版 ).ddb B y: 6 Number Revision12345三、资源使用情况对于 C51 系列单片机,其片内有 4KB 程序存储器(0000~0FFFH), /EA=1,单片机从片内 0000H 开始执行程序,片内程序执行完后会自动转到片外 1000H 开始执行。4 对于片内 128B 的内部数据寄存器 RAM,其编址为 00~7FH;特殊功能寄存器(SFR)有 128B,其编址为 80~FFH。 单片机内部 RAM 块的 00~1FH 区是工作寄存器区,分四个组,每组包含八个工作寄存器 R0~R7, 用户可以通过指令改变 PSW 状态寄存器中 RS1、 RS0 的值来选择要使用的工作寄存器 组,多余的寄存器组所对应的地址单元可以作为一般数据缓冲区或堆栈区使用。 内部 RAM 的 20H~2FH 为位寻址区,这 16 个单元(128 位)的每一位都有一个位地址, 这 16 个单元构成了 1 位处理机的存储器空间。内部 RAM 从 30H~7FH 是数据缓冲区,称为用 户 RAM 区,共 80 个单元。 单片机至少有五个中断向量地址,规定在程序存储器 FH 地址之间有五个特殊 地址被固定用于五个中断源的中断服务程序入口地址:外部中断 0(0003H) 、T0(000BH) 、 外部中断 1(0013H) 、T1(001BH) 、串行口(0023H) 。当单片机复位后,程序存储器 PC 的 内容为 0000H,引导系统从 0000H 开始读取指令执行程序。四、程序框图1、时间调整模式开始系统初始化是否按下设置键N时间调整模式 N 是否退出调整模式是否与闹钟一致 N Y 启动闹钟 显示时间2、秒表模式5 开始系统初始化 N 是否按功能切换键 显示时间切换秒表是否按秒表启动键 N 秒表计时是否按秒表暂停键 N 暂停秒表是否秒表清零 N Y五、操作说明单片机 4*4 矩阵键盘赋值如下: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F(1) 单片机开启后,LED 显示屏显示时间为“08-00-00” ,并开始计时。 (2)按下 00 键,进入时间调整模式,04、08、0C 键分别用于调整时、分、秒。调整完毕, 再次按下 00 键,退出时间调整模式,时钟开始计时。 (3)按下 01 键,LED 显示屏显示日期为“” ,进入日期设定模式,04、08 键分别 用于调整月、日,由于是 2013 年日历,故年份始终为 2013。另:0D 键用于日期滚动显示, 日期以格式“XXXX_XX_X 空空”开始向左滚动,三遍后自动停止,恢复到滚动前的形式。再 次按下 01 键,退出日期设定模式,返回时钟功能。此过程中,时钟一直在计时。6 (4)按下 02 键,设置闹钟时间,04、08、0C 键分别用于设置时、分、秒,设置完毕,再按 下 0E 键, 使单片机了解到此时已设置了闹钟, 再按 02 键退出设置闹钟功能。 在设置闹钟时, 时钟一直计时,当时钟时间到达闹钟时间时,闹铃“祝你生日快乐”响起,0F 键用于关掉 正在响的闹钟。 (5)按下 03 键,进入秒表功能,秒表开始计时,07 键用于秒表启动或暂停,0B 键用于秒表 清零。再次按下 03 键,退出秒表功能,返回时钟功能。此过程中,时钟一直计时。 (6)按下 0A 键,用于设定定时器,04、08、0C 键分别用于设定时、分、秒,设置完毕,按 下 0E 键,定时器开始倒计时,当倒计时结束时,蜂鸣器开启, “祝你生日快乐”的提示音响 起。按下 0A 键,退出定时器功能,返回时钟功能。设置及倒计时过程中,时钟一直计时。六、调试与运作情况操作步骤: 打开 Keil,选择 Project-New project,新建工程并保存,在弹出的对话框中,选择单片机 型号 SST89E564RD,点击确定。 点击 File-New,新建源程序文件,编辑单片机程序,保存为.asm 后缀的文件(汇编语言) , 另存到工程文件中。 选择 Options for Target-Target1,修改参数,Debug 选项选择硬件仿真,Settings 选项 中设置合适的端口,点击 OK,确定。 编译程序,发现错误,改正错误或者改进后,重复以上个步骤。 调试成功后,下载程序,点击运行,开始操作单片学习系统,通过按键,设置时间、日期等, 验证各项功能是否能实现。 程序调试结果如下:运作情况:调试后程序没有错误,可以正常运行,能实现实验任务要求的各项功能(第 7 项未做) 。验收时老师要求改动了两处小问题,一是闹铃响起时时钟仍然要保持计时,二是 增加整点报时功能, 整点报时是利用和闹钟相似的原理实现的, 唯一的问题是一开始不清楚 怎样实现几点钟报几下的功能。此外,由于蜂鸣器是固定频率发声的,而音乐的频率范围较 宽,所以蜂鸣器输出的音乐和预期有一定的差距。七、心得体会7 通过本次实验,我初步学会了 Keil 软件的使用,了解了单片机的构造、基本原理和功能 实现, 掌握了汇编语言编程在单片机方面的具体应用。 给我留下深刻印象的是要合理安排寄 存器、分配内存,注意中断的使用以及模块化编程对于复杂程序的重要性。在实验中,发现 了自身存在的单片机知识的欠缺以及初次接触汇编语言编程时的种种问题, 借助了图书馆以 及网络查阅资料,得到了老师的悉心指导和同学的热心帮助,使我获益匪浅。附录(本次实验的程序)ORG 0000H JMP MAIN ORG 000BH JMP TIM0 ORG 001BH JMP TIM1 ;初始程序段,定义,使能中断、装载计数初始值、设定各变量初始值 ORG 0030H CLK FLAG JS N NN SEC MIN HOUR MONTH YEARL YEARH ALSEC ALMIN ALHOUR D_SEC D_MIN D_HOUR STOP_MS STOP_S STOP_MIN EQU 00H EQU 01H EQU 04H EQU 22H EQU 23H EQU 30H EQU 31H EQU 32H EQU 34H EQU 35H EQU 36H EQU 37H EQU 38H EQU 39H EQU 3AH EQU 3BH EQU 3CH EQU 3DH ;秒表 EQU 3EH EQU 3FH ;闹铃秒、分、时的寄存器 ;定时器秒、分、时的寄存器 ;年、月、日的寄存器 ;秒、分、时的寄存器 ;用于标记闹钟状态,0 为关,1 为开 ;FLAG=1 时 Timer1 中断服务子程序跳到秒表中断服务处;FLAG=0 时 ;用于定时器计时 ;Timer0 的中断计数器 ;Timer1 的中断计数器,用于定时器Timer1 中断服务子程序跳到音乐中断服务处DAY EQU 33H8 LED1EQU 50H EQU 51H EQU 52H EQU 53H EQU 54H EQU 55H EQU 56H EQU 57H;8 个数码管LED2 LED3 LED4 LED5 LED6 LED7 LED8TEMP1 EQU 58H TEMP2 EQU 59H TEMP3 EQU 5AH TEMP4 EQU 5BH TEMP5 EQU 5CH TEMP6 EQU 5DH TEMP7 EQU 5EH TEMP8 EQU 5FH TEMP9 EQU 60H TEMP10 EQU 61H TEMP11 EQU 62H TEMP12 EQU 63H /***************************主程序循环区**********************************/ MAIN: MOV IE,#82H MOV TMOD,#01H MOV TH0,#0F1H MOV TL0,#0A4H MOV N,#00H MOV SP,#70H ;重设堆栈指针 ;模式 1,装载计数初始值,约 4ms 中断一次 ;用于滚动显示时的寄存器CLR CLK MOV N,#00 MOV NN,#00 CLR FLAG CLR JS MOV SEC,#00 MOV MIN,#00 MOV HOUR,#08 MOV ALSEC,#30 ;闹钟 MOV ALMIN,#00 9 ;时间 MOV ALHOUR,#08 MOV D_SEC,#00 MOV D_MIN,#00 MOV D_HOUR,#00 MOV DAY,#09 MOV MONTH,#03 MOV YEARL,#13 MOV YEARH,#20 SETB TR0 LOOP: CALL TRANS ;将要显示的数字转换成数码管的段码 CALL LED_DISP ;调用显示子程序 CALL ALARM_CLK ;调用闹钟检测子程序 CALL SW CALL SET_TIME JMP LOOP MOD1: CJNE A,#01H,MOD2 CALL SET_DATE JMP LOOP MOD2: CJNE A,#0DH,MOD3 CALL DATE_DISP JMP LOOP MOD3: CJNE A,#02H,MOD4 CALL SET_CLOCK JMP LOOP MOD4: CJNE A,#03H,MOD5 SETB FLAG CALL STOPWATCH CLR FLAG JMP LOOP MOD5: CJNE A,#0AH,MOD6 CALL DINGSHI JMP LOOP MOD6: 10 ;0A 键用于设定定时器 ;03 键用于进入秒表功能 ;02 键用于设定闹钟时间 ;0D 键用于日期滚动显示 ;设置闹铃时间 ;01 键用于设定日期 ;00 键用于设定时间 ;调用按键检测子程序 CJNE A,#00H,MOD1 ;日期 ;定时器的值 JMP LOOP /*Timer0 的中断服务子程序:*/ TIM0: PUSH ACC INC N MOV A,N CJNE A,#250,RET_1 MOV N,#0 INC SEC MOV A,SEC CJNE A,#60,RET_1 MOV SEC,#00 INC MIN MOV A,MIN CJNE A,#60,RET_1 MOV MIN,#00 INC HOUR MOV A,HOUR CJNE A,#24,RET_1 INC DAY MOV HOUR,#00 MOV DPTR,#MONTHTAB MOV A,MONTH MOVC A,@A+DPTR MOV B,DAY CJNE A,B,RET_1 INC MONTH MOV DAY,#01 MOV A,MONTH CJNE A,#13,RET_1 MOV YEARL,#12 MOV YEARH,#20 MOV SEC,#00 MOV MIN,#00 MOV HOUR,#00 MOV DAY,#01 MOV MONTH,#01 RET_1: MOV TL0,#0A4H MOV TH0,#0F1H 11 ;是否到 1 年 ;是否到 1 月 ;月计数加 1 ;是否到 1 天 ;天计数加 1 ;时计数加 1 ;是否到 1分计数加 1 ;是否到 1秒计数加 1 ;加 1 POP ACC RETI/*将要显示的时间数字转换成数码管段码*/ TRANS: MOV DPTR,#TABLE MOV A,SEC MOV B,#10 DIV AB MOVC A,@A+DPTR MOV LED2,A MOV A,B MOVC A,@A+DPTR MOV LED1,A MOV A,MIN MOV B,#10 DIV AB MOVC A,@A+DPTR MOV LED5,A MOV A,B MOVC A,@A+DPTR MOV LED4,A MOV A,HOUR MOV B,#10 DIV AB MOVC A,@A+DPTR MOV LED8,A MOV A,B MOVC A,@A+DPTR MOV LED7,A MOV LED3,#40H MOV LED6,#40H RET /*数码管显示*/ LED_DISP: PUSH 00H PUSH 02H PUSH 03H MOV R0,#LED1 MOV R3,#8 MOV A,#00H 12 ;ACC 中存放秒的高位,B 中存放秒的低位 ;读取程序存储器地址中的数据传送给 A MOV R2,#01H LED_LOOP: MOV DPTR,#9000H MOV A,@R0 INC R0 MOVX @DPTR,A MOV DPTR,#8000H MOV A,R2 MOVX @DPTR,A RL A MOV R2,A CALL DELAY DJNZ R3,LED_LOOP POP 03H POP 02H POP 00H RET /**设定时间**/ SET_TIME: CLR TR0 ST0: CALL TRANS CALL LED_DISP CALL SW CJNE A,#0CH,ST1 INC SEC MOV A,SEC CJNE A,#60,ST0 MOV SEC,#00 JMP ST0 ST1: CJNE A,#08H,ST2 INC MIN MOV A,MIN CJNE A,#60,ST0 MOV MIN,#00 JMP ST0 ST2: CJNE A,#04H,ST3 INC HOUR MOV A,HOUR CJNE A,#24,ST0 MOV HOUR,#00 JMP ST0 ST3: CJNE A,#00H,ST0 JMP RET_2 13 ;调节时 ;调节分 ;调节秒 ;延时 1A 的各位依次左移一位 ;把 A 的内容传送到 16 位的地址寄存器中 RET_2:SETB TR0 RET/***************************按键检测**********************************/ SW: MOV DPTR,#9000H MOV A,#00H MOVX @DPTR,A CALL KAP JNZ KP1 JMP END_SW KP1: CALL DELAY CALL KAP JNZ KP2 JMP END_SW KP2: MOV R2,#01H MOV R3,#00H MOV A,R2 KP4: MOVX @DPTR,A MOVX A,@DPTR JNB ACC.0,L1 MOV A,#00H JMP KP5 L1: JNB ACC.1,L2 MOV A,#04H JMP KP5 L2: JNB ACC.2,L3 MOV A,#08H JMP KP5 L3: JNB ACC.3,NEXT MOV A,#0CH KP5: ADD A,R3 PUSH ACC KP3: CALL DELAY CALL KAP JNZ KP3 POP ACC RET NEXT: INC R3 ;扫描下一行 ; 判断扫描是否结束,即当 ACC.3=0 时,各列均已扫描过 MOV A,R2 JB ACC.3,END_SW RL A MOV R2,A 14 ;对应的键盘编号为(0 4 8 C) ; ; ; 1 5 9 D 2 6 A E 3 7 B F ;第 2 列为 0 则检查第 3 列 ;第 1 列为 0 则检查第 2 列 ;第 0 列为 0 则检查第 1 列 ;R2 代表扫描的行数 ;扫描 ;先使所有数码管熄灭 JMP KP4 END_SW: MOV A,#010H RET KAP: MOV DPTR,#8000H MOV A,#0FH MOVX @DPTR,A MOVX A,@DPTR ANL A,#0FH RET /***************************设定日期**********************************/ SET_DATE: SD0: CALL TRANS1 CALL LED_DISP CALL SW CJNE A,#0CH,SD1 INC DAY MOV DPTR,#MONTHTAB MOV A,MONTH MOVC A,@A+DPTR MOV B,DAY CJNE A,B,SD0 MOV DAY,#01 JMP SD0 SD1: CJNE A,#08H,SD2 INC MONTH MOV A,MONTH CJNE A,#13,SD0 MOV MONTH,#01 JMP SD0 SD2: CJNE A,#04H,SD3 MOV YEARH,#20 MOV YEARL,#13 JMP SD0 SD3: RET_3: CJNE A,#01H,SD0 JMP RET_3 RET 将 要 显 示 的 日 期 转 换 成 数 码 管 的 段 码 ;调节年,2013 年日历,故年份始终为 2013 ;调节月 ;调节日 ;没有按键按下时,ACC 的值为 10H/*************************************************************/ 15 TRANS1: MOV DPTR,#TABLE MOV A,DAY MOV B,#10 DIV AB MOVC A,@A+DPTR MOV LED2,A MOV A,B MOVC A,@A+DPTR MOV LED1,A MOV A,MONTH MOV B,#10 DIV AB MOVC A,@A+DPTR MOV LED4,A MOV A,B MOVC A,@A+DPTR MOV LED3,A MOV A,YEARL MOV B,#10 DIV AB MOVC A,@A+DPTR MOV LED6,A MOV A,B MOVC A,@A+DPTR MOV LED5,A MOV A,YEARH MOV B,#10 DIV AB MOVC A,@A+DPTR MOV LED8,A MOV A,B MOVC A,@A+DPTR MOV LED7,A RET /*************************** 日期滚动显示**********************************/ DATE_DISP: MOV DPTR,#TABLE MOV A,YEARH MOV B,#10 DIV AB MOVC A,@A+DPTR MOV TEMP1,A 16 ;ACC 中存放日的高位,B 中存放日的低位 MOV A,B MOVC A,@A+DPTR MOV TEMP2,A MOV A,YEARL MOV B,#10 DIV AB MOVC A,@A+DPTR MOV TEMP3,A MOV A,B MOVC A,@A+DPTR MOV TEMP4,A MOV TEMP5,#40H MOV A,MONTH MOV B,#10 DIV AB MOVC A,@A+DPTR MOV TEMP6,A MOV A,B MOVC A,@A+DPTR MOV TEMP7,A MOV TEMP8,#40H MOV A,DAY MOV B,#10 DIV AB MOVC A,@A+DPTR MOV TEMP9,A MOV A,B MOVC A,@A+DPTR MOV TEMP10,A MOV TEMP11,#00 MOV TEMP12,#00 MOV LED1,#00 MOV LED2,#00 MOV LED3,#00 MOV LED4,#00 MOV LED5,#00 MOV LED6,#00 MOV LED7,#00 MOV 64H,#03 DD1: MOV R1,#TEMP1 17 ;循环显示 3 次 ;Temp1~12 中依次存放日期(如
空空) MOV R4,#12 DD2: MOV R5,#2FH MOV LED8,LED7 MOV LED7,LED6 MOV LED6,LED5 MOV LED5,LED4 MOV LED4,LED3 MOV LED3,LED2 MOV LED2,LED1 MOV LED1,@R1 DD3: CALL LED_DISP CALL SW CJNE A,#0DH,KEEP KEEP: DJNZ R5,DD3 INC R1 DJNZ R4,DD2 DJNZ 64H,DD1;将 12 个 Temp 中的数字显示完 ;R5 用来延时/*************************** 将 要 显 示 的 闹 钟 设 定 时 间 转 换 成 数 码 管 的 段 码 **********************************/ TRANS2: MOV DPTR,#TABLE MOV A,ALSEC MOV B,#10 DIV AB MOVC A,@A+DPTR MOV LED2,A MOV A,B MOVC A,@A+DPTR MOV LED1,A MOV A,ALMIN MOV B,#10 DIV AB MOVC A,@A+DPTR MOV LED5,A MOV A,B MOVC A,@A+DPTR MOV LED4,A MOV A,ALHOUR MOV B,#10 DIV AB 18 MOVC A,@A+DPTR MOV LED8,A MOV A,B MOVC A,@A+DPTR MOV LED7,A JB CLK,TR_1 MOV LED3,#08H MOV LED6,#08H JMP RET_5 TR_1: RET_5: RET MOV LED3,#80H MOV LED6,#80H ;闹钟开着时,LED3 和 LED6 显示.闹钟取消时,显示_/***************************设定闹钟时间**********************************/ SET_CLOCK: SC0: CALL TRANS2 CALL LED_DISP CALL SW CJNE A,#0CH,SC1 INC ALSEC MOV A,ALSEC CJNE A,#60,SC0 MOV ALSEC,#00 JMP SC0 SC1: CJNE A,#08H,SC2 INC ALMIN MOV A,ALMIN CJNE A,#60,SC0 MOV ALMIN,#00 JMP SC0 SC2: CJNE A,#04H,SC3 INC ALHOUR MOV A,ALHOUR CJNE A,#24,SC0 MOV ALHOUR,#00 JMP SC0 SC3: SC4: CJNE A,#02H,SC4 JMP RET_6 CJNE A,#0EH,SC0 CPL CLK JMP SC0 19 ;调节时 ;调节分 ;调节秒 RET_6: RET /***************************检查闹钟是否到点**********************************/ ALARM_CLK: JNB CLK,RET_7 MOV A,SEC CJNE A,ALSEC,RET_7 MOV A,MIN CJNE A,ALMIN,RET_7 MOV A,HOUR CJNE A,ALHOUR,RET_7 CALL MUSIC RET_7: RET /**************************检查是否整点******************************/ ZHENGDIAN: JNB CLK,RET_16 MOV A,SEC CJNE A,#00H,RET_16 MOV A,MIN CJNE A.#00H,RET_16 MOV A,HOUR CJNE A,#0AH,RET_17 CALL MUSIC RET_16: RET ;检查时 ;检查分 ;检查秒/***************************音乐**********************************/ MUSIC: MOV TMOD,#11H MOV IE,#8AH MOV 65H,#00H MOV DPTR,#MUSICTAB LOOP1: MOV DPTR,#MUSICTAB MOV A,65H MOVC A,@A+DPTR MOV R4,A INC 65H 20 ;R4 中存放音调的高八位 ;Timer1,Timer0 工作在模式 1 ;使能 Timer0 和 Timer1 ;递增的指针寄存器 MOV A,65H MOVC A,@A+DPTR MOV R5,A JZ RET_8 MUSIC1: MOV TH1,R4 MOV TL1,R5 SETB TR1 INC 65H MOV A,65H MOVC A,@A+DPTR MOV R1,A MUSIC2: CALL DLY5ms CALL TRANS CALL LED_DISP CALL SW CJNE A,#0FH,MUSIC3 JMP RET_8 MUSIC3: DJNZ R1,MUSIC2 INC 65H JMP LOOP1 RET_8: CLR TR1 SETB P1.6 RET /***************************音乐**********************************/ MUSIC5: MOV TMOD,#11H MOV IE,#8AH MOV 65H,#00H MOV DPTR,#MUSICTAB LOOP2: MOV DPTR,#MUSICTAB MOV A,65H MOVC A,@A+DPTR MOV R4,A INC 65H MOV A,65H MOVC A,@A+DPTR MOV R5,A JZ RET_8 ;R5 中存放音调的低八位 ;全 0 为乐曲结束符 21 ;R4 中存放音调的高八位 ;Timer1,Timer0 工作在模式 1 ;使能 Timer0 和 Timer1 ;递增的指针寄存器 ;0F 键用于关掉正在响的闹钟 ;R1 中存放节拍信息 ;R5 中存放音调的低八位 ;全 0 为乐曲结束符 MUSIC6: MOV TH1,R4 MOV TL1,R5 SETB TR1 INC 65H MOV A,65H MOVC A,@A+DPTR MOV R1,A MUSIC7: CALL DLY5 ; CALL TRANS CALL LED_DISP CALL SW CJNE A,#0FH,MUSIC8 JMP RET_31 MUSIC8: DJNZ R1,MUSIC7 INC 65H JMP LOOP1 RET_31: CLR TR1 SETB P1.6 RET /***************************Timer1 中断服务子程序**********************************/ TIM1: ; JB FLAG2,DSQ JB FLAG,STOP MOV TH1,R4 MOV TL1,R5 CPL P1.6 JMP RET_11 STOP: PUSH ACC ;STOP 用于秒表 INC STOP_MS MOV A,STOP_MS CJNE A,#100,RET_9 MOV STOP_MS,#00 INC STOP_S MOV A,STOP_S CJNE A,#60,RET_9 MOV STOP_S,#00 INC STOP_MIN MOV A,STOP_MIN 22 ;是否到 1MIN ;是否到 1S ;用于音乐 ;DSQ 用于定时器 ;0F 键用于关掉正在响的闹钟 ;R1 中存放节拍信息 CJNE A,#60,RET_9 MOV STOP_MIN,#00 RET_9: MOV TL1,#0FFH MOV TH1,#0DBH POP ACC JMP RET_11 RET_11: RETI /***************************秒表程序**********************************/ STOPWATCH: MOV TMOD,#11H MOV IE,#8AH MOV TH1,#0DBH MOV TL1,#0FFH MOV STOP_MS,#00 MOV STOP_S,#00 MOV STOP_MIN,#00 W0: CALL TRANS3 CALL LED_DISP CALL SW CJNE A,#07H,W1 W0_2: W0_1: CALL TRANS3 CALL LED_DISP CALL SW CJNE A,#07H,W0_1 JMP PAUSE W1: CJNE A,#0BH,W2 MOV STOP_MS,#00 MOV STOP_S,#00 MOV STOP_MIN,#00 JMP W0 W2: CJNE A,#03H,W0 JMP RET_10 PAUSE: CLR TR1 CALL TRANS3 CALL LED_DISP CALL SW CJNE A,#07H,W1 23 ;0B 键用于秒表清零 SETB TR1 ;07 键用于秒表启动/暂停 ;10ms 中断一次 ;Timer1,Timer0 工作在模式 1 ;使能 Timer0 和 Timer1 JMP W0_2 RET_10: CLR TR1 RET/*************************** 将 要 显 示 的 秒 表 数 字 转 换 成 数 码 管 段 码 **********************************/ TRANS3: MOV DPTR,#TABLE MOV A,STOP_MS MOV B,#10 DIV AB MOVC A,@A+DPTR MOV LED2,A MOV A,B MOVC A,@A+DPTR MOV LED1,A MOV A,STOP_S MOV B,#10 DIV AB MOVC A,@A+DPTR MOV LED5,A MOV A,B MOVC A,@A+DPTR MOV LED4,A MOV A,STOP_MIN MOV B,#10 DIV AB MOVC A,@A+DPTR MOV LED8,A MOV A,B MOVC A,@A+DPTR MOV LED7,A MOV LED3,#40H MOV LED6,#40H RET /*************************** 将 要 显 示 的 定 时 器 设 定 时 间 转 换 成 数 码 管 的 段 码 **********************************/ TRANS4: MOV DPTR,#TABLE MOV A,D_SEC MOV B,#10 24 DIV AB MOVC A,@A+DPTR MOV LED2,A MOV A,B MOVC A,@A+DPTR MOV LED1,A MOV A,D_MIN MOV B,#10 DIV AB MOVC A,@A+DPTR MOV LED5,A MOV A,B MOVC A,@A+DPTR MOV LED4,A MOV A,D_HOUR MOV B,#10 DIV AB MOVC A,@A+DPTR MOV LED8,A MOV A,B MOVC A,@A+DPTR MOV LED7,A TK_1: RET_13: RET MOV LED3,#40H MOV LED6,#40H ;定时器开着时,LED3 和 LED6 显示_/***************************设定定时器时间**********************************/ SET_DING: SI0: CALL TRANS4 CALL LED_DISP CALL SW CJNE A,#0CH,SI1 INC D_SEC MOV A,D_SEC CJNE A,#60,SI0 MOV D_SEC,#00 JMP SI0 SI1: CJNE A,#08H,SI2 INC D_MIN MOV A,D_MIN CJNE A,#60,SI0 25 ;调节分 ;调节秒 MOV D_MIN,#00 JMP SI0 SI2: CJNE A,#04H,SI3 INC D_HOUR MOV A,D_HOUR CJNE A,#24,SI0 MOV D_HOUR,#00 JMP SI0 SI3: CJNE A,#0EH,SI4 SETB JS JMP RRET SI4: RRET: CJNE A,#06H,SI0 RET ;调节时/***************************定时器程序**********************************/ DINGSHI: CALL SET_DING DG: JNB JS,RET_12 CALL DLY CALL JISHI CALL TRANS4 CALL LED_DISP CALL SW CJNE A,#06H,DG JMP RET_12 RET_12: MOV D_SEC,#00 MOV D_MIN,#00 MOV D_HOUR,#00 RET ;定时器的值/***************************定时器计时程序**********************************/ JISHI: INC NN MOV A,NN CJNE A,#100,RET_14 MOV NN,#0 MOV A,D_SEC CJNE A,#00,DSQ0 JMP DSQ1 DSQ0: DEC D_SEC ;秒计数减 1 MOV A,D_SEC 26 ;是否到 1加 1 CJNE A,#00,RET_14 MOV D_SEC,#00 JMP RET_14 DSQ1: MOV A,D_MIN ORL A,D_HOUR JZ RET_15 MOV D_SEC,#59 MOV A,D_MIN CJNE A,#00,DSQ2 JMP DSQ3 DSQ2: DEC D_MIN MOV A,D_MIN CJNE A,#00,RET_14 MOV D_MIN,#00 JMP RET_14 DSQ3: ORL A,D_HOUR JZ RET_15 MOV D_MIN,#59 DEC D_HOUR MOV A,D_HOUR JMP RET_14 RET_15: CALL MUSIC5 CLR JS RET_14: RET;是否到 1min;分计数减 1 ;是否到 1h;时计数减 1DLY: MOV R6,#20 DL3: MOV R7,#14 DJNZ R7,$ DJNZ R6,DL3 RET;用于定时器DLY5ms: MOV R6,#20 DL2: MOV R7,#120 DJNZ R7,$ DJNZ R6,DL2 RET;5ms 延时27 DELAY: MOV R6,#4 D1: MOV R7,#130 DJNZ R7,$ DJNZ R6,D1 RET;1ms 延时TABLE: DB DB 3FH,06H,5BH,4FH,66H 6DH,7DH,07H,7FH,6FH ;0~9MONTHTAB: DB DB 0,32,29,32,31,32,31 32,32,31,32,31,32MUSICTAB: DB DB DB; 祝你生日快乐 0FDH,82H,20,0FDH,82H,20,0FDH,0C8H,20,0FDH,82H,20,0FEH,22H,20,0FEH,06H,20 0FDH,82H,20,0FDH,82H,20,0FDH,0C8H,20,0FDH,82H,20,0FEH,4FH,20,0FEH,22H,200FDH,82H,20,0FDH,82H,20,0FEH,0C1H,20,0FEH,85H,20,0FEH,22H,20,0FEH,06H,40,0FDH,0C8H,40 DB DB DB DB 0FDH,82H,20,0FDH,82H,20,0FEH,0C1H,20,0FEH,85H,20,0FEH,22H,20,0FEH,06H,40,0FDH,0C8H,40 DB DB MUSICTAB1: DB MUSICTAB2: DB END 0FEH,22H,40 0FEH,22H,10 0FEH,9AH,20,0FEH,9AH,20,0FEH,85H,20,0FEH,22H,20,0FEH,4FH,20,0FEH,22H,20 00H,00H 0FEH,9AH,20,0FEH,9AH,20,0FEH,85H,20,0FEH,22H,20,0FEH,4FH,20,0FEH,22H,20 0FDH,82H,20,0FDH,82H,20,0FDH,0C8H,20,0FDH,82H,20,0FEH,22H,20,0FEH,06H,20 0FDH,82H,20,0FDH,82H,20,0FDH,0C8H,20,0FDH,82H,20,0FEH,4FH,20,0FEH,22H,2028
西安交大电信学院单片机实验报告―汇集和整理大量word文档,专业文献,应用文书,考试资料,教学教材,办公文档,教程攻略,文档搜索下载下载,拥有海量中文文档库,关注高价值的实用信息,我们一直在努力,争取提供更多下载资源。

我要回帖

更多关于 电子表 的文章

 

随机推荐