文档介绍:大连理工大学
本科实验报告
课程名称:
学院(系):
专业:
班级:
学号:
学生姓名:
年月日
实验项目列表
序号
实验项目名称
学时
成绩
指导教师
预习
操作
结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
总计
学分:
8位十进制整数计算器
实验报告
一、课题任务及要求
1
矩阵键盘功能分配:
S1~S10:1~9、0
S11:Backspace
S12:=
2. 独立按键功能分配:
:
1、两个操作数分别显示在两个行里;
2、十进制数的最大为数为8位;
3、运算符号显示在第二行最左边:开方、整除、倒数、正负用字母A、B、C、D显示;
4、可以退格;
5、连按两次=,清除显示;
二、程序清单
/********************************************************************************
* 描述: *
* 矩阵键盘1602液晶显示键值*
* 连接方法:JP8(P1) 与JP4(矩阵键盘接口) 连接*
* 矩阵键盘定义: *
* -,-*
* , *
* 注意:请将JP165短路冒断开*
* 作者:aaron *
* 时间:2013/6/20至2013/6/23 *
********************************************************************************/
#include<>
#include<>
#include<>
//公共函数和宏
#define uchar unsigned char
#define luint unsigned long
void delay(uchar x);//延时函数,x是几则代表延时几毫秒
uchar change(uchar key);//把数码转换成ascII码函数
void hand(uchar tem);//独立按键松手判断
uchar jump();//数字输入跳出函数,用在输入第一个数字之后,输入符号之前
void result(uchar *innum,uchar inlength);//结果输出函数
(uchar *innum,uchar length);//组合函数,把最开始输入的数组值转换成一个long unsigned int储存起来
uchar resolve(luint inlarnum,uchar *innum);//拆分函数,把一个long unsigned int转换成最开始输入的数组值储存起来
//1602函数、宏和位
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};//用在以下1602函数中延时用
void lcd_wcmd(uchar cmd);//写指令数据到LCD
void lcd_wdat(uchar dat);//写显示数据到LCD
void lcd_init();//LCD初始化设定
bit lcd_busy();//检查LCD忙状态
void lcd_pos(uchar pos);//设定显示位置
sbit LCD_RW = P2^5;
sbit LCD_RS = P2^6;
sbit LCD_EN = P2^7;
//矩阵键盘函数
uchar keydown(void);//键判断
uchar keyscan(void);//键扫描子程序
//void delay0(uchar x); //x* 不清楚用途!!!
//矩阵与lcd
uchar S1_S12(uchar hang,uchar *num3,uchar *S12_flag);
uchar S12clear(uchar *S12_flag);//清屏函数
//独立键盘
void sign_input(uchar sign);
uchar sign_display(uchar *innum,uchar inlength);//符号显示函数
//显示函数
uchar display();//液晶屏上显示函数
void move(uchar *innum,uchar inlength);//数字位移函数
//检测发光二级管位声明
sbit LED=P2^0;
//运