电子线路设计下实验报告1

  |  

文章导航

大三下电子线路设计下实验报告1

一、实验准备

1、Keil的基本使用方法 2、51单片机C8051F020基础知识 3、Img2lcd软件的使用 4、液晶的显示机制

二、实验任务与要求

(一)基础要求

每位同学把“电子线路设计训练专题实验1”所作的项目功能,修改程序用于基于C8051F020智能控制器系统调试。若控制器硬件资源足够,修改程序进行调试即可;若控制器硬件资源不够,在面包板上搭建不足的电路部分,用导线连接到控制器,修改程序进行调试。

(二)工程实现的功能

由于上学期实验项目是单片机延时播放动画的程序,这学期在这个基础上添加了计时、按键选图功能,并添加了操作界面。上学期的动画一共有上千帧,单片机存储空间有限,不能存放下这么多的内容,在Proteus中使用了SD卡模块,这学期在实际接触到板子以后发现外接SD卡不太可能,所以选取了一个10帧的动画来展示。 1、有一个主菜单,包括各种功能选择和班级姓名的显示。 2、点击左键进入计时功能模块,其中左键为清零、中键为开始/停止计时、右键为退出。Led数码管第一行显示计时结果,后两行定义为学号后8位,lcd屏显示按键功能和学号。 3、点击中键进入显示图片模块,其中左键为上一张,中键为下一张,右键为退出,对应的lcd显示屏上面左屏为图像说明和按键说明,右屏为图片。一共四张。 4、点击右键进入动画播放模块,其中左键为立即播放,中键为延时5秒后播放,右键为退出。延时时,lcd显示请等待提示,播放完动画后显示右键退出提示。

(三)流程图

三、硬件原理

(一)LED

一位数码管的引脚是10个,显示一个8字需要7个小段,另外还有一个小数点,所以其内部一共有8个小的发光二极管。对共阴极数码来说,我们给数码管的任一个阳极加一个高电平时,对应的这个发光二极管就被点亮了。如果想要显示数字8,并且把小数点也点亮的话,可以给8个阳极全部送入高电平,依次类推,就可以控制数码管的显示。

P5和P6是LED的选通信号,P7是LED显示数字的控制信号。LED的显示是基于“刷新”的,也就是几个LED单元轮流显示,在周期很短的时候肉眼就看不出来闪烁。所以LED刷新函数必须放在主循环里面才能实现LED数字的显示。

(二)Lcd

Lcd的显示在例程中主要基于四个函数:

1
2
3
4
void WriteStr(uchar row,uchar col,uchar *puts)
void ImageShow(uchar *imagePtr)
void LineClear(uchar line)
void LcdClear( void )

其中第一个是向lcd指定行、指定列写入字符串,值得注意的是,中文字符串占用了两个英文字串的位置,若是中文混着英文,中间的英文字符必须为偶数(可以用空格占位),否则后面的中文字符会有乱码。而且中文字符中有些lcd字库中没有的也会乱码,可以替换为其他字符。 第二个函数是在lcd上显示一幅图片,它和字符的显示相互独立,如果不注意二者可能会重叠。其中主要有三层循环,第一层循环两次,分别控制屏幕的上半部分和下半部分;第二层循环有32次,是显示屏的列控制;第三层循环有8次,是显示屏的行控制。根据显示原理可以将例程中的右半屏显示改为全屏显示,也可以改为上半屏显示。

(三)按键

按键的检测通过中断2实现: void INT1_ISR(void) interrupt 2 其中检测端口P5的值来判断按下了哪个按键,通过修改全局变量botflag的值(改为0,1,2)来对主函数进行控制,每次修改完以后,botflag修改为非三个按键的变量(工程中使用4)。在例程中,中断2里面添加了一些控制规则,在本次实验中我没有加,只返回标志变量的值,在下一次实验中添加了不参与主循环的单次运行的功能。 值得注意的是,中断2只在数码管运行刷新的时候才会执行,所以在实现功能时必须保留有LedDispNum();或者类似的led显示功能。 备注:DAC和ADC功能将在实验2 的报告中说明。

四、软件实现

主要思想就是全局变量flag的使用以实现菜单功能。 主要标志变量有:botflag(按键标志)、TRflag(计时标志)、showflag(页面标志)、imgflag(图片标志)、GFlag(动画标志) 使用if语句对页面标志showflag进行选择,显示对应的页面,实现不同的功能。在每个条件语句内加入了对按键标志botflag的判断,若检测到有按键操作,将对应的标志变量改变,botflag置4,并进行相应的操作(清屏、显示提示信息等等)。 下一次循环时由于标志变量的改变,直接进入对应页面。

(一)主菜单

其中包含了一些其他页面的显示功能,增强软件的鲁棒性。

(二)计时功能

(三)按键选图

(四)播放动画

(五)显示图片子函数

(六)数码管显示数字子函数

原例程中这一部分选通数码管写的不对,进行修改以后可以正常显示,其中第一行显示计时,第二行、第三行显示学号后八位。

(七)全屏显示子函数

通过修改对应写入命令字将例程中的半屏显示改为全屏显示。 备注:全部代码在提交的工程文件中,此处由于篇幅限制不粘贴全部代码。

五、实验总结

这次实验的目的主要是实现上学期电子线路设计实验一在Proteus平台上的功能。上学期我实现了单片机12864显示屏播放动画的功能,这学期在实际的单片机平台上实现也遇到了不少问题。首先就是读卡器的问题,在上学期的实验中使用的是串口总线读取方式,这学期由于实验开发板的限制难以外接,所以我使用了10帧的动画代替。在上学期计时播动画的基础上增加了定时和选图功能,对于单片机显示屏、数码管和按键的工作原理有了进一步的认识。 上学期的mmc存储卡映射文件的生成方式我也进行了探索,利用生成的二进制文件bin和二进制文件合成工具合成了相应的动画,在提交的文件中也有附带。

本站总访问量 您是第位访客