液晶数字频率计_电子系统设计报告(编辑修改稿)内容摘要:

lie,unsigned char code *word, int cs)//数字显示 { unsigned char i,j。 for(i=0。 i2。 i++) { 西安交通大学电子系统实践与设计报告 delay(1)。 send(0xBB+page+i,cs)。 send(0x40+lie,cs)。 for(j=0。 j8。 j++) senddat(word[i*8+j],cs)。 // 数组每个元素的 8 位,写在竖着的一列 8个点( dot),写完一个元素 ,y(列)自动加 1 } } 键盘控制模块的设计 在键盘控制模块中,键入信号的软件处理方法是影响系统操作性能的重要因素。 键盘的 接口及软件的任务主要包括以下几个方面: 首先,检测并判断是否有键按下;其次,对按键开关进行时延的消抖;再次,计算并确定按键的键值;最后,程序根据计算出的键值进行一系列的动作处理和执行。 在实际系统中,当需要输入参数较多,功能复杂时,需要采用行列的键盘对单片机进行输入。 本实验需要 的键盘比较简单,如下图所示,键盘接上拉电阻后与电源的高电平相连。 10KR3R e s210KR4R e s210KR5R e s210KR2R e s210KR1R e s2K E Y 0S W P BK E Y 1S W P BK E Y 2S W P BK E Y 3S W P BK E Y 4S W P BV C C 图 45 控制键 常用的键盘识别方法有:行扫描法、线反转法和利用 8279 键盘接口的中断法。 键盘识别的流程如下图。 西安交通大学电子系统实践与设计报告 图 46 键盘识别流程图 ( 1) 本实验按键比较简单,故程序设计时,将五个功能键接口定义为五个标志位。 然后再程序中设置按键函数,里面嵌套 while 循环,一直 读取 五 个功能键接 口的状态,如果各口均为高电平,则无键按下;若有低电平状态,则有键按下。 按键本身是机械开关,在闭合或断开的瞬间会出现电压抖动的现象,必须去除抖动的影响,才能正确识别被按下的键。 为简单起见,使用软件方法消抖,延时 10ms,再次读取各状态,若两次 状态相同,说明信号稳定,可以继续 进入 相应的键处理子程序中。 软件主要实现 三 个功能:键盘按键的 消抖 、查询按下的键所在的位置 、相应的处理子程序 ,键盘接口程序 如下: //按键查询口定义 sbit key0=P1^0。 sbit key1=P1^1。 sbit key2=P1^2。 sbit key3=P1^3。 sbit key4=P1^4。 //按键处理函数 void judge_key() { while(1) { if(key0==0) {delay(10)。 if(key0==0) { init_lcd()。 clear_lcd()。 // key0 功能函数 } } if(key1==0) { delay(10)。 if(key1==0) { init_lcd()。 键盘识别 是否有键按下。 去抖动 确定按键位置 结束 NO YES 西安交通大学电子系统实践与设计报告 clear_lcd()。 // key1 功能函数 } } if(key2==0) { delay(10)。 if(key2==0) { init_lcd()。 clear_lcd()。 // key2 功能函数 } } if(key3==0) { delay(10)。 if(key3==0) { init_lcd()。 clear_lcd()。 // key3 功能函数 } } if(key4==0) { delay(10)。 if(key4==0) { init_lcd()。 clear_lcd()。 // key4 功能函数 } } } } ( 2)本系统的设计中,功能按键模块放在设计最后,主要目的是考虑到 可以通过该模块,将 测頻模块 和显示模块联系在一起。 而且整个系统的功能最终都是要通过按键注意选择来显示出来的。 系统功能设计: :按键显示频率值及其单位; 2. key1:按键操作改变显示字符大小; 3 .key2:按键切换到测脉宽状态; :按键复位,重新进行初始化 :按键退出测频和测脉宽 系统初始化完毕后会自动进入按键查询,标致状态为屏幕中央的“请按键„„” Key0 处理子程序: working=1。 工作状态标志位,由此来控制循环的进行及部分液晶显示内容 displaywork()。 液晶显示子函数,会在第一行滚屏显示“ working„„” manage1616()。 频率值显示子函数,会在屏幕中央显示被测的频率值及单位 Key1 处理子程序: working=1。 工作状态标志位,由此来控制循环的进行及部分液晶显示内容 displaywork()。 液晶显示子函数,会在第一行滚屏显示“ working„„” manage2424()。 大字符显示子函数,会在屏幕中央显示放大的被测频率值及单位 西安交通大学电子系统实践与设计报告 Key2 处理子 程序: working=1。 工作状态标志位,由此来控制循环的进行及部分液晶显示内容 displaywork()。 液晶显示子函数,会在第一行滚屏显示“ working„„” maikuan()。 脉宽值显示子函数,会在屏幕中央显示被测的脉宽值及单位 Key3 处理子程序: displayfuwei()。 液晶显示子函数,在屏幕中央 显示“ 正在复位 „„” fuwei=1。 复位状态标致位,由该状态来决定外循环是否执行 goto 语句,从而 跳到程序开头重新进行初始化 break。 跳出内循环,迫使程序在外循环中进行“ fuwei”状态位判断 Key4 处理子程序: working=0。 工作状态标志位,由此来控制循环的进行及部分液晶显示内容 displayend()。 液晶显示子函数,在屏幕中央 显示“ 谢谢使用 ” break。 跳出内循环,在此执行外循环 说明按键需要的时间 五、 系统整体功能 和操作过程 说明 整体功能说明 主要功能由按键实现,已在上一部分中进行了说明。 系统 程序采取标准的结构化设计,在 main 函数中实现对各个子函数的调用。 在定时器和 PLD 初始化后,随着计时的开始将直接由计数器和 PLD 进行测频, 1 秒时间间隔到,则测频结束,程序自动算出频率之后保存在定义好的变量中,供显示频率的函数调用。 也就是说当进入按键功能选择时测頻过程已经完成。 Key0、 Key Key2 只是调用函数显示不同的内容而已。 Key3 按下后程序由 break 语句跳出按键扫描程序而重新进行 定时器和 PLD 初始化,即重新开始频率测量。 Key4 按下后将由 goto语句直接跳到 main 函数刚进去的地方,完全从头重 新执行程序。 程序段 先进行变量定义 ,然后是液晶显示数据段,接下来是各种函数以及函数的相互组合调用,最后进入 main 函数实现整个系统的逻辑功能 系统整体 运行逻辑框图如下: 西安交通大学电子系统实践与设计报告 Y N Y N Y N Y N N fuwei=1 Y Y N 图 51 系统整体运行逻辑框图 系统操作过程说明 上电之后液晶屏刷新一次,然后显示初始化面,保持 3 秒后,屏幕中央开始 液晶显示初始化 清屏显示标题,清屏显示初始化面 初始化 PLD;初始化定时器计数器开始测量 T1 定时 T0 计数 直接计数法测频 等精度法测頻 按键扫描 Key0? Key1? Key2? Key3? Key4? 显示频率 放大字符 显示脉宽 频率 脉宽 清屏、初始化面 fuwei=1 ? 西安交通大学电子系统实践与设计报告 显示“请按键„„”提示,表示系统初始化、测頻已完成,程序已进入按键扫描函数,此时按键有效。 注意按键有防抖动功能,故按键不能太快,当按键后看到有清屏现象时表示按键有效。 Key0、 Key Key2 各键按下时,屏幕第一行均有滚动显示的“ working”状态提示。 信号测量范围 20Hz9999Hz,当算出频率大于此范围时, Key0、 Key1 按下均会显示“超出范围”提示,当小于此范围时,Key0、 Key1 按下均会显示“ NO SIGNAL!”提示 .Key3 按下时,頻幕显示“正在复位”提示,然后系统从头开始。 Key4 按下时,頻幕显示“谢谢使用”提示,然后系统重新初始化。 具体流程见 图 51 系统整体运行逻辑框图 六 、 电路图 和 PLD 图 西安交通大学电子系统实践与设计报告 七 、 实验调试 、误差分析 、参数确定 系统调试 方案的具体设计是分成三个模块的,故调试也是分成三个独立模块,这样的好处是,每次调试的时候程序都比较短,没有很复杂的逻辑在里面容易调试通过和查处错误。 调试顺序:频率测试模块、液晶显示模块、功能键 模块,最后进行系统整体功能完整调试。 ( 1) 频率测试模块: 直接计数测频的调试:程序用 printf 语句 作为输出,直接将方波信号接到T0 引脚上,程序为循环测试,进入 debug 状态后,调节信号发生器的输出频率,观察不断刷新的窗口显示,通过输入输出对比,检查频率测量的正常与否。 等精度测频调试: 由于电路板发下的时间较迟,故该模块的调试可在学习机上完成,。 ( 2) 液晶显示模块调试: 该模块是在电路板焊好后子环节在自己的电路板上调试的,因为接线较多( 20 个引脚)在学习机上调试不太方便。 在电路板上调 试,不仅不用接线,还西安交通大学电子系统实践与设计报告 可以检查自己电路板的焊接是否存在问题。 液晶显示模块原理比较陌生和难以理解,故可显示最简单的字符来检查整个模块的控制以及自己的程序设计是否有问题。 等液晶显示模块可以正常显示了,再添加内容,比如汉字显示,字符大小调整、显示位置的调整等进行调试验证,以完善程序和加深理解、整个模块的调试还包括对自摸提取软件的熟悉使用。 ( 3) 功能键模块调试: 该模块的调试有两个作用:按键功能的程序实现、通过功能键将前两个程序模块连接在一起。 按键功能调试时不需要有太复杂的子函数,可简单的添加不同的 printf语 句。 等上述调试完成后,开始逐个添加功能键子程序进行调试。 然后对信号经过 PLD传输到单片机的接口电路进行调试。 最后整机进行调试,基本功能实现后可逐步修改显示及按键是整个系统功能完善,显示合理美观。 误差分析 ( 1) 方案一的误差分析 在测量中,误差分析计算是不可少的。 理论上讲不管对什么物理量的测量,不管用什么样的测量方法,只要进行测量,就可能存在误差。 误差分析的目的就是要找出引起误差的主要愿意,从而有针对地采取有效措施,减小测量误差,提高测量的精确度。 在实际调试过程中,方案一测的频率总是误差很大,经过检 查,将单片机晶振当作 12MHz 会产生时间闸门的扩大,从而导致测频数据变大。 经过调整将 1秒的时间闸门换算成 下,从而TH1=(6553610000*)/256=(655369216)/256。 TH0=(655369216)%256。 经调整后误差明显下降,但还是存在稳定的接近 1%的误差。 方案一的固有误差分析如下: TTNNffxx  方案一的误差由 计数器计数脉冲相对误差和标准时间相对误差两部分组成。 因此,对这两种相对误差可以分别加以讨论,然后相加得到总的频率测量相对误西安交通大学电子系统实践与设计报告 差。 1 误差 在测频时,主门的开启。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。