资源简介
本设计以单片机为核心,用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格式
相关资源
- 51 单片机 红外避障小车 大集合136
- STC8951系列单片机中方指南
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 电脑卡西欧计算器 fx-991CN X Emulator19中
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- 51单片机PWM程序,占空比、周期可调整
- 单片机和adc0809数字电压表
- PIC单片机完成的电子密码锁
- 单片机、ADC0808809设计简易数字电压表
- 51单片机多功能自行车测速仪
- 单片机做的6位时分秒数字钟
- 单片机电子时钟 闹钟 日历
- 音乐代码转换软件 单片机编程时用
- 单片机课程设计 篮球计分器
- 卡西欧工程计算器模拟器Casio FX
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 单片机与温度传感器DS18B20的程序设计
- 51单片机基于protues的几个仿真实例
- 基于52单片机的直流电压测量
- 38k单片机红外发送代码、keil
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 武汉理工大学 单片机课程设计 16*16点
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- 浙江工业大学2005-2006学年单片机习题
评论
共有 条评论