MC9S12:AD采集显示实验
Posted JeckXu666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MC9S12:AD采集显示实验相关的知识,希望对你有一定的参考价值。
MC9S12:AD采集显示实验
一、 实验题目
单通道连续采样-12 位模式
二、 实验内容
用 S12 的 AD 模块的 0 通道将一路模拟电平转换成数字量,使用 12 位分辨率,将转换后的数字量送数码管显示
三、 实验原理图
四、 具体设计
4.1 软件流程图
程序首先初始化各个外设,然后进入死循环,等待ADC采集完成后,将数值显示在数码管上
4.2 程序代码
端口定义代码:定义端口A和端口H为输出方向,并清零
void Port_init(void)
{
DDRA = 0xFF;
DDRH = 0xFF;
PORTA = 0x00;
PTH = 0x00;
}
数码管显示代码:传入一个4位数的无符号整形,依次在数码管上打印出来
void Set_Show(unsigned int num)
{
unsigned char SM_SBUFF[4],i=0; //用户缓冲显示内容
unsigned char led_dig=0;
SM_SBUFF[3] = num/1000;
SM_SBUFF[2] = num%1000/100;
SM_SBUFF[1] = num%100/10;
SM_SBUFF[0] = num%10;
led_dig = 0x01; //显示转换结果
for(i=0;i<4;i++)
{
PORTA = g_LED_Seg_Table[SM_SBUFF[i]];
PTH = led_dig;
led_dig = led_dig<<1;
Delay(1);
}
}
延时函数代码:传入一个延时数目,用for循环死延时一段时间
void Delay(unsigned int loop_times)
{
unsigned int loop_i,loop_j;
for (loop_i=0; loop_i<loop_times; loop_i++)
{
for (loop_j=0; loop_j<4000;loop_j++)
{
;
}
}
}
ADC初始化代码:
void ADC_Init(void)
{
ATD0DIEN = 0;
ATD0CTL1 = 0x40;
ATD0CTL2 = 0x40;
ATD0CTL3 = 0x88;
ATD0CTL4 = 0x03;
ATD0CTL5 = 0x20;
}
主循环代码:
void main(void)
{
/* put your own code here */
unsigned int value;
SetBusCLK_32M();
ADC_Init();
Port_init();
for(;;)
{
while(!ATD0STAT2L_CCF0)
{
;
}
value = ATD0DR0;
Set_Show(value);
} /* wait forever */
/* please make sure that you never leave this function */
}
以上是关于MC9S12:AD采集显示实验的主要内容,如果未能解决你的问题,请参考以下文章