单片机开发工程案例分析与解析.docx
《单片机开发工程案例分析与解析.docx》由会员分享,可在线阅读,更多相关《单片机开发工程案例分析与解析.docx(42页珍藏版)》请在知海网上搜索。
问题函数:将单字节无符号数转换为十进制数的BCD码。
结果存储在40h、41h和42h中,40H中有百位,42H中有个位。
企业好不好,见仁见智。
1、作者:戴出版社:清华大学出版社本书首先简要介绍了51系列单片机的基础知识,然后从工程应用的角度,详细介绍了51系列单片机常用的电路模块,主要包括键盘、液晶显示、A、D转换、D/A转换和I.教你学会51单片机(C语言版)和教你学会51单片机(C语言版)旨在培养和锻炼单片机系统的实际开发技能。
2、该书以实践为主线,让读者在一个个实际案例中逐步掌握单片机电路设计和程序代码编写的能力。
3、编号:时间:2021年X月X日这是一条通往书籍之山的道路,学习永无止境页码:第42页,共42页3单片机开发项目案例分析与剖析1个定时闹钟设计一种单片机控制的简易定时报警器。
要求按照设定的初始值倒计时(1-59秒)。
4、当时间到达0时,数码管闪烁“00”(以1Hz闪烁),按键功能如下:(设置键:在倒计时模式下,按此键停止倒计时,进入设置状态;如果该键已经处于设置状态,则该键无效。
(加键:设置状态时,每按一次递增键,初始值的数字就加1。
(Passa键:设置状态时,每按一次减量键,初始值的数字减1。
5、(确认键:设置状态时,按下该键后,单片机将倒计时,并根据新的初始值显示倒计时数。
如果已经处于计时状态,此键无效。
6、2模块系统设计(任务分析和总体设计思路根据题目要求,需要实现以下功能。
7、计时功能:要实现计时功能,需要用一个定时器来计时,通过设置定时器的初始值来控制溢出中断的时间间隔,然后用一个变量来记录定时器溢出的次数,从而实现计时1秒的功能。
然后,每过一秒钟,倒计时计数器就减1。
当倒计时计数器达到0时,另一个标志变量被触发进入闪烁状态。
8、显示功能:倒计时数字要动态扫描显示,数字分为“十位数”和“一位数”进行动态扫描显示。
如果处于闪烁状态,则不需要动态扫描显示,只需要控制共阴极数码管的位置控制线就可以实现数码管的开关。
键盘扫描和运行模式切换:初始化一些变量和寄存器后,主程序需要读取键盘的状态,动态扫描数码管显示相应的数字。
根据键盘的键值在设置状态和定时状态之间切换。
(单片机及所需外围设备的型号,单片机硬件电路原理图。
微控制器选用MCS-51系列AT89S51单片机,选用两个四极共阴极数码管组成8位显示模块。
因为AT89S51单片机的驱动能力有限,所以用两片74HC244驱动总线,一片74HC244完成位线的控制和驱动,另一片74HC244完成数码管的7段代码输出,每个输出端口串联一个100欧姆的电阻。
因为键盘很少,所以选择独立的按键与P1端口连接,作为四个按键输入。
没有按键时,P0-P3为高电平,按键时,P0-P3的相应引脚为低电平。
电路原理图如图3-1所示。
图3-1定时报警器电路原理图(编程思路、单片机资源分配和程序流程。
供应链管理资源配置单片机的P3口作为按键的输入,独立键与P0-P3连接形成四个功能键。
在计时功能中,需要三个变量来临时存储计时器溢出的次数(T1_cnt)、倒计时的初始值(init_val)和当前倒计时的秒数(cnt_val)。
在键扫描函数中,需要两个变量。
一个变量(key_val_new)用于存储当前扫描的键值(如果没有按键,则为,另一个变量(key_val_old)用于存储上一次扫描的键值。
只有当这两个变量的值不同时,才可以解释为按下或弹起了一个新的键,给key_val_old变量赋了一个新的键值。
在显示功能中,需要定义一组数组(代码类型),数组的值为7段数码管,分别对应从0到9的数字。
还需要定义一个变量(show_val)来临时存储动态扫描显示要显示的数据。
在整个程序中,定义了一个状态变量(state_val)来存储单片机工作在哪个状态。
编程思想鉴于题目要求,有三种工作模式:初始值设定模式、倒计时模式、时间到0时闪烁模式。
当变量state_val为0时,处于倒计时模式。
当变量state_val为1时,它处于初始化模式。
当变量state_val为2时,处于闪烁模式。
这些状态的切换取决于哪个键被按下,是否定时为0。
状态切换图如图3-2所示。
图3-2状态切换微控制器复位后,默认处于倒计时模式,定时器开始计时。
定时器每250us溢出一次,按照定时器溢出的次数计数,时间计数器每达到1秒减1。
当按下“设置键”时,变量state_val从0变为1,设置模式切换。
您可以使用“递增键”和“递减键”来修改初始计时值。
当您按下“回车键”时,您将返回到计时器模式,并以新的初始值开始倒计时。
当倒计时到0时,变量state_val从1变为2,处于闪烁状态。
在这种状态下,它根据按键分别切换到定时和设置状态。
程序流程主程序首先需要初始化定时器的参数和一些变量,然后进入一个循环结构,在这个循环结构中始终只做两件事,一是键盘的扫描,二是数码管的动态扫描。
扫描键盘后,根据前一次击键的结果是否与该键值相同。
如果不同,则表示某个键被按下或弹起,最后一个键值用当前键值更新。
这种设计旨在避免长时间按下一个键时被反复判断为按下了新键,这样当前按下的键只有在松开后才会被算作新键。
根据键的值设置状态时,更改变量值(state_val)或初始倒计时值。
完整的主程序图如图3-3所示。
图3-3主程序流程图在定时器参数中,选择定时器T1的8位自动加载模式,每250us产生一个溢出中断。
中断服务程序如图3-4所示。
图3-4中断服务程序流程图(软硬件调试方案软件调试方案:在付伟软件中,在“文件新建文件”中,用C语言新建一个源程序文件,并编写相应的程序。
在“文件新建项目”菜单中,新建一个项目,并将C语言源程序文件包含在项目文件中。
在“项目编译”菜单中编译C源文件,检查语法错误和逻辑错误。
编译成功后,后缀为“*”的目标文件。
十六进制和*。
产生“二进制”。
硬件调试方案:在设计平台中,单片机的P0-P3通过插头线与独立键盘的相应位相连。
在威孚众中将程序文件编译成目标文件后,运行单片机下载程序,选择相应的flash数据文件,点击“程序”按钮,将程序文件下载到单片机的Flash中。
然后上电重启单片机,检查编写的程序是否符合题目要求,试题内容是否完整完成。
3编程(C语言源程序,仅供参考)/晶振:0592MT1-250微秒。
按P10P11P12P13。
/*变量的定义:Show_val:显示值0-59。
初始化值:初始值State_val:状态值0-计数状态;1-设置状态;2-闪烁状态山瓦尔:Key_val四个键的值是255无键;1-设置键2-添加键3-减去键4-输入键T1_cnt:定时器计数溢出数Cnt_val:倒计时值。
Led_seg_code:数码管的7段代码。
*/#includeregh/包含文件sbitp1_0=p10;/设置密钥sbitp1_1=p11;/添加密钥sbitp1_2=p12;/减去一个键sbitp1_3=p13;/确定键无符号字符数据shan_val/闪烁时LED的开/关状态无符号字符数据cnt_val/保存倒计时的当前值。
无符号整型数据T1_cnt/保存定时器溢出次数。
无符号字符数据key_val_new,key_val_old/存储当前扫描的按键和上次按下的按键值。
无符号字符数据state_val/状态值无符号字符数据show_val/将需要显示的数字存储在数码管中。
无符号字符数据init_val/暂时存储倒计时的初始值。
charcodeled_seg_code10=0x3f,0x06,0x05b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/-延迟。
Voiddelay(unsignedinti)/大约延迟i*2微秒。
while(-I);/-击键扫描无符号字符scan_key()无符号字符I;I=P10x0f;延迟(;/延迟、去抖动if(i=(P10x0f)if(P1_0=I=1;其他if(P1_1=I=2;其他if(P1_2=I=3;其他如果(P1_3=I=4;其他i=255返回I;/-数码管显示器。
voidled_show(无符号整数v)无符号字符I;if(state_val!=/动态扫描i=v%10/获取要显示的数字的位数。
P0=led_seg_codeI;/转换为7段代码P2=0xFe;/显示单位延迟(;/延迟I=v%100/10;/取十位数P0=led_seg_codeI;/转换为7段代码P2=0xFD;/显示十位数延迟(;/延迟其他P0=led_seg_code0;/处于闪烁状态。
if(山_瓦尔)P2=0xff;/关闭数码管。
其他P2=0xfc;/打开数码管。
/-定时器T1中断服务程序。
无效定时器1()中断3/T1中断,250us中断一次。
T1_cnt+;开关(state_val)案例If(T1_cnt/如果计数3999,计时1s。
T1_CNT=0;if(cnt_val!=CNT_val-;其他state_val=2;/当计时计数达到0时,切换状态。
- 下载必读:
1、word格式文档无特别注明外均可编辑修改;预览文档经过压缩,下载后原文更清晰!
2、纯PPT格式课件,可能不包含音视频文件,无法播放。请谨慎下单,否则后果自负。
3、试题类资料,若没标明(含答案),则可能不含答案。对于标明含答案的试题,其主观题也可能无答案。请谨慎下单,否则后果自负。- 版权声明:
该资料为 【上传人(卖家):盘川A】主动上传,所获收益归该上传人。本站对所上传内容,不做编辑和修改!知海网作为网络服务提供商,仅对该作品提供存储保护!我们不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 开发 工程 案例 分析 解析
- 本文标题:
单片机开发工程案例分析与解析.docx
- 链接地址:
https://www.zhwenku.com/edit/40067.html