第5章 数码管显示程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.1 数码管显示代码
5.1 数码管显示代码
程序: 数码管显示代码 #include <reg52.h> main() { while(1) { P1=0xfe; }} 结果显示:数码管显示0
5.1 单个数码管显示代码
• 数码管显示代码,就是能让数码管显示正 常数字的数据。
5.2 测定单个数码管显示代码 数码管每次亮一个笔划
/*code char
5.6 数码管显示0000-9999
main() {
unsigned char i; while(1) { for(i=0;i<10;i++) {
shift(j); shift(i); shift(i); shift(i); delay_1s(42000); delay_1s(42000);
5.7 数码管显示时间
main(){ unsigned char j0,j1,j2,j3; unsigned int time=10000; while(1){ for(j3=0;j3<6;j3++){ for(j2=0;j2<10;j2++) { for(j1=0;j1<6;j1++) { for(j0=0;j0<10;j0++) { shift(j0); shift(j1); shift(j2); shift(j3); delay_1s(40000); }}}}}; }
第5章 数码管显示程序
第5章 数码管显示程序
本章主要内容: 5.1 数码管显示代码 5.2 测定单个数码管显示代码 5.3 单个数码管显示0-9-F 5.4 数组的应用,重写一亮一灭程序 5.5 多个数码管串行显示图 5.6 数码管显示0000-9999 5.7 数码管显示时间格式为:20-35-46或20 35 46
5.7 数码管显示时间 void delay_1s(unsigned int x) { while(x--); }
本章总结
关键灵活应用: 1. 数组,注意下标从0开始 2. SHIFT函数 3. 延时函数
} }}
5.6 数码管显示0000-9999
void shift(unsigned char n){
unsigned char m,i; m=led_code[n]; scl=0; for(i=0;i<8;i++) { if (m & 0x80) { sda=1;} else { sda=0; } scl=1; scl=0; m<<=1;
5.2 测定单个数码管显示代码 单步测试单个数码管笔划顺序 • 说明:P2口接到数码管8个引脚上,每次只 执行一个送数据语句,记住亮笔划位置; • 改变注解行,执行另一个送数据语句, 记住亮笔划位置; 问题提出:数码管如何才能显示0―9数字
程序5-3 数码管显示0―9的数
#include <reg52.h> void delay_1s(unsigned int x); main() { while(1) { P1=0xfe; //11111110 =0xfe delay_1s(42000); P1=0xfd; //11111101 delay_1s(42000); P1=0xfb; //11111011 delay_1s(42000); P1=0xf7; //11110111 delay_1s(42000); P1=0xef; //11101111 delay_1s(42000); P1=0xdf; //11011111 delay_1s(42000); P1=0xbf; //10111111 delay_1s(42000); P1=0x7f; //01111111 delay_1s(42000); }}
使用数组的方法实现,重 写一亮一灭程序,或0-9数 码管显示
5.5 多个数码管串行显示图
A
RXD TXD P1.0 &
B
CP
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
1K×8
a b c d e f g dp a b c d e f g dp a b c d e f g dp
5.7 数码管显示时间
void shift(unsigned char n) { unsigned char m,i; m=led_code[n]; scl=0; for(i=0;i<8;i++) { if (m & 0x80) { sda=1;} else { sda=0; } scl=1; scl=0; m<<=1; }}
}}
数码管显示0000-9999
void delay_1s(unsigned int x) { while(x- -) }
5.7 数码管显示时间
#include <reg52.h> void delay_1s(unsigned int x); void shift(unsigned char); sbit sda=P0^0; // must modifysbit scl=P0^1; // must modify /*code char led_code[19]={ 0x7E, 0x06, 0x5B, 0x4F, 0x27, 0x6D, 0x7D, 0x46, 0x7F, 0x6F, 0x77, 0x3D, 0x78, 0x1F, 0x79, 0x71, 0x01, 0x80 }; // 0,1,2,3,4,5,6,7,8,9 a,b,c,d,e,f - dot
// 延时函数void delay_1s(unsigned int x) { while(x--);}
说明:P1口接到数码管8个引脚上; 注意观察到,全亮或全灭(时间比 较长)之后 ,开始记录亮笔划位置的 顺序; 本程序把上一个例题的数数据改动的 一下
5.4 多个数码管显示,数组应用
#include <reg52.h> void delay_1s(unsigned int x); code char led_code[12]={ 0x00, 0xff, 0xff, 0xff,0xfe, 0xfd, 0xfb, 0xf7, 0xef,0xdf, 0xbf, 0x7f, }; // test code main() { while(1){ P2= led_code[0] delay_1s(42000); P2= led_code[1] delay_1s(42000); }}
+5V
74LS164
B CP
74LS164
80C51
A
+5V
1K×8 A B CP Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
+5V
74LS164
1K×8
多个数码管显示接线图,假定接到P3口上
多个数码管显示原理图
5.6 数码管显示0000-9999
自动测试数码管笔划顺序 #include <reg52.h> void delay_1s(unsigned int x); void shift(unsigned char); sbit sda=P0^0; // must modifysbit scl=P0^1; // must modify code char led_code[12]={ 0xff, 0xff, 0xff, 0xff,0xfe, 0xfd, 0xfb, 0xf7,0xef,0xdf, 0xbf, 0x7f, }; // test code led_code[19]={ 0x11,0xd7,0x32,0x92,0xd4, // 0,1,2,3,4 0x98,0x18,0xd3,0x10,0x90, // 5,6,7,8,9 0x50,0x1c,0x39,0x16,0x38, // a,b,c,d,e, 0x78,0xfe,0xef,0xff}; // f -elay_1s(unsigned int x) { while(x--); } 结果显示:原来的8个LED变成流水 灯,变成了数码管每次亮一个笔划, 请记住亮一个笔划的顺序。
5.2 测定单个数码管显示代码 单步测试单个数码管笔划顺序
#include <reg52.h> main() { while(1) { P2=0xfe; // 1111 1110 第1个数据,记住亮笔划位置// // // P2=0xfd; // 1111 1101 第2个数据,记住亮笔划位置//// // // P2=0xfb; // 1111 1011 第3个数据,记住亮笔划位置 // P2=0xf7; // 1111 0111 第4个数据,记住亮笔划位置// P2=0xef; // 1110 1111 第5个数据,记住亮笔划位置// P2=0xdf; // 1101 1111 第6个数据,记住亮笔划位置 // P2=0xbf; // 1011 1111 第7个数据,记住亮笔划位置 // P2=0x7f; // 0111 1111 第8个数据,记住亮笔划位置}}
#include <reg52.h> void delay_1s(unsigned int x); main() { while(1) { P1=0xfe; //11111110 =0xfe delay_1s(42000); P1=0xfd; //11111101 delay_1s(42000); P1=0xfb; //11111011 delay_1s(42000); P1=0xf7; //11110111 delay_1s(42000); P1=0xef; //11101111 delay_1s(42000); P1=0xdf; //11011111 delay_1s(42000); P1=0xbf; //10111111 delay_1s(42000); P1=0x7f; //01111111 delay_1s(42000); } }
相关文档
最新文档