STC12c5a60s2 AD 数码管驱动 没图有真相
#include "intrins.H"#include "STC12C5A60S2.H"
#define AD_SPEED 0x60 //0110,0000 11 90个时钟周期转换一次
#define uchar unsigned char
#define uintunsigned int
sbit P24 = P2 ^ 4; //千位
sbit P25 = P2 ^ 5; //百位
sbit P26 = P2 ^ 6; //十位
sbit P27 = P2 ^ 7; //个位
sbit P07 = P0 ^ 7; //小数点
uchar DATA_LED={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xFF};
//延时函数
//---------------------------------------------------------------------
void delay(uchar delay_time)
{
uint n;
while(delay_time--)
{
n = 600;
while(--n);
}
}
//数码管显示及数据处理程序
//---------------------------------------------------------------------
void led(uint n)
{
P0 = 0xFF;
P0 = DATA_LED; //个位
P27 = 0;
delay(1);
P27 = 1;
P0 = 0xFF;
P0 = DATA_LED; //十位
P26 = 0;
delay(1);
P26 = 1;
P0 = 0xFF;
P0 = DATA_LED; //百位
P25 = 0;
delay(1);
P25 = 1;
P0 = 0xFF;
P0 = DATA_LED;//千位
P24 = 0;
P07=0; //千位显示小数点
delay(1);
P24 = 1;
}
//AD转换函数
//---------------------------------------------------------------------
uint get_AD_result(uchar channel)
{
uchar AD_finished=0; //存储 A/D 转换标志
ADC_RES = 0; //高八位
ADC_RESL = 0; //低二位(本例未使用)
channel &= 0x07; //0000,0111 清0高5位
ADC_CONTR = AD_SPEED; //定义A/D转换速度
_nop_();
ADC_CONTR |= channel; //选择 A/D 当前通道
_nop_();
ADC_CONTR |= 0x80; //启动 A/D 电源
delay(1); //使输入电压达到稳定
ADC_CONTR |= 0x08; //0000,1000 令 ADC_START = 1, 启动A/D转换,
AD_finished = 0;
while (AD_finished ==0 ) //等待A/D转换结束
{
AD_finished = (ADC_CONTR & 0x10); //0001,0000 测试A/D转换结束否
}
ADC_CONTR &= 0xE7; //1110,0111 清 ADC_FLAG 位, 关闭A/D转换,
return (ADC_RES); //返回 A/D 高 8 位转换结果
}
//主函数
//---------------------------------------------------------------------
void main()
{
uint ADC_result;
P1ASF = 0x01; //0000,0001, 将 P1.0 置成模拟口
AUXR1 &= 0x00; //0000,0000, 令 ADRJ=0 : 10 位A/D 转换结果的高8 位放在ADC_RES 寄存器, 低2 位放在ADC_RESL 寄存器
ADC_CONTR |= 0x80; //1000,0000 打开 A/D 转换电源
while(1)
{
ADC_result = get_AD_result(0);//根据参数可改变A/D通道。
led(ADC_result*17.3); //显示数值。 17.4 是AD转换系数,实际显示值等于:系数*ADC_result=vin/vcc*256(8位)
}
} 沙发自已占! 没人顶!我自己顶! 啥意思? 楼主看看我刚才发的帖子,http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4754105,
数码管的驱动,不要老是教科书上面的思维,换个思路呗~~~ 回复【4楼】erxun 老孟
-----------------------------------------------------------------------
在下是新手目前追求简单能用,高深的学不来。 回复【3楼】xiaobendan 仲跻东
-----------------------------------------------------------------------
没啥意思!我想这些东西会有一些人用到,就贴出来了。 我以为是哪里有问题,但是却没有提问,哈哈
感谢您的无私 非常受用,感谢楼主 vvbvbvbvb 好人一个 自己再顶一下
./emotion/em025.gif mark mark一下 多谢楼主的AD例程 学习学习顶一下。。。 顶
页:
[1]