>_<:引脚和前面几个连接一样,这里做了一个实用的动画效果,模拟起重机的2维视图。

 9325tp.h
 9325tp.c
  1 #include<reg52.h>
  2 #include"9325tp.h"
  3
  4 /
  5 /* LCD color */
  6 #define White          0xFFFF
  7 #define Black          0x0000
  8 #define Blue           0x001F
  9 #define Red            0xF800
 10 //#define Blue2          0x051F
 11 //#define Magenta        0xF81F
 12 //#define Green          0x07E0
 13 //#define Cyan           0x7FFF
 14 //#define Yellow         0xFFE0
 15
 16 unsigned char b_x,b_y,b_l,b_w;
 17 unsigned char m_x,m_old_x,m_y,m_l,m_w,m_v,m_a,m_l_limit_p,m_r_limit_p;
 18 unsigned char s_y,s_old_y,s_extre_part,s_v,s_a,s_u_limit_p,s_d_limit_p;
 19
 20 unsigned char h_x,h_y,h_w;
 21 unsigned char move_x_v,move_y_v,move_a;
 22 unsigned char line_x,line_old_x,line_y,line_l,line_old_l;
 23 //--------------------------------------------------------------
 24 void init1()
 25 {
 26     b_x=10,b_y=20,b_l=80,b_w=220;
 27     m_x=m_old_x=40,m_y=10,m_l=100,m_w=70,m_v=5,m_a=0,m_l_limit_p=40,m_r_limit_p=b_x+b_w-m_l_limit_p;
 28     s_y=s_old_y=80,s_extre_part=10,s_v=1,s_a=0,s_u_limit_p=b_y+10,s_d_limit_p=b_y+b_l-10;
 29 }
 30 //---------------------------Draw-------------------------------
 31 void drawBig()
 32 {
 33     Line(b_x,b_y,b_x+b_w,b_y,Black);
 34     Line(b_x,b_y+b_l,b_x+b_w,b_y+b_l,Black);
 35 }//主梁画
 36 void drawMiddle()
 37 {
 38     if(m_x!=m_old_x)Line(m_old_x,m_y,m_old_x,m_y+m_l,White);
 39     Line(m_x,m_y,m_x,m_y+m_l,Blue);
 40     if(m_x!=m_old_x)Line(m_old_x+m_w,m_y,m_old_x+m_w,m_y+m_l,White);
 41     Line(m_x+m_w,m_y,m_x+m_w,m_y+m_l,Blue);
 42 }//画横梁
 43 void drawSmall()
 44 {
 45     if(s_old_y!=s_y || m_x!=m_old_x)Line(m_old_x-s_extre_part,s_old_y,m_old_x+m_w+s_extre_part,s_old_y,White);
 46     Line(m_x-s_extre_part,s_y,m_x+m_w+s_extre_part,s_y,Red);
 47 }//画小车
 48 void draw1()
 49 {
 50     drawBig();//画主梁
 51     drawMiddle();//画横梁
 52     drawSmall();//画小车
 53 }//总画函数
 54 //----------------------------run-----------------------------
 55 void runMiddle()
 56 {
 57     m_old_x=m_x;
 58     m_x+=m_v;
 59     if(m_x+m_w>=m_r_limit_p || m_x<=m_l_limit_p)m_v*=-1;//达到警戒线
 60 }//横梁移动
 61 void runSmall()
 62 {
 63     s_old_y=s_y;
 64     line_old_x=line_x;
 65     s_y+=s_v;
 66     line_x+=move_x_v;
 67     if(s_y>=s_d_limit_p || s_y<=s_u_limit_p){
 68         s_v*=-1;
 69         move_x_v*=-1;
 70     }//达到警戒线
 71 }//小车移动
 72 void run1()
 73 {
 74     runMiddle();
 75     runSmall();
 76 }//运动函数
 77 /
 78
 79
 80 void init2()
 81 {
 82     h_x=10,h_y=180,h_w=220;
 83     move_x_v=s_v*11/4,move_y_v=2,move_a=0;
 84     line_x=line_old_x=160,line_y=h_y+3,line_l=line_old_l=50;
 85 }
 86 //-------------------------draw--------------------------------
 87 void drawGou()
 88 {
 89     if(line_old_x!=line_x || line_old_l!=line_old_l){
 90         Rectangle(line_old_x-3,line_y+line_old_l,line_old_x+3,line_y+line_old_l+6,White);
 91         Line(line_old_x,line_y+line_old_l+6,line_old_x,line_y+line_old_l+9,White);
 92         Line(line_old_x,line_y+line_old_l+9,line_old_x+6,line_y+line_old_l+9,White);
 93         Line(line_old_x+6,line_y+line_old_l+9,line_old_x+6,line_y+line_old_l+15,White);
 94         Line(line_old_x+6,line_y+line_old_l+15,line_old_x-6,line_y+line_old_l+15,White);
 95         Line(line_old_x-6,line_y+line_old_l+15,line_old_x-6,line_y+line_old_l+12,White);
 96     }
 97     Rectangle(line_x-3,line_y+line_l,line_x+3,line_y+line_l+6,Blue);
 98     Line(line_x,line_y+line_l+6,line_x,line_y+line_l+9,Black);
 99     Line(line_x,line_y+line_l+9,line_x+6,line_y+line_l+9,Black);
100     Line(line_x+6,line_y+line_l+9,line_x+6,line_y+line_l+15,Black);
101     Line(line_x+6,line_y+line_l+15,line_x-6,line_y+line_l+15,Black);
102     Line(line_x-6,line_y+line_l+15,line_x-6,line_y+line_l+12,Black);
103 }//画勾,x,y为绳的下端,r为大小
104 void drawH()
105 {
106     Line(h_x,h_y,h_x+h_w,h_y,Black);
107 }//画横梁
108 void drawHuaKuai()
109 {
110     if(line_old_x!=line_x)Rectangle(line_old_x-6*3/4,line_y-6,line_old_x+6*3/4,line_y,White);
111     Rectangle(line_x-6*3/4,line_y-6,line_x+6*3/4,line_y,Blue);
112 }//画滑块,x,y为绳的上端,r为大小
113 void drawLine()
114 {
115     if(line_old_l!=line_l || line_x!=line_old_x)Line(line_old_x,line_y,line_old_x,line_y+line_old_l,White);
116     Line(line_x,line_y,line_x,line_y+line_l,Black);
117 }//画线
118 void draw2()
119 {
120     drawH();
121     drawHuaKuai();
122     drawLine();
123     drawGou();
124 }
125 //------------------------run-------------------------------
126 main()
127 {
128     ILI9325_Initial(); //初始化LCD
129     CLR_Screen(White); //用背景色清屏
130     init1();//初始化1画面
131     init2();//初始化2画面
132     while(1)
133     {
134         run1();
135         draw1();
136         draw2();
137     }
138 }
本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/3649370.html,如需转载请自行联系原作者

