51CTO下载-单片机原理与C51编程教案.ppt

51CTO下载-单片机原理与C51编程教案.ppt

  1. 1、本文档共193页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
//***********显示函数 void display(void) //定义显示函数 {uchar codevalue[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //0~F的字段码表 uchar chocode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //位选码表 uchar i,p,temp; for (i=0;i8;i++) { p=disbuffer[i]; //取当前显示的字符 temp=codevalue[p]; //查得显示字符的字段码 XBYTE[0x7f00]=temp; //送出字段码 temp=chocode[i]; //取当前的位选码 XBYTE[0x7f01]=temp; //送出位选码 delay(20); //延时1ms } } 动态键盘扫描C51编程 #include reg51.h #include absacc.h #define uchar unsigned char #define uint unsigned int void delays(void); uchar kbscan(void); void main(void) { uchar key; while(1) { key=kbscan(); /*键扫描函数*/ delays(); /*键消抖的延时函数*/ } } ◎ // 键消抖的延时函数 ◎ void delays(void) ◎ { ◎ uchar i; ◎ for(i=300;i0;i--); ◎ } // kbscan(void) 键扫描函数 uchar kbscan(void) { uchar sccode,recode; P1=0xf0; /*发全0行扫描码,列线输入*/ if((P10xf0)!=0xf0) /*若有键按下*/ { delays(); /*延时去抖动*/ if((P10xf0)!=0xf0) { sccode=0xfe; /*逐行扫描初值*/ while((sccode0x10)!=0) { P1=sccode; /*输出行扫描码*/ if((P10xf0)!=0xf0) /*本行有键按下*/ { recode=(P10xf0)|0x0f; return((~sccode)+(~recode)); /*返回特征字节码*/ } else sccode=(sccode1)|0x01; /*行扫描码左移一位*/ } } } return(0); /*无键按下,返回值为0*/ } 六.输入输出通道与MCS-51单片机的接口C51编程 例8 下图是一个ADC0809与8051的一个接口电路图。 1.硬件连接 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 ALE WR P2.7 RD INTO + + +5V GND D0 D1 D2 D3 D4 D5 D6 D7 ADDA ADDB ADDC CLK ALE START OE EOC IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 VREF+ VREF- ADC0809 8051 分 频 器 2.软件编程 设接口电路用于一个8路模拟量输入的巡回检测系统,使用中断方式采样数据,把采样转换所得的数字量按序存于片内RAM的30H~37H单元中。采样完一遍后停止采集。 C语言编程: #include reg51.h #include absacc.h //定义绝对地址访问 #define uchar unsigned char #define IN0 XBYTE[0x0000] //定义IN0为通道0的地址 static uchar data x[8]; //定义8个单元的数组,存放结果 uchar xdata *ad_adr; //定义指向通道的指针 uchar i=0; void main(void) { IT0=1; //初始化 EX0=1; EA=1; i=0; ad_adr=IN0; //指针指向通道

文档评论(0)

shaoye348 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档