《单片机应用技术》实训任务书05.docx
以单个0.5寸共阳极数码管静态显示为例,将描述如何用单个共阴极数码管来进行静态 显示,具体操作过程如下: 一、准备元器件准备好之前章节所做的最小系统,除此之外再准备8个510欧姆1/4瓦的电阻、一个0.5 寸共阳极数码管、一个按键和一个4.7k的上拉电阻。二、电路连接如图5.5所示,为两位共阳极数码管静态显示的典型连接。图中没有用到P0端口,如 果要用到P0端口作为通过I/O端口使用,一定要在P0端口接上拉电阻,才能保证数据传输 的准确性。图5.5 一位静态数码管电路图5.5 一位静态数码管电路pppppppp2 机P3 片皂三、程序实践L显示特定字符或数字按照图5.5所示进行电路连接后,通过赋值给P1,让数码管显示特定的字符或者数字。 具体程序如下:#include<AT89X52.h> 包含头文件,头文件包含特殊功能寄存器的定义void main (void)(Pl=0xc0;二进制 为1100 0000 参考数码管排列,可以得出。对应的段点亮,1对应的段熄灭,结果显示数字“0” while(l)()2 .显示变化数字按照图5.5所示进行电路连接后,通过循环赋值给P1,让数码管显示变化的数字。具体程序如下:#include<AT89X52.h> 包含头文件,头文件包含特殊功能寄存器的定义unsigned char code table 10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/显示数值表0-9void Delay(unsigned int t);void main (void)void main (void)unsigned char i;while (1)(for(i=0;i<10;i+)(Pl= tablei;Delay(60000);unsigned char i;while (1)(for(i=0;i<10;i+)(Pl= tablei;Delay(60000);定义一个无符号字符型局部变量i取值范围0255主循环加入for循环,说明for循环大括号中的程序循环执行10次循环调用表中的数值延时,方便观看数字变化)void Delay(unsigned int t) (while(t);)3 .模拟流水按照图5.5所示进行电路连接后,通过循环赋值给P1,让数码管显示特定流动样式。 具体程序如下:#include<AT89X52.h> 包含头文件,头文件包含特殊功能寄存器的定义void Delay(unsigned int t);void main (void)(unsigned char i;定义一个无符号字符型局部变量i取值范围。255while (1)主循环(Pl=0xfe;for(i=0;i<6;i+)/加入for循环,说明for循环大括号中的程序循环执行6次(Delay( 10000);Pl«=l;Pl 1=0x01;)void Delay(unsigned int t)(while(t);)4 .指示逻辑电平通过循环检测P3.2 口电平输入值,然后用数码管输出“H“ or ”17,表示该端口现在连接 的是高电平还是低电平。具体程序如下:#include<AT89X52.h> 包含头文件,头文件包含特殊功能寄存器的定义sbit IO_IN=P3A2; 定义10信号输入端void main (void)(while (1)主循环(if(IOJN=l)如果端口检测到1表示高电平Pl=0x89;“H"elsePl=0xc7;“L"否那么表示低电平,这里使用条件语句if ooo else。)5 显示对应键值现在在如何把P3端口的其余位都接上按键,那么通过循环检测P3 口按键输入值,就 可以用数码管输出,没有按键按下时原值不变。具体程序如下:#include<AT89X52.h> 包含头文件,头文件包含特殊功能寄存器的定义unsigned char code table 10=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,Oxf8,0x80,0x90,);/显示数值表0-9void main (void)(while (1)主循环(switch(P3) /P3 口作为独立按键输入端,检测端口电平并做如下判断|case 0xfe:Pl= tablet l;break;/Oxfe = 1111 1110,说明连接在P3.0端口的按键被按下,显示对应的数字然后跳出循环case Oxfd:Pl= table;break; 调用表中的第三个元素0xa4下标0才表示数组中的第一个元素case Oxfb:Pl= table3J;break;case 0xf7:Pl= table4;break;case 0xef:Pl= table5;break;case Oxdf:Pl= table6;break;case Oxbf:Pl= table7;break;case 0x7f:Pl= table8;break;default:break;如果都没按下,直接跳出)