[51单片机] TFT2.4彩屏3 [自制动画效果-滑块+吊钩]相关推荐

  1. 单片机开发教程5——51单片机驱动TFT彩屏

    文章目录 代码例程 TFT模块 介绍 使用要点 减少刷新像素 坐标系 游戏设计 对象 VS Code 代码例程 TFT.zip 开发资料中的例程有些瑕疵,上面是整理后的例程,修改了一些参数,也添加了不 ...

  2. 用51单片机和LCD显示模块自制电子闹钟

    本文主要简单讲解利用51单片机.LCD显示模块等硬件搭建一个可以计时.显示日期的小的电子DIY作品. 硬件资源: 51单片机1个.LCD显示1个.按键2个.蜂鸣器1个.8050三极管2个等. 一.硬件 ...

  3. 51单片机学习笔记_7 绘制LED动画:Merry Christmas 滚动字幕

    封装头文件:绘制LED动画 类似C语言的语法,部分函数等内容可以封装到头文件里,需要的时候引入到source file 中,再在 include 中指明即可正常使用. 编写.h文件:如: 引入.h文件 ...

  4. 单片机显示屏c语言程序,51单片机驱动1602液晶显示器c程序

    51单片机驱动1602液晶显示器c程序 /* 程序效果:单片机控制液晶显示器1602显示字母数字,用户自行更改io 程序版权:http://www.51hei.com */ #include //头文 ...

  5. 51单片机也能玩TFT彩屏-第2季第3部分-朱有鹏-专题视频课程

    51单片机也能玩TFT彩屏-第2季第3部分-2125人已学习 课程介绍         本课程是<朱有鹏老师单片机完全学习系列课程>第2季第3个课程,主要讲解TFT液晶显示器的原理和编程显 ...

  6. 用SST89E516RD自制51单片机仿真器

    原文网址:http://www1.eccn.com/tech06/te074653.asp 用SST89E516RD自制51单片机仿真器 文/吴汉清 单片机实验和开发中最重要的一个环节就是程序的调试, ...

  7. 使用51单片机自制电子万年历(包含驱动、基本万年历、闹钟、日程、修改时间等)

    使用51单片机自制电子万年历(包含驱动.基本万年历.闹钟.日程.修改时间等) 归档51单片机制作电子万年历,以及proteus仿真电路图,本设计涵盖蜂鸣器.uart.timer.矩阵扫描.lcd160 ...

  8. 如何使用51单片机自制音乐盒

    51单片机音乐盒 注:下载链接 https://download.csdn.net/download/weixin_42150033/10717356 一.材料 发光二极管 18个: 按键 4个: S ...

  9. 51单片机实战之电子时钟

    自制电子时钟–总结 源代码https://gitee.com/kiloGrand/electronic-clock 使用到的模块及其功能: DS1302:低功耗实时时钟芯片,它可以对年.月.日.周.时 ...

