91视频免费?看_蜜芽MY188精品TV在线观看_国产免费无遮挡在线观看视频_深夜国产_亚洲精品欧洲精品_欧美黑人粗暴多交

  • 回復(fù)
  • 收藏
  • 點贊
  • 分享
  • 發(fā)新帖

關(guān)于用51單片機和ADC0809做電壓表的問題(51高手請進(jìn))

/****************************/
/*Head files*/
/************************/
#include"reg51.h"
#include"absacc.h"
/***********************/
#define c8279 XBYTE[0x0fff] /*8279控制字寄存器地址*/
#define d8279 XBYTE[0x0ffe] /*8279數(shù)據(jù)地址*/
#define ch0 XBYTE[0x2ff8] /*ADC地址*/
#define uchar unsigned char
#define uint unsigned int
sbit E=P3^2;
/*******************************/
uint disdat[8]; /*定義一個數(shù)組作為顯示單元*/
uchar nokey;
uint LedCode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f, /*0,1,2,3,4,5,6,7,8,9*/
0x77,0x7c,0x39,0x5e,0x79,0x71,0x3d,0x76,0x40,0x00}; /*A,B,C,D,E,F,G,H,-,hide*//*段碼表*/
uchar keyval[]={0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38, /*0,1,2,3,4,5,6,7*/
0x01,0x09,0x11,0x19,0x21,0x29,0x31,0x39}; /*7,8,9,A,B,C,D,E,F*//*鍵值表*/
/*****************************/
/*函數(shù)聲明*/
/********************/
void Init8279(void); /*8279 Init*/
void Display(void); /*display*/
uchar ReadKey(void); /*ReadKey*/
void Delay(uint); /*delay*/
/*****************************************/
/*主函數(shù)*/
/**************************************/
void main(void)
{
int v;
float v0=0.0;
Init8279();
while(1)
{
ch0=0;
Delay(128);
while(E==0);
v=ch0;
v0=(float)5*v/255;
v0=1000*v0;
disdat[0]=0x13; /*顯示單元賦值*/
disdat[1]=0x13;
disdat[2]=0x13;
disdat[3]=0x13;
disdat[4]=(int)v0/1000;
disdat[5]=(int)v0%1000/100;
disdat[6]=(int)v0%1000%100/10;
disdat[7]=(int)v0%1000%100%10;
Display();
Delay(60000);
}
}
/**************************************/
void Init8279(void)
{
c8279=0x00; /* set 8279 工作方式8x8字符顯示;左邊輸入;雙鍵互鎖 */
c8279=0x2a; /* set 8279 分頻系數(shù) */
c8279=0xd1; /* clear 8279 */
while(c8279 & 0x80);
}
/******************* 讀鍵值函數(shù) ************/
uchar ReadKey(void)
{
uchar i,j,m;
m=c8279&0x0f; /*讀取按鍵ram看是否有鍵按下*/
if(m==0)
return(nokey); /*no key is pressed*/
else
{
c8279=0x40; /* read 8279 FIFO */
i=d8279; /* i=keyval */
i&=0x3f;
for(j=0;j<16;j++)
{
if(i!=keyval[j]); /*程序查表算法*/
else return(j);
}
}
}
/*********************************************/
void Display(void)
{
uint i;
for(i=0;i<8;i++)
{
c8279=0x80+i;
d8279=LedCode[disdat[i]];
}
}
/*******************************************/
void Delay(uint t)
{
while(--t);
}
/***



請各位幫看一下有什么問題啊
問題補充:地址和顯示部分沒問題
轉(zhuǎn)換有問題
不能正確轉(zhuǎn)換
比如給0V它會轉(zhuǎn)換成1~3
給5V它轉(zhuǎn)換成3~5
中間基本也是這樣
而且每次轉(zhuǎn)換跳動很大
但出現(xiàn)的數(shù)值不多
這是第4天了
這四天沒干別的
上網(wǎng)查資料
檢查電路
要瘋了
全部回復(fù)(0)
正序查看
倒序查看
現(xiàn)在還沒有回復(fù)呢,說說你的想法
發(fā)
主站蜘蛛池模板: 灌云县| 衡南县| 卫辉市| 台前县| 长寿区| 宾川县| 古交市| 深水埗区| 南岸区| 张掖市| 望谟县| 交城县| 绩溪县| 兰溪市| 定南县| 南安市| 嘉定区| 商水县| 抚州市| 兴和县| 广南县| 阳信县| 珲春市| 万盛区| 牟定县| 剑河县| 德江县| 根河市| 叶城县| 乌拉特前旗| 阳新县| 民县| 财经| 大余县| 柘荣县| 绍兴市| 永安市| 宁南县| 平山县| 华容县| 沭阳县|