1、4、整体电路图见下图分析可知共分为七个模块:键盘扫描部分,定义各个位置上的键值部分,延迟部分,存贮部分,液晶显示部分,运算部分,动态显示部分。三、主程序流程图如下:判断是否有键按下否有按下数字键则将键值存入指定内存单元,并在液晶上显示出来,若是第二次则须完成四则运算并将结果保存在指定内存单元按下加减乘除四个功能按键时,将数码管显示清零,以等待下一个数字键值输入若按下的是等号键时,则要将运算结果在数码管上显示出来液晶显示电路,将各种输入值和运算结果显示出来键盘扫描2、整体C语言程序见附录3、Keil C编译器使用的简要介绍1使用时要注意以下两点:每一个实习都建立一个项目;把同一个项目的所有程序都
2、存储在同一个子目录中。2建立一个项目的详细步骤:1)建立新项目 用户进入Keil C之后,建立新项目的方法是在主菜单下单击ProjectNew Project,在新出现的窗口中输入新项目所在的目录和新项目的名称,单击“保存”,在弹出的窗口中选择所需的单片机,单击确定 ,并在新弹出的窗口中选择“否”。此时Project Workspace中已加入了Target1。2)创建一个新的程序文件 在主菜单中单击FileNew,即可以创建一个新程序文件,此时会出现一个文字输入窗口,我们可以在窗口中输入程序。输入程序后,必须保存文件,单击FileSave As。保存时文件名可任选,但后缀一定要是C。3)在项
3、目中加入程序文件 上面所输入的程序尚未加入项目文件中,要想在项目中加入程序文件,必须在Project Workspace中右击Source Group1,接下来再单击Add Files to GroupSource Group1,输入想要添加的程序文件。4)修改所建立的输出文件 这一步是要设置所创建的输出文件。略5)编译并创建烧录文件 在主菜单下,单击ProjectBuild Target,就可以编译程序并创建烧录文件。6)最后将上步创建的.HEX文件添加到单片机中,运行,验证试验结果。4、proteus仿真软件简要介绍 Proteus是一款应用广泛的单片机仿真软件,它可以和Keil C编译器
4、实现联调,拥有丰富的、高仿真度的芯片资源,功能强大。下面简要介绍一下本实验中要用到的一些常用的基本的操作:绘制原理图:正确的操作是:用左键放置元件;右键选择元件;双击右键删除元件;右键拖选多个元件;先右键左键编辑元件属性;先右键后左键拖动元件;连线用左键,删除用右键;改连接线:先右击连线,再左键拖动;中键放缩原理图。添加仿真文件先右键单击STC89C52再左键,出现如下窗口:在Program File中单击出现文件浏览对话框,找到jisuanqi_C.hex文件,单击确定完成添加文件 整体仿真电路图:使用STC_ISP软件将生成的.hex文件下载到单片机里面。四 设计心得体会 本次调查设计给我
5、最大的感受是自己,对很多元器件了解不够,特别是软件编程方面的能力很欠缺,亟待加强。硬件方面:由于一开始没有考虑到学校的实际情况,在向单片机里烧程序的时候AT89C52遇到了很大的困难,不得不换成STC89C52RC。还有在调节控制lcd显示亮度的电位器的时候,没有调到有效的电位,没不能显示任何数字,就这一个问题困扰了我好几天,这也不得不说是一个遗憾。 按照电路图焊接各个元器件时应先根据电路图整体规划,由于有几种版子而有些可能要少接些线,所以布局也不同,由于我的大意,我所焊的那种就要多接八根线,这也很影响试验结果,另外也不美观。在焊接时特别要注意锡不能太多,否则易发生短路,焊接完后最好能再利用万
6、用表进行检测。通过本次实验,我也了解了proteus仿真软件的使用,学会使用Keil C编译工具进行编程和编译,更重要的是知道自己的不足之处,让我在最后的一年里找到学习的方向,为以后的就业和学习指明了道路,使我受益匪浅!在此我特别感谢指导我们的老师。附程序:#include /头文件#define uint unsigned int / #define uchar unsigned charsbit lcden=P23; /定义引脚sbit rs=P24;sbit rw=P20;sbit busy=P07;char i,j,temp,num,num_1;long a,b,c; /a,第一个数
7、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) / 延迟函数uchar y;for(z;z0;z-) for(y=0;y0) c=a-b; else c=b-a; if(a-b write_date(0x2d); else if(fuhao=3)write_com(0x80+0x4f); c=a*b; else if(fuhao=4)write_com(0x80+0x4f); i=0; c=(long)(float)a/b)*1000); i+; if(i=3) write_date(0x2e); if(a/b case 15:write_date(0x30+table1num);flag=1;fuhao=1;main()init();while(1) keyscan();
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1