资源简介

使用C51语言进行在51单片机的设计

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include 
#include 
#define uint unsigned int 
#define uchar unsigned char
sbit pinRS=P2^0;
sbit pinRW=P2^1;
sbit pinE=P2^2;
#define pindata P0
#define clearscreen() writeinstruc(0x01)
#define cursorreturn() writeinstruc(0x02)
#define inputmode(temp) writeinstruc(temp)
//temp取值如下:
//0x04:减量方式,不移位
//0x05:减量方式,移位
//0x06:增量方式,不移位
//0x07:增量方式,移位
#define dispcontrol(temp) writeinstruc(temp)
//temp取值如下:
//0x08:显示关,光标关,闪烁关
//0x0c:显示关,光标关,闪烁关
//0x0d:显示开,光标关,闪烁开
//0x0e:显示开,光标开,闪烁关
//0x0f:显示开,光标开,闪烁开
#define dispshift(temp) writeinstruc(temp)
//temp取值如下:
//0x10:光标左移
//0x14:光标右移
//0x18:显示整体左移
//0x1c:显示整体右移
#define functionset(temp) writeinstruc(temp)
//temp取值如下:
//0x20:4位,1行,5*7
//0x24:4位,1行,5*10
//0x28:4位,2行,5*7
//0x2c:4位,2行,5*10
//0x30:8位,1行,5*7
//0x34:8位,1行,5*10
//0x38:8位,2行,5*7
//0x3c:8位,2行,5*10
#define setCGRAM_Add(address) writeinstruc(0x40|address)
#define setDDRAM_Add(address) writeinstruc(0x80|address)//短延时
//void shortdelay(uchar i);
//长延时
//void longdelay(uint i);
//P2口初始化
//void initP2(bit i);
//寄存器选择信号
//void setRS(bit i);
//读写操作控制
//void setRW(bit i);
//使能信号
//void setE(bit i);
//读BF以及AC的值
//uint read_BF_AC();
//判忙
//bit statuscheck();
//写指令函数
//void writeinstruc(uint instruc);
//写数据到RAM
//void writedata(uint data1);
//从RAM中读数据函数
//uint readdata(void);
//显示程序 X为行号,Y为列号,date为要显示的数据
//void dispcharacter(int xuint yuint data1);
//LCD复位函数
//void LCDreset();
#define uchar unsigned char
uchar k=0result1;
void shortdelay(uchar i)//短延时
{
for(;i>0;i--);
}
//长延时
void longdelay(uint i)
{
uint j;
for(;i>0;i--)
{for(j=100;j>0;j--);}
}
//延时程序
void delay(int i)
{int j;
for(;i>0;i--)
   for(j=0;j<100;j++);
}
//初试状态
void io_init()
{P1=0xff;
}
//?---------------------------键盘扫描部分-----------------------------//
unsigned char key_scan()
{ unsigned char key;
  unsigned char temp;
  uint flag;
  io_init();
   P1=0xf0;
   flag=0;
loop: temp=P1^0xf0;
   while(temp)
    {
     P1=0xfe;
     delay(1);
     if((P1&0xfe)!=0xfe)
     switch(P1)
     {
     case 0xee: key=0x11;flag=1;break;//读7键和值
     case 0xde: key=0x12;flag=1;break;
     case 0xbe: key=0x13;flag=1;break;
     case 0x7e: key=0x14;flag=1;break;//读除键的值
     }
  if(flag)
  goto exit;
  else
     P1=0xfd;
     delay(1);
     if((P1&0xfd)!=0xfd)
     switch(P1)
     {
     case 0xed: key=0x21;flag=1;break;
     case 0xdd: key=0x22;flag=1;break;
     case 0xbd: key=0x23;flag=1;break;
     case 0x7d: key=0x24;flag=1;break; //读4到乘的键值
     }
     if(flag)
  goto exit;
  else
     P1=0xfb;
     delay(1);
     if((P1&0xfb)!=0xfb)
     switch(P1)
     {
     case 0xeb: key=0x31;flag=1;break;
     case 0xdb: key=0x32;flag=1;break;
     case 0xbb: key=0x33;flag=1;break;
     case 0x7b: key=0x34;flag=1;break;//读1到减的键值
     }
     if(flag)
  goto exit;
  else
  P1=0xf7;
     delay(1);
     if((P1&0xf7

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-06-14 16:18  简易计算器\
     文件        9306  2012-10-14 22:10  简易计算器\0
     文件        8704  2012-10-14 22:10  简易计算器\0.c
     文件         157  2012-10-14 22:11  简易计算器\0.cfg
     文件       11859  2012-10-14 22:10  简易计算器\0.hex
     文件          31  2012-10-14 22:10  简易计算器\0.lnp
     文件       27044  2012-10-14 22:10  简易计算器\0.M51
     文件      152953  2012-10-14 22:11  简易计算器\000.png
     文件         958  2018-06-14 16:18  简易计算器\2.0.Opt
     文件         163  2018-06-14 16:13  简易计算器\2.0.plg
     文件        2070  2018-06-14 15:54  简易计算器\2.0.Uv2
     文件        1196  2018-06-14 15:50  简易计算器\2_0_Opt.Bak
     文件           0  2018-06-14 15:50  简易计算器\2_0_Uv2.Bak
     文件       90223  2018-06-14 09:25  简易计算器\Last Loaded 计算器.DBK
     文件        5115  2002-04-16 15:32  简易计算器\STARTUP.A51
     文件       11760  2018-06-14 15:54  简易计算器\STARTUP.lst
     文件         856  2018-06-14 15:54  简易计算器\STARTUP.obj
     文件       90223  2018-06-14 09:28  简易计算器\计算器.DSN
     文件         768  2018-06-14 15:47  简易计算器\计算器.PWI

评论

共有 条评论