基于单片机的数字电子钟毕业论文(编辑修改稿)内容摘要:

特性, REST 脚的电压也被拉到 5V,但是因为 REST脚又通过电阻下拉,电阻两端有电压差,电容 缓慢通过电阻对地放电,所以电压缓慢降低最后变成低电平。 复位电路 调节电路 按键开关状态通过一定的电路转换为高低电平 状态。 按键按下和释放都要经过一定的过程才能达到稳定,这就是我们通常 说的按键抖动,我们需要解决按键抖动这个对实验有一定影响的因素,我采用的 是独立式按键用来消抖。 直接用I/O 口线构成单个按键电路,每个按键占用一条 I/O 口线,每个按键工作状态不会彼此产生影响。 并且我设置了四个按键,用来进行调时以及定 时用。 九江学院 XIV 低电平时表示有按键按下,就进行时钟的调秒 ,高电平时停止调节。 低电平时表示有按键按下,就进行时钟的调分 ,高电平时停止调节。 低电平时表示有按键按下,就进行时钟的调时 ,高电平时停止调节。 低电平时表示有按键按下,就进行时钟的定时 ,高电平时停止调节。 数码管显示电路 由于也要显示数字电子钟的所有功能,所以我 们需要八个数码管,最左边两个用来显示时钟的时,之后第三个横杠代表间隔 ,中间显示时钟的分,再横杠间隔,之后就是时钟的秒。 通过这样设计可以很好的 显示出时钟的我们需要的时钟功能。 之后就是处理器做的事情了。 九江学院 XV 时钟电路 时 钟是单片机的最重要的核心部件之一,因为单片机所有的部件都是根据单片机内的时钟脉冲发出信号然后才开始稳定的工作,时钟的稳定工作单片机才可以稳定工作,所以时钟电路是相当重要的电路。 还有时钟频率的不同决定了单片机工作的效率,时钟频率越高工作越快反之亦然。 常见的时钟电路由两种方式组成:一种是内部时钟方式,另一种是外部时钟方式。 时钟电路 九江学院 XVI 第 6章 系统软件设计 程序流程图 电子钟系统主 程序流程图 Y N N Y 初始化 开始 进入功能程序 调用显示子程序 调用显示子程序 键按下 整点到 ? 九江学院 XVII 电子钟系统中断程序流程图 定时器 T0 用于时间计时定时溢出周期为 50ms,中断进入后先进行定时中断初值校正,当中断累计 20 次时,对秒计数单元进行加 1 操作。 时钟计数单元地址秒,分,时分别在 70H71H、 76H77H、 78H79H 中,最大计时值为 23时 59 分 59秒。 在计数单元采用十进制 BCD 码计数,满 10 进位。 T0 中断 保护现场 定时初值校正 恢复现场,中断返回 加 1s 处理 1s 到 ? 九江学院 XVIII 定时器 T1 中断程序用于指示时间调整单元数字的闪亮或秒表技术,在时间调整状态下,每过 左右,将对应调整单元的显示数据换成“熄灯符”数据( 0AH)。 这样,在调整时间时,对应调整单元的显示数据会间隔闪亮。 在作秒表计时时,每 10s 中断一次,计数单元加 1,每 100s 次为 1s。 秒表计数单元地址在 60H61H( 10ms)、 62H63H(秒)、 64H65H(分)中,最大计数值为 99 分 秒。 T1 中断 保护现场 秒表 /闪烁 恢复现场,中断返回 加 10ms 处理 闪烁处理 九江学院 XIX 应用程序设计 include define SEG_DAT P0 define SEG_BIT P2 define DS_DAT P0 define DS_SEC 0x00 define DS_MIN 0x02 define DS_HOR 0x04 define DS_WEK 0x06 define DS_DAY 0x07 define DS_MON 0x08 define DS_YER 0x09 define DS_R_A 0x0A define DS_R_B 0x0B define DS_R_C 0x0C define DS_R_D 0x0D define DS_Y_S 0x0E //年千百位 define CNT_M 30 //控制闪烁速度 ,为偶数 define BCD_DEC(X) (((X amp。 0xF0) 4) * 10 + (X amp。 0x0F)) define DEC_BCD(X) (((X / 10) 4) | (X % 10)) sbit DS_DS = P3^0。 sbit DS_RW = P3^1。 sbit DS_AS = P3^2。 sbit DS_CS = P3^3。 sbit KEY1 = P1^0。 sbit KEY2 = P1^1。 sbit KEY3 = P1^2。 sbit KEY4 = P1^3。 unsigned char dispMode = 0。 //显示模式 九江学院 XX unsigned char modify = 0。 //修改模式 unsigned char count = 0。 //修改模式下闪烁计数 unsigned char DIS[6]。 unsigned char code C_DAT[]= { 0xC0,/*0*/ 0xF9,/*1*/ 0xA4,/*2*/ 0xB0,/*3*/ 0x99,/*4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/ 0xBF,/**/ }。 unsigned char code C_BIT[]={0xDF,0xEF,0xF7,0xFB,0xFD,0xFE}。 void Delay(unsigned int t) { unsigned int a,b。 for (a=0。 at。 a++) for (b=0。 b123。 b++)。 } void DS12887_Write(unsigned char addres,unsigned char dat) { DS_AS = 1。 DS_DS = 1。 DS_RW = 1。 九江学院 XXI DS_CS = 0。 DS_DAT = addres。 DS_AS = 0。 //add will be write when AS full down DS_RW = 0。 DS_DAT = dat。 DS_RW = 1。 DS_AS = 1。 DS_CS = 1。 } unsigned char DS12887_Read(unsigned char addres) { unsigned char d。 DS_AS = 1。 DS_DS = 1。 DS_RW = 1。 DS_CS = 0。 DS_DAT = addres。 DS_AS = 0。 DS_DS = 0。 DS_DAT = 0xFF。 d = DS_DAT。 DS_DS = 1。 DS_AS = 1。 DS_CS = 1。 return d。 } void DS12887_Init(void) { if (DS12887_Read(DS_Y_S) == 0) 九江学院 XXII { DS12887_Write(DS_Y_S, 0x20)。 DS12887_Write(DS_HOR, 0x12)。 DS12887_Write(DS_R_A, 0x20)。 DS12887_Write(DS_R_B, 0x02)。 //BCD } } void Display(void) { unsigned char i。 if (dispMode == 0) //显示模式 0,时分秒 { i = DS12887_Read(DS_HOR) amp。 0x7F。 DIS[0] = C_DAT[i 4]。 DIS[1] = C_DAT[i amp。 0x0F] amp。 0x7F。 i = DS12887_Read(DS_MIN)。 DIS[2] = C_DAT[i 4]。 DIS[3] = C_DAT[i amp。 0x0F] amp。 0x7F。 i = DS12887_Read(DS_SEC)。 DIS[4] = C_DAT[i 4]。 DIS[5] = C_DAT[i amp。 0x0F] amp。 0x7F。 if (modify != 0 amp。 amp。 count CNT_M) //修改模式 123 下闪烁 { DIS[2 * (modify 1)] = 0xFF。 DIS[2 * (modify 1) + 1] = 0xFF。 } } else if (dispMode == 1) //显示模式 1年 { 九江学院 XXIII DIS[0] = 0xFF。 i = DS12887_Read(DS_Y_S)。 //年高两位,在 RAM里 0x0E DIS[1] = C_DAT[i 4]。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。