嵌入式实验报告

发布时间 : 星期一 文章嵌入式实验报告更新完毕开始阅读

嵌入式系统开发设计实验

实验报告

姓名: 班级: 学号: 指导教师: 日期:

2014年 11 月 12 日

北京邮电大学

人机接口实验

实验十九 键盘驱动实验

一、实验要求

基于键盘、数码管显示,综合设计完成键盘加减乘除运算,并在数码管上显示所键入的数字和计算结果,在终端上显示键入内容和计算结果。

二、代码

int main(void) {

int fd1; int fd2; int ret;

unsigned char buf[2] ; // int i;

int data[10]; double x; int num1; int num2; int sig; int ans; int ans_tmp;

int num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; int number[10]={0,1,2,3,4,5,6,7,8,9}; char pre_scancode = 0xff;

printf(\);

fd1 = open(DEVICE_NAME1, O_RDWR); fd2 = open(DEVICE_NAME2, O_RDWR);

// printf(\

if (fd1 == -1) {

printf(\,DEVICE_NAME1); }

else {

buf[0]=0x22; while (1) {

num1_in: while (1) {

}

signal_in: usleep(150000); read (fd1,buf,1); num1=0; num2=0; sig=0; ans=0;

if(buf[0]!= pre_scancode) {

if(buf[0]!=0xff)

data[0] = num[buf[0]];

printf(\,buf[0]);

if(buf[0]!=0) ret = write(fd2,data,1); }

pre_scancode = buf[0];

num1 = number[buf[0]]; if (num1!=0) {

printf(\,num1); buf[0]=0;

goto signal_in; } while(1) { usleep(150000); read (fd1,buf,1);

if(buf[0]!= pre_scancode) {

if(buf[0]!=0xff)

data[0] = num[buf[0]];

printf(\,buf[0]);

if(buf[0]!=0) ret = write(fd2,data,1); }

pre_scancode = buf[0]; sig = buf[0]; if (sig!=0) {

printf(\,sig); buf[0]=0;

num2_in:

get_ans:

// //

goto num2_in; } }

while(1) { usleep(150000); read (fd1,buf,1);

if(buf[0]!= pre_scancode) {

if(buf[0]!=0xff)

data[0] = num[buf[0]];

printf(\,buf[0]);

if(buf[0]!=0) ret = write(fd2,data,1); }

pre_scancode = buf[0]; num2 = number[buf[0]]; if (num2!=0) {

printf(\,num2); buf[0]=0; goto get_ans; }

usleep(50000); }

if (sig==19) ans=num1+num2; else if (sig==20) ans=num1-num2; else if (sig==21) ans=num1*num2; else if (sig==22) ans=num1/num2; else ans=ans; data[0]=num[ans]; write(fd2,data,1); if (ans_tmp!=ans) {

printf(\,ans); ans_tmp = ans; } else

ans_tmp = ans;

printf(\sleep(1); usleep(50000);}

联系合同范文客服:xxxxx#qq.com(#替换为@)