⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 speed.c

📁 我的课程设计 实现用键盘模拟汽车速度,并在数码管上显示.很简单的.
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <termios.h>
#include <sys/ioctl.h>
#include <unistd.h>
#define MAX_SPEED 150	//最大速度 

int speed;
//操作菜单 
void Menu()
{
	printf("\n---w: speed up ");
	printf("\n---s: slow down ");
	printf("\n---a: stop ");
	printf("\n---q: quit\n");
	reutrn ;
}
//读取键盘信息 
int getch()
{
    char ch;
    struct termios save, ne;
    ioctl(0, TCGETS, &save);
    ioctl(0, TCGETS, &ne);
    ne.c_lflag &= ~(ECHO | ICANON);
    ioctl(0, TCSETS, &ne);
    read(0, &ch, 1);
    ioctl(0, TCSETS, &save);
    return ch;
}

int main()
{
	int input, i, j;
	int fd;
	int ret;
	int spd;
	char buf[10];
	const int ledfont[] = {0x77/*0*/, 0x41/*1*/, 0x3b/*2*/, 0x6b/*3*/, 0x4d/*4*/,
                0x6e/*5*/, 0x7e/*6*/, 0x43/*7*/, 0x7f/*8*/, 0x6f/*9*/ };
	speed = 0;	//初始化速度 

	Menu();	
	fd=open("/dev/led",O_RDWR);
	if (fd<0)
	{
		printf("\nOpen device led error\n");
	}
	else
	{
		printf("\nOpen device led success\n");
	}

	for (j=0; j<4; j++)
		ret = ioctl(fd, j, ledfont[0]);
	ret = write(fd, buf, 10);
	input = getch();

	while(input != 'q')
	{
		switch (input)
		{
		case 'w':speed++;break;
		case 's':speed--;break;
		case 'a':speed = 0;break;
		default:break;
		}
		if (speed < 0)	//速度小于0时置0 
			speed = 0;
		if (speed > MAX_SPEED)	//速度大于上限时警告  
		{
			speed = MAX_SPEED;
			spd = speed;
			for (i=0; i<9; i++)	//闪烁 
			{
				for (j=0; j<4; j++)
					ret = ioctl(fd, j, 0x00);
				ret = write(fd, buf, 10);
				usleep(500000);
				for (j=0; j<4; j++)
					ret = ioctl(fd, j, ledfont[8]);
				ret = write(fd, buf, 10);
				usleep(500000);
			}
			printf("\nWARNING!");
			speed=0;//速度置0 
		}
		//write led
		spd= speed;
		for (i=0; i<4; i++)
		{
			ret=ioctl(fd,i,ledfont[spd%10]);
			spd = spd / 10;
		}
		ret=write(fd,buf,10);
		input = getch();
	}
	printf("\tcurrent speed: %d\n",speed);
	sleep(2);
	close(fd);
	exit(EXIT_SUCCESS);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -