ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:466.33KB ,
资源ID:1866378      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1866378.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机的计算器设计方案完整.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机的计算器设计方案完整.docx

1、单片机的计算器设计方案完整3.1 硬件连接图3-1所示为简易计算器的电路原理图。P3口用于键盘输入,接4*4矩阵键盘,键值与键盘的对应表如表-所示,p0口和p2口用于显示,p2口用于显示数值的高位,po口用于显示数值的低位。图3-1 简易计算器电路原理图键值与功能对应表键值0123456789+-/=ON/C功能0123456789+-=清零表3-13.2 计算器的软件设计#include /头文件#define uint unsigned int / #define uchar unsigned charsbit lcden=P23。 /定义引脚sbit rs=P24。sbit rw=P20

2、。sbit busy=P07。char i,j,temp,num,num_1。long a,b,c。 /a,第一个数 b,第二个数 c,得数float a_c,b_c。uchar flag,fuhao。/flag表示是否有符号键按下,fuhao表征按下的是哪个符号uchar code table=7,8,9,0,4,5,6,0,1,2,3,0,0,0,0,0。uchar code table1=7,8,9,0x2f-0x30,4,5,6,0x2a-0x30,1,2,3,0x2d-0x30,0x01-0x30,0,0x3d-0x30,0x2b-0x30。void delay(uchar z /

3、延迟函数uchar y。for(z。z0。z- for(y=0。y。void check( / 判断忙或空闲do P0=0xFF。 rs=0。 /指令 rw=1。 /读 lcden=0。 /禁止读写 delay(1。 /等待,液晶显示器处理数据 lcden=1。 /允许读写 while(busy=1。 /判断是否为空闲,1为忙,0为空闲void write_com(uchar com / 写指令函数P0=com。 /com指令付给P0口rs=0。rw=0。lcden=0。check(。lcden=1。void write_date(uchar date / 写数据函数 P0=date。rs=1

4、。rw=0。lcden=0。check(。lcden=1。void init( /初始化 num=-1。lcden=1。 /使能信号为高电平write_com(0x38。 /8位,2行write_com(0x0c。 /显示开,光标关,不闪烁*/write_com(0x06。 /增量方式不移位 显竟獗暌贫 柚?write_com(0x80。 /检测忙信号write_com(0x01。 /显示开,光标关,不闪烁num_1=0。i=0。j=0。a=0。 /第一个参与运算的数b=0。 /第二个参与运算的数c=0。flag=0。 /flag表示是否有符号键按下, fuhao=0。 / fuhao表征按下

5、的是哪个符号void keyscan( / 键盘扫描程序P3=0xfe。 if(P3!=0xfe delay(20。 延迟20ms if(P3!=0xfe temp=P3&0xf0。 switch(temp case 0xe0:num=0。 break。 case 0xd0:num=1。 break。 case 0xb0:num=2。 break。 case 0x70:num=3。 break。 while(P3!=0xfe。 if(num=0|num=1|num=2/如果按下的是7,8或9 if(j!=0 write_com(0x01。 j=0。 if(flag=0/没有按过符号键 a=a*

6、10+tablenum。 else/如果按过符号键 b=b*10+tablenum。 else/如果按下的是/ flag=1。 fuhao=4。/4表示除号已按 i=table1num。 write_date(0x30+i。P3=0xfd。if(P3!=0xfd delay(5。 if(P3!=0xfd temp=P3&0xf0。 switch(temp case 0xe0:num=4。 break。 case 0xd0:num=5。 break。 case 0xb0:num=6。 break。 case 0x70:num=7。 break。 while(P3!=0xfd。 if(num=4|

7、num=5|num=6&num!=7/如果按下的是4,5或6 if(j!=0 write_com(0x01。 j=0。 if(flag=0/没有按过符号键 a=a*10+tablenum。 else/如果按过符号键 b=b*10+tablenum。 else/如果按下的是/ flag=1。 fuhao=3。/3表示乘号已按 i=table1num。 write_date(0x30+i。P3=0xfb。if(P3!=0xfb delay(5。 if(P3!=0xfb temp=P3&0xf0。 switch(temp case 0xe0:num=8。 break。 case 0xd0:num=9

8、。 break。 case 0xb0:num=10。 break。 case 0x70:num=11。 break。 while(P3!=0xfb。 if(num=8|num=9|num=10/如果按下的是1,2或3 if(j!=0 write_com(0x01。 j=0。 if(flag=0/没有按过符号键 a=a*10+tablenum。 else/如果按过符号键 b=b*10+tablenum。 else if(num=11/如果按下的是- flag=1。 fuhao=2。/2表示减号已按 i=table1num。 write_date(0x30+i。P3=0xf7。if(P3!=0xf

9、7 delay(5。 if(P3!=0xf7 temp=P3&0xf0。 switch(temp case 0xe0:num=12。 break。 case 0xd0:num=13。 break。 case 0xb0:num=14。 break。 case 0x70:num=15。 break。 while(P3!=0xf7。 switch(num case 12:write_com(0x01。a=0。b=0。flag=0。fuhao=0。/按下的是清零 break。 case 13: /按下的是0 if(flag=0/没有按过符号键 a=a*10。 write_date(0x30。 P1=0

10、。 else if(flag=1/如果按过符号键 b=b*10。 write_date(0x30。 break。 case 14:j=1。 if(fuhao=1write_com(0x80+0x4f。/按下等于键,光标前进至第二行最后一个显示处 write_com(0x04。 /设置从后住前写数据,每写完一个数据,光标后退一格 c=a+b。 while(c!=0 write_date(0x30+c%10。 c=c/10。 write_date(0x3d。 /再写= a=0。b=0。flag=0。fuhao=0。 else if(fuhao=2write_com(0x80+0x4f。/光标前进至第二行最后一个显示处 write_com(0x04。 /设置从后住前写数据,每写完一个数据,光标后退一格(这个照理说

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1