51单片机计算器(5)

2019-04-22 22:34

湖北师范学院物理与电子科学学院13级单片机课程设计

}

//************************************************************************/

// 描述: 1602液晶写指令

//************************************************************************/

void write_com(uchar com) //1602液晶写指令 { }

//************************************************************************/

// 描述:1602液晶写数据

//************************************************************************/

void write_date(uchar date) //1602液晶写数据 {

for(j=0;j<113;j++) ;

//执行113次循环

rs=0; //写指令 lcden=0; //使能1602 P0=com; //写入指令com LCD_Delay_ms(1); //延时1ms lcden=1; //使能1602 LCD_Delay_ms(2); //延时2ms lcden=0; //使能1602

rs=1; //写数据 lcden=0; //使能1602 P0=date; //写入数据date LCD_Delay_ms(1); //延时1ms

18

湖北师范学院物理与电子科学学院13级单片机课程设计

}

//************************************************************************/

// 描述:指定x,y写入字符函数

//************************************************************************/

void W_lcd(unsigned char x,unsigned char y,unsigned char Data) { }

//指定x,y写入字符串函数

void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) {

if (y == 0){write_com(0x80 + x);} else{write_com(0xC0 + x);} while (*s) {write_date( *s); s++;} }

//************************************************************************/

// 描述:初始化液晶,及画面初始化

//************************************************************************/

void init_lcd(void) //初始化液晶,及画面初始化

19

lcden=1; //使能1602 LCD_Delay_ms(2); //延时2ms lcden=0; //使能1602

if (y == 0){write_com(0x80 + x);} //第一行 else{write_com(0xc0 + x);} //第二行 write_date( Data); //写入数据

//第一行 //第二行 //

//写入数据

湖北师范学院物理与电子科学学院13级单片机课程设计

{ }

//************************************************************************/

// 描述: 反转法键盘扫描

//************************************************************************/

short keycheckdown() {

wela=0; //写液晶 lcden=0; //使能1602

write_com(0x38); //8 位总线,双行显示,5X7 的点阵字符 LCD_Delay_us(100); //延时100us

write_com(0x0c); //开显示,无光标,光标不闪烁 write_com(0x06); //光标右移动 write_com(0x01); //清屏

write_com(0x80); //DDRAM 地址归0

/* 反转法键盘扫描 */

short temp1,temp2,temp,a=0xff; P1=0xf0;

/* 输入行值(或列值) */ /* 延时 */

/* 读列值(或行值) */

LCD_Delay_ms(20); temp1=P1; P1=0xff;

LCD_Delay_ms(20); P1=0x0f;

/* 延时 */

/* 输入列值(或行值) */ /* 延时 */

/* 读行值(或列值) */

LCD_Delay_ms(20); temp2=P1; P1=0xff;

temp=(temp1&0xf0)|(temp2&0xf); /* 将两次读入数据组合 */

20

湖北师范学院物理与电子科学学院13级单片机课程设计

}

void display_a() //显示数据a

21

switch(temp) {

/* 通过读入数据组合判断按键位置 */

case 0x77 :a=0x0d;break;// 按键/ case 0x7b :a=0x0e; break;// 按键= case 0x7d :a=0; break;// 按键0 case 0x7e :a=0x0f; break;// 按键CE

case 0xb7 :a=0x0c;break;// 按键* case 0xbb :a=0x9;break; // 按键9 case 0xbd :a=0x8;break; // 按键8 case 0xbe :a=0x7;break; // 按键7

case 0xd7 :a=0x0b;break;// 按键- case 0xdb :a=0x6;break; // 按键6 case 0xdd :a=0x5;break; // 按键5 case 0xde :a=0x4;break; // 按键4

case 0xe7 :a=0x0a; break;// 按键+ case 0xeb :a=3;break; case 0xed :a=2;break; case 0xee :a=1;break;

// 按键3 // 按键2 // 按键1

}

default :a=0xff;

return a; /* 返回按键值 */

湖北师范学院物理与电子科学学院13级单片机课程设计

{ }

void display_b() //显示数据b {

if(data_b>999){ write_date('0'+dispaly[3]); } //显示千位 if(data_b>99) { write_date('0'+dispaly[2]); } //显示百位 if(data_b>9) { write_date('0'+dispaly[1]); } //显示十位 }

//计算结果 void display_c(x)

22

dispaly[3]=data_a000/1000; //千 dispaly[2]=data_a00/100; //百 dispaly[1]=data_a0/10; //十 dispaly[0]=data_a; //个

write_com(0x80+0); //显示数据a

if(data_a>999){ write_date('0'+dispaly[3]);} //显示千位 if(data_a>99){

write_date('0'+dispaly[2]);}

//显示百位

if(data_a>9){ write_date('0'+dispaly[1]);} //显示十位 write_date('0'+dispaly[0]); //显示个位

write_com(0x80+7); //第一行

dispaly[3]=data_b000/1000; //千 dispaly[2]=data_b00/100; //百 dispaly[1]=data_b0/10; //十 dispaly[0]=data_b; //个

write_date('0'+dispaly[0]); //显示个位


51单片机计算器(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:基于单片机的空调温度控制系统设计毕业论文(设计)word格式

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: