STM32F103 LCD抵抗LCD組込みシステムのアプリケーション「ファンディスク」プログラムは、アイデアを説明するための図を実装します

まず、全体的なシステム分析と設計

1、意義の話題

当然の組み込みハードウェアは、私のハードウェアで実際に特に興味を持って、しかし、画面または関心の一部に、素敵な、STM32F103 TFTLCD抵抗性タッチスクリーンを搭載し、最も近いI最初のプログラミングクラスで、私たちは自分自身を行うためにタッチスクリーンを使用することができると思います物事をやりたい、私は深く、特に覚えている感じを描く対称と呼ばれる「ファンディスク」の携帯電話アプリの前に再生、フルLCDスクリーン学習で自分の「ファンディスク」のいずれかを実行するために、この機会を活用しますこれらの対称的な美しさを実現するために、基礎となるコードに基づいて機能をタッチします。

 

2、分析を必要とします

 「ファンディスク」のAndroidアプリケーションストアのダウンロード:

約3の結果を図、そして最終的にはプロセス図を描き、需要が作ると、このような機能を実装することは非常に簡単です

     

 

最後に、図の描画のための処理は、グレー分割線は、描画ブロックを色を選択し、他のブロックは同一トラックにコピーされ、その後、いくつかのブロック電話の画面に分割されて見ることができ、描画処理において、これを開始連続同期ミラーリングドローの様々な素晴らしい経験です。

 

関係の解像度ため、手作りはそれほどデリケートではないかもしれないが、機能はこれにモードを切り替え、件名描画機能、色の選択を含め、可能な限り実現されています。

自家製の「ファンディスク」:

 

 

彼らは

中級対称性

対称4つのパーツ

9部は、(高い数学の知識を利用する)対称

 

に対応する9、2、4、8 RSTのシリーズ以上

       9部、対称、四つの部分、一部、一般に描画モード。

右下のブロック選択色は、(スイッチング遅延)の色を選択します

3、全体的なデザイン

   3.1 システム開発環境

(ヒューレットパッカードシャドウエルフ第2世代)Intel®i56500®4 2.0GHzの、16Gメモリ、1T + 128Gソリッドステートハードドライブ

マイクロソフトのWindows™10プロフェッショナル

Keil社の編集者

3.2 系统总体功能,系统的结构,模块图、每个功能的详细说明

说明: 在原有触摸功能框架下开发,就是上课桌面上那个主要功能均在“main.c”文件内,触屏功能、函数集中在“lcd.h”文件内,“touch.c”文件用来测试、实现触屏功能。

 

3.2.1 主函数设计

“main.c” 为主要设计模块,包含绘图逻辑、运算、调用绘图、触屏函数等。

其中

rtp_test() 函数为整体绘图的逻辑

Load_Drow_Dialog() 函数为界面功能界面加载函数

Load_Color_Block()函数为界面右下角的颜色选取区域。

其中各种子函数科学组合,形成主体功能。

“lcd.h”提供 绘图函数

“touch.c” 提供 触摸位置数据

 

3.2.2 模式设计

提供(也就是这个LCD屏幕左上角的选择个数——5个)

点击即可刷新屏幕,并且绘制对应分隔线,即调用Load_Drow_Dialog()

所有模式选择其实只是对一个flag变量的判断

各个flag值对应的模式

上图绘制分割线

模式加载通过flag 所以绘图的逻辑也是根据flag 来判断的

绘制曲线轨迹函数

其中,九部对称绘图 的方法有别于其他有规则角度对称的方式,完全利用三角函数来计算,九部分轨迹坐标,特附上草稿纸一张——

可以看到用了比例关系,计算每条分割线的起始点坐标

利用了  一个圆上一点,旋转40度(360/9)之后的坐标,利用三角函数

具体原理——

 

3.2.3数据的初始化工作

  接下来,还需要有一些辅助性的变量来构成相关功能。

其中我本来想用struct 结构体来记录点的x,y 坐标,但是这个c语言有点奇怪,不能用(。。。。)所以用了指针数组来存储x,y像个点,其中具体骚操作像这样

这样,用一个temp指针循环用九次,每一次通过运算得到一次映射区域的值并进行绘制之后,再赋值给运算函数来计算下一个点。就是这样。

这个转40度运算坐标的函数——

为了不引入C语言的math.h库,我直接用了cos40 和 sin40 的近似值

返回一个包含x,y 值的指针。

其他,2、4、8对称的,其实只是坐标的正负值变化,乏善可陈,直接将所有结果输出即可

下图分别,左右对称、四部分对称 全部列出即可,当然也可以用上述函数获得旋转角度为90、45的坐标。

 

接下来就是颜色的选择

 

一开始我想用文字切换的方式,但当我看了lcd.h 里的函数之后并且研究一番过后,我发现我可以使一块指定的区域填充我想要的颜色,而且一个色块显示在右下角可能会更明显一些

这个色块的绘制函数——

 

可以看到,这个绘制函数的总体思路是,确定一个矩形区域的左上角、右下角坐标 sx\sy\ex\ey

然后获取这个矩形的宽度、长度 width、height

然后设置一个光标起始点  setCursor(sx,sy+i) 然后用LCD->LCD_RAM 赋值颜色常量值。

因为,这个 选中光标后,之后的n次循环并赋值LCD_RAM缓存会自动换行,而我们的色块是在右下角位置,所以需要一行行换,并且每次指定位置,所以每次起点是 sx,sy+i

注意上面的i !!!

然后再之后的 width长度像素点都赋值颜色常量。

这样效果就是这样—— 我这里用了五种颜色可供选择,点一次切换一次

这样之后,发现屏幕每次刷新频率还是挺高的,我的块点击换颜色切换太快了,所以用了一个延时切换下一个颜色的函数(其实就是一个while循环)

if 是用来判断点击是否在色块范围之内。

二、系统的详细设计

1、绘图功能的实现

 在完成以上所有的交互以及内部数据关联的运算处理后,最后要将这些数据展现到屏幕上。

图1.7

2.2绘图资源的载入与初始化

主要是 LCD_Init()这个函数,是在lcd.c 这个文件内部的——

可以看到这个初始化工作函数有个2000多行,这主要是它首先去判断了这块LCD屏幕的型号,并分别有不同的初始化设置,具体不再赘述。

初始化完屏幕,先呈现的是提示信息界面,这个我自己加了几行。

其中,按板子(STM32F103)上右边红色复位键显示,一开始无法显示屏幕内容的,可能复位才能加载lcd驱动,按复位键上面一个key
0按钮可以进入屏幕测试,类似手机的屏幕测试。

 

四、系统运行的结果

见第二部分截图

 

总结

       经过嵌入式系统的这次大作业学习,我对嵌入式编程有了更深入的了解,对硬件和软件的联系在认知上又加深了一层,这次作业,又了解了lcd屏幕的触摸交互的过程,和逻辑上的应用,这些其实是对自己编程知识系统的扩充,有趣。

 

我把资源上传到csdn上好了

地址:

迷盘,对称的美,学习触摸、显示的好教学代码

おすすめ

転載: blog.csdn.net/qq_38190111/article/details/92608680