- 18
- 0
- 约 123页
- 2016-12-05 发布于贵州
- 举报
第4章单片机的C51语言 如何避免连续计数? 第4章单片机的C51语言 初始化: P2 = P0 = table[0]; 解决办法: 取模运算(%10)→个位 整除10运算(/10)→十位 P2 = table[count%10]; P 0 = table[count/10]; 显示输出:如何将计数值拆成两个独立的数? 第4章单片机的C51语言 参考程序 程序运行效果 第4章单片机的C51语言 第4章单片机的C51语言 4.1 C51的程序结构 4.2 C51的数据结构 4.3 C51与汇编语言的混合编程 4.4 C51仿真开发环境 4.5 C51初步应用编程 4.5.1 I/O端口的简单应用 4.5.2 I/O端口的进阶实践 第4章单片机的C51语言 4.5.2.1 数码管动态显示原理与编程 两种显示接口:静态显示接口和动态显示接口 静态显示接口:一个数码管的引脚独立占据一根I/O口线。 优点:被显示数据只要送入并行口后就不再需要CPU干预,因而显示效果稳定。 缺点:占用资源较多 第4章单片机的C51语言 动态显示接口: 所有数码管的段码线对应并联接在一个并行口上,而每位数码管的公共端分别由一位I/O线控制; 由并口输出的显示码可被所有数码管收到,但只有满足导通条件的数码管可以被驱动。 第4章单片机的C51语言 工作原理: 采用快速切换方式(如10ms),每一时刻只有一只数码管导通工作。利用视力暂留特性,可获得连续显示效果。 优点:占用资源较少 缺点:占用机时较多(需要CPU随时刷新显示值) 第4章单片机的C51语言 实例6 数码管动态显示 采用共阴极动态LED显示原理,实现如下功能: SW1向下拨时显示字符“L2”,向上拨时显示字符“H3”。 第4章单片机的C51语言 分析: Proteus中的双联LED数码管相当于两个并联的数码管。 7SEG-MPX2-CC-BLUE Blue,2 Digit,7-segment Cathode Display 第4章单片机的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 第4章单片机的C51语言 如果不考虑开关switch,动态显示“L2”的程序可以如下: ; //LED “指针” //显示字模 led_point=0 P2=led_mode[led_point] led_point=1-led_point P3 =2 - led_point 第4章单片机的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 完整的主函数 第4章单片机的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(3
原创力文档

文档评论(0)