KeilC51自学课件讲述.ppt

  1. 1、本文档共122页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机的C51语言 如何避免连续计数? 单片机的C51语言 初始化: P2 = P0 = table[0]; 解决办法: 取模运算(%10)→个位 整除10运算(/10)→十位 P2 = table[count%10]; P 0 = table[count/10]; 显示输出:如何将计数值拆成两个独立的数? 单片机的C51语言 参考程序 单片机的C51语言 1.1 C51的程序结构 1.2 C51的数据结构 1.3 C51与汇编语言的混合编程 1.4 C51仿真开发环境 1.5 C51初步应用编程 1.5.1 I/O端口的简单应用 1.5.2 I/O端口的进阶实践 单片机的C51语言 1.5.2.1 数码管动态显示原理与编程 两种显示接口:静态显示接口和动态显示接口 静态显示接口:一个数码管的引脚独立占据一根I/O口线。 优点:被显示数据只要送入并行口后就不再需要CPU干预,因而显示效果稳定。 缺点:占用资源较多 单片机的C51语言 动态显示接口: 所有数码管的段码线对应并联接在一个并行口上,而每位数码管的公共端分别由一位I/O线控制; 由并口输出的显示码可被所有数码管收到,但只有满足导通条件的数码管可以被驱动。 单片机的C51语言 工作原理: 采用快速切换方式(如10ms),每一时刻只有一只数码管导通工作。利用视力暂留特性,可获得连续显示效果。 优点:占用资源较少 缺点:占用机时较多(需要CPU随时刷新显示值) 单片机的C51语言 实例6 数码管动态显示 采用共阴极动态LED显示原理,实现如下功能: SW1向下拨时显示字符“L2”,向上拨时显示字符“H3”。 单片机的C51语言 分析: Proteus中的双联LED数码管相当于两个并联的数码管。 7SEG-MPX2-CC-BLUE Blue,2 Digit,7-segment Cathode Display 单片机的C51语言 A-G→ “0x38”, 1#→“0”,2# → “1” A-G→ “0x5b”, 1#→“1”,2# → “0” P2←led_mode[0], P3 ←xxxx xx10B =2 P2←led_mode[1], P3 ←xxxx xx01B =1 led_mode[ ]={0x38,0x5b} led_point=0 P2=led_mode[led_point] led_point=1-led_point P3 =2 - led_point 单片机的C51语言 如果不考虑开关switch,动态显示“L2”的程序可以如下: ; //LED “指针” //显示字模 led_point=0 P2=led_mode[led_point] led_point=1-led_point P3 =2 - led_point 单片机的C51语言 A-G→ “0x76”, 1#→“0”,2# → “1” A-G→ “0x4f”, 1#→“1”,2# → “0” 字符数组 led_mode[ ]={0x38,0x5b,0x76,0x4f} 开关状态变量 switch_sta 复合指针变量 led_point + switch_sta 显示字符 L 2 H 3 switch_sta+led_point 0 1 2 3 led_point 0 1 0 1 switch_sta 0 0 2 2 P3 = 2 - led_point 2 1 2 1 led_point=0 P2=led_mode [led_point +switch_sta] led_point=1-led_point P3 =2 - led_point switch_sta=0,2 完整的主函数 单片机的C51语言 #include REG51.H char led_mod[] = {0x38,0x5B,0x76,0x4F}; void delay(unsigned int time); sbit P17=P1^7; void main() { char led_point = 0, switch_sta = 0; while (1) { if (P17 == 1) switch_sta = 2; else switch_sta = 0; P3 = 2 - led_point; P2= led_mod[switch_sta+led_point]; led_point = 1 - led_point; delay(30); }} led_point=0 P2=led_mode [led_point +switch_sta] le

文档评论(0)

整理王 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档