非常感恩有此論壇,經常在開發遇到問題,在百度搜索每次都是51hei,幫我解決了問題,其它論壇好像都是非常含糊,而51hei里面的內容都是真實,而實用的,在此非常感謝,也非常感恩,我也要經常分享給大家,希望對于剛需的朋友得到幫助!
/*一款測試架程序,MCU采用宏晶STC12C5204AD,
電壓表與電流表驅動采用兩片74HC595,其次蜂鳴器與兩個
LED分別占用3個IO口,電壓表AD輸入口為P1.6,電流表為P1.7,
其次分別用八個IO口來控制電壓表電流表的位,主要通過AD轉
換后結果來檢測電流與電壓,然后判斷被測產品電壓,當它于
小一定電壓值或超出一定電壓值時,它都會報警,并且紅LED
閃爍亮起,當它在一定電壓范圍內時,綠LED閃爍亮起!*/
#include <reg52.h>//頭文件
#include <intrins.h>
#define uchar unsigned char//宏定義
#define uint unsigned int//宏定義
sbit sdata=P1^1;//74HC595數據輸出端
sbit sclk=P1^6;//74HC595移位脈沖
sbit clk=P1^0;//74HC595移位鎖存端
uchar code table[]={
0x03,0x9f,0x25,0x0d,0x99,
0x49,0x41,0x1f,0x01,0x09,0x11,0xc1,0x63,0x85,0x61,0x71};//數碼管顯示代碼
uchar num,dii;//定義數碼顯示結果變量
uchar shu;
void delay(uint z)//延時
{
uint x,y;
for(x=230;x>0;x--)
for(y=z;y>0;y--);
}
void song()
{
uchar shu2;
for(shu2=0;shu2<8;shu2++)
{
if(num&0x01==1)
sdata=1;
else
sdata=0;
sclk=1;
sclk=1;
sclk=0;
sclk=0;
sclk=1;//移位脈沖
sclk=1;//移位脈沖
num>>=1;
}
clk=1;
clk=0;
clk=1;
}
void xian()
{
num=table[shu];//同理
song();
delay(6500);
shu++;
if(shu>=16)
shu=0;
}
void main()
{
while(1)
{
xian();
}
}
下面是固定顯示
/*一款測試架程序,MCU采用宏晶STC12C5204AD,
電壓表與電流表驅動采用兩片74HC595,其次蜂鳴器與兩個
LED分別占用3個IO口,電壓表AD輸入口為P1.6,電流表為P1.7,
其次分別用八個IO口來控制電壓表電流表的位,主要通過AD轉
換后結果來檢測電流與電壓,然后判斷被測產品電壓,當它于
小一定電壓值或超出一定電壓值時,它都會報警,并且紅LED
閃爍亮起,當它在一定電壓范圍內時,綠LED閃爍亮起!*/
#include <reg52.h>//頭文件
#include <intrins.h>
#define uchar unsigned char//宏定義
#define uint unsigned int//宏定義
sbit sdata=P1^1;//74HC595數據輸出端
sbit sclk=P1^6;//74HC595移位脈沖
sbit clk=P1^0;//74HC595移位鎖存端
uchar code table[]={
0x03,0x9f,0x25,0x0d,0x99,
0x49,0x41,0x1f,0x01,0x09,0x11,0xc1,0x63,0x85,0x61,0x71};//數碼管顯示代碼
uchar num,dii;//定義數碼顯示結果變量
uchar shu=4;
void delay(uint z)//延時
{
uint x,y;
for(x=230;x>0;x--)
for(y=z;y>0;y--);
}
void song()
{
uchar shu2;
num=table[shu];//同理
for(shu2=0;shu2<8;shu2++)
{
if(num&0x01==1)
sdata=1;
else
sdata=0;
sclk=1;
sclk=1;
sclk=0;
sclk=0;
sclk=1;//移位脈沖
sclk=1;//移位脈沖
num>>=1;
}
clk=1;
clk=0;
clk=1;
}
void main()
{
while(1)
{
song();
}
}
|