资源简介
本设计以单片机为核心,用LCD12864显示编写而成的简易计算器,能实现10以内的加减乘除,硬件电路采用Protues搭建,程序采用Keil编写,用两者的连调实现计算器的效果。
代码片段和文件信息
#include “reg51.h“
#include
#include “ziku.h“
#define uchar unsigned char
uchar keyi=-4j=0a=0;
int suan[8]={00000000};
writedata (uchar dat);
writecmd(uchar cmd);
LCDInitialize();
Show(uchar Pageuchar Lineuchar Widthuchar *Row);
ShowGraph(uchar Pageuchar Lineuchar Widthuchar Highuchar *Graph);
Showchinese(uchar pageuchar lineuchar *p);
Showshu(uchar pageuchar lineuchar *q);
void delayms(uchar ms)
{
uchar i;
while(ms--)
{
for(i=0;i<60;i++);
}
}
uchar keyscan(void)
{
uchar scantemp;
P1=0xf0;
if((P1&0xf0)!=0xf0)
{
delayms(1000);
i=i+4;j=j+1;
delayms(10);
if(j>7) j=0;
if(i>24) i=-4;
if((P1&0xf0)!=0xf0)
{
scan=0xfe;
while((scan&0x10)!=0)
{
P1=scan;
if((P1&0xf0)!=0xf0)
{temp=(P1&0xf0)|0x0f;
return((~scan)+(~temp));
}
else scan=(scan<<1)|0x01;
}
}
}
return(0);
}
jisuan()
{
int n;
if(a==1)
{ n=suan[1]/suan[5];
delayms(10);
Showshu(540&shuzi[15*16]);
Showshu(548&shuzi[n%10*16]);
}
else
if(a==2)
{ n=suan[1]*suan[5];
delayms(10);
Showshu(540&shuzi[n/10*16]);
Showshu(548&shuzi[n%10*16]);
}
else
if(a==3)
{ n=suan[1]-suan[5];
delayms(10);
Showshu(540&shuzi[15*16]);
Showshu(548&shuzi[n%10*16]);
}
else
if(a==4)
{
n=suan[1]+suan[5];
delayms(10);
Showshu(540&shuzi[n/10*16]);
Showshu(548&shuzi[n%10*16]);
}
}
main(void)
{
LCDInitialize();
Showchinese(00qing);
Showchinese(016shu);
Showchinese(032ru);
Showchinese(048maohao);
ShowGraph(080324Pig);
while(1)
{ int m;
key=keyscan();
switch(key)
{
case 0x11: Showshu(5i&shuzi[7*16]);suan[j]=7;break;
case 0x12: Showshu(5i&shuzi[4*16]);suan[j]=4;break;
case 0x14: Showshu(5i&shuzi[1*16]);suan[j]=1;break;
case 0x18: for(m=0;m<7;m++)
{ Showshu(58*m&shuzi[15*16]);}
i=24;j=7;break;
case 0x21: Showshu(5i&shuzi[8*16]);suan[j]=8;break;
case 0x22: Showshu(5i&shuzi[5*16]);suan[j]=5;break;
case 0x24: Showshu(5i&shuzi[2*16]);suan[j]=2;break;
case 0x28: Showshu(5i&shuzi[0*16]);suan[j]=0;break;
case 0x41: Showshu(5i&shuzi[9*16]);suan[j]=9;break;
case 0x42: Showshu(5i&shuzi[6*16]);suan[j]=6;break;
case 0x44: Showshu(5i&shuzi[3*16]);suan[j]=3;break;
case 0x48: Showshu(5i&shuzi[14*16]);suan[j]=0;jisuan();break;
case 0x81: Showshu(5i&shuzi[10*16]);a=1;break;
case 0x82: Showshu(5i&shuzi[11*16]);a=2;break;
case 0x84: Showshu(5i&shuzi[12*16]);a=3;break;
case 0x88: Showshu(5i&shuzi[13*16]);a=4;break;
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 100460 2011-02-04 14:03 计算器\jisuan.DSN
文件 1054 2011-02-06 10:42 计算器\jisuan.PWI
文件 100460 2011-02-04 14:03 计算器\Last Loaded jisuan.DBK
文件 18953 2011-02-06 09:55 计算器\s
文件 67 2011-02-06 09:55 计算器\s.lnp
文件 16409 2011-02-06 09:55 计算器\s.M51
文件 1609 2011-02-06 09:56 计算器\s.Opt
文件 174 2011-02-06 10:05 计算器\s.plg
文件 2191 2011-02-04 17:07 计算器\s.Uv2
文件 6376 2005-03-22 15:22 计算器\STARTUP.A51
文件 14048 2011-02-06 09:55 计算器\STARTUP.LST
文件 749 2011-02-06 09:55 计算器\STARTUP.OBJ
文件 1609 2011-02-06 09:52 计算器\s_Opt.Bak
文件 2157 2011-02-04 11:59 计算器\s_Uv2.Bak
文件 2715 2011-02-06 09:26 计算器\Text.c
文件 6015 2011-02-06 09:55 计算器\Text.LST
文件 12808 2011-02-06 09:55 计算器\Text.OBJ
文件 1538 2011-02-05 09:18 计算器\Text1.C
文件 4400 2011-02-06 09:55 计算器\Text1.LST
文件 8857 2011-02-06 09:55 计算器\Text1.OBJ
文件 2836 2011-02-06 09:55 计算器\ziku.h
目录 0 2011-02-06 10:42 计算器
----------- --------- ---------- ----- ----
305485 22
- 上一篇:Halcon找圆的中心坐标。
- 下一篇:3D工件STL格式
相关资源
- 单片机期末考试题目及答案详解
- c51单片机跑马灯单键控制
- 飞思卡尔S12单片机CCP源码
- PIC单片机 18B20温度传感器和六位数码
- 基于LabVIEW及单片机的温度测控系统设
- 基于51单片机的公交车语音报站系统
- 基于单片机万年历+温度+LCD12864 prote
- 基于单片机控制的CAN总线与RS-232转换
- 在Protues中怎样更改51单片机默认RAM大
- 单片机电子琴程序
- PID控制直流电机调速含proteus仿真
- 基于单片机的流量控制器设计
- 51单片机PWM细分控制步进电机的研究初
- 基于单片机的智能灯光控制器的设计
- Verilog HDL编写的FPGA LCD12864液晶显示代
- labview程序制作的计算器程序
- 52单片机控制TC35发短信程序
- 51系列单片机门禁源程序
- 51单片机超声波测距仪制作(电路,
- LCD12864汉字显示原理图及程序
- 单片机与手机WiFi通信
- 安卓简易计算器项目代码与文档
- 超声波电子测距仪 单片机
- 基于89C51制作光控灯
- 全自动洗衣机PROTUES仿真+源程序+完整
- 负指数分布排队模型计算器
- 汇编课设——一个win32计算器功能完整
- 用lex&yacc制作的计算器
- 带界面简单计算器程序Qt源代码
- 51单片机驱动DS1302时间模块+DS18B20温度
评论
共有 条评论