第九章_单片机原理与应用.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章_单片机原理与应用

异步通信字符格式;图9-1 单片机与外部设备连接图;图9-2 单片机驱动LED;如上图所示,若LED正向偏压时,两端电压VD为1.7V,试选择适当的限流电阻R1,使发光二极管的电流ID限制为8mA,并编程实现发光二极管约2s亮灭一次。;#include reg51.h sbit gate = P1^0; // 定义P1.0口 void main(void){ unsigned int i,j; while(1){ for (i=1000; i0; i--) // 双重循环,延时约1s for (j=1000; j0; j--); gate =!gate; // 对P1.0口取反 } };图9-3 七段数码管;表9-2 七段LED显示器字符段码表;例9-2:如图所示,编写字符“0-9”的显示子程序。;C51程序代码: /*************共阳极LED数码管显示子程序*************** 入口: 显示字符----定义为变量dis_index 出口: 无 功能: 将显示字符对应的段码送到P2口,实现对应字符的显示功能 ********************************************************/ #include reg51.h unsigned char code LEDvalue[10]={ 0xc0,0xf9,0xa4,0xb0, 0x99, 0x92,0x82,0xf8,0x80,0x90}; void proc_dis(unsigned char dis_index){ P2 = LEDvalue [dis_index]; // 显示代码传送到P2口 };二、键盘接口;二、键盘接口;二、键盘接口;二、键盘接口;二、键盘接口;二、键盘接口;二、键盘接口;二、键盘接口;二、键盘接口;二、键盘接口;#include reg51.h void key_deal(void) { unsigned char Key_value; // 按键键值 P1 |= 0x07; // P1.0~P1.2为输入端口 Key_value = P1 07; // 屏蔽P1口高5位,取键值 switch (Key_value) { case 6: Sub_S1(); break; // S1按键按下,执行对应子程序 case 5: Sub_S2(); break; // S2按键按下,执行对应子程序 case 3: Sub_S3(); break; // S3按键按下,执行对应子程序 default: break; } };二、键盘接口;二、键盘接口;二、键盘接口;例9-4:参照9-12矩阵式键盘接口电路图,编写3×3矩阵式按键扫描处理子程序。已知按键处理子程序分别为Sub_S1( )、Sub_S2( )、……、Sub_S9( )。;AT89C52;#include reg51.h sbit row1 = P1 ^ 0; //定义位变量,参看电路图 sbit row2 = P1 ^ 1; sbit row3 = P1 ^ 2; sbit col1 = P1 ^ 3; sbit col2 = P1 ^ 4; sbit col3 = P1 ^ 5; void Delay10ms (void); // 10ms软件延时,子程序略;/************************************************* * 函数名称:KeyDown ( ) * 功 能:检测键盘是否按下 * 入口参数:无 * 出口参数:返回1表示键盘按下,返回0表示键盘未按下 **************************************************/ unsigned char KeyDown (void) { row1=1; row2=1; row3=1; // 行线设为输入 col1=0; col2=0; col3=0; // 列线全部置低 if ((row1==0) || (row2==0) || (row3==0)) { // 若有任一行线读回状态为低 Delay10ms (); // 10ms延时消抖; if ((row1

文档评论(0)

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

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

1亿VIP精品文档

相关文档