《计算机控制技术》实验代码

前因

托管实验代码,让学弟学妹方便一点

正文

A/D 转换实验

单路

代码

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
// 各数字的数码管段码(共阴)
uchar code LEDData[]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
sbit OE = P1^0; // 输出使能
sbit EOC = P1^1; // 转换结束信号
sbit ST = P1^2; // 启动信号
sbit CLK = P1^3; // 时钟信号
sbit DA = P1^4;
sbit DB = P1^5;
sbit DC = P1^6;
// 延时
void DelayMS(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
// 显示转换结果
void Display_Result(uchar d)
{
uint d1;
d1=d*500.0/255;
P2 = 0xf7; // 第4个数码管显示个位数
P0 = LEDData[d1%10];
DelayMS(5);
P2 = 0xfb; // 第3个数码管显示十位数
P0 = LEDData[d1%100/10];
DelayMS(5);
P2 = 0xfd; // 第2个数码管显示百位数
P0 = LEDData[d1/100];
DelayMS(5);
}
// 主程序
void main()
{
TMOD = 0x02; // T0工作模式2
TH0 = 0x14;
TL0 = 0x14;
IE = 0x82;
TR0 = 1;
P1=0x3f; // 选择ADC0809的通道3(0011)(P1.4~P1.6)
while(1)
{
ST = 0; // 启动A/D转换
ST = 1;
ST = 0;
while(EOC == 0); // 等待转换完成
OE = 1;
Display_Result(P3);
OE = 0;
}
}
// T0定时器中断给ADC0809提供时钟信号
void Timer0_INT() interrupt 1
{
CLK = !CLK;
}

效果

双路

代码

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
// 各数字的数码管段码(共阴)
uchar code LEDData[]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
sbit OE = P1^0; // 输出使能
sbit EOC = P1^1; // 转换结束信号
sbit ST = P1^2; // 启动信号
sbit CLK = P1^3; // 时钟信号
sbit DA = P1^4;
sbit DB = P1^5;
sbit DC = P1^6;
///////////////
sbit SW = P1^7;
///////////////
// 延时
void DelayMS(uint ms)
{
uchar i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
// 显示转换结果
void Display_Result(uchar d)
{
uint d1;
d1=d*500.0/255;
P2 = 0xf7; // 第4个数码管显示个位数
P0 = LEDData[d1%10];
DelayMS(5);
P2 = 0xfb; // 第3个数码管显示十位数
P0 = LEDData[d1%100/10];
DelayMS(5);
P2 = 0xfd; // 第2个数码管显示百位数
P0 = LEDData[d1/100];
DelayMS(5);
}
// 主程序
void main()
{
TMOD = 0x02; // T0工作模式2
TH0 = 0x14;
TL0 = 0x14;
IE = 0x82;
TR0 = 1;
while(1)
{
///////////////
if(SW == 1)// 判断选择通道3/7
P1=0x3f;
else
P1=0x7f;
///////////////
ST = 0; // 启动A/D转换
ST = 1;
ST = 0;
while(EOC == 0); // 等待转换完成
OE = 1;
Display_Result(P3);
OE = 0;
}
}
// T0定时器中断给ADC0809提供时钟信号
void Timer0_INT() interrupt 1
{
CLK = !CLK;
}

效果

文章作者: sikouhjw
文章链接: https://sikouhjw.github.io/2020/05/13/2020-05-13-Experiment-of-computer-control-technology/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 sikouhjw.github.io
支付宝捐赠
微信捐赠