计算机综合实践项目:自编程单片机系统(一)

身边几个玩编程计算器的同学说,用计算器编程帧率太低了。一开始我觉得,好端端的处理器能卡成这样,肯定是计算器系统的问题。要是用我的开发板来跑绝对不会卡,但转念一想我的开发板只能在计算机上编程然后烧写进去,拿编译型语言去跟解释型语言比效率是没有意义的。

后来查了一下资料,他们用的计算器中竟然使用8位单片机。我有两个想法:其一,性能不强的处理器加上解释型语言,难怪跑在上面的程序会卡;其二,使用性能相当的单片机的我,应该也能开发一个可自编程的平台吧。

于是就有了这个项目,设计一个可自编程的单片机系统。有几个问题需要考虑:

一、用什么处理器

上有树莓派,我的考虑范围仅限单片机。8/16位机我比较熟悉,但空间和性能都十分受限,32位机性能强,空间也可以外扩。具体选哪种,主要取决于应用。

二、用什么编程语言

编译型语言要有编译器,是我现在不会写也不会移植的东西;解释型语言的效率在计算器中被证明不行;高级语言都被排除了,只剩汇编可用了。

汇编代码转换成单片机直接执行的机器语言被计算器玩家证明为危险行为,必须有一个托管汇编代码运行的环境,称之为虚拟机吧,相应地把机器语言称为字节码,这是从Java学来的概念。虚拟机和字节码的格式都可以任我发挥。

三、用什么交互设备

作为一台微型电脑,必须要有办法来显示。我不想外接显示器,所以要板载显示屏。从12864 OLED单色屏到240*320 TFT彩屏,流畅显示所需的带宽也有很大差距,应该根据单片机的性能来选型。

编程嘛,键盘总要有的。最理想的情况当然是用USB口外接键盘,对于没有USB的单片机,也得提供一个矩阵键盘。

选择还挺多哈。考虑到我现在的水平,经过一周的深思熟虑,我将这个项目分为两个阶段:第一阶段在上述选项中都选择了较简单的,是现在就能动手的项目;第二阶段更为完整,但需要更多的学习。

第一阶段:

制作GUI开发板,板载1.3寸128*64 OLED屏;

为开发板编写硬件驱动库;

(以下内容须做到平台无关,即对于其他型号的单片机,只要有接口相同的硬件驱动库就能使用)

设计一个文档编辑器用于编程;

设计一种虚拟机上运行的汇编语言,要能调用库函数;

编写能运行这种汇编语言的虚拟机;

编写汇编器,将汇编代码转换成字节码;

用软件实现内存分页,以解决大量数据的问题。

第1.5阶段:

如果AVR单片机的性能带不起虚拟机,就通过开发板的扩展接口连接STM32F103开发板;

原来的单片机作硬件驱动与图形加速用;

用Cortex-M3足矣,再强就是下一阶段的事了;

制作几个外接模块,如电容触摸、SD卡+扬声器等,以丰富功能。

第二阶段:

使用STM32F405VGT6单片机,168MHz Cortex-M4无所畏惧;

板载2.8寸240*320 TFT全彩触摸屏,挂在FSMC上;

USB接口外接键盘,最好是机械键盘,声音响亮盖过物理老师的激情;

类C语言编程,编译成ARM的机器语言,在单片机上直接执行,用MPU来保护系统;

如果让机器直接执行太危险,让虚拟机执行字节码也行;

……

这个规划过于遥远,先构想到这里。相比于前一版这个版本更像是手机而不是计算器。

预计今年年底之前完成第一阶段,时间充足的话第1.5阶段也能完成。至于第二阶段,想想都觉得难,先挂着吧。

最后强调一句,造轮子阶段,可以借鉴方案但绝不抄代码。

原文地址:https://www.cnblogs.com/jerry-fuyi/p/11619309.html

时间: 2024-11-05 13:34:23

计算机综合实践项目:自编程单片机系统(一)的相关文章

Android实践项目汇报

Android实践项目:推箱子 推箱子是一款来自日本的古老游戏,其设计目的是训练人的逻辑思维能力.游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置.这就要求玩家巧妙的运用有限的空间和通道,合理的安排箱子的位置和移动次序才可能完成任务. 随着计算机游戏的发展,很多编程爱好者基于该游戏的思想开发了出各种版本.各种类型的推箱子.这其中也包括很多手机版本的实现,伴随着手机与计算机的普及,很快推箱子游戏便进入了千家万户. 一.需求分析: 2.1 功能需求 在游戏开发之前,首先需要对游戏所应该

通常采用什么方法来测试单片机系统的可靠性?

