資源簡介
之前在網上下載過很多相關程序,但是他們都有一個最大的問題就是只有程序沒有硬件電路,本人上傳的這個 不僅包括C程序還包括硬件仿真電路,仿真軟件采用的是Proteus8.

代碼片段和文件信息
/*******************************************************************
時間:2017-11-7晚
地點:重慶光電學院
系統晶振:12MHz
實現功能:直接采集并顯示電壓值,按鍵按下數碼管顯示采集到的電壓值,按鍵再次按下關閉ADC
*******************************************************************/
#include?“reg52.h“
#include?“intrins.h“
#define?nop()?_nop_()??//宏定義一個機器周期
#define?uchar?unsigned?char
#define?uint?unsigned?int
#define?ADC_Data?P1
#define?SMG_DData?P0/*數碼管段碼端口*/
#define?SMG_WData?P2/*數碼管位碼端口*/
//引腳定義
sbit?CS_0804??=?P3^5;
sbit?WR_0804??=?P3^6;
sbit?INT_0804?=?P3^0;
sbit?RD_0804??=?P3^7;
sbit?K1?=?P3^1;
sbit?K2?=?P3^2;
bit?value_flag?=?0;?//標志位
//段碼表
uchar?code?SMG_Dcode[]={0x3F/*0*/0x06/*1*/0x5B/*2*/0x4F/*3*/0x66/*4*/0x6D/*5*/0x7D/*6*/0x07/*7*/0x7F/*8*/0x6F/*9*/};
//位碼表
uchar?code?SMG_Wcode[]={0xfe0xfd0xfb0xf7};
/*******************************************************************
延時函數
*******************************************************************/
void?Delay(uint?xms)
{
/*
uint?ij;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);unsigned?char?i=0;
*/
uchar?xy;
for(x=xms;x>0;x--)
{
for(y=0;y<250;y++)
{
nop();
nop();
nop();
nop();
}
}?
}
/*******************************************************************
獲取ADC寄存器值函數
說明:只是獲取的ADC內部電壓寄存器的值,沒有進行任何的轉換
??????而電壓值的轉換部分將放在顯示部分
*******************************************************************/
uchar?GetAdcvalue()
{
uchar?DiaoYa?=?0;
WR_0804?=?1;//先使其為高電平
CS_0804?=?0;//芯片選通使能
WR_0804?=?0;
WR_0804?=?1;//相當于給了一個低電平脈沖啟動轉換
nop();nop();nop();nop();
while(INT_0804?==?1);//等待轉換結束
RD_0804?=?0;//讀數據
INT_0804?=?1;
DiaoYa?=ADC_Data;//返回電壓寄存器中的值(注意,此時未轉換成具體電壓)
RD_0804?=?1;
return?DiaoYa;//返回電壓寄存器中的值
}
/*******************************************************************
顯示AD轉換后的電壓值
說明:此函數主要實現兩個功能【一是將ADC0804電壓寄存器中的值轉換為
??????實際電壓值;二是將實際電壓值用數碼管顯示出來】
*******************************************************************/
void?DisVoltage(uchar?V_0804)
{
double?Voltage0?=?(double)V_0804;
uchar?Ge?=?0;//用于存取個位數值
uchar?Xiao1?=?0;//用于存取小數點后第一位數值
uchar?Xiao2?=?0;//用于存取小數點后第二位數值
uchar?Xiao3?=?0;//用于存取小數點后第三位數值
????Voltage0?=?(5*(Voltage0/255))*1000;//電壓值已經轉換并且*1000用于提取小數點后三位
//提取每一位的數值
Ge?=?((uint)Voltage0)/1000%10;
Xiao1?=?((uint)Voltage0)/100%10;
Xiao2?=?((uint)Voltage0)/10%10;
Xiao3?=?((uint)Voltage0)%10;
????//顯示
SMG_WData?=?0xff;//消隱
SMG_DData?=?SMG_Dcode[Ge]?|?0x80;
SMG_WData?=?SMG_Wcode[0];
Delay(4);
SMG_WData?=?0xff;//消隱
SMG_DData?=?SMG_Dcode[Xiao1];
SMG_WData?=?SMG_Wcode[1];
Delay(4);
SMG_WData?=?0xff;//消隱
SMG_DData?=?SMG_Dcode[Xiao2];
SMG_WData?=?SMG_Wcode[2];
Delay(4);
SMG_WData?=?0xff;//消隱
SMG_DData?=?SMG_Dcode[Xiao3];
SMG_WData?=?SMG_Wcode[3];
Delay(4);
SMG_WData?=?0xff;
}
/*******************************************************************
檢測按鍵是否被按下
*******************************************************************/
void?Scan_keyoutCmd(void)
{
if(K1?==?0)?//檢測按鍵是否按下
{
De
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2017-11-10?21:41??AD轉換\
?????文件?????????874??2017-11-07?22:52??AD轉換\AD轉換.pdsprj.JONY-PC.John.workspace
?????文件???????22009??2017-11-07?22:51??AD轉換\Proteus仿真圖.pdsprj
?????目錄???????????0??2017-11-07?22:51??AD轉換\程序\
?????文件????????7576??2017-11-07?22:48??AD轉換\程序\ADC0804
?????文件????????7912??2017-11-07?22:48??AD轉換\程序\ADC0804.LST
?????文件????????9604??2017-11-07?22:48??AD轉換\程序\ADC0804.M51
?????文件????????7334??2017-11-07?22:48??AD轉換\程序\ADC0804.OBJ
?????文件????????4057??2017-11-07?22:48??AD轉換\程序\ADC0804.c
?????文件????????3502??2017-11-07?22:48??AD轉換\程序\ADC0804.hex
?????文件??????????46??2017-11-07?22:48??AD轉換\程序\ADC0804.lnp
?????文件????????9319??2017-11-07?22:48??AD轉換\程序\ADC0804.plg
?????文件???????68305??2011-07-01?18:17??AD轉換\程序\ADC0804.uvgui.Veiko
?????文件???????68305??2011-07-01?18:16??AD轉換\程序\ADC0804.uvgui_Veiko.bak
?????文件???????55213??2017-11-07?22:50??AD轉換\程序\ADC0804.uvopt
?????文件???????13235??2017-11-06?22:57??AD轉換\程序\ADC0804.uvproj
?????文件???????55219??2017-11-07?08:42??AD轉換\程序\ADC0804_uvopt.bak
?????文件???????13265??2011-06-30?23:27??AD轉換\程序\ADC0804_uvproj.bak
- 上一篇:基于FPGA的sobel邊緣檢測
- 下一篇:js實現的簡單選項卡特效
評論
共有 條評論