单片机课程设计-基于单片机的数字秒表设计(编辑修改稿)内容摘要:
12M,该数值与最终产生的目标代码无关,仅用于软件模拟调试时显示程序执行时间。 正确设置该数值可使显示时间与实际所用时间一致,一般将其设置成与你的硬件所用晶振频率相同,如果没必要了解程序执行的时间,也可以不设,这里设置为 12。 设置对话框中的 OutPut 页面,如图 所示,这里面也有多个选择项,其中 Creat Hex file 用于生成可执行代码文件(可以用 编程器 写入单片机芯片的 HEX 格式文件,文件的扩展名为 .HEX),默认情况下该项未被选中,如果要写片做硬件实验,就必须选中该项,这一点是初学者易疏忽的,在此特别提醒注意。 选中 Debug information 将会产生调试信息,这些信息用于调试,如果需要对程序进行调试,应当选中该项。 Browse information 是产生浏览信息,该信息可以用菜单 viewBrowse 来查看,这里取默认值。 按钮 Select Folder for objects” 是用来选择最终的目标文件所在的文件夹,默认是与工程文件在同一个文件夹中。 Name of Executable 用于指定最终生成的目标文件的名字,默认与工程的名字相同,这两 项一般不需要更改。 工程设置对话框中的其它各页面与 C51编译选项、 A51 的汇编选项、 BL51 连接器的连接选项等用法有关,这里均取默认值,不作任何修改。 以下仅对一些有关页面中常用的选项作一个简单介绍。 图 Listing 标签页用于调整生成的列表文件选项。 在汇编或编译完成后将产生( *.lst)的列表文件,在连接完成后也将产生( *.m51)的列表文件,该页用于对列表文件的内容和形式进行细致的调节,其中比较常用的选项是 “C Compile Listing” 下的“Assamble Code” 项,选中该项可以在列表文件中生成 C 语言源程序所对应的汇编代码。 图 代码生成控制 C51 标签页用于对 Keil 的 C51 编译器的编译过程进行控制,其中比较常用的是“Code Optimization” 组,如图 7 所示,该组中 Level 是优化等级, C51 在对源程序进行编译时,可以对代码多至 9 级优化,默认使用第 8级,一般不必修改,如果在编译中出现一些问题,可以降低优化级别试一试。 Emphasis 是选择编译优先方式,第一项是代码量优化(最终生成的代码量小);第二项是速度优先(最终生成的代码速度快); 第三项是缺省。 默认的是速度优先,可根据需要更改。 设置完成后按确认返回主界面,工程文件建立、设置完毕。 、连接 图 有关编译、连接、项目设置的工具条 在设置好工程后,即可进行编译、连接。 选择菜单 ProjectBuild target,对当前工程进行连接,如果当前文件已修改 ,软件会先对该文件进行编译,然后再连接以产生目标代码;如果选择 Rebuild All target files 将会对当前工程中的所有文件重新进行编译然后再连接,确保最终生产的目标代码是最新的,而 Translate „ . 项则仅对该文件进行编译,不进行连接。 以上操作也可以通过工具栏按钮直接进行。 图 8 是有关编译、设置的工具栏按钮,从左到右分别是:编译、编译连接、全部重建、停止编译和对工程进 行设置。 编译过程中的信息将出现在输出窗口中的 Build 页中,如果源程序中有语法错误,会有错误报告出现,双击该行,可 以定位到出错的位置,对源程序反复修改之后,最终会得到如图 所示的结果,提示获得了名为 的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其它相关的文件,可被用于 Keil 的仿真与调试,这时可以进入下一步调试的工作。 图 正确编译、连接之后的结果 设计思 想 本设计采用了 C 语言编写,由于 C语言编程灵活,可移植性强。 在一定程度上简化了编程过程。 模块化结构程序的设计,可以使系统软件便于调试与优化,也使其他人更好地理解和阅读系统的程序设计。 主程序设 计 本系统程序主要模块由主程序、定时中断服务程序、外部中断 0 服务程序组成。 其中主程序是整个程序的主体。 可以对各个中断程序进行调用。 协调各个子程序之间的联系。 系统(上电)复位后,进入主程序,主程序流程图如图 8所示。 当外部中断有请求则去执行外部中断服务程序。 并在执行完后返回主程序。 外部 中断程序设计 中断的概念 CPU 在处理某一事件 A时,发生了另一事件 B 请求 CPU 迅速去处理(中断发生); CPU暂时中断当前的工作,转去处理事件 B(中断响应和中断服务);待 CPU 将事件 B处理完毕后,再回到原来事件 A被中断的地方继续处理事件 A(中断返回),这一过程称为中断。 K=1 Temp++ 图 主程序 流程图 开始 程序初始化 Temp=0 K=2 Temp=temp K=0 Temp=0 显示数据 定时中断程序设计 定时 /计数器的结构 定时 /计数器的实质是加 1 计数器( 16 位),由高 8位和低 8位两个寄存器组成。 TMOD是定 时 /计数器的工作方式寄存器,确定工作方式和功能; TCON 是控制寄存器,控制 T0、T1 的启动和停止及设置溢出标志。 定时 /计数器的原理 加 1 计数器输入的计数脉冲有两个来源 ,一个是由系统的时钟振荡器输出脉冲经 12分频后送来;一个是 T0或 T1 引脚输入的外部脉冲源。 每来一个脉冲计数器加 1,当加到计数器为全 1 时,再输入一个脉冲就使计数器回零,且计数器的溢出使 TCON 中 TF0或 TF1 置 1,向 CPU发出中断请求(定时 /计数器中断允许时)。 如果定时 /计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表 示计数值已满。 可见,由溢出时计数器的值减去计数初值才是加 1 计数器的计数值。 图 中断 程序 子 流程图 否 K=2 是 K++ INT0 中断 K=0 图 定时器 T0子程序流程图 实验程序 AT89C52 显示 ~ 汇编语言程序。 要实现 四 位数码管显示 ~ 依次循环的秒表设计,必须得将 AT89C52 芯片写入程序,只有将程序写进 AT89C52芯片,才能实现其秒表的原理功能。 主函数设计 void main() { init()。 //初始化子程序 while(1) { if(k==0) { init()。 //初始化子程序 wela=1。 //初始设置显示 P2=0XFF。 wela=0。 P0=0xc0。 否 是 中断返回 定时器 T0入口地址 调用数码显示子程序 Temp 加 1 置初值 定时器溢出中断 } if(k==1) //第二次按键开始计数 { if(temp==9999) //当计数超过 秒时清零 { temp=0。 } qian=temp/1000。 //计算数码 管第一位 bai=temp%1000/100。 //计算数码管第二位 shi=temp%1000%100/10。 //计算数码管第三位 ge=temp%10。 //计算数码管第四位 display(qian,bai,shi,ge)。 //显示时间 } Else //第二次按键时停止 { qian=temp/1000。 bai=temp%1000/100。 shi。单片机课程设计-基于单片机的数字秒表设计(编辑修改稿)
相关推荐
TL1 TH0 TH1 AUXR 8FH 80H P0 SP DP0L DP0H DP1L DP1H PCON 87H 在表 中,对于没有定义的存储单元用户不能使用。 如果向这些存储单元写入数据将产生不确定的效果,从它们读取数据将得到一个随机 数。 对于字节地址低位为 8H 或者 FH的特殊功能存储器,既可以进行字节操作,也可以进行位操作。
14 参考文献 : [1] 李群芳等 .单片微型计算机与接口技术 .[M]北京:电子工业出版社 , [2] 谢辉 .单片机原理及应用 .[M]北京:化学工业出版社 , [3] 周向红 .51 系列单片机应用与实践教程 .[M]北京:北京航空航天大学出版社, 2020 [4] 谭浩强 .C 语言程序设计 .第 2 版 .北京: 清华大学 出版社, [5] 李光飞,楼然苗等 .单片机课程设计实例指导
T1 设置为定时方式,且定时时间为 1s。 计数器 T0 设置为外部脉冲计数工作方式,设在 1s 内测量的脉冲个数为 n,再将 n 乘上 60 即是转速( 分 /转)。 根据设计要求和设计思路,本系统由 AT89C51 单片机, LED 显示电路,时钟与复位电路以及独立式按键五个部分组成。 系统硬件框图如图22 所示。 9 图 22 系统框图 LED 显 示器 驱动电路 AT89C51 单片机
MOV C, JC L2 STOP1: MOV C,。 = 0 时转移 JNC STOP1 LCALL DELAY1。 延时 MOV C, JNC STOP1 MOV 50H,00H LJMP MAIN。 设置闹钟。 SETATIME:LCALL DISPLAY2。 调用 DISPLAY2 显示闹钟 N0: LCALL DISPLAY2 MM2: JB ,N1。 =1 时转移 MOV C, JC
1/ A 922P 2. 0/ A 821U1A T 89 S 51R110KR210KR310KY112 M H zC730 p FC630 p F12345678P1 H E A D E R 8S1SWPBS2SWPBS3SWPBS4SWPBS5SWPBS6SWPBS7SWPBS8SWPBS9SWPBS 10SWPBS 11SWPBS 12SWPBS 13SWPBS 14SWPBS
的最底端,另四条分别放置 在水塔内不同高度如图 35 所示。 图 35 传感器连接示意图 吉林工业职业技术 学院论文 15 此原理的电路设计比脉冲调制 式红外发射接收器 结构简单,方便。 此电路的灵敏度可以达到本设计的要求,能够准确地分辨出有水信号和无水信号不用调试便可很方便的使用。 由此可知,这种设计方案简单实用,元器件选用方便,费用低。 此电路无需调试,解决了第一种方案中调试繁琐