子项目五_数字钟.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
子项目五_数字钟

子项目五:数字钟 学习目标: 通过完成音频的输出和电子琴的综合设计, 使学生进一步掌握keilC编译器的使用和proteus仿真软件进行仿真的基本过程。进一步了解单片机C51程序设计基础,了解单片机内部结构、存储器地址分配、并行I/O口的结构与工作原理、循环程序的设计。 学习任务: 由易到难设计滴、滴报警声的输出,叮咚门铃和电子琴掌握音符的输出控制。 技能拓展: 1、proteus软件使用。 2、KeilC编译器使用 3、C51程序设计 一、原理 1、滴、滴报警声 用 AT89S51 单片机产生“嘀、嘀、…”报警声从 P1.0 端口输出,产生频率为 1KHz, 根据上面图可知:1KHZ方波从 P1.0 输出 0.2 秒,接着 0.2 秒从 P1.0输出电平信号,如此循环下去,就形成我们所需的报警声了。 2、叮咚门铃 当按下开关 SP1,AT89S51 单片机产生“叮咚”声从 P1.0 端口输出,经过放大之后送入喇叭。 3、电子琴 由 4X4 组成 16 个按钮矩阵,设计成 16 个音,可随意弹奏想要表达的音乐。 一、原理——1、滴、滴报警声 一、原理——2、叮咚门铃 一、原理——3、电子琴 二、原理图绘制 本例要用到的元件有:AT89C51、 电阻(RES)、电容(CAP)、电解电容(HITEMP)、发光二极管(LED)、晶振(CRYSTAL) 具体绘制方法参见项目一 三、程序设计——(1)滴、滴报警声 1、生活中我们常常到各种各样的报警声,例如“嘀、嘀、…”就是常见的一种声音报警声,但对于这种报警声,嘀 0.2 秒钟,然后断 0.2 秒钟,如此循环下去,假设嘀声的频率为 1KHz,则报警声时序图如下图所示: 三、程序设计——(1)滴、滴报警声 上述波形信号如何用单片机来产生呢? 由于要产生上面的信号,我们把上面的信号分成两部分,一部分为 1KHZ 方波,占用时间为 0.2 秒;另一部分为电平,也是占用0.2秒;因此,我们利用单片机的定时/计数器 T0 作为定时,可以定时 0.2 秒;同时,也要用单片机产生 1KHZ的方波,对于 1KHZ 的方波信号周期为 1ms,高电平占用 0.5ms,低电平占用 0.5ms,因此也采用定时器 T0 来完成 0.5ms 的定时;最后,可以选定定时/计数器 T0 的定时时间为 0.5ms, 而要定时 0.2 秒则是 0.5ms 的 400 倍, 也就是说以 0.5ms 定时 400次就达到 0.2秒的定时时间了。 三、程序设计——(1)滴、滴报警声 2、程序框图——主程序框图 三、程序设计——(1)滴、滴报警声 2、程序框图——中断服务程序框图 三、程序设计——(1)滴、滴报警声 3、汇编源程序 T02SA EQU 30H T02SB EQU 31H FLAG BIT 00H ORG 00H LJMP START ORG 0BH LJMP INT_T0 START: MOV T02SA,#00H MOV T02SB,#00H CLR FLAG MOV TMOD,#01H 三、程序设计——(1)滴、滴报警声 MOV TH0,#(65536-500) / 256 MOV TL0,#(65536-500) MOD 256 SETB TR0 SETB ET0 SETB EA SJMP $ INT_T0: MOV TH0,#(65536-500) / 256 MOV TL0,#(65536-500) MOD 256 INC T02SA MOV A,T02SA CJNE A,#100,NEXT INC T02SB MOV A,T02SB CJNE A,#04H,NEXT 三、程序设计——(1)滴、滴报警声 MOV T02SA,#00H MOV T02SB,#00H CPL FLAG NEXT: JB FLAG,DONE CPL P1.0 DONE: RETI END 三、程序设计——(1)流水灯左移右移 4、 C 语言源程序 #include AT89X51.H unsigned int t02s; unsigned char t05ms; bit flag; void main(void) { TMOD=0x01; TH0=(65536-500)/256; TL0=(65536-500)%256; TR0=1; ET0=1; EA=1; while(1); } void t0(void) interrupt 1 using 0 { TH0=(65536-500)/256; TL0=(65536-500)%256; t02s++; if(t02s==400) { t02s=

您可能关注的文档

文档评论(0)

hhuiws1482 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档