用单片机控制数码管的静态显示
C语言源程序:
#include<reg52.h> //52单片机头文件包含
#define uint unsigned int //定义宏uint 为 unsigned int
#define uchar unsigned char //定义宏uchar 为 unsigned char
sbit wei1=P2^0; //第一位数码管位选
uchar num;//定义无符号字符变量num
uchar code table[]={0xC0,0xF9,0xA4,0xB0,
0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,
0xC6,0xA1,0x86,0x8E};//在代码区定义无符号table数组(共阳数码管表分别代码了0-F的数码显示
void delay_xMs(uint z);//延时函数原型说明
void main() //入口函数
{
while(1) //主循环
{
for(num=0;num<16;num++) //for 循环 循环16次 每次num的值加1 控制16个数的数码显示
{
wei1=0;//给低电频打开第一个数码显示管
P0=table[num];//将table数组中的值复制给P0用于数码管显示数字
delay_xMs(1000);//延时1秒
}
}
void delay_xMs(uint z) //延时函数 参数1:延时的毫秒数
{
uint x;//定义无符号整型变量x
uchar y;//定义无符号字符变量y
for(x=z;x>0;x--)//for循环 进行z次
{
for(y=0;y<100;y++);//for 循环循环100次
}
}
//实验效果 单片机数码管的第一位循环从0显示到F
|