proteus仿真arduino测电阻,数码管显示
最近在做电子系统设计的课。我比较懒,不想搞具体的电路,所以直接去找了arduino的了。后面来描述下操作步骤。
1.在proteus中导入arduino库
下载链接及说明:
https://hanbaoaaa.xyz/index.php/archives/124/k.html
2.绘制如图电路
3.程序
byte numDigits = 4; //数码管位数
byte digitPins[] = {11, 10, 9, 8}; //数码管公共极连接Arduino的引脚
byte segmentPins[] = {A1, A2, A3, A4,A5 , 0, 1, 2}; //数码管a,b,c,d,e,f,g,dp对应引脚
//根据共阴极数码管段码表定义0~9显示的各段开关状态
int numTable[10][8] = {
//1为点亮,0为关闭
//a b c d e f g dp
{1, 1, 1, 1, 1, 1, 0, 0}, //0
{0, 1, 1, 0, 0, 0, 0, 0}, //1
{1, 1, 0, 1, 1, 0, 1, 0}, //2
{1, 1, 1, 1, 0, 0, 1, 0}, //3
{0, 1, 1, 0, 0, 1, 1, 0}, //4
{1, 0, 1, 1, 0, 1, 1, 0}, //5
{1, 0, 1, 1, 1, 1, 1, 0}, //6
{1, 1, 1, 0, 0, 0, 0, 0}, //7
{1, 1, 1, 1, 1, 1, 1, 0}, //8
{1, 1, 1, 1, 0, 1, 1, 0}, //9
};
void setup()
{
for (int i = 0; i < 8; i++)
{
pinMode(segmentPins[i], OUTPUT); //设置4~11引脚为输出模式
}
for(int i=0;i<4;i++){
pinMode(digitPins[i], OUTPUT); //设置4~11引脚为输出模式
}
}
char numbuffer[4]={1,3,2,4};
void loop()
{
long n = analogRead(A0);
n=100*(1023-n)/n+1;
numbuffer[0]=n%10;
numbuffer[1]=n/10%10;
numbuffer[2]=n/100%10;
numbuffer[3]=n/1000%10;
for (int j = 0; j < 4;j++)//扫描数码管
{
digitalWrite(digitPins[j], HIGH); //设置a 引脚的电平
digitalWrite(segmentPins[0], !numTable[numbuffer[j]][0]); //设置a 引脚的电平
digitalWrite(segmentPins[1], !numTable[numbuffer[j]][1]); //设置b 引脚的电平
digitalWrite(segmentPins[2], !numTable[numbuffer[j]][2]); //设置c 引脚的电平
digitalWrite(segmentPins[3], !numTable[numbuffer[j]][3]); //设置d 引脚的电平
digitalWrite(segmentPins[4], !numTable[numbuffer[j]][4]); //设置e 引脚的电平
digitalWrite(segmentPins[5], !numTable[numbuffer[j]][5]); //设置f 引脚的电平
digitalWrite(segmentPins[6], !numTable[numbuffer[j]][6]); //设置g 引脚的电平
digitalWrite(segmentPins[7], !numTable[numbuffer[j]][7]); //设置dp引脚的电平
// for (int i = 0; i < 10; i++)//以此显示数字0到9
// {
//
delay(2);
// }
digitalWrite(digitPins[j], LOW); //设置a 引脚的电平
}
}
4.说明
- adc为10bit 范围 0-1023
- arduino中编译后获取hex等编译生成文件
文件 -》首选项 -》
打开最后那个preference.txt
,加入一行 build.path=d:\arduino
路径即为hex文件生成的位置