基于单片机的秒表系统设计-单片机课程设计论文内容摘要:

背光部分可以更换 ) 注: 1602的管脚功能 10 三、硬件设计 AT89S52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。 使用 Atmel 公司高密度非 易失性存储器技术制造,与工业 80C51 产品指令和引脚完 全兼容。 片上 Flash 允许程序存储器在系统可编程,亦适于 常规编程器。 在单芯片上,拥有灵巧的 8 位CPU 和在系统 可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提 供高灵活、超有效的解决方案。 AT89S52 具有以下标准功能: 8k 字节 Flash, 256 字节 RAM, 32 位 I/O 口线 ,看门狗定时器, 2 个数据指针,三个 16 位 定时器 /计数器,一个 6向量 2 级中断结构,全双工串行口, 片内晶振及时钟电路。 另外, AT89S52 可降至 0Hz 静态逻 辑操作,支持 2 种软件可选择节电模式。 空闲模式下, CPU 停止工作,允许 RAM、定时器 /计数器、串口、中断继续工 作。 掉电保护方式下, RAM 内容被保存,振荡器被冻结, 单片机一切工作停止,直到下一个中断或硬件复位为止 . 定时 /计数器的实质是加 1计数器( 16位),由高 8位和低 8位两个寄存器组成。 TMOD是定时器的工 作方式寄存器,确定工作方式和功能; TCON是控制寄存器,控制 T0、 T1的启动和停止及设置溢出标志。 加 1计数器输入的计数脉冲有两个来源 ,一个是由系统的时钟振荡器输出脉冲经 12分频后送来;一个是 T0或 T1引脚输入的外部脉冲源。 89S52 单片机定时器的工作由两个特殊功能寄存器控制。 TMOD 用于设置其工作方式; TCON 用于控制其启动和中断申请。 在按键电路中,我们可以在 I/O口上直接接按键,或者通过 I/O口设计一个键盘,然后通过键盘扫描程序判 断是否有键按下等。 键盘扫描电路节省 I/O口,但编程有些复杂,在这里,由于我们所用的按键较少,且系统是一个小系统,有足够的 I/O口可以使用,为了使程序简化,我们采用按键电路, 用部分 P3 口做开关, , P3.,2 为暂停, ,用外部中断 INT1 开始,另外用软件法消除抖动。 11 四、软件设计 在软件设计中,一般采用模块化的程序设计方法,它具有明显的优点。 把一个多功能的复杂的程序划分为若干个简单的、功能单一的程序模块,有利于程序的设计和调试,有利于程序的优化和分工,提高了程 序的阅读性和可靠性,使程序的结构层次一目了然。 应用系统的程序由包含多个模块的主程序和各种子程序组成。 各程序模块都要完成一个明确的任务,实现某个具体的功能,在具体需要时调用相应的模块即可。 功能 描述 :用 LCD1602液晶 显示 秒表 , 显示时间为 — ,每秒自动加 1; 一个 开始 键,一个 暂停 键 ,一个 清零 键。 这里采用顺序结构,通过对按键的扫描,判断要实现什么功能。 如下所示: include 赋初始值 开始 LCD1602显示 复位键 是否按下 查看键 是否按下 调用最终缓存区数据进行显示 否 是 是 否 否 是 查看键 是否按下 LCD 清零零 12 include //调用 LCD模块,显示数据 define uchar unsigned char define uint unsigned int sbit led1=P3^0。 //定义中断端口 sbit led2=P3^1。 sbit buzz=P1^2。 sbit start=P2^0。 sbit push=P2^1。 sbit reset=P2^2。 uchar aa=0,shi=9,fen=59,miao=30,xx=0。 //定义参数 uchar flag_old=0,flag。 void init() //初始化外部中断和定时器 { TMOD=0x01。 TH0=0x4c。 TL0=0x00。 EA=1。 ET0=1。 TR0=0。 } void tixing() //定时模块,设置 { uint i,j。 for(i=0。 i100。 i++) { for(j=0。 j80。 j++)。 buzz=~buzz。 } for(i=0。 i100。 i++) { for(j=0。 j150。 j++)。 buzz=~buzz。 } } void main() { 13 lcd1602()。 lcd1602_init()。 //计时显示“ start” init()。 display_onechar(0,11,39。 s39。 )。 display_onechar(0,12,39。 t39。 )。 display_onechar(0,13,39。 a39。 )。 display_onechar(0,14,39。 r39。 )。 display_onechar(0,15,39。 t39。 )。 TR0=1。 while(1) { display_onechar(0,0,shi+0x30)。 display_onechar(0,1,39。 :39。 )。 display_onechar(0,2,fen/10+0x30)。 display_onechar(0,3,fen%10+0x30)。 display_onechar(0,4,39。 :39。 )。 display_onechar(0,5,miao/10+0x30)。 display_onechar(0,6,miao%10+0x30)。 display_onechar(0,7,39。 .39。 )。 display_onechar(0,8,xx+0x30)。 if(start==0 amp。 amp。 shi!=10) //开始计时模块 { delay(15000)。 while(start==0)。 delay(5000)。 TR0=1。 display_onechar(0,11,39。 s39。 )。 display_onechar(0,12,39。 t39。 )。 display_onechar(0,13,39。 a39。 )。 display_onechar(0,14,39。 r39。 )。 display_onechar(0,15,39。 t39。 )。 } if(stop==0) //暂停模块,同步显示“ push” { delay(15000)。 while(push==0)。 delay(5000)。 TR0=0。 14 display_onechar(0,11,39。 39。 )。 display_onechar(0,12,39。 p39。 )。 display_onechar(0,13,39。 u39。 )。 display_onechar(0,14,39。 s39。 )。 display_o。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。