版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 单片机的控制系统课程设计 1大庆石油学院课程设计任务书课程 单片机控制系统课程设计 题目 03v 电压测量表 专业 自动化 姓名 邹建 学号 060601140625 主要内容:用现有凌阳系列单片机试验箱编写一段程序,用以实现测量电压值并且将获得的结果显示在液晶显示器上,并用语音播报出来。基本要求:1. 编程要求:主程序利用c语言编写,中断服务程序利用汇编语言编写。 2. 实现功能:实现一个模拟电压表的功能,要求电压表能够测量电压值,在液晶显示器上显示并播报测量电压值。 3. 实验现象:开机(运行)后,显示一个图片 mm.bmp(它的字模数据 mm.c、mm.在ide 的安装径spce061
2、aexampleintexaex10_voltagemeasurefrom0to3 提供),显示并播放当前电位器所在位置的电压;变化 r22 电位器,显示并播报 r22 电位器变化后的电压。参考资料1. 杜刚 16 位单片机原理及应用m. 北京 中国电力出版社 2007.92 杜刚/张东霞 16 位单片机原理及应用学习与实验指导m. 北京 中国电力出版社 2008.123 罗亚飞 凌阳 16 位单片机应用基础m. 北京 北京航空航天大学出版社 2003.124 李晓白 凌阳 16 位单片机 c 语言开发m. 北京 北京航天航空大学出版社2006.7完成期限 2009.6.29 至 2009.7
3、.3 单片机的控制系统课程设计 2指导教师 董长义 董宏丽 专业负责人 2009 年 6 月 16 日 单片机的控制系统课程设计 3目目 录录1 1 系统设计系统设计.11.11.1 设计要求设计要求 .11.1.11.1.1 编程要求编程要求 .11.1.21.1.2 实现功能实现功能.11.1.31.1.3 实验现象实验现象.11.21.2 设计思路设计思路 .12 2 设计环境及基本原理设计环境及基本原理.12.12.1 设计装置设计装置 .12.22.2 基本原理基本原理 .13 3 系统硬件设计系统硬件设计.24 4 单片机软件设计单片机软件设计.34.1a/d4.1a/d 转换转换
4、 .34.24.2 串口发送数据串口发送数据 .44.34.3 程序流程图程序流程图 .54.44.4 编写程序步骤编写程序步骤 .55 5 总结总结.66 6 参考文献参考文献.77 7 附录附录.8 单片机的控制系统课程设计 4 单片机的控制系统课程设计 5 单片机的控制系统课程设计 6第第 1 章章 系统设计系统设计1.11.1 设计要求设计要求 1.1.1 编程要求:主程序利用c语言编写,中断服务程序利用汇编语言编写。 1.1.2 实现功能:实现一个模拟电压表的功能,要求电压表能够测量电压值,在液晶显示器上显示并播报测量电压值。 1.1.3 实验现象:开机(运行)后,显示一个图片mm.
5、bmp(它的字模数据mm.c、mm.h在ide的安装径spce061aexampleintexaex10_voltagemeasurefrom0to3提供),显示并播放当前电位器所在位置的电压;变化r22电位器,显示并播报r22电位器变化后的电压;即只要r22电位器改变,系统就能自动测量出r22电位器的电压,并把测量得到的电压值播报并显示出来。(要求显示和播报电压值的精度为小数点后第四位) 1.21.2 设计思路设计思路本次设计要求完成基于单片机的电压测量系统的设计。系统包括数据采集a/d转换模块,单片机控制模块和驱动显示模块。splc501为液晶显示模组显示。 单片机的控制系统课程设计 7第
6、第2章章 设计环境及基本原理设计环境及基本原理2.12.1 设计装置设计装置1. 装有windows系统和nsp ide仿真环境的pc机一台,nsp 十六位单片机实验箱一个。 2. 本实验用到的实验箱硬件模块为:spce061a核心及周边电路模块(包含32个i/o口),lcd显示模组模块,双03.3v直流电平输入电路模块,两路音频输出电路模块。 2.22.2 基本工作原理基本工作原理 本实验中,通过spce061a内部adc采集数据,如图2-1,实验箱上v3为3.3v,当滑动头变化时,ioa0口输入的电压就随着变化;当已经通过p_adc_mux_ctrl启动转换,通过p_adc_mux_ctr
7、l设置从line_in1输入时,因为line_in1也就是ioa0,所以ioa0口输入的电压变化时,就会送入a/d转换器变化的值,a/d转换器采集转换;通过读取p_adc_mux_data转换得到数据,并把这些数据计算成电压值,计算出电压值的个位、小数点后第一位、小数点后第二位、小数点后第三位、小数点后第四位,然后把电压值按从个位到小数点后第四位的顺序播报和显示。 图2-1 03.3v直流电平输入电路 单片机的控制系统课程设计 8第第 3 3 章章 系统硬件设计系统硬件设计硬件连接图如图3-1 ,ioa8ioa15连接splc501液晶显示模块的d0d7,iob4连接ao,iob5连接rwp,
8、iob6连接ep,re连接/res,iob9连接/cs,vr、c86和ps跳线都与v3短接,把splc501液晶显示模组的时序选择为6800时序,即把jp6中所有左右两排的引针用跳线短接;两路音频输出j8和j13中靠左边的两个引针用跳线短接;ioa0连接r22电位器,即用排线把j26的第0号引针和j17(双03v的直流电平输入电路其中之一)中任一引针连接起来。 图3-1 硬件连接图 单片机的控制系统课程设计 9第第4 4章章 单片机软件设计单片机软件设计 软件部分设计要实现2个功能,一个是ad转换,另一是把转换的数据通过串口发送给pc机。4.14.1a ad d转换转换adc模块专用的有4个完
9、整的寄存器:adc结果高字节寄存器adresh,adc结果低字节寄存器adresl,0号adc控制寄存器adcon0和1号adc 控制寄存器adcon1。个是把转换的数据通过串口发送给pc机。adcon0的格式如下: 其中:adcs1adcs0为a/d转换时钟及其频率选择位; chs2chs0为ad转换模拟通道选择位;转换启动控制位兼做状态位;adon为ad转换器开关位。adcon1的格式如下: 其中:adfm为ad转换转换结果格式选择位;pcfg3pcfg0为ad转换引脚功能选择位。ad转换流程:1.如果需要ad中断功能,开放相应的中断使能位。2.等待所需要的采样时间。3.将启动控制兼状态位
10、置1,启动ad转换过程。4.等待ad转换完成,可以通过查询或中断的方法来判断。5.读取ad转换结果寄存器对adresh:adresl,如果需要,对转换中断标志清4.24.2串口发送数据串口发送数据 与串口有关的寄存器除了和中断有关的寄存器外,我们编写程序时主要有4个:发送状态兼控制寄存器txsta、接收状态兼控制寄存器rcsta、发送寄存器txreg、波特率寄存器spbrg。 单片机的控制系统课程设计 10发送状态兼控制寄存器txsta格式如下: 其中:tx9d为发送数据的第9位(如果使用9位数据帧结构);trmt为发送移位寄存器“空”标志;brgh为高波特率选择位(异步方式下使用);sync
11、为usart同步异步模式选择位;txen为发送使能位;tx9为发送数据长度选择位;csrc为时钟源选择位(异步方式下未用)。接收状态兼控制寄存器rcsta格式如下: 我们只使用了最高位spen(串行口使能端)。发送寄存器txreg: txreg是一个用户可读写的寄存器,每次用户发送的数据都是通过写入该缓冲器来实现的。发送流程:1.选择合适的波特率。2.置sync0及spen1,使usart工作于异步模式。3.如果需要中断处理功能,置txie1。4.如果要传送9位数据,置tx91。5.置txen1,使usart工作于发送器方式。6.如果选择传送第9位数据,把第9位数据置入tx9d。7.把即将发送
12、的8位数据送入txreg并启动发送。 4.34.3 程序流程图程序流程图 主程序流程图如图4-1,初始化lcd后,显示开机图片mm;进入电压测量循环:启动转换,采集20个转换数据并取平均值,主要是为了减少误差;计算电压值;如果和上次电压值之差小于0.1v,则电压没有变化,返回继续采集数据;如果和上次电压值之差大于0.1 v,表示有电压变化,计算电压各位(包括个位到小数点后四位)的数;清屏,显示图片mm;播报并显示电压值。 单片机的控制系统课程设计 11 图 4-1 主程序流程图4.44.4 编写程序步骤编写程序步骤 1. 新建一个工程 ex10_voltagemeasurefrom0to3,新
13、建一个 c 语言程序main.c。 (根据编程需要,读者可自行新建其他文件) 。 2. 拷贝支持 sacmv26e.lib 的汇编语言文件 hardware.asm 和头文件hardware.h、hardware.inc 以及头文件 spce061a.h 和 spce061a.inc 到ex10_voltagemeasurefrom0to3 工程文件夹。 3. 拷贝语音播放库 sacmv26e.lib 和头文件 s480.h、s480.inc 到 ex10_ voltagemeasurefrom0to3 工程文件夹。 4. 拷贝语音资源到当前工程的文件夹中,并将语音资源加载到工程中;语音资源可
14、在spce061aexampleintexa ex10_voltagemeasurefrom0to3voice 文件夹中找到。 5. 拷贝 splc501 液晶显示dataosforlcd.asm、splc501driver_io.asm、splc501driver_io.inc、sp 单片机的控制系统课程设计 12lc501user.c 和 splc501user.h 五个 lcd 驱动程序到 ex10_ voltagemeasurefrom0to3 工程文件夹。 6. 在 ide 集成开发环境的 projectsettinglink 中链接 sacmv26e.lib 库到工程中。 7. 添
15、加 hardware.asm、dataosforlcd.asm、splc501driver_io.asm 和splc501user.c 到工程文件的“source files” ,添加s480.h、s480.inc、hardware.h、hardware.inc、splc501driver_io.inc、splc501user.h 六个头文件到“head files” 。 8. 按照程序流程图编写程序。 9. rebuild all。 10. 按照硬件连接图连接硬件。注意把 j17 的任一引脚和 j26 中的第 0 号引脚连接,把 jp3 和 jp7 的所有跳线全部拔掉,以免对 i/o 口的数
16、据造成影响。 11. 下载程序,运行。 12. 调节r22电位器(双03.3v直流电平输入电路模块中下面一个电位器),观察lcd显示数据和实验箱播报的数据,分析是不是和实验要求相统一。 单片机的控制系统课程设计 13第第 5 5 章章 总结总结 通过这次课程设计使我进一步掌握了 spce061a 内部 adc 的使用方法,同时熟悉了凌阳单片机实验箱 lcd 显示模块的使用方法,熟悉了 sacm-s480 格式的语音播放方式。最后要感谢在这次设计中给与我帮助的霍老师和董老师。 单片机的控制系统课程设计 14参考文献参考文献1. 杜刚 16 位单片机原理及应用m. 北京 中国电力出版社 2007.
17、92 杜刚/张东霞 16 位单片机原理及应用学习与实验指导m. 北京 中国电力出版社 2008.123 罗亚飞 凌阳 16 位单片机应用基础m. 北京 北京航空航天大学出版社 2003.124 李晓白 凌阳 16 位单片机 c 语言开发m. 北京 北京航天航空大学出版社2006.75 李朝青 单片机原理及接口技术(修订版)m. 北京 北京航空航天大学出版社 1998.5 单片机的控制系统课程设计 15附附 录录程序设计程序设计#include volmeasure.h /定义了一个结构体#include mm.h#include splc501user.h#include spce061a.h
18、int main(void) int i=0,j=0,k=0,m; float fvolval;int uivolflag=0,uivolflagone=0;long int uivolflaghow=0; unsigned int uidata; long int lidatavol; struct st_volvalude volvalude; /0-3。3v 电压表服务结构 volvalude.volturevaludeb=7; /初始化电压采集值lcd501_init(0 x00); /初始化 lcdlcd501_setpaintmode(4); /设置 lcd 显示图象模式为取反叠加
19、模式lcd501_clrscreen(0); /清屏 lcd501_bitmap(0,0,(unsigned int *)encoding_00); /显示开机图片 fvolval=0.0;while(1) /主循环 *p_dac_ctrl = 0; *p_adc_ctrl = c_adce+c_mic_dis+c_agcn+c_dac_out3ma+c_vextref_dis+c_v2vrefb_dis; uidata = *p_adc_linein_data; while(*p_adc_mux_ctrl&0 x8000)!= 0 x8000); *p_adc_mux_ctrl=c_
20、adc_ch1; 单片机的控制系统课程设计 16 /播放语音后会改变 p_adc_ctrl 的设置uidata=ad_read(); /丢掉第一个数 j=0;for(i=0;i20;i+) /采 20 个数据到volvalude.volvaludeaj*p_watchdog_clear=c_wdtclr;uidata=ad_read();volvalude.volvaludeaj= uidata;j+; uivolflagone=0 xff; uivolflag=0;j=0;uidata=0;lidatavol=0; for(i=0;i20;i+) lidatavol=lidatavol+vo
21、lvalude.volvaludeaj; j+; uidata=lidatavol/20; /取 20 个数据的平均值,以减少误差 volvalude.volturevaludea=(float)uidata*3.3/0 xffc0; /得到电压值 fvolval=volvalude.volturevaludeb-volvalude.volturevaludea; if(fvolval(-0.1) /和前一次数据比较,有变化更新显示和语音提示 if(k=0) k+; else k+; else k=0; /取得要在lcd 上显示的数据,存入 volvalude.lcdj volvalude.v
22、olturevaludeb=volvalude.volturevaludea; uivolflaghow=volvalude.volturevaludea*10000; volvalude.lcd0=uivolflaghow/10000%10; volvalude.lcd1=uivolflaghow/1000%10; 单片机的控制系统课程设计 17 volvalude.lcd2=uivolflaghow/100%10; volvalude.lcd3=uivolflaghow/10%10; volvalude.lcd4=uivolflaghow%10; /lcd 数据更新 m = lcd501_
23、getpaintmode();/获取当前图象叠加模式lcd501_setpaintmode(2);/设置为清除模式lcd501_rectangle(68,40,127,56,paint_solid);/清除数据显示区lcd501_setpaintmode(m);/图象叠加模式恢复/显示 ad 转换数值以及语音播报结果 lcd501_putchar(68,40,(0+volvalude.lcd0); lcd501_putchar(76,40,.); plays480(volvalude.lcd0); plays480(10);lcd501_putchar(78,40,(0+volvalude.lcd1);plays480(volvalude.lcd1);lcd501_putchar(88,40,(0+volvalude.lcd2);plays480(volvalude.lcd2);lcd501_putchar(98,40,(0+volvalude.lcd3);plays480(volvalude.lcd3);lcd501_putchar(108,40,(0+volvalude.lcd4);plays480(volvalude.lcd4);lcd501_putchar(116,40,v);unsigned in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度物业租赁管理合同标的明细3篇
- 10000吨年产乳化蜡建设项目可行性研究报告
- 肠道子宫内膜异位症病因介绍
- 茶叶知识培训课件
- 国外课件教学
- 肛门坠胀病因介绍
- 肌瘤病因介绍
- 老年支气管哮喘病因介绍
- 二零二四年度技术研发合作合同的主要条款确认3篇
- 粤教沪科版九年级物理第十一章过关训练课件
- 消防维保指导价格
- 叶酸年终工作总结范文通用8篇
- 国民经济行业分类新旧类目对照表-266
- 教师岗位分类管理
- 品质中心职能说明书
- 解说经皮毒专题知识讲座
- 2022年平凉市庄浪县人民医院医护人员招聘笔试模拟试题及答案解析
- 内蒙科大社区社会工作教案08社区照顾
- 毕业设计(论文)-基于单片机的智能电子秤设计
- (高职)电子商务基础电子课件教学PPT(完整版)
- 商务谈判评分标准
评论
0/150
提交评论