当前位置:首页 > 单片机实验讲义-11个实验(1)
实验7 A/D转换实验
一、实验目的:
1. 掌握A/D转换与单片机的接口方法。 2. 了解A/D芯片ADC0809转换性能及编程方法。 3. 通过实验了解单片机如何进行数据采集。 二、实验设备:
CPU挂箱、8031CPU模块 三、实验内容:
利用实验台上的ADC0809做A/D转换器,实验箱上的电位器提供模拟电压信号输入,编制程序,将模拟量转换成数字量,用数码管显示模拟量转换的结果。 四、实验原理:
A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近法A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。
实验用的ADC0809属第二类,是八位A/D转换器。每采集一次需100us。
ADC0809 START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号。实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,故启动A/D转换只需如下两条指令:
MOV DPTR,#PORT MOVX @DPTR,A
A中为何内容并不重要,这是一次虚拟写。
在中断方式下,A/D转换结束后会自动产生EOC信号,将其与8031CPU板上的INT0相连接。在中断处理程序中,使用如下指令即可读取A/D转换的结果:
MOV DPTR,#PORT MOVX A,@DPTR 五、实验电路:
六、实验步骤:
1. 0809的片选信号CS0809接CS0。
2. 电位器的输出信号AN0接0809的ADIN0。 3. EOC接CPU板的INT0. 七、程序框图:T15.ASM
clude
void Display_byte(unsigned char loc,unsigned char dat) {
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; loc &=0xf;
Led_ctl = loc|0x80;
Led_dat = table[dat>>4]; /*显示高位*/ loc++;
Led_ctl = loc|0x80;
Led_dat = table[dat&0xf]; /*显示低位*/ }
void delay(unsigned int t) {
for(;t>0;t--); }
void main(void) {
Led_ctl = 0xd1;
while((Led_ctl&0x80)==0x80); Led_ctl = 0x31; while(1) {
ad_port = 0; while(INT0); while(!INT0);
Display_byte(0,ad_port); }
delay(10000); }
Led_dat Led_ctl ad_port
XBYTE[0xcfe8] XBYTE[0xcfe9] XBYTE[0xcfa0]
主程序 中断服务程序
实验8 数码显示实验
一、实验目的:
1. 进一步掌握定时器的使用和编程方法。 2. 了解七段数码显示数字的原理。
3. 掌握用一个段锁存器,一个位锁存器同时显示多位数字的技术。 二、实验设备:
CPU挂箱、8031CPU模块 三、实验原理:
本试验采用动态显示。动态显示就是一位一位地轮流点亮显示器的各个位(扫描)。将8031CPU的P1口当作一个位锁存器使用,74LS273作为段锁存器。 四、实验题目
利用定时器1定时中断,控制电子钟走时,利用实验箱上的六个数码管显示分、秒,做成一个电子钟。显示格式为: 分 秒
定时时间常数计算方法为:
定时器1工作于方式1,晶振频率为6MHZ,故预置值Tx为: (2e+16-Tx)x12x1/(6x10e+6)=0.1s Tx=15535D=3CAFH,故TH1=3CH,TL1=AFH 五、实验电路:
六、实验接线:
将P1口的P1.0~P1.5与数码管的输入LED1~LED6相连,74LS273的O0~O7与LED-A~LED-Dp相连,片选信号CS273与CS0相连。去掉短路子连接。 七、程序框图:T9.ASM
#include
Led_dat Led_ctl
XBYTE[0xcfe8] XBYTE[0xcfe9]
共分享92篇相关文档