51单片机把电位器的电压测量值在 4 位数码管上以 16 进制显示出来;
时间: 2024-03-11 19:46:50 浏览: 102
基于51单片机的抢答器实训报告总结文档2.doc
好的,以下是一份参考代码,实现使用51单片机将电位器的电压测量值在4位数码管上以16进制显示出来。
```
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit LSA=P2^2; //定义数码管LSA引脚
sbit LSB=P2^3; //定义数码管LSB引脚
sbit LSC=P2^4; //定义数码管LSC引脚
uchar code segCode[] = { //定义16进制码表
0x3f,0x06,0x5b,0x4f, //0,1,2,3
0x66,0x6d,0x7d,0x07, //4,5,6,7
0x7f,0x6f,0x77,0x7c, //8,9,A,b
0x39,0x5e,0x79,0x71 //C,d,E,F
};
void delay(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--); //约1ms
}
void display(uint num) //数码管显示函数
{
uchar i;
uint temp;
for(i=1;i<=4;i++) //依次选中4位数码管
{
temp = num % 16; //取余数
num /= 16; //除以16,准备显示下一位
switch(i) //根据位数选择对应的LSA、LSB、LSC引脚
{
case 1: LSA=0;LSB=0;LSC=0;break; //第一位,百位
case 2: LSA=1;LSB=0;LSC=0;break; //第二位,十位
case 3: LSA=0;LSB=1;LSC=0;break; //第三位,个位
case 4: LSA=1;LSB=1;LSC=0;break; //第四位,小数点
}
P0 = segCode[temp]; //将码表中对应的数码值输出到P0口
delay(5); //延时一段时间,使数码管显示稳定
P0 = 0x00; //清空P0口
}
}
void main()
{
uint vol = 0; //定义电压变量
while(1)
{
vol = ADC_Read(0); //读取电位器电压值
display(vol); //将电压值以16进制显示在数码管上
}
}
```
以上代码仅供参考,您需要根据自己的实际情况进行修改和调试。希望能对您有所帮助。
阅读全文