AD0809转换实验
// 实验二十一 A/D0809转换实验
#define LEDLen 6
#define MODE 0x03
xdata unsigned char CS0809 _at_ 0xA000;
xdata unsigned char OUTBIT _at_ 0x8002; // 位控制口 xdata unsigned char OUTSEG _at_ 0x8004; // 段控制口 xdata unsigned char IN _at_ 0x8001; // 键盘读入口
unsigned char LEDBuf[LEDLen]; // 显示缓冲
code unsigned char LEDMAP[] = { // 八段管显示码
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71
};
void Delay(unsigned char CNT) {
unsigned char i;
while (CNT-- !=0)
for (i=100; i !=0; i--); }
void DisplayLED()
{
unsigned char i;
unsigned char Pos;
unsigned char LED;
Pos = 0x20; // 从左边开始显示
for (i = 0; i < LEDLen; i++) {
OUTBIT = 0; // 关所有八段管
LED = LEDBuf[i];
OUTSEG = LED;
OUTBIT = Pos; // 显示一位八段管
Delay(5);
Pos >>= 1; // 显示下一位
}
OUTBIT = 0; // 关所有八段管 }
unsigned char Read0809()
{
unsigned char i;
CS0809 = 0; // 起动 A/D
for (i=0; i<0x20; i++) ; // 延时 > 100us
return(CS0809); // 读入结果 }
void main()
{
unsigned char j;
while(1) {
LEDBuf[0] = 0X3F;
LEDBuf[1] = 0X7F;
LEDBuf[2] = 0X3F;
LEDBuf[3] = 0X6F;
LEDBuf[4] = 0X00;
LEDBuf[5] = 0X00;
//b = Read0809();
LEDBuf[5] = LEDMAP[Read0809() & 0x0f] ;
LEDBuf[4] = LEDMAP[Read0809()>>4 & 0x0f] ;
for(j=0; j<5; j++)
DisplayLED(); // 延时
}
}
本文档为【AD0809转换实验】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。