基于stc89c52的多功能实时时钟内容摘要:
1 0P 1 1P 1 2P 1 3P 1 4P 1 5V C C9VX T A L 218X T A L 119A L E30EA31P S E N29RS T9P 0 .0 /A D 039P 0 .1 /A D 138P 0 .2 /A D 237P 0 .3 /A D 336P 0 .4 /A D 435P 0 .5 /A D 534P 0 .6 /A D 633P 0 .7 /A D 732P 1 .0 /T 21P 1 .1 /T 2 E X2P 1 . 23P 1 . 34P 1 . 45P 1 . 56P 1 . 67P 1 . 78P 3 .0 /R X D10P 3 .1 /T X D11P 3 .2 /I NT 012P 3 .3 /I NT 113P 3 .4 /T 014P 3 .7 / R D17P 3 . 6 / W R16P 3 .5 /T 115P 2 .7 /A 1 528P 2 .0 / A 821P 2 .1 / A 922P 2 .2 /A 1 023P 2 .3 /A 1 124P 2 .4 /A 1 225P 2 .5 /A 1 326P 2 .6 /A 1 427U1A T 8 9 C5 2RS T5S CL K7I /O6X12X23V CC 18V CC 21U3DS 1 3 0 2D714D613D512D411D310D29D18D07E6RW5RS4VSS1VDD2VEE3L C D 1L M 0 1 6 L2 8 . 0DQ2V C C3G ND1U2DS 1 8 B 2 0R11 0 kX1CR Y S T A LF RE Q = 1 1 .0 5 9 2 M H zC12 2 p FC22 2 p FC31 0 u FR21 0 kX2CR Y S T A LB A T 13V234567891R P 1RE S P A C K 8L S 1S O UN D E RQ12 N53 6 6R31 0 kR41 0 kVI1VO3GND2U47 8 0 5C41 0 u FC51uF 图 13 系统总原理图 第三章 软件设计与分析 主程序流程图 主程序流程图主要包括各器件初始化,滚动式开机画面,模式判断,正常时间、温度显示,闹钟设置,时间调整设置,秒表功能。 主程序流程图如图 14。 开始 初始化 开机画面 boys0809 的博客 13 图 14 主程序流程图 第四章 系统测试 功能测试 ① 设定好闹钟,到时后蜂鸣器报警,约一分钟后自动停止。 ② 用手捏住温度传感器,显示温度值上升,松手后显示温度下降。 ③ 设定好时间、闹钟等数据后,切断外部电源供给, 3 小时后恢复供电,检查所有 数据依然正确,时钟在断电期间依然在走动。 ④ 切换到秒表功能键,通过按键可以实现秒表的开始、暂停和清零。 第五章 设计总结和心得 设计总结与心得 本设计的创新点与未来功能扩展 1) 创新点 增强的时钟保护功能:即使整个系统不接 任何电源,依靠自带的备份电源时钟可保持一年以上(理论值)。 闹钟提醒保护功能:所有设定的闹钟提醒,在系统整体掉电的情况下,依靠自带的备份电源可以保存与时钟同样长的时间 开机滚动画面:每次开机时,都会有滚动出现的开机画面,内容是多功能时钟及模式判断 正常显示 秒表模式 调整模式 boys0809 的博客 14 队员名称。 备份电源随时充电:当系统有外部电源供给时,自动对备份电源充电,保持备份电源电能饱满。 温度显示:实时观测当地温度。 2) 未来功能扩展 多种开机画面任意选择功能; 增加 EEPROM 存储器,使闹钟的组数增多,保存时间不再受备份电源的限制; 增加温度报警功能; 增加无线数 据传输功能,可对其他多部同型号数字钟同步统一时间、闹钟等设定。 设计心得 本课程设计从软件设计到仿真到硬件制作和调试,我收获不菲。 特别是在仿真编程和硬件调试方面。 在编程过程中一直灌输给自己“编程是一种思想”,一定要用编程的思想去编程,如模块化思想,文件管理思想,头文件和接口函数的思想,设计程序时要考虑到程序的可扩充性,兼容性,可维护性以及重用性,并归纳和总结各种功能算法,各种调度和事件驱动机制等等。 在编程方面有了一定的进步。 在使用仿真软件时得到了一些启示:仿真只是提供一个实现的大概参考,真正的功能实现 仍需在实际硬件调试中完善。 第六章 参考文献 参考文献 [1].李朝青 .单片机原理及接口技术(第 3版) .北京:北京航天航空大学出版社, 2020 年 10 月 [2].惠仇 .手把手教你 51 单片机 .北京:电子工业出版社 ,2020 年 1月 [3].谭浩强 .C 语言程序设计(第二版)。 北京:清华大学出版社, 1999 年 12 月 [4].楼然苗等 .单片机实验与课程设计( Proteus 仿真版) .浙江:浙江大学出版社 .2020 年 10 月 [5].龙威林等 .单片机应用入门( AT89S51 和 AVR).北京:化学工业出版社, 2020 年 9 月 15 附录一:程序清单 include include define uint unsigned int define uchar unsigned char sbit SCLK = P2^0。 sbit IO = P2^1。 sbit RST = P2^2。 sbit beep=P2^4。 sbit K1 = P1^4。 sbit K2 = P1^5。 sbit ACC0 = ACC^0。 sbit ACC7 = ACC^7。 char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year,hide_min_alarm,hide_hour_alarm。 //秒、分、时、日、月、年位闪的计数 uchar stop_watch_value[]={39。 39。 ,39。 039。 ,39。 039。 ,39。 :39。 ,39。 039。 ,39。 039。 ,39。 :39。 ,39。 039。 ,39。 039。 ,39。 :39。 ,39。 039。 ,39。 039。 ,39。 \039。 }。 uchar code weekture[7][3]={{MON},{TUE},{WEN},{THU},{FRI},{SAT},{SUN}}。 char settime_flag,stopwatch_flag,stopwatch_count=0。 uchar alarm_TimeString[6]=12:12。 uchar alarm_hour,alarm_min。 uchar alarm_count。 uchar alarm_flag。 uchar min=0。 uchar sec=0。 uchar count_stop=0。 sbit DQ = P2^3。 //温度传送数据 IO口 char done,done2,count,temp,flag,up_flag,down_flag。 uchar temp_value。 //温度值 uchar TempRoom[5],week_value[2]。 void alarm_to_str()。 void show_time()。 //液晶显示程序 /***********1602 液晶显示部分子程序 ****************/ sbit rs= P2^7。 sbit rw= P2^6。 sbit en = P2^5。 sfr DBPort= 0x80。 //数据端口 unsigned char LCD_Wait(void) //内部等待函数 { rs=0。 rw=1。 _nop_()。 en=1。 _nop_()。 en=0。 return DBPort。 } //向 LCD 写入命令或数据 define mand1602 0 // Command define data1602 1 // Data define clear_screen1602 0x01 16 // 清屏 define home1602 0x02 // 光标返回原点 void lcd_write(bit style, unsigned char input) { en=0。 rs=style。 rw=0。 _nop_()。 DBPort=input。 _nop_()。 //注意顺序 en=1。 _nop_()。 //注意顺序 en=0。 _nop_()。 LCD_Wait()。 } //设置显示模式 define show1602 0x04 //显示开 define hide1602 0x00 //显示关 define cursor1602 0x02 //显示光标 define no_cursor1602 0x00 //无光标 define flash1602 0x01 //光标闪动 define no_flash1602 0x00 //光标不闪动 void lcd_set_display(unsigned char displaymode) { lcd_write(mand1602, 0x08|displaymode)。 } //设置输入模式 define ac_up1602 0x02 define ac_down1602 0x00 // default define move1602 0x01 // 画面可平移 define no_move1602 0x00 //default void lcd_set_input(unsigned char inputmode) { lcd_write(mand1602, 0x04|inputmode)。 } void lcd_initial() //初始化 LCD { en=0。 lcd_write(mand1602,0x38)。 //8 位数据端口 ,2行显示 ,5*7 点阵 lcd_write(mand1602,0x38)。 lcd_set_display(show1602|no_cursor1602)。 //开启显示 , 无光标 lcd_write(mand1602,clear_screen1602)。 //清屏 lcd_set_input(ac_up1602|no_move1602)。 //AC 递增 , 画面不动 } /*液晶字符输入的位置 */ void GotoXY(unsigned char x, unsigned char y) { if(y==0) lcd_write(mand1602,0x80|x)。 if(y==1) lcd_write(mand1602,0x80|(x0x40))。 } void Print(unsigned char *str) //将字符输出到液晶显示 { while(*str!=39。 \039。 ) { lcd_write(data1602,*str)。 17 str++。 } } /***********DS1302 时钟部分子程序 ******************/ typedef struct __SYSTEMTIME__。基于stc89c52的多功能实时时钟
相关推荐
MOV 45HTH0 mov th000h mov tl000h jnb p32 SETB 00H 接收成功标志 pint0_exit RETI 421 中断的概述 程序执行过程中容许外部或内部事件通过硬件打断程序的执行使其转向为处理外部或内部事件的中断服务程序中去完成中断服务程序后 CPU 继续原来被打断的程序这样的过程称为中断过程 422 中断响应的一般过程 1 在每 条指令结束后
D为可选择的电源引脚,当工作于寄生电源时,此引脚必须接地。 温度传感器DS18B20电路图 1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表:
电图仪的硬件 设计 便携式心电图仪要求具有可移动性和再开发性,不仅便于携带、功能尽可能的完善 基于 STM32 的便携式心电图仪设计 5 能够实时对心电信号进行处理,而且要求随着发展可以进一步升级满足人们更多的需求。 本心电图仪集信号的采集、处理、传输三大功能于一体。 对于这些功能,即需要相对独立的模块化设计,又需要良好的协调。 因此,在开发过程中,硬件设备的选择需要考虑这些特定的需求,有针
2 627P 2 021P 2 526P 2 122P 2 425P 2 223P 2 324G N D208 0 5 2R12 0 0R21 0 K复位按键C11 0 u FC23 0 u FC33 0 u FC41 0 u FC50 .1 u FXTG N DG N DV C C+ 5 VV C C+ 5 VG N D 图 STC89C52 最小系统 LCD1602 液晶显示器介绍 LCD
序存储器或数据存储器时, ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。 一般情况下, ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用 于定时目的。 要注意的是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。 对 Flash 存储器编程期间,该引脚还用于输入编程脉冲( PROG)。 如有必要,可通过对特殊功能寄存器( SFR)区中的 8EH
08 a8255 table[hour_zhi_2_c10] delay void display_1 b8255 0x01 a8255 table[1] delay void display_2 b8255 0x02 a8255 table[2] delay 六 声光报警子程序 程序清单如下 void baojing_1 if INT1 1 display_1 J8 0 光报警程序开始位置