基于gec6818ARM开发板的嵌入式项目设计(C完整代码)

  1、描述项目

该项目设计的主要用途是小孩子学习时使用的台灯。
    打开lcd屏后,界面分为三大块,从左至右,依次是led灯的亮度控制,显示时间和倒计时功能,      计算器功能

首先是led的控制:
        在Linux中一切皆是文件,使用文件IO的方式,打开led的文件,通过给文件写入数据来控制灯的亮灭
    用两个字节来控制灯的状态,第一个字节来控制灯的亮灭,第二个字节用来控制具体是那个灯,当第二个字节等于8时是指定第一个灯
    等于9时是指定第二个灯,等于10时是指定第三个灯,等于12时是同时指定三个灯
    
然后是显示时间和倒计时功能:
    通过设定好的时间,再用取字模的方式用坐标去显示数字出现在需要的位置。
    时间下方的倒计时的功能则是,通过使用触摸屏,完成倒计时的时间的加,减和开始倒计时,默认的初始和最低的倒计时的时间是10s
    这个时间是定义一个全局变量,通过不断的显示这个变量来显示在屏幕上面的,用手指点击右下方的”+"号,每次点击可以在时间上加10s,
    左下角的“-”号可以在时间上减10s。当倒计时的时间倒计为0时,会调用蜂鸣器和sleep延时函数,发出5声“滴”的声音来提醒使用者时间到了。

计算器功能:
    这个功能的显示是一张bmp格式的照片,来引导用户点击数字和运算符,这个计算器可以进行简单的加减乘除的四则运算,运算结束后,会将
    式子和运算结果显示在上方的显示区域。
    这个计算器功是运用数据结构,栈的概念来实现的,将用户按下的数字和运算符用一个数组保存成一个字符串,然后数字入数字栈,符号入符号栈
    符号在入栈时,如果是后一个符号的优先级大于前面符号的优先级,会将优先级高的先和数据栈的两个数据出栈计算,计算完之后的数据再入栈,当
    遇到左括号时,按正常的优先级顺序入栈,然后继续将括号里面的符号继续按照优先级的顺序入栈,在后面遇到右括号时,就会进行弹栈计算操作,
    将左括号后到右括    号前的符号全部弹栈计算,计算完之后的数据再入栈,按这样的规则到最后,符号栈为空,数据栈就只会剩下一个计算完之后的
    结果数据。


还有一个功能:超声波测距,接在板子的con2上使用
    还有一个功能时超声波测距,超声波传感器使用UART模式来不断返回距离,设定一个阈值,来监控用户的头部离桌面的距离,一旦低于这个阈值,
    蜂鸣器则会报警来提醒用户。
    
 

 2.显示bmp照片


    bmp的照片头部有54个字节用来保存照片的信息,通过位运算可以查看图片的长和宽,获取图片的位深,24位的照片是由rgb三个字节来显示一个像素
    点的,32位则是有argb四个字节来显示一个像素点,所以必须要通过一个判断来区分图片的位深。
    以24位深的bmp照片为例,解析像素点时,读取图片的像素点信息,是要从54个字节后读取的,图片的像素点信息都在保存在54个字节之后,计算机保存    数据是通过小端保存的方式保存的,所以在对lcd屏进行映射时要转换成大段模式,可以通过位运算,r  << 16 | g <<8 | b的方法转换成大段模式映射到    lcd上。要显示32位深的bmp照片只需要在进行位运算时加上a,既a << 24 | r  << 16 | g <<8 | b即可正确的解析32位的bmp照片
    


3.区分是不是bmp照片


    所有的文件名称都是由 名字+后缀名 的格式来命名的,所以我们只需要判断一个文件的后缀名是不是bmp就可以了

4.显示文字


    取一个字的字模,这个字模是标记了一个矩形里面需要点亮的像素点,通过点阵来显示一个字,知道哪些点需要被点亮后,就可以通过lcd画点的方式
    将每个需要被点亮的像素点,描绘上颜色就可以成功的显示一个字了。

5.链表的使用


    在计算器的功能中还运用到了链表,通过函数目录操作和区分bmp照片的方法来寻找指定目录下的所有bmp照片,将找到的bmp照片的绝对路径,全部记录    在链表的节点data中,当点击计算机界面中的“换色”时,会由一个遍历指针去寻找下一个节点的data数据,将data保存的照片的绝对路径,输入到照片    显示函数中,达到显示下一个张照片的目的。
 

 

链接:https://pan.baidu.com/s/1m5rQXCbi_Sqn79MLR1lxXQ?pwd=qf7x 
提取码:qf7x

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值