在线时间434 小时
UID3066878
注册时间2014-12-11
NXP金币0
TA的每日心情 | 奋斗 2017-5-3 11:19 |
---|
签到天数: 10 天 连续签到: 1 天 [LV.3]偶尔看看II
金牌会员
 
- 积分
- 14090
- 最后登录
- 2024-4-19
|
昨天发了用KL25Z USB鼠标画圆,今天我们让KL25ZUSB鼠标写出“飞思卡尔”四个汉字。
对昨天的项目进行改造,引入库不变,还是mbed和USBDevice这两个库,新添加了三个函数:画点,画线,画文本。
让USB鼠标自己写“飞思卡尔”四个汉字,用到画文本函数,画文本函数又用到画点函数。画线的函数没有使用。以后再用,废话不多说看代码吧。
- #include <math.h>
- #include <stdlib.h>
- #include "mbed.h"
- #include "USBMouse.h"
- #define SCALE 120
- USBMouse mouse(ABS_MOUSE);
- //定义点
- struct Point
- {
- int16_t x;
- int16_t y;
- };
- //画圆
- void DrawCircle(Point basePoint,int32_t radius);
- //画线
- void DrawLine(Point startPoint,Point endPoint);
- //画点
- void DrawDot(Point targetPoint);
- //画点阵
- void DrawText();
- //定义全局变量
- Point origin; //圆心坐标
- //字体点阵
- uint8_t HZ_1 [4][32]= {{0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0x02,0xFE,0x40,0xA0,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0C,0x10,0x21,0x42,0xF0,0x00},
- {0x00,0x00,0xFE,0x92,0x92,0x92,0x92,0xFE,0x92,0x92,0x92,0x92,0xFE,0x00,0x00,0x00,0x40,0x38,0x01,0x00,0x3C,0x40,0x40,0x42,0x4C,0x40,0x40,0x70,0x05,0x08,0x30,0x00},
- {0x40,0x40,0x40,0x40,0x40,0x40,0xFF,0x44,0x44,0x44,0x44,0x44,0x44,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x02,0x04,0x08,0x10,0x00,0x00,0x00},
- {0x80,0x40,0x20,0x18,0x0F,0x08,0x08,0xE8,0x08,0x08,0x08,0x08,0x28,0x18,0x00,0x00,0x20,0x10,0x08,0x06,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x02,0x04,0x08,0x30,0x00}};
- int main()
- {
- //中心坐标
- origin.x = (X_MAX_ABS - X_MIN_ABS)/2;
- origin.y = (Y_MAX_ABS - Y_MIN_ABS)/2;
-
- int32_t radius = origin.y / 2;
- //画圆
- DrawCircle(origin,radius);
- //变换坐标
- origin.x -= 3500;
- origin.y -= 2500;
- //输出文字
- DrawText();
-
- while(1);
- }
- void DrawCircle(Point basePoint,int32_t radius)
- {
- int16_t x =0,y=0;
- int angle = 0;
-
- mouse.press(MOUSE_LEFT);
- wait(0.01);
- for(angle =0;angle<=360;angle++)
- {
- x = basePoint.x + radius * cos((double)angle * 3.14 / 180);
- y = basePoint.y + radius * sin((double)angle * 3.14 / 180);
- mouse.move(x,y);
-
- wait(0.01);
- }
- mouse.release(MOUSE_LEFT);
- wait(0.01);
- }
- void DrawLine(Point startPoint,Point endPoint)
- {
- wait(0.01);
- mouse.move(startPoint.x,startPoint.y);
- wait(0.01);
- mouse.press(MOUSE_LEFT);
- wait(0.01);
- mouse.move(endPoint.x,endPoint.y);
- wait(0.01);
- mouse.release(MOUSE_LEFT);
- wait(0.01);
- }
- void DrawDot(Point targetPoint)
- {
- mouse.move(targetPoint.x,targetPoint.y);
- wait(0.01);
- mouse.press(MOUSE_LEFT);
- wait(0.01);
- mouse.release(MOUSE_LEFT);
- wait(0.01);
- }
- void DrawText()
- {
- mouse.move(origin.x,origin.y);
- wait(0.01);
- for(int i=0;i<4;i++)
- {
- Point targetPoint;
- targetPoint.x = origin.x + i * 16 * SCALE;
-
- for(int j=0;j<32;j++)
- {
- targetPoint.x += SCALE;
- if(j == 15)
- targetPoint.x = origin.x + i * 16 * SCALE;
- if(j <= 15)
- {
- targetPoint.y = origin.y;
- }
- else
- {
- targetPoint.y = origin.y + 8 * (SCALE + 80);
- }
-
- for(int k=0;k<8;k++)
- {
- targetPoint.y += SCALE + 80;
- uint8_t dot = (HZ_1[i][j] >> k) & 0x01;
- if(dot)
- {
- DrawDot(targetPoint);
- }
- }
- }
- }
- }
复制代码 今天日了怪了,附件上传不上去,效果图看不到。
补个视频给大家看:
|
|