亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
單片機(jī)可控電源Proteus仿真程序 電路涉及到A/D、D/A轉(zhuǎn)換
[打印本頁]
作者:
zjlei88
時(shí)間:
2020-2-14 15:24
標(biāo)題:
單片機(jī)可控電源Proteus仿真程序 電路涉及到A/D、D/A轉(zhuǎn)換
可控電源,電壓可在1.25伏到9伏之間設(shè)定,電路涉及到A/D、D/A轉(zhuǎn)換、矩陣鍵盤和LED顯示。PROTEUS仿真圖和代碼見附件。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
鍵控穩(wěn)壓電源.png
(56.16 KB, 下載次數(shù): 39)
下載附件
2020-2-14 15:19 上傳
單片機(jī)源程序如下:
#include<reg51.h>
//#include<DAC0832.c>
//#include<ADC0832.c>
//#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
//#define DAC0832 XBYTE[0xfffe]
/************I/O口定義*********/
sbit CS=P2^3; //ADC0832的片選端
sbit CLK=P2^2; //時(shí)鐘端
sbit DIO=P2^1; //數(shù)據(jù)輸入輸出端
sbit up=P2^7;
sbit down=P3^0;
sbit L1=P2^4;
sbit L2=P2^5;
sbit L3=P2^6;
sbit WR2=P2^0;
sbit LED1=P2^7;
sbit LED2=P3^7;
uint cdi=0,dy=0;
uchar key=12,flag=0,h=0,m=0,l=0;
uint ge,dian,xiao1,xiao2;
uchar code table[]={ //共陽數(shù)碼管顯示定義
0x03,0x9f,0x25,0x0d,
0x99,0x49,0x41,0x1f,
0x01,0x09};
void delay();
uint A_D();
void display();
void DAC();
void key_test();
void delay(uchar i) //i=1延遲1ms
{
uchar a,b,c;
for(c=i;c>0;c--)
for(b=142;b>0;b--)
for(a=2;a>0;a--);
}
void vol_up()
{
cdi+=1;
DAC();
delay(1);
dy=A_D()*9/5;
ge=dy/51; // 計(jì)算整數(shù)部分
dian=(dy%51)*100/51; //計(jì)算小數(shù)部分
xiao1=dian/10; //取小數(shù)點(diǎn)后第一位
xiao2=dian%10; //去小數(shù)點(diǎn)后第二位
}
void vol_down()
{
cdi-=1;
DAC();
delay(1);
dy=A_D()*9/5;
ge=dy/51; // 計(jì)算整數(shù)部分
dian=(dy%51)*100/51; //計(jì)算小數(shù)部分
xiao1=dian/10; //取小數(shù)點(diǎn)后第一位
xiao2=dian%10; //去小數(shù)點(diǎn)后第二位
}
/*****
*函數(shù)名稱: void dispaly1()
*輸入?yún)?shù): 共0個(gè)參數(shù);
*輸出參數(shù): 共0個(gè)參數(shù);
*返回值: 無;
*需儲(chǔ)存的參數(shù): 共0個(gè)參數(shù);
*功能介紹: 顯示電壓值
*****/
void display()
{
if(flag==0)
{
P1=table[ge]&0xfe;
P1=table[ge]&0xfe; //顯示整數(shù)位,與0x01是為了顯示小數(shù)點(diǎn)
L1=1;
delay(1);
L1=0;
P1=table[xiao1]; //顯示小數(shù)點(diǎn)后第一位
L2=1;
delay(1);
L2=0;
P1=table[xiao2]; //顯示小數(shù)點(diǎn)后第二位,
L3=1;
delay(1);
L3=0;
}
else
{
P1=table[h]&0xfe;
P1=table[h]&0xfe; //顯示整數(shù)位,與0x01是為了顯示小數(shù)點(diǎn)
L1=1;
delay(1);
L1=0;
P1=table[m]; //顯示小數(shù)點(diǎn)后第一位
L2=1;
delay(1);
L2=0;
P1=table[l]; //顯示小數(shù)點(diǎn)后第二位,
L3=1;
delay(1);
L3=0;
}
}
/*****
*函數(shù)名稱: uchar A_D()
*輸入?yún)?shù): 共0個(gè)參數(shù);
*輸出參數(shù): 共0個(gè)參數(shù);
*返回值: 有;
*需儲(chǔ)存的參數(shù): 共0個(gè)參數(shù);
*功能介紹: 采集電壓
*****/
uint A_D()
{
uint dat;
uchar i;
CS=1; //一個(gè)轉(zhuǎn)換周期開始
CLK=0; //為第一個(gè)脈沖準(zhǔn)備
CS=0; //CS置0,片選有效
DIO=1; //DIO置1,規(guī)定起始信號(hào)
CLK=1; //第一個(gè)脈沖
CLK=0; //第一個(gè)脈沖的下降沿,此前DIO必須是高電平
DIO=1; //DIO置1,通道選擇信號(hào)
CLK=1; //第二個(gè)脈沖,第2、3個(gè)脈沖下沉之前,DI必須跟別輸入
//兩位數(shù)據(jù)用于選擇通道,這里選通道CH1
CLK=0; //第二個(gè)脈沖下降沿
DIO=1;//DI置1,選擇通道1
CLK=1;//第三個(gè)脈沖
CLK=0;//第三個(gè)脈沖下降沿
DIO=1;//第三個(gè)脈沖下沉沿之后,輸入端DIO失去作用,應(yīng)置1
CLK=1;//第四個(gè)脈沖
for(i=0;i<8;i++) //高位在前,循環(huán)8次讀出8位數(shù)據(jù)
{
CLK=1; //第四個(gè)脈沖
CLK=0;
dat<<=1; //將下面存儲(chǔ)的低位數(shù)據(jù)右移
dat|=(uchar)DIO; //將輸出數(shù)據(jù)DIO通過或運(yùn)算存儲(chǔ)在dat最低位
}
CS=1;//片選無效
return dat;
}
void DAC()
{
P0 = cdi;
WR2=0;
WR2=1;
}
/*****
*函數(shù)名稱: void key_test()
*輸入?yún)?shù): 共0個(gè)參數(shù);
*輸出參數(shù): 共0個(gè)參數(shù);
*返回值: 無;
*需儲(chǔ)存的參數(shù): 共0個(gè)參數(shù);
*功能介紹: 鍵盤掃描程序,采用行反轉(zhuǎn)法對(duì)鍵盤進(jìn)行掃描,確定鍵值
*****/
void key_test()
{
uchar temp=0;
delay(10); //去抖
if((P3&0x0f)!=0x0f)
{
temp=P3;
P3=0x70;
temp=temp|P3; //將行列值或即可得到每個(gè)鍵的編碼
switch(temp)
{
case 0x3e:key=1;break; //1
case 0x5e:key=2;break; //2
case 0x6e:key=3;break; //3
case 0x3d:key=4;break; //4
case 0x5d:key=5;break; //5
case 0x6d:key=6;break; //6
case 0x3b:key=7;break; //7
case 0x5b:key=8;break; //8
case 0x6b:key=9;break; //9
case 0x37:key=10;break; //*
case 0x57:key=0;break; //0
case 0x67:key=11;break; //#
default:key=12;
}
while((P3&0x70)!=0x70); //判斷松手檢測(cè)
}
}
void main()
{
uint i=0;
uchar set_ok=0;
LED1=0;
DAC();
delay(1);
dy=A_D()*9/5;
ge=dy/51; // 計(jì)算整數(shù)部分
dian=(dy%51)*100/51; //計(jì)算小數(shù)部分
xiao1=dian/10; //取小數(shù)點(diǎn)后第一位
xiao2=dian%10; //去小數(shù)點(diǎn)后第二位
display();
while(1)
{
P3=0x0f;
if((P3&0x0f)!=0x0f)
{ key_test();
if(key==10) //設(shè)置鍵
{ LED1=1;
flag=1;
key=12;
}
else if(key==11) //確定鍵
{
flag=0;
LED1=0;
key=12;
set_ok=1;
}
else if(key!=12) //其他數(shù)字鍵
{
if(flag==1)
{
h=m;
m=l;
l=key;
key=12;
}
}
}
if(set_ok==1)
{
set_ok=0;
if(h>ge)
{
do
{vol_up();}
while(h>ge);
}
else if(h<ge)
{
do
{vol_down();}
while(h<ge);
}
if(m>xiao1)
{
do
{vol_up();}
while(m>xiao1);
}
else if(m<xiao1)
{
do
{vol_down();}
while(m<xiao1);
}
}
display();
}
}
復(fù)制代碼
所有資料51hei提供下載:
可控電源.zip
(62.27 KB, 下載次數(shù): 59)
2020-2-14 15:23 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1