




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2010届毕业生毕业论文题 目: 基于linux平台c语言的计算器设计 院系名称: 信息科学与工程学院 专业班级: 电子信息科学与技术06级0班 学生姓名: 关厅厅 学 号: 20064360115 指导教师: 焦素敏 教师职称: 副教授 2010年6月 2日43摘 要计算器是日常生活中经常用到的工具,能进行简单的四则运算和解决数据口算和笔算麻烦的问题,本设计主要分析了生活中数据运算的优缺点,通过计算机软件仿真研究了能进行快速简洁的运算,操作界面简单的计算器,为下一步的系统设计提供理论指导。本设计采用单片机作为控制芯片,用c语言进行编程,设计了一种能用于进行运算的计算器系统,采用c语言具有简洁
2、易懂,使用方便灵活,语法限制不太严格,程序设计自由度大,可移植性号等特点与基于linux系统稳定来编程、控制与显示。输入由6*6矩阵式键盘控制,输出采用人性化的sby12864k-zk型液晶实现,能显示数字和汉字。该计算器为多功能计算器,在未进行计算时,它是一个万年历时钟,并且带闹钟和星期显示,并且数据均可随时进行校准,校准数据采用的是独立式键盘,是将4*4矩阵式键盘的一根线拉低,然后读取与这根线交叉的4根线的所处状态来判断按键是否被按下,而这4个按键中只有3个按键用于万年历的校准和对闹钟的控制,另一个按键则用来切换进入计算模式。关键词: 计算器 linux c语言编程 单片机title de
3、sign of calculator c language based on linux platform abstract calculator is often used in the daily life of the simple tools, and then calculating and bisuan and data, the design of the problems mainly analyses the advantages and disadvantages of the data operation life through computer software si
4、mulation study, can rapid concise, simple interface for next calculator, provide theoretical guidance for the system design. this design uses singlechip as control chip, using c language programming, design a kind of calculator can be used for computing systems, using c language is simple, convenien
5、t and flexible use of concise, grammar is not too strict, program design of the number of portability, and based on the characteristics of linux system stability to programming, control and display. input by six * 6 matrix keyboard control, using humanized sby12864k output type lcd, zk - can display
6、 numbers and characters. this calculator for multifunctional calculator, calculation, it is a perpetual calendar, clock, and take alarm and show, and data are a week can calibrate, calibration data, it is the keyboard 4 * 4 matrix a line of the keyboard, then read and pulled low cross the line of th
7、e four thread state to judge whether the button is pressed, but these four buttons in only three buttons on the calendar for calibration and control of the clock, another button is used to switch into the calculation model.keywords: calculators linux c programming language scm目 录摘 要abstract1 绪论011.1
8、研究背景011.1研究现状012 系统设计032.1功能要求032.2 计算器的总体方案033 硬件设计053.1 单片机的设计053.2 电源设计093.3 键盘设计113.4 显示电路的设计124 软件设计144.1 液晶显示设计144.2 键盘输入设计174.3 计算器函数设计174.4 程序流程图18附录37使用说明38结论39致 谢40参考文献411 绪论 1.1研究背景最早的计算工具诞生在中国。中国古代最早采用的一种计算工具叫筹策,又被叫做算筹。这种算筹多用竹子制成,也有用木头,兽骨充当材料的约二百七十枚一束,放在布袋里可随身携带。直到今天仍在使用的珠算盘,是中国古代计算工具领域中
9、的另一项发明,明代时的珠算盘已经与现代的珠算盘几乎相同。17世纪初,西方国家的计算工具有了较大的发展,英国数学家纳皮尔发明的纳皮尔算筹,英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,成为现代社会应用广泛的计算工具。1642年,年仅19岁的法国伟大科学家帕斯卡引用算盘的原理,发明了第一部机械式计算器,在他的计算器中有一些互相联锁的齿轮,一个转过十位的齿轮会使另一个齿轮转过一位,人们可以像拨电话号码盘那样,把数字拨进去,计算结果就会出现在另一个窗口中
10、,但是只能做加减计算。1694年,莱布尼兹在德国将其改进成可以进行乘除的计算。此后,一直要到1950年代末才有电子计算器的出现。1.2研究现状数与计算是人们在日常生活中应用最多的数学知识,因此计算器就被广泛应用。计算器一般由运算器、控制器、存储器、键盘、显示器、电源和一些可选外围设备成。图1-1.计算器外观低档计算器的运算器、控制器由数字逻辑电路实现简单的串行运算,其随机存储器只有一、二个单元,供累加存储用。高档计算器由微处理器和只读存储器实现各种复杂的运算程序,有较多的随机存储单元以存放输入程序和数据。键盘是计算器的输入部件,一般采用接触式或传感式。为减小计算器的尺寸,一键常常有多种功能。显
11、示器是计算器的输出部件,有发光二极管显示器或液晶显示器等。除显示计算结果外,还常有溢出指示、错误指示等。 2系统方案设计2.1、功能要求根据所学知识,自行设计一个计算器,要求自行设计供电电源,该计算器能够实现加减乘除四则混合运算,能够实现连续计算。(1)该计算器能够实现浮点数的运算。(2)该计算器在不进行计算时能够当时钟用,并且该时钟可显示星期和日历,同时能够修改其值。(3)该计算器能够实现加减乘除以外的其他运算。2.2计算器的总体方案本设计主要采用以下基本模块来实现,控制器模块,输入模块,输出模块和电源模块。根据设计要求,控制器的选择有大致一下以下三种方案。方案一:采用计算器专用芯片实现。用
12、计算器专用芯片进行设计并编程实现。这种设计方案计算效率高、速度快、而且成本也相对较低,是厂家做计算器的最佳方案。但是本人对计算器专用芯片掌握的不够,还不足以实现设计计算器,所以这个方案不可去。方案二:采用fpga(现场可编程门阵列)作为系统的控制器。fpga将所有器件集成到一块芯片上,体积小,节省空间,提高了稳定性;直接面向用户,具有极大的灵活性和通用性,使用方便,硬件测试和实现快捷,开发效率高,工作可靠性好。可以实现各种复杂的逻辑功能,规模大,密度高,采用并行的输入输出方式,系统处理速度高,适合作为大规模实时系统的控制核心。由fpga内部编程实现计算器功能,本设计对数据处理速度的要求不是很高
13、,fpga的高速处理的优势得不到充分的体现,由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物电路板布线复杂,加重了电路设计和实际焊接的工作。并且fpga的价格相对较高,性价比太低。方案三、用单片机实现。由于单片机集成了运算器电路、控制电路、存储器、中断系统、定时器/计数器以及输入/输出口电路等,所以用单片机设计控制电路省去了很多分立元器件。由于单片机是可编程芯片,并且它可以运用c语言编写,对于一些复杂的计算功能,可以调用c语言库函数。使编写程序变得非常简单。所以该课题用单片机实现,不仅功能易于实现,而且精确度高,稳定性好,抗干扰能力强。并且由于其成本低、体积小、技术成熟和功耗小等优点
14、,且技术比较成熟。性价比也相当高。更重要的是本人经过几年的学习,对单片机已有深刻的理解,并且可以灵活运用。综上所述,并通过各个方面综合比较为达到最佳效果。我们采用方案三利用单片机控制器。其中单片机作为主控设备对采集输入信号后并进行处理,最后通过输出设备输出给使用者,该系统的结构框图如图。图2-1. 系统组成方框图3硬件设计3.1单片机的设计 本次设计采用的是at89s52型号的单片机,是一种低功耗,高性能cmos8位微控制器,具有8k在系统可编程fash存储器。使用atmel公司高密度非易失性存储器技术制造,与工业80c51产品指令和引脚完全兼容。片上flash允许程序存储器在系统可编程,亦适
15、于常规编程器。在单芯片上,拥有灵巧的8位cpu和在系统可编程flash,使得at89s52为众多嵌入式控制应用系统提供高灵活,超有效的解决方案。它具有以下标准功能:8k字节flash,256字节ram,32位i/o口线,看门狗定时器,2个数据指针,三个16位定时器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外at89s52可降至0hz静态逻辑操作,支2种软件可选择节电模式。空闲模式下,cpu停止工作,允许ram,定时器,串口,中断继续工作。掉电保护方式下,ram内容被保护,震荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。引脚说明:vcc:供电电压。gnd:接地
16、。p0口:p0口为一个8位漏级开路双向i/o口,每脚可吸收8ttl门流。当p1口的管脚第一次写1时,被定义为高阻输入。p0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在fiash编程时,p0 口作为原码输入口,当fiash进行校验时,p0输出原码,此时p0外部必须被拉高。p1口:p1口是一个内部提供上拉电阻的8位双向i/o口,p1口缓冲器能接收输出4ttl门电流。p1口管脚写入1后,被内部上拉为高,可用作输入,p1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在flash编程和校验时,p1口作为第八位地址接收。 p2口:p2口为一个内部上拉电阻的8位双向i/o口
17、,p2口缓冲器可接收,输出4个ttl门电流,当p2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,p2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。p2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,p2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,p2口输出其特殊功能寄存器的内容。p2口在flash编程和校验时接收高八位地址信号和控制信号。p3口:p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部
18、下拉为低电平,p3口将输出电流(ill)这是由于上拉的缘故。p3口也可作为at89s52的一些特殊功能口,p3口同时为闪烁编程和编程校验接收一些控制信号。rst:复位输入。当振荡器复位器件时,要保持rst脚两个机器周期的高电平时间。ale/prog:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在flash编程期间,此引脚用于输入编程脉冲。在平时,ale端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ale脉冲。如想禁止ale的输出可在sfr8eh地址上置0。此时,
19、 ale只有在执行movx,movc指令是ale才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ale禁止,置位无效。/psen:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/psen有效。但在访问外部数据存储器时,这两次有效的/psen信号将不出现。/ea/vpp:当/ea保持低电平时,则在此期间外部程序存储器(0000h-ffffh),不管是否有内部程序存储器。注意加密方式1时,/ea将内部锁定为reset;当/ea端保持高电平时,此间内部程序存储器。在flash编程期间,此引脚也用于施加12v编程电源(vpp)。xtal1:反向振荡放大器的输入及内部
20、时钟工作电路的输入。xtal2:来自反向振荡器的输出。图3-1. 单片机的内部结构方框图时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。在mcs-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚x1,输出端为引脚x2,在芯片的外部跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。 此电路采用12mhz的石英晶体。时钟电路如下图:图3-2.时钟电路复位是单片机的初始化操作,其主要功能是把pc初始化为0000h,使单片机从0000h单元开始执行程序。除了进入系统
21、的正常初始化之外,当由于程序运行出错或操作错误是系统处于死锁状态时,为摆脱困境,也需要按复位键以重新启动。rst引脚是单片机复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期(即2个机器周期)以上,若使用频率为12mhz的晶振,则复位信号持续时间应超过4s才能完成复位操作。复位操作有上电自动复位和按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的。按键电平复位是通过使复位端经电阻与vcc电源接通而实现的。在本设计中采用了按键电平复位方式,其复位电路如下图图3-3.复位电路下载口电路以一块74hc373芯片为主,电路原理图如图2-4所示。由于电路中只用了一
22、片74hc373所以完全可以把电路装在db25插针式并口插头内部,这个可以做到很小巧,可以很方便的使用。为了稳定也可以芯片外围加一些电阻、电容等元件,具体电路网上有提供下载。光是做好下载线是不行的,s51系统的isp下载方式还要求要下载程序单片机运行在最小化系统中。只要把的相应引脚连接起来就可以对s51进行isp下载了。要接的引线是s51的6,7,8,9,20,40引脚。晶振可以在3m24m间选用,当然是看你的目标板而选择。为了方便使用我们需要做一个下载头,电路简单接线正确的话一般无需要调整就可以正常使用,如有问题可以用软件中的isptest.exe(下载线调试程序) 检查你的74hc373芯
23、片是否正常和你的电脑并口是否正常。 图3-4接口电路3.2电源设计由于本次设计中单片机工作电源为5v,所以需要稳压,对于5v电源目前市场有以下两种设计方案。方案一:用固定式三端稳压器7805。如图,7805系列稳压器输出固定的正电压5v,输入端接电容c1可以进一步滤除纹波,输出端接电容c2能改变负载的瞬态影响,使电路稳定工作c1、c2最好采用漏电流小的钽电容。如果采用电解电容,则电容要比图中数值增加10倍。 图3-5. 固定式三端稳压器方案二:用7805加一些外围器件。虽然7805三端集成稳压管内部有过流、过热和安全区的保护电路,但其输出仍有可能发生过压的危险。因此本电路加了过压保护电路,电路
24、如图1-6所示,该电路由稳压管vd3、电阻r3和晶闸管vs组成。另外由于7805的最大输出电流为1.5a,可以通过在7805的1脚与vt1的基极相连,7805的2脚与vt1的集电极相连,这样就可输出1.6a2a的电流。如需更大的电流,可再并联几个大功率三极管。 图3-6. 可扩流过压保护5v稳压电源综上所述,方案一电路简单,而且已符合本次设计的要求,再加上第二种方案所用元件较多,性能价格比不高,所以我们选择方案一,基于本次设计我们需要5v和12v电源。3.3键盘设计 方案一:独立键盘。独立键盘为一端接地,另一端接i/o口,并且要接上拉电阻。这种键盘的硬件都很容易实现,但每一个按键就要用一个i/
25、o口,非常的浪费单片机的i/o口资源,不适合本次设计。方案二:通过ps2协议用键盘同单片机相接,从而实现单片机与键盘通信。其电路如图1-8所示。现在pc机广泛采用的ps/2接口为minidin 6引脚的连接器。1数据线(data);未用;3电源地(gnd);4电源(+5 v);5时钟(clk);6未用。 图3-7. 键盘与单片机接口图由此图可知,使用键盘硬件结构比较简单,但键盘的体积太大,所以此系统不采用此方案。方案三:自制编码键盘。编码键盘的电路如图1-9所示,这种键盘有编程简单,占用资源少,但其硬件比较复杂,要用很多的二极管,不是很理想。 图3-8. 自制编码键盘电路图方案四:4*4矩阵式
26、键盘。其电路图如图所示,这种键盘的硬件简单,使用的i/o口也不多,而且这种键盘的编程方法已很成熟。所以本次设计采用这种矩阵式键盘。其电路图如图图3-9. 4*4矩阵式键盘电路图3.4显示电路的设计显示电路目前市场上有以下方案选择:方案一:数码管显示方案。数码管显示使用两个四位一体动态数码管显示方案,此设计电路如图2-1所示。采用动态数码管显示,具有程序简单, 对外界环境要求低,易于维护,同时其精度比较高,精确可靠,操作简单。显示直观的特点。但只能显示数字和一些代码,不能显示汉字及一些常用的符号,且硬件设计较复杂。方案二:采用汉字图形点阵液晶显示器显示方案。rt12864m汉字图形点阵液晶显示模
27、块,可显示汉字及图形。供电电源为3.3v+5v(内置升压电路,无需负压),能采用并行和串行两种通信方式。并有光标显示、画面移位、自定义字符、睡眠模式等功能。图3-10.两个四位一体数码电路图4软件设计本设计中采用c语言对单片机进行编程。采用的是自下而上的设计方式,先设计出每一个模块(子程序),然后再慢慢扩大,最后组成整个系统。4.1液晶显示设计本次设计我采用液晶来作显示模块。对这种器件只要会看时序图,那么所有的问题都会迎难而解。其时序图如图 图4-1 液晶读时序图 图4-2 液晶写时序图由时序图我们可以写出液晶的初始化函数、功能设置函数、清屏函数、写指令函数、写数据函数。/lcd初始化/voi
28、d lcd_int()ret=0;delay(10);ret=1;_nop_();psb=1; /将psb置1,通信方式为8bit数据并口/_nop_();/lcd功能设置/void lcd_set()command=0x30; /基本指令集/write_command(command);command=0x01;write_command(command);command=0x06;write_command(command);command=0x0c;write_command(command);/清屏程序/void clear_lcd ()command=0x01;write_comma
29、nd(command);command=0x34;write_command(command);command=0x30;write_command(command); /写指令程序/ void write_command(uchar command)delay(5);rs=0;rw=0;p0=command;en=1;_nop_();_nop_();en=0;/写数据程序/void write_data(uchar data0) delay(5);rs=1;rw=0;p0=data0;en=1;_nop_();_nop_();en=0;4.2键盘输入设计这里我先用4*4矩阵式键盘。键盘扫描函
30、数如下:/键扫描程序/uchar keyscan()uchar scancode,tmpcode; p1=0xf0; / 行全为0 if(p1&0xf0)!=0xf0) /有键按下 delay(100); /延时去抖动 if(p1&0xf0)!=0xf0) /判是否真的有键按下 scancode=0xfe; /逐行扫描 while(scancode&0x10)!=0) p1=scancode; if(p1&0xf0)!=0xf0) /本行有键按下 tmpcode=(p1&0xf0)|0x0f; /返回特征字节码,为1的位即对应于行和列 return(scancode)+(tmpcode); e
31、lse scancode=(scancode1)|0x01; /行扫描码左移一位 return(0); /无键按下,返回值为04.3计算器函数设计计算器的设计是本次设计的重点。因为考虑到该硬件中只有16个按键,所以我采用了按键复用的方式来解决这一难题。这16个键分别是09十个数字键。四个运算符号键,一个小数点键,一个多功能键。这个多功能键单击时为“=”,双击时为请零键,三击时为运算类型选择键。在待机时,该计算器显示万年历,如果要进行计算则按任意键即可进入计算界面。默认的计算是加减乘除,如果说要进行加减乘除以外的运算,那么就三键等号键,就可进入运算类型选择模式。4.4程序流程图 图4-3 主程序
32、流程图图4-4 显示程序流程图图4 -5键扫程序流程图附录c语言程序#include #include #include #include #define uchar unsigned char#define uint unsigned int#define ulong unsigned long sbit rs=p20;sbit rw=p21;sbit en=p22;sbit psb=p23;sbit ret=p25;sbit rd=p37; sbit s=p10;sbit s1=p14;sbit s2=p15;sbit s3=p16;sbit s4=p17;uchar count,s1nu
33、m;unsigned int nin,ss;char yue,re,qi,shi,fen,miao;uchar dshi,dfen,dmiao,ling,aa,t1,p;uchar command,data0,data1,data2,com0,j,l;unsigned char command,data1,data2,com0,bb,bb0,aa,cc,i,yun;/uchar lcdh,lcdl,key; float ds,m,k;ulong ds0;bit flag,flag1,flag2,flag3,flag4;uchar disbuf9=0; /定义显示缓冲区/uchar code t
34、able=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2e;uchar code table1=0xc8,0xd5,0xd2,0xbb,0xb6,0xfe,0xc8,0xfd,0xcb,0xc4,0xce,0xe5,0xc1,0xf9;/日六/uchar code table2=0x32,0x30,0x30,0x39,0xc4,0xea,0x30,0x35,0xd4,0xc2,0x30,0x31,0xc8,0xd5; /年月日/uchar code table4=0xd0,0xc7,0xc6,0xda,0xc1,0xf9; /星期六/
35、uchar code tabping=32,29,32,31,32,31,32,32,31,32,31,32;uchar code tabrun=32,30,32,31,32,31,32,32,31,32,31,32;uchar code xing1=3,6,0,3,5,1,3,6,2,4,0,2;uchar code xing2=4,0,0,3,5,1,3,6,2,4,0,2;uchar xing12=0;uchar tab12=0; /延时/void delay(uint ms) /延时250us uchar i;while(ms-)for(i=0;i125;i+);/lcd初始化/voi
36、d lcd_int() ret=0;delay(3);ret=1;_nop_();psb=1; /将psb置1,通信方式为8bit数据并口/_nop_();/写指令程序/void write_command(uchar command)delay(3);rs=0;rw=0;p0=command;en=1;_nop_();_nop_();en=0;/写数据程序/void write_data(uchar data0) delay(3);rs=1;rw=0;p0=data0;en=1;_nop_();_nop_();en=0;/lcd功能设置/void lcd_set()command=0x30;
37、 /基本指令集/write_command(command);command=0x01;write_command(command);command=0x06;write_command(command);command=0x0c;write_command(command);/清屏程序/void clear_lcd ()command=0x01;write_command(command);command=0x34;write_command(command);command=0x30;write_command(command);void display()command=com0;wri
38、te_command(command);data2=lcdh;write_data(data2);data1=lcdl;write_data(data1);void display1(uchar y, uchar x, uchar *p) switch (y) case 1:write_command(0x7f+x); break; /液晶第一行case 2:write_command(0x8f+x); break; /0x90+(x-1)case 3:write_command(0x87+x);break;case 4:write_command(0x97+x);break;default:
39、break;while(*p) write_data(*p+); void xiaoshu() /先判断k是否为小数,如果k为小数,就将k转化为小数/uchar i;uint mg=1;if(flag1)for(i=0;icc;i+)mg*=10;k=k/(mg*1.0);cc=0;flag1=0;/键扫描程序/uchar keyscan()uchar scancode,tmpcode; p1=0xf0; / 行全为0 if(p1&0xf0)!=0xf0) /有键按下 delay(100); /延时去抖动 if(p1&0xf0)!=0xf0) /判是否真的有键按下 scancode=0xfe;
40、 /诼行扫描 while(scancode&0x10)!=0) p1=scancode; if(p1&0xf0)!=0xf0) /本行有键按下 tmpcode=(p1&0xf0)|0x0f; /返回特征字节码,为1的位即对应于行和列 return(scancode)+(tmpcode); else scancode=(scancode1)|0x01; /行扫描码左移一位 return(0); /无键按下,返回值为0disjia()com0=0x83;lcdh=0xbc;lcdl=0xd3;display();com0+; lcdh=0xb7;lcdl=0xa8;display();com0=0
41、x87;disjian()com0=0x83;lcdh=0xbc;lcdl=0xf5;display();com0+; lcdh=0xb7;lcdl=0xa8;display();com0=0x87;discheng()com0=0x83;lcdh=0xb3;lcdl=0xcb;display();com0+; lcdh=0xb7;lcdl=0xa8;display();com0=0x87;dischu()com0=0x83;lcdh=0xb3;lcdl=0xfd;display();com0+; lcdh=0xb7;lcdl=0xa8;display();com0=0x87;void jis
42、hu() /把ds0处理后放入显示缓冲区中/disbuf0=ds0/1000000000%10;disbuf1=ds0/100000000%10;disbuf2=ds0/10000000%10;disbuf3=ds0/1000000%10;disbuf4=ds0/100000%10;disbuf5=ds0/10000%10;disbuf6=ds0/1000%10;disbuf7=ds0/100%10;disbuf8=ds0/10%10;disbuf9=ds0%10;void disds()uchar i;com0=0x98;for(i=0;i10;i+)if(i%2=0) com0+;writ
43、e_command(com0); write_data(tabledisbufi);flag=0;com0=0x88;lcdh=0x20;lcdl=0x20;for(i=0;i16;i+) display();com0+;com0=0x87;zhixing()/计算/xiaoshu();if(bb0=1)switch (bb)case 1:ds=m+k;m=ds;k=0;break;case 2:ds=m-k;m=ds;k=0;break;case 3:ds=m*k;m=ds;k=0;break;case 4:ds=m/k;m=ds;k=0;break;default:break; else
44、if(bb0=2) switch (bb)case 1:m=m*3.1415926536;m=m/180.0;ds=sin(m);break; case 2:m=m*3.1415926536;m=m/180.0;ds=cos(m);break; case 3:m=m*3.1415926536;m=m/180.0;ds=tan(m);break; case 4:m=m*3.1415926536;m=m/180.0;ds=1.0/tan(m);break; default:break; lcdl=table1qi*2+1;display();void init()com0=0x7f; rd=1;n
45、in=2009;yue=5; re=1; qi=6;shi=7; fen=59;miao=55;dshi=6; dfen=30;dmiao=0;tmod=0x01;th0=(65536-46080)/256;tl0=(65536-46080)%256;ea=1;et0=1;tr0=1;lcd_int();lcd_set();for(j=0;j14;j+)if(j%2=0)com0+;command=com0;write_command(command);write_data(table2j);com0=0x92;lcdh=0xa1;lcdl=0xc3;display();com0=0x94;d
46、isplay();com0=0x99;display();com0=0x9b;display();shuc1(0x91,shi);shuc1(0x93,fen);shuc1(0x95,miao);shuc1(0x98,dshi);shuc1(0x9a,dfen);shuc1(0x9c,dmiao);com0=0x9e;lcdh=0xc4;lcdl=0xd6;display();com0=0x9f;lcdh=0xd6;lcdl=0xd3;display();com0=0x89;for(l=0;l6;l+)if(l%2=0)com0+;command=com0;write_command(comm
47、and);write_data(table4l); void ter0() interrupt 1uchar m,n;th0=(65536-46080)/256;tl0=(65536-46080)%256;t1+;if(nin%4=0)for(m=0;m12;m+)tabm=tabrunm;elsefor(n=0;n=60)miao=0;fen+;if(fen=60)fen=0;shi+;if(shi=24)shi=0;qi+;qix(0x8c,qi);re+;if(qi=7)qi=0;if(re=tabyue-1)re=1;yue+;if(yue=13)yue=1;nin+;if(nin=9999)nin=0;shuc2(0x80,nin);shuc1(0x83,yue);shuc1(0x85,re);shuc1(0x91,shi);shuc1(0x93,fen);shuc1(0x95,miao);if(shi=dshi&fen=dfen&miao=dmiao)flag3=1;if(flag3=1)ling+; rd=rd;if(ling=60|s2=0)flag3=0;rd=1; if(dfen=60)dfen=0;shuc1(0x9a,dfen);if(s1num
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 行政管理专科应试策略试题及答案汇聚
- 2025年经济法概论备考材料及试题答案
- 卫生资格考试热点话题试题及答案揭晓
- 2025年执业药师与公众健康的紧密联系试题及答案
- 指导患者用药的要点试题及答案
- 行政管理文化概论内容的扩展与试题及答案总结
- 自考行政管理经典试题及答案解析
- 护士执业考试试题及答案深层研究
- 行政管理法律解析试题与答案
- 理解国粹的试题及答案
- 计算机三级《Linux应用与开发技术》考试题库大全(含真题、典型题等)
- 环境因素识别评价表
- 家长会课件:中考前百日誓师家长会课件
- 固肾生发丸的质量控制和标准化
- 山东省济南市槐荫区2023-2024学年小学六年级语文毕业检测指导卷含答案
- MOOC 音乐导聆-山东大学 中国大学慕课答案
- 农行超级柜台业务知识考试题库(含答案)
- 农产品加工工艺培训PPT创新农产品加工工艺与技术
- 精神病患者藏药的护理措施
- 提高中医技术使用率品管圈课件
- 译林版英语一年级下教学计划各单元都有
评论
0/150
提交评论