电子科技大学选修单片机实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学学院实验报告
实验名称现代电子技术综合实验
姓名:
学号:
评分:
教师签字
电子科技大学教务处制
电子科技大学
实验报告
学生姓名:学号:指导教师:熊万安
实验地点:211大楼308 实验时间:
一、实验室名称:单片机技术综合实验室
二、实验项目名称:数码管显示A/D转换电压值及秒表
三、实验学时:12
四、实验目的与任务:
1、熟悉系统设计与实现原理
2、掌握KEIL C51的基本使用方法
3、熟悉实验板的应用
4、连接电路,编程调试,实现各部分的功能
5、完成系统软件的编写与调试
五、实验器材
1、PC机一台
2、实验板一块
六、实验原理、步骤及内容
试验要求:
①、数码管可在第2位到第4位显示A/D转换的电压值,
可调电压,数码管第5位显示“-”号,第6、7位显示2位学
号;
②、再按按键key1进行切换,此时数码管第6、7位显示从
学号到(学号值+5秒)的循环计时秒表,时间间隔为1秒。
按按键key2时,秒表停止计数,再按按键key2时,秒表继续
计数。按按键key1可切换回任务1的显示。
③、当电压值大于2伏时,按按键不起作用。
1、硬件设计
2、各部分硬件原理
(相关各部分例如:数码管动态扫描原理;TLC549ADC特征及应用等)
(1)数码管动态扫描原理
多位联体的动态数码管段选信号abcdefg和dp(相当于数据线是公用的,而位选信号com是分开的。扫描方法并不难,先把第1个数码管的显示数据送到abcdefg和dp,同时选通com1,而其它数码管的com信号禁止;延时一段时间(通常不超过10ms),再把第二个
数码管的显示数据送到abcdefg和dp,同时选通com2,而其他数码管的com信号禁止;延时一段时间,再显示下一个。注意,扫描整个数码管的频率应当保证在50Hz 以上,否则会看到明显的闪烁。
(2)TLC549ADC特征及应用等
当/CS变为低电平后,TLC549芯片被选中,同时前次转换结果的最高有效位MSB (A7)自DAT端输出,接着要求自CLK端输入8个外部时钟信号,前7个CLK信号的作用,是配合TLC549 输出前次转换结果的A6-A0 位,并为本次转换做准备:在第4个CLK 信号由高至低的跳变之后,片内采样/保持电路对输入模拟量采样开始,第8个CLK 信号的下降沿使片内采样/保持电路进入保持状态并启动A/D开始转换。转换时间为36 个系统时钟周期,最大为17us。直到A/D转换完成前的这段时间内,TLC549 的控制逻辑要求:或者/CS保持高电平,或者CLK 时钟端保持36个系统时钟周期的低电平。由此可见,在自TLC549的CLK 端输入8个外部时钟信号期间需要完成以下工作:读入前次A/D转换结果;对本次转换的输入模
拟信号采样并保持;启动本次A/D转换开始。
(3)共阴极数码管
共阴极数码管的一段连在一起接地,所以给一个高电平,相应的段位发光。
(4)按键逻辑
按键逻辑是连接在P2.0到P2.7的。当按键不按下的时候,输入为高电平,当按下按键,P2.x口与地相连,输入为低电平,所以按键是低电平有效。
3、软件设计
(说明:我和另一个同学一起做的,所以在程序设计上增加了
一个状态)
思考题:按键改用外部中断模式,电路如何修改(画示意
图)?程序如何修改,写出中断服务程序。
若按键改成外部中断模式,即把按键key2连接在INT0上。
电路示意图为:
而中断服务程序为:
void T0INTSVC() interrupt 0
{
ET0=1;
EX0=1;
EA =1;
if(mbiao<2600&&TR0==1)mbiao=mbiao+1;
if(mbiao==2600)mbiao=2000;
y10=mbiao/1000;
y=(mbiao-y10*1000)/100;
}
七、总结及心得体会
通过本实验课程的学习,我初步掌握了KEIL C51的基本使用方法,并能够自主连接电路,编程调试,实现各部分的功能,进而整合自己所学知识进行简单的编程,完成一系列组合实验。与此同时,我对中断和定时有了较深入的了解,对单片机的认识也有了进一步的提
高。
八、对本实验过程及方法、手段的改进建议
在本实验的实现过程中有几个问题需要注意:1、数码管是采取的动态扫描,所以位选频率一定要高于50Hz才能使人眼不能看到闪烁。2、实验软件的环境配置没有针对本地开发板进行默认配置,所以有同学会出现下载到开发板而不能运行,如果有初始配置的话,程序的调试会更加方便。
九、附录
1、程序
/*
利用TLC549 A/D转换器实现电压测量与显示
*/
#include
#include
#define LED_seg XBYTE[0x8000] //8位数码管显示器的段码(字形码)输出控制
#define KEY_IN XBYTE[0x8000]
//定义TLC549操作接口
sbit ADC_CS = P1^7;
sbit ADC_DA TA = P1^6;
sbit ADC_CLK = P1^5;
code unsigned char disp_seg[]= //显示段码
{0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39,0x5f,0x79,0x 71,0x40,0x00,0xff};
// 0 1 2 3 4 5 6 7 8 9 a b c d
e f - blank,全亮
unsigned char DispBuf[8]; //定义显示缓冲区(由定时中断程序自动扫描)
unsigned char key_value; //定义按键
int flag; //定义状态标志
unsigned char y10,y; //定义秒表的个位,十分位