片机c语言计算器代码_第1页
片机c语言计算器代码_第2页
片机c语言计算器代码_第3页
片机c语言计算器代码_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、/8位液晶数码管显示的计算器,代码通俗易懂/用到数码管、矩阵键盘、中断三个模块#includereg52.h#includestdio.htypedef unsigned char uchar;typedef unsigned int uint;sbit Wei = P23;/定义74hc573d锁存器端口,控制数码管位码;sbit Duan = P22;/定义74hc573d锁存器端口,控制数码管段码;code uchar WeiMa = 0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f;/共阴数码管点亮位,从第0位到第7位,共8个;code u

2、int DuanMa = 0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/共阴数码管显示的值“09”;uchar DuanMaZhi8;/储存数码管显示值的全局变量;Timer_0();/数码动态扫描的定时器函数;Delay(uint t);/按键去抖的延迟函数;Key_1();/矩阵键盘扫描函数;Key_2();/矩阵键盘返回值函数;main()uchar n,i,L,F,T8,s;uint a = 0,b = 0;Timer_0();DuanMaZhi0 = DuanMa0;/复位后数码管显示“0”while(1)n

3、 = Key_2();/变量n存储函数返回值if(n != 0 xff)/检测到有返回值if(i = 0)for(s = 0;s 8;s+)DuanMaZhis = 0;/清除缓冲区if(8 = i) | (+ = n) | (- = n) | (x = n) | (/ = n) | (= = n)/检测到下列符号则代表输 /入结束;i = 0;if(F = 0) /第一个输入值赋给a;sscanf(T,%d,&a);/输入值存储到变量a,下同;F = 1;elsesscanf(T,%d,&b);for(s = 0;s 8;s+)Ts = 0;/清除缓存区的值; if(n != =)/判断是否

4、为等号,做下标记;L = n;elseF = 0;switch(L)/计算操作case +:a = a + b;break;case -:a = a - b;break;case x:a = a * b;break;case /:a = a / b;break;default:break;sprintf(T,%d,a);for(s = 0;s 8;s+)if(Ts = 0) /如果检测到null,则数码管不显示;DuanMaZhis = 0;else if(Ts = 0 x2d) /如果为负号则在段码显示负号;DuanMaZhis = 0 x40;elseDuanMaZhis = DuanMa

5、Ts - 0;/从ascall码计算数值L = 0; /全部清零;a = b = 0;for(s = 0;s 8;s+)Ts = 0;else if(i 16)Ti = n + 0;DuanMaZhii = DuanMan;/输出数据;i+;Key_1()/矩阵键盘翻转扫描uchar i,j;P1 = 0 x0f;if(P1 != 0 x0f)Delay(4500);/去除按键抖动;if(P1 != 0 x0f)i = P1;P1 = i | 0 xf0;j = P1 & 0 xf0;while(P1 & 0 xf0) != 0 xf0);return (i + j);return(0 xff

6、);Key_2()switch(Key_1()/根据扫描结果返回值给ncase 0 x7e:return 1 ;break;case 0 xbe:return 2 ;break;case 0 xde:return 3 ;break;case 0 xee:return +;break;case 0 x7d:return 4 ;break;case 0 xbd:return 5 ;break;case 0 xdd:return 6 ;break;case 0 xed:return -;break;case 0 x7b:return 7 ;break;case 0 xbb:return 8 ;bre

7、ak;case 0 xdb:return 9 ;break;case 0 xeb:return x;break;case 0 x77:return 0 ;break;case 0 xb7:return .;break;case 0 xd7:return =;break;case 0 xe7:return /;break;default:return 0 xff ;break;Timer_0() /定时器0初始化TMOD = 0 x01;TR0 = 1;ET0 = 1;EA = 1;Interrupt_0() interrupt 1 /数码管中断扫描;static uchar i = 0;TH0 = 0 xf8;TL0 = 0 x30;P0 = 0; /清除数码管缓存;Duan = 1;Duan

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论