用單片機控制數碼管的靜態顯示
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
|