单片机系统可以分为软件和硬件两个方面,我们要保证单片机系统可靠性就必须从这两方面入手. 首先在设计单片机系统时,就应该充分考虑到外部的各种各样可能干扰,尽量利用单片机提供的一切手段去割断或者解决不良外部干扰造成的影响.我们以HOLTEK最基本的I/O单片机HT48R05A-1为例,它内部提供了看门狗定时器WDT防止单片机内部程序乱跑出错:提供了低电压复位系统LVR,当电压低于某个允许值时,单片机会自动RESET防止芯片被锁死:HOLTEK也提供了最佳的外围电路连接方案,最大可能的避免外部干扰对芯

android 实践项目 总结 (修改)

Android开发项目:百度地图的调用 在一个不熟悉的环境中,获得自己的位置,选择合适的就餐地点,住宿和公交路线成为一项难题.本次的实践项目就是为了解决上述难题的,通过调用百度地图的接口实现定位.查询公交路线.寻找合适的餐饮及住宿等功能,满足人们出行功能. 一 需求分析 1.1 客户需求 一个项目的开发,首先要了解客户的需求,否则这个项目没有任何开发的价值.在社会快速发展的今天,人员流通较快,选择合适的交通线路.餐馆及住宿成为一项难题,因此根据客户的需求,进行开发合适的项目来满足客户的需求. 1

python编程快速上手之第10章实践项目参考答案

  本章主要讲了python程序的调试,当程序有BUG或异常的时候,我们如何调试代码找出问题点.其实在本章之前的章节我们做练习的时候都会遇到各种各样的错语和异常,最初当不知道程序哪里出错的情况下不可否认的都使用了print语句进行输出并调试代码.没错print也是调试代码的一种工具,直观简单,便也有缺点,就是调试好后要进行删除,也是件麻烦事,于是就有了本章介绍的assert(断言),logging(日志)以及各种调试工具的出现. 首先来回顾一下python的异常. 一.python常见的异常类型

软件工程综合实践(2)

软件工程综合实践(2) LoginAction  到底做了什么? 1.     通过String username = request.getParameter("username"); 获取了页面当中输入的用户名 2.     有可能获取到乱码,那可以通过 username = new String (username.getBytes("ISO-8859-1"),"utf-8"); 转码   如果 获取的信息不是乱码,那你就不要转码了,否则会

百度地图V2.0实践项目开发工具类bmap.util.js V1.4

/** * 百度地图使用工具类-v2.0(大眾版) * * @author boonya * @date 2013-7-7 * @address Chengdu,Sichuan,China * @email [email protected] * @company KWT.Shenzhen.Inc.com * @notice 有些功能需要加入外部JS库才能使用,另外还需要申请地图JS key . * 申请地址:http://developer.baidu.com/map/apply-key.ht

本学期高级软件工程课程的实践项目的自我目标

1.对实践项目完成后学习到的能力的预期 希望通过本学期的课程时间项目,能够做到合理的项目需求分析,能以软件开发理念"设计什么"以及"如何设计"角度实际出发,写出令老师和自己都满意的需求文档.结合项目的实践提高自己的理论知识的同时提高自己的编程能力.实践项目的同时,学会和团队交流协作,提高自己的团队意识.能够掌握整个软件开发阶段流程,学会系统框架设计,数据库设计等,包括软件测试(白盒测试和黑盒测试方法). 2.对项目课程的期望 希望实践项目的细节能够详解,能够有实践的

Data JPA 和 Thymeleaf 综合实践

1    第3-8课:Spring Data JPA 和 Thymeleaf 综合实践 在前面课程中,我们学习了 Spring Boot Web 开发.JPA 数据库操作.Thymeleaf 和页面交互技术,这节课综合这些内容做一个用户管理功能,包括展示用户列表(分页).添加用户.修改用户和删除用户.有人说程序员的一生都是在增.删.改.查,这句话不一定全对,但也有一定的道理,相比于这句话,我更认同的是这句:程序员的技术学习都是从增.删.改.查开始的. 这节课将介绍如何使用 JPA 和 Thyme

《软件工程综合实践专题》——1程序简单测试与升级

<软件工程综合实践专题> ———程序简单测试与升级 1759233 目录 <软件工程综合实践专题>... 1 ———程序简单测试与升级... 1 1.  程序代码:... 2 2.  代码解读:... 2 3.  需求增加:... 2 4.  新增需求的测试用例:[可能写的不好,因为软件测试这学期才开始学习]... 3 5.增量开发... 4 6.收获和不足... 9 1.   程序代码: 2.   代码解读: Python是一门很强大的语言主要是因为它包含了很多使用的库,这里的程