欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1697|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)+1602多重?cái)?shù)據(jù)顯示程序問(wèn)題 有實(shí)時(shí)數(shù)據(jù) 有按鍵值數(shù)據(jù) 無(wú)法正常工作

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:254747 發(fā)表于 2019-11-10 16:02 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這是部分代碼  全部代碼功能量比較大    無(wú)法全部貼上來(lái)   我簡(jiǎn)單的描述一下我遇到的問(wèn)題   
  1.  在沒(méi)有 “disp_adc_voltage();             //顯示電壓數(shù)據(jù)到顯示屏”      這個(gè)函數(shù)的時(shí)候,我的1602可以隨時(shí)顯示我的 編碼器按鍵數(shù)值我要多少直接轉(zhuǎn)動(dòng)就是了 但不是實(shí)時(shí)數(shù)據(jù)  也就是按鍵在轉(zhuǎn)動(dòng)的時(shí)候才有按鍵值發(fā)生變化


  2. 加入了這個(gè)函數(shù)“disp_adc_voltage();  ”后就不行了  在改變按鍵值就無(wú)法進(jìn)入“ keyscan();”這個(gè)函數(shù)了 ,就算進(jìn)了 也是不準(zhǔn)的 轉(zhuǎn)動(dòng)按鍵數(shù)值也不會(huì)變化 要很久才變化     這個(gè)disp_adc_voltage();  “”是顯示電壓的   電壓顯示是實(shí)時(shí)數(shù)據(jù)    是不是因?yàn)?602有實(shí)時(shí)數(shù)據(jù)寫(xiě)入  然后在轉(zhuǎn)動(dòng)按鍵無(wú)法寫(xiě)入按鍵新的數(shù)據(jù)了啊



  3.要解決這個(gè)問(wèn)題該怎么弄啊   是讓  ADC 顯示 為間歇性的嗎     請(qǐng)高手指點(diǎn)一下     我百度了 也看論壇了  但是沒(méi)有類似這樣的問(wèn)題  

單片機(jī)源程序如下:

#include <STC12C5A60S2.H>

#include "all_function_api.h"

#include "stdint.h"

sbit  LED = P3^7;

sbit  LED_1 = P3^6;

sbit  key  = P3^0;


sbit    Pin_Portry_Sd=P2^2;

/*--------------------------------
功能:該變量用于保存按鍵值1
--------------------------------*/
extern uint8_t  Sd_Key_Value ;



/*--------------------------------
功能: 該變量用于保存按鍵值2
---------------------------------*/
extern uint8_t  Sd_Key_Value2 ;


/*---------------------------------
功能:該變量用于保存按鍵值3
---------------------------------*/
extern uint8_t  Sd_Key_Value3 ;


unsigned char keyjishu=0;




/*-------------------------------
多功能按鍵實(shí)現(xiàn)
--------------------------------*/
void  keyscan()
{
        

        //在初始化 第二屏幕類容之前用了清屏指令,故從新寫(xiě)入顯示屏的地址
        //第一排為 0x80  第二排為 0xc0  要記住哦
                //利用switch 來(lái)切換,這個(gè)條件語(yǔ)句切換的更多 更有優(yōu)勢(shì)一些
                   if(Pin_Portry_Sd !=1)
                     {
                           
                           delay_5ms(20);   //消抖
                     
                      if(Pin_Portry_Sd !=1)
                            {

                                while(!Pin_Portry_Sd);
                                keyjishu++;

                            }

                          }

                         switch(keyjishu)
                         {
                            case 1 :
                              {
                                         
                                
                        //        CR=1;                    
                                   lcd_write_com(0x80); //光標(biāo)位置 第一位就是0可以不加   你要在第幾位開(kāi)始顯示就是顯示屏格數(shù)-1 例如第3位 就是+2即可
                        lcd_write_com(0x0f);  //光標(biāo)閃爍                                   
                                if(Data_key_freq(&Sd_Key_Value));
                        
                            }
                               break;
                  
                        
                            case 2 :
                              {
                             
                                 keyjishu=3;               //這里直接賦值是為了在打開(kāi)混頻的時(shí)候減少一次按鍵,就直接調(diào)整旋鈕即可調(diào)整混頻
                                 lcd_write_com(0x80+14);  //寫(xiě)入‘O’的地址
                                 write_date_('O');
                                 lcd_write_com(0x80+15); //寫(xiě)入‘N’的地址
                                 write_date_('N');
                                 TR1 = 1;                             
                           }

                            break;
                  
                  
                          case 3 :
                              {
                             
                                    lcd_write_com(0x80+6);           //寫(xiě)入‘F’光標(biāo)地址
                                    if(Data_key_freq_2(&Sd_Key_Value2));
                           
                           }
                             break;
               
                          
                           case 4 :
                              {


                           
                            // keyjishu=1;          //  這里清為1 表示在關(guān)閉混頻的時(shí)候減少一次按鍵直接調(diào)整主頻    如果清0 就要增加幾次按鍵 很麻煩                     
                                    lcd_write_com(0x80+14);
                                 write_date_('O');                //寫(xiě)入‘O’的地址
                                 lcd_write_com(0x80+15);
                                 write_date_('F');                //寫(xiě)入‘F’的地址
                                 lcd_write_com(0x0c);
                                    TR1 = 0;                                 //關(guān)閉定時(shí)器  關(guān)閉混頻
                           }   
                              break;
                 
                           case 5 :
                              {
                             CR=1;
                                 lcd_write_com(0x0f);  //光標(biāo)閃爍
                                 lcd_write_com(0xc0);  //寫(xiě)入光標(biāo)地址
                                 if(Data_key_duty_3(&Sd_Key_Value3));
                           
                           }   
                              break;

                        
                       }

                           if(6 == keyjishu)
                                {
                                   keyjishu=1;
                                
                                }
                        
                  
                  
}

