摘要: 同上一篇原理相似,实现0-99累加的代码如下#includesbit LATCH1=P2^2;//段锁存sbit LATCH2=P2^3;//位锁存unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码unsigned char TempData[8]; //存储显示值的全局变量void De 阅读全文
posted @ 2014-03-03 21:11 彩蛋 阅读(402) 评论(0) 推荐(0) 编辑
摘要: #includesbit LATCH1=P2^2;//定义锁存使能端口 段锁存sbit LATCH2=P2^3;// 位锁存unsigned char code DuanMa[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};// 显示段码值0~9unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码unsigned char TempData[8]; //存储显示值的全局变量voi... 阅读全文
posted @ 2014-03-01 20:27 彩蛋 阅读(518) 评论(0) 推荐(0) 编辑
摘要: 利用P3口接收外部输入(P0和P3都支持输入和输出),8位外部按键其实对应了8位二进制数,按下的为0,没按的为1,根据对应的输入显示对应的输出。#includeunsigned char code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; // 显示数值表0-9void main (void){ while (1) //主循环 { switch(P3) //P3口作为独立按键输入端,检测端口电平并做如下判断 ... 阅读全文
posted @ 2014-03-01 20:15 彩蛋 阅读(3587) 评论(0) 推荐(0) 编辑
摘要: 以下代码在8个数码管上同时依次显示从0~F,利用i,j,m三个变量来实现显示的控制。#includesbit LATCH1=P2^2;sbit LATCH2=P2^3;unsigned char code DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};// 显示段码值0~Funsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//分别对应相应的数码管点亮,即位码void Del 阅读全文
posted @ 2014-03-01 20:03 彩蛋 阅读(1110) 评论(0) 推荐(0) 编辑
摘要: 以下代码在8个数码管依次显示01234567,其原理是通过锁定位和段显示1个码,然后适当延时保持一会儿让人眼识别接着解锁位和段,赋值下一个数字,然后锁定位和段,再延时让人眼识别,这样通过不断的赋值依次将8个数字送到数码管。#include void Delay(unsigned int t);sbit LATCH1 = P2^2; // 定义锁存使能端口 段锁存sbit LATCH2 = P2^3; // 位锁存unsigned char code DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x... 阅读全文
posted @ 2014-03-01 19:49 彩蛋 阅读(569) 评论(0) 推荐(0) 编辑
摘要: 多位数码连接上可使用共阴极和共阳极,各管可以用锁存器来保持其各自的数字,其原理就是位锁存器选通1位数码管,然后段锁存锁定输出的数字。如果多位显示的话,利用人眼的视觉暂留,分别以很快的速度位锁段锁一数码管,再位锁段锁另一数码管,下一篇将会学习。下面是将共阴极第一位显示数字3的示例。#include sbit LATCH1 = P2^2; //定义锁存使能端口 段锁存sbit LATCH2 = P2^3; // 位锁存void main(){ while(1) {P1 = 0xFE; //取位码 二进制1111 1110即第一位数码管选通 LATCH2 ... 阅读全文
posted @ 2014-02-28 22:56 彩蛋 阅读(1519) 评论(0) 推荐(1) 编辑
摘要: 数码管的示意图如上,通过点亮a-g七个led来拼成对应的数字或字符,数码管有共阳极(底电平亮)和共阴极(高电平亮),以上图的数字2为例:共阳极(0亮1灭): DP G F E D C B A 1 0 1 0 01 0 0 = 0xA4共阴极(1亮0灭): DPGF E DC B A 0101 1 0 1 1 = 0x5B全部定义:附件的excel中有所有共阳共阴的代码;以共阳极为例,将0-9定义在数组(C语言中是叫“表”?有知道的同志可以赐教)中,通过循环来依次显示0-9;#include unsigned char code dofly_table[10]={0xc0,0xf9,0xa4.. 阅读全文
posted @ 2014-02-26 14:21 彩蛋 阅读(1363) 评论(0) 推荐(0) 编辑
摘要: 在标准C语言中基本的数据类型为char,int,short,long,float和double,而在C51编译器中int和short相同,float和double相同。说明:(1)类型修饰符signed和unsigned用于修饰字符型和整形。(2)类型修饰符short和long用于修饰字符型和整形。(3)当用signed和unsigned、short和long修饰int整形时,int可省略。 阅读全文
posted @ 2014-02-23 21:56 彩蛋 阅读(752) 评论(0) 推荐(0) 编辑
摘要: #include sbit P1_0 = P1^0;void Delay(); // 下面引用时一定要和这里的大小写一致否则会有警告或错误void Main(){while (1) // 开始一直循环{P1_0 = 0;Delay(); // 没有参数也要加 () 否则会有WarningP1_0 = 1;Delay();}}void Delay() // 12M晶振1s延时{unsigned char h, i, j, k;for (h = 5; h > 0; h--)for (i = 4; i > 0; i--)for (j = 116; j > 0; j--)for (k 阅读全文
posted @ 2014-02-23 21:19 彩蛋 阅读(5501) 评论(0) 推荐(0) 编辑
摘要: #include // 引用52包文件sbit P0_0 = P0^0; // 定义P0第0个管脚sbit P0_1 = 0x81; // 定义P0第1个管脚sbit P0_2 = 0x80^2; // 定义P0第2个管脚void main(){P0_0 = 0; // 点亮P0第1管脚连接的LEDP0_1 = 0;P0_2 = 0;}为什么用三种方式设置引脚都可以呢,这是因为P0口可以按位寻址,STC单片机的特殊功能寄存器布局如下:从上图可以看到,P0口是处在可位寻址区,可位寻址的特性就是这样,以sbit P0_1 = 0x81代码为例sbit关键字指定了后面的变量是要位寻址... 阅读全文
posted @ 2014-02-19 18:31 彩蛋 阅读(4690) 评论(0) 推荐(1) 编辑