最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

初次pic c綜合調(diào)試

作者:baiguo 欄目:單片機(jī)
初次pic c綜合調(diào)試
    剛看完《PIC單片機(jī)原理及應(yīng)用》一書,自覺各功能模塊單獨(dú)使用已無大礙,就不知深淺想設(shè)計(jì)如下一項(xiàng)目:
題目:電源逆變器驅(qū)動(dòng)及顯示
功能:CCP1,CCP2為驅(qū)動(dòng)脈沖;LED數(shù)碼管顯示輸入電壓及輸出功率;按鍵開,關(guān)
     和選擇電壓或功率轉(zhuǎn)換通道;ADC轉(zhuǎn)換并判斷輸入電壓是否在范圍之內(nèi),輸出是否過載
程序如下:
/***********************************************************
Project        :驅(qū)動(dòng)顯示
Chip type      :PIC16F877
Clock frequency:400KHZ
Comments:
1.RA0,RA1為電壓及功率輸入通道
2.RD為LED字段,RB低三位為位段
3.RB4(ON/OFF),RB5(電壓/功率)
系統(tǒng)加電后,LED旋轉(zhuǎn)顯示    ——
                        |      |
                         ——   
RB4按下,LED閃爍“ON"三次后,PWM工作,LED顯示輸入電壓
RB5只在RB4按下后起作用(交替顯示電壓或功率)
RB4再次按下,LED閃爍“OFF"三次后,PWM停止工作,LED旋轉(zhuǎn)顯示  ——
                                                         |     |
                                                          ——
輸入電壓過高,顯示"HO";過低,顯示"LO"
輸出過載,顯示"OL"
***********************************************************/
#include<pic1687x.h>
unsigned CHAR mmm,i,j,ii,jj;
unsigned CHAR word[10]={0xC0,0xF9,0xA4,0xB0,0x99,
                        0x92,0x82,0xF8,0x80,0x90};
unsigned CHAR led[3]={0xFF,0xFF,0xFF};
unsigned int temp_v,temp_p;
unsigned CHAR key,keyi,flag;
union adre
{
unsigned int rel;
unsigned CHAR rell[2];
}adrel[5];
//**********************延時(shí)子程序****************************
void delay_ms(unsigned CHAR time)
{
unsigned CHAR scend;
while(time>0)
{
  time--;
  for(scend=100;scend>0;scend--)
  ;
}
}

//**********************延時(shí)子程序i****************************
void delayi_ms(unsigned CHAR timei)
{
unsigned CHAR scendi;
while(timei>0)
{
  timei--;
  for(scendi=100;scendi>0;scendi--)
  ;
}
}
//**********************mcu初始化****************************
void mcu_init(void)
{
INTCON=0x00;
TRISB=0xF0;   //高四位輸入,低四位輸出
OPTION=0x80; //RB7~4弱上拉
PORTB|=0x07;  //清除顯示
TRISC&=0xF9;  // CCP1,CCP2輸出
TRISD=0x00;   //定為輸出
PORTD=0xFF;
TRISA=0xFF;   //定為輸入
}
//**********************bcd碼轉(zhuǎn)換子程序***********************
void hextobcd(unsigned int temp_vi,unsigned int temp_pi)
{
unsigned int tempv,tempp,tempvi,temppi;
unsigned CHAR nn,mm;
if(key==3)              //顯示電壓
{
  tempvi=temp_vi<<3+temp_vi<<1;
  for(nn=0;nn<3;nn++)     
  {
   tempv=tempvi%10;
   led[nn]=word[tempv];
   tempvi=tempvi>>3-tempvi>>1;
  }
  if(led[2]==0xC0)       //十位去零
   led[2]=0xFF;   
  led[1]&=0x7F;          //個(gè)位加點(diǎn)
}
if(key==2)              //顯示功率
{
  temppi=temp_pi;
  for(mm=0;mm<3;mm++)
  {
   tempp=temppi%10;
   led[mm]=word[tempp];
   temppi=temppi>>3-temppi>>1;
  }
  if(led[2]==0xC0)       //高位去零
  {
   led[2]=0xFF;
   if(led[1]==0xC0)
    led[1]=0xFF;
  }
}
}
//**********************alarm_v顯示子程序*********************
void alarm_v(void)
{                       
if(adrel[i].rel<409) //欠壓顯示
{
  PORTB|=0x07;
  PORTD=0xC7;   //"L"
  PORTB&=0xFD;
  delay_ms(5);
  PORTB|=0x07;
  PORTD=0xC0;   //"O"
  delay_ms(5);
}
if(adrel[i].rel>614) //過壓顯示
{
  PORTB|=0x07;
  PORTD=0x86;   //"H"
  PORTB&=0xFD;
  delay_ms(5);
  PORTB|=0x07;
  PORTD=0xC0;   //"O"
  delay_ms(5);
}
}
//**********************alarm_p顯示子程序*********************
void alarm_p(void)
{
       //過載顯示
PORTB|=0x07;
PORTD=0xC0;   //"O"
PORTB&=0xFD;
delay_ms(5);
PORTB|=0x07;
PORTD=0xC7;   //"L"
delay_ms(5);
}
//***********************待機(jī)顯示子程序***********************
void wait(void)
{
unsigned CHAR ii,jj;
T0IE=0;
for(ii=0;ii<5;ii++)
{
  SWITCH (ii)
  {
   case 0:for(jj=0;jj<10;jj++)
           {
            PORTB|=0x07;    //    _ _
            PORTD=0xE7;     //       |
            PORTB&=0xFB;    // |  
            delay_ms(5);    //  _ _
            PORTB|=0x07;
            PORTD=0xF6;
            PORTB&=0xFD;
            delay_ms(5);
            PORTB|=0x07;
            PORTD=0xFC;
            PORTB&=0xFE;
            delay_ms(5);
           }
         
2樓: >>參與討論
dadodo
換LPC900啦,哈哈!
 
3樓: >>參與討論
baiguo
No
以上用PIC16F73就可實(shí)現(xiàn),才15塊,LPC900太貴啦

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
請教:用32768的晶振,AD的延時(shí)是多少?
聊聊私活
PIC對C語言支持的不好,這是最大的缺陷.
歡迎大家討論,程序跑飛問題
PIC12F675的初始化(I/O操作)
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號