毕业设计_基于C51单片机的简易计算器的设计演示PPT祥解.pptVIP

毕业设计_基于C51单片机的简易计算器的设计演示PPT祥解.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
毕业设计_基于C51单片机的简易计算器的设计演示PPT祥解.ppt

键盘扫描 键盘扫描由P0口驱动。采用4*4键盘设计,满足设计要求的所有功能。 显示板 显示板电路原理图,使用MAX7219驱动数码管,它将单片机传送过来的显示信号进行解码,驱动数码管显示。具有亮度稳定,不闪烁,可达10MHz的扫描频率。显示信号传输用线少,适合把主板和显示板分开设计。接口定义为(只有VCC 5V电源输入,可以和单片机同源供电,GND端,LOAD数据装载输入端,CLK时钟输入端,和DIN串行数据输入端)。 MAX7219显示驱动IC 驱动显示接口 显示板供电口 显示亮度控制 两块7段四位数码管 主板原理图 软件部分设计 显示端口定义 //使用时应保证本计算器的输入数值与输出数值均不大于65536 数码管驱动芯片用的MAX7219,运算和键盘扫描用STC89C51 #include at89x51.h//调用库函数 unsigned char key,temp; #define DIN P1_0 //串行数据输入引脚 #define CLK P1_1 //同步时钟 #define LOAD P1_2 //数据输入使能 键盘扫描子程序 数据发送子程序 //-------数据发送子程序---------------- void send(unsigned char addr,unsigned char dat) { unsigned char ADS,i,j; LOAD=0; i=0; while(i16) { if(i8) ADS=addr; else ADS=dat; for(j=8;j=1;j--) { DIN=ADS0x80; ADS=1; CLK=1; CLK=0; } i+=8; } LOAD=1; } //驱动MAX7219,将显示代码传送给MAX7219. 数据显示子程序 n0=n n1=(n/1000000)%10; n2=(n/100000)%10; n3=(n/10000)%10; n4=(n/1000)%10; n5=(n/100)%10; n6=(n/10)%10; n7=n%10; //传输数据的编码 //--------数据显示子程序-------------------- void display(unsigned long int n) { unsigned char n0; unsigned char n1; unsigned char n2; unsigned char n3; unsigned char n4; unsigned char n5; unsigned char n6; unsigned char n7; 主函数(运算主程序) //-----------主函数----------- void main(void) { unsigned long int first; unsigned long int second; unsigned long int result;//最终运算结果 unsigned char op;//用来存储+、-、*、/操作符键的值 unsigned char flag,flag1; P3_4=0; LOOP: first=0;second=0;result=0;op=0;flag=1;flag1=0; display(0); while(1) { KeyScan(); if(key11key0flag==1) { if(key==10) key=0; first=first*10+key;key=0; display(first); } delay10ms(30); KeyScan(); if(key12key=16) { op=key;key=0; flag=2; 主函数(运算主程序) KeyScan(); if(key11key0flag==2) { if(key==10) key=0; second=second*10+key;key=0; display(second); flag1=1; } delay10ms(30); KeyScan(); if(key==12flag1==1) { switch(op) { case 13:result=first+second;break; case

文档评论(0)

基本资料 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档