发布时间 : 星期一 文章嵌入式实验报告更新完毕开始阅读
嵌入式系统开发设计实验
实验报告
姓名: 班级: 学号: 指导教师: 日期:
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);}