最新文章

  1. C Primer Plus note1
  2. 机器学习模型 知乎_机器学习-模型选择与评价
  3. Django环境配置
  4. 解决firefox字体发虚的问题
  5. 不刷新改变/更换URL: pushState + Ajax
  6. 城市中心区停车智能引导和收费管理系统解决方案
  7. 100 余个超实用网站
  8. 腾讯电脑管家卸载后的残留信息有哪些
  9. OpenWrt使用IPV6+Aliddns实现远程管理路由
  10. Mac安装 nginx (极简)
  11. win10u盘被写保护怎么解除_win10系统下u盘被写保护怎么解除_win10解除u盘写保护方法...
  12. 凡是能用钱买来的时间就是便宜的;凡是能用时间换来的注意力持续就是有价值的。
  13. 搜狗输入法不能再idea上输入中文
  14. 诗与远方:无题(九十四)
  15. Unity做动画不播放解决方案之一
  16. 如何用几何画板中绘制三角形内切圆
  17. 把图片存/取至数据库
  18. ubuntu执行uci出现 uci: error while loading shared libraries: lib
  19. 数据分析师八大能力之一:收集信息的能力
  20. sql injection violation, syntax error: ERROR

热门文章

  1. Windows端口占用情况?
  2. QT 定时关机、共享内存、启动浏览器、浏览器前进后退刷新、进度条、设置浏览器标题、QML入门
  3. 设计模式:工厂方法模式(C++)【简单工厂进行升级】
  4. Network Emulation(网格模拟)
  5. Asp: 解决脚本输出网页出现乱码情况
  6. .NET 简单的smtp协议发邮件
  7. 玩数据必备Python库:Numpy使用详解
  8. LwIP之ARP协议
  9. S5PV210的内存映射
  10. 宕机了,Redis数据丢了怎么办?