第1章单片机应用系统设计实例

第1章单片机应用系统设计实例

ID:33853288

大小:1.79 MB

页数:61页

时间:2019-03-01

第1章单片机应用系统设计实例_第1页
第1章单片机应用系统设计实例_第2页
第1章单片机应用系统设计实例_第3页
第1章单片机应用系统设计实例_第4页
第1章单片机应用系统设计实例_第5页
资源描述:

《第1章单片机应用系统设计实例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第六章单片机应用系统设计实例6.18051系列单片机实现计算器功能6.2简易波形发生器6.3简易广告屏设计6.4寻迹小车的设计6.5无线呼叫系统设计6.18051单片机实现计算器功能一设计目标和实现方法满足计算器要求,进行加减乘除运算;打开计数器时,初始显示数字为0123;实现简单的数据运算,不支持连续运算;仿真和调试要用到Protues和Keil软件。二方案论证与设计键盘包括0到9十个数字键,加减乘除四个符号键,清除键和等号键,共16个按键;键盘选用4x4行列式键盘结构(如下图);输入模块:键盘扫描;数字大小范围为4位,选用4个LED数码管显示数据和结果;三

2、硬件电路设计(1)主要器件:采用8051单片机,它能够满足数据的采集、控制和数据处理的需求,显示用输入采用按键方式的4段LED数码管;(2)功能和操作:加减乘除运算和显示。步骤如下:①上电后,屏幕初始化,显示初始数值0123;②计算。依次数字键,符号键,数字键,等号键,屏幕上显示出计算结果;③如果要再次计算,可以按下“on/c”键清0,或者按下单片机的复位键,重新初始化。四软件设计模块化程序设计是单片机应用中最常用的程序设计方法;模块化程序设计的中心思想是把一个复杂应用程序按整体功能划分成若干相对独立的程序模块,各模块可以单独设计,编程和调试,然后组合起来;本

3、系统的程序模块主要分为主程序,键值获取程序和处理子程序等,其流程图分别如下图所示:主程序流程图定时中断子程序流程图按键处理子程序流程图主程序:voidmain(){inint();while(1){if(key)pkey();}}按键处理子程序:voidpkey(){switch(key){casezero:modify_LED(0);break;caseone:modify_LED(1);break;casetwo:modify_LED(2);break;casethree:modify_LED(3);break;casefour:modify_LED(4)

4、;break;casefive:modify_LED(5);break;casesix:modify_LED(6);break;caseseven:modify_LED(7);break;caseeight:modify_LED(8);break;casenine:modify_LED(9);break;caseclear:key_ptr=3;modify_LED(17);op1=op2=0;break;caseadd:key_ptr=3;modify_LED(10);break;casesub:key_ptr=3;modify_LED(11);break;c

5、asemux:key_ptr=3;modify_LED(12);break;casediv:key_ptr=3;modify_LED(13);break;caseequ:key_ptr=3;modify_LED(14);break;default:break;}key=0;}voidmodify_LED(ucharx){if(key_ptr==3){LED[0]=LED[1]=LED[2]=space;}else{LED[0]=LED[1];LED[1]=LED[2];LED[2]=LED[3];}LED[3]=x;key_ptr--;if(x<=9&&x>=

6、0)op1=op1*10+x;elseif(x>=10&&x<=13){LED[0]=LED[1]=LED[2]=LED[3]=space;key_ptr=3;op2=op1;op1=0;switch(x){case10:op3='+';break;case11:op3='-';break;case12:op3='*';break;case13:op3='/';break;default:break;}}elseif(x==14){switch(op3){case'+':op2=op1+op2;break;case'-':op2=op2-op1;break;c

7、ase'*':op2=op1*op2;break;case'/':op2=op2/op1;break;default:break;}result_pr();}key_ptr&=0x03;}定时中断子程序:voidtimer0()interruptTF0_VECTOR//中断检测键盘键值{TH0=(65536-2500)>>8;TL0=(65536-2500)&0xff;if((key_port&0xf0)!=0xf0)//有键按下{if(key_port==xkey){ckey++;//去抖动if(ckey>10){key=xkey;ckey=0;}}else

8、{xkey=key_port;ckey

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。