/*------------------------
主函數(shù) 主函數(shù)入口
--------------------------*/
void main()                                               
{                  
                  //1602初始化
          lcd_init();

                  //開(kāi)機(jī)畫(huà)面1 初始化
                  Boot_screen_init_0();
               
                  //開(kāi)機(jī)密碼檢測(cè),當(dāng)密
                  //碼輸入成功,進(jìn)入程序
                  kaijimima_key_init();


                   //開(kāi)機(jī)畫(huà)面2 初始化
                  Boot_screen_init_1();

                  //PWM PCA寄存器初始化
                  PCAregister_init();

                  //E2PROM初始化
                  E2PROM_init();

                  //定時(shí)器1初始化
                  Timer1_Init();

                  //定時(shí)器0 初始化
          Timer0_Init();

                  //ADC配置 初始化
                  Init_ADC();

                  //關(guān)閉定時(shí)器T1  防止一進(jìn)來(lái)就啟動(dòng)混頻
                  TR1 = 0;                                          

                 
/*--------------------------
大循環(huán)
---------------------------*/                 
while(1)
{
                 
               
                         keyscan();                                                 //功能按鍵函數(shù)
                     disp_adc_voltage();             //顯示電壓數(shù)據(jù)到顯示屏
                        

                        
               
                         ZPgengxin(Sd_Key_Value);         //把變化的數(shù)據(jù)寫(xiě)入到定時(shí)器PCA時(shí)鐘里面 來(lái)改變主頻數(shù)據(jù)

                         disp_ZPzankongbi(Sd_Key_Value3); //把占空比變化的值寫(xiě)到顯示屏里面


                 disp_zhuping(Sd_Key_Value);             //從24c02第4扇區(qū)里面把數(shù)據(jù)讀出來(lái),達(dá)到復(fù)位掉電存儲(chǔ)的效果         
                  

                     disp_fuping(Sd_Key_Value2);           //把副頻的值顯示屏到屏幕上
                        

                           
                //        Duty_Cycle(Sd_Key_Value2);          //副頻變化寫(xiě)入到函數(shù)里面; 備用 直接賦值到 定時(shí)器里面

                        
        

                        
               



                         CCAP1H =CCAP1L = Sd_Key_Value3; //把占空比變化的值寫(xiě)到PCA寄存器里面
                         CCAP0H =CCAP0L = Sd_Key_Value3; //把占空比變化的值寫(xiě)到PCA寄存器里面

                        

                         OVP_ADC_1();                    //過(guò)壓保護(hù)

        //                disp(AT_24c02_read(1));             //從24c02第4扇區(qū)里面把數(shù)據(jù)讀出來(lái),達(dá)到復(fù)位掉電存儲(chǔ)的效果


                //        disp_fuping(Sd_Key_Value2);   //同時(shí)把副頻的變化顯示出來(lái);


           //        AT_24c02_Write( 2, Sd_Key_Value2);  //同時(shí)寫(xiě)到24C02的第4扇區(qū)

                //        disp(Sd_Key_Value);
                                
                          
                 
                   // if(Data_key(&Sd_Key_Value));  
                  //  Data_key();//不停的掃描開(kāi)關(guān)函數(shù)是否發(fā)生變化
  }
                  
                  
   
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:254747 發(fā)表于 2019-11-11 10:01 | 只看該作者
感謝各位大佬的幫助    這個(gè)問(wèn)題又被我突破了     開(kāi)始我的軟件沒(méi)法仿真   沒(méi)有破解   后面破解了   仿真了一下   發(fā)現(xiàn)問(wèn)題在ADC求平均值100次里面耗時(shí)太長(zhǎng)  導(dǎo)致程序一時(shí)半會(huì)退不出  ADC      
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表