性无码一区二区三区在线观看,少妇被爽到高潮在线观看,午夜精品一区二区三区,无码中文字幕人妻在线一区二区三区,无码精品国产一区二区三区免费

  • 回復(fù)
  • 收藏
  • 點(diǎn)贊
  • 分享
  • 發(fā)新帖

學(xué)習(xí)STC單片機(jī)控制1621B驅(qū)動(dòng)液晶顯示問題請(qǐng)教

液晶邏輯圖

這個(gè)邏輯圖到底怎么編輯顯示數(shù)組?。?

下面是原理圖

STC404控制1621B

下面是網(wǎng)上找的代碼,運(yùn)行后液晶可以顯示,就是不知道怎么做到顯示自己要的顯示值

#include 
clude 
sbit BL = P5^4;//原來代碼沒有這個(gè)IO口操作,就是液晶背光源
//sbit CS = P3^5;
#include                        /* standard I/O .h-file              */
#include                       /* standard library .h-file          */
#include                        /* character functions            */
#define uchar unsigned char
#define uint unsigned int
#define _Nop() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()
#define BIAS 0x52 	 //1/3偏壓,4背極1000 0101 0010
#define SYSDIS 0X00   //關(guān)閉系統(tǒng)時(shí)鐘和偏壓發(fā)生器
#define SYSEN 0X02 	    //打開系統(tǒng)時(shí)鐘
#define LCDOFF 0X04 
#define LCDON 0X06 
#define XTAL 0x28 
#define RC256 0X30 	//系統(tǒng)時(shí)鐘選擇為片內(nèi)RC振蕩器
#define TONEON 0X12 	//打開音頻輸出
#define TONEOFF 0X10 	    //關(guān)閉音頻輸出  
#define WDTDIS 0X0A     //禁止WDT溢出標(biāo)志輸出

sbit HT1621_DAT=P3^7; 
sbit HT1621_CS=P3^5; 
sbit HT1621_WR=P3^6; 

//sbit cs_sda = P3^5;    //dog
//const char num[]={0x};
uchar code
Ht1621Tab[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
//delay us
void Delay(uchar us) //5,7,9
{
while(--us);
}
void DelayMS(uint iMs)
{
uint i,j;
for(i=0;i
	

全部回復(fù)(10)
正序查看
倒序查看
wqjk
LV.2
2
2015-10-14 01:17
你看一下是不是看門狗程序,你貼的后邊的注釋應(yīng)該是喂狗程序
0
回復(fù)
Rachelmi
LV.9
3
2015-10-14 13:51
@wqjk
你看一下是不是看門狗程序,你貼的后邊的注釋應(yīng)該是喂狗程序
黑喂狗
0
回復(fù)
fzhlpp
LV.7
4
2015-10-14 20:24
@wqjk
你看一下是不是看門狗程序,你貼的后邊的注釋應(yīng)該是喂狗程序
我開始主要的問題是問怎么寫操作1621的程序達(dá)到控制我上面LCD顯示數(shù)字,這部分已經(jīng)搞定了,原來也很簡單,只是從來沒做過LCD程序開始有點(diǎn)迷茫,現(xiàn)在控制顯示可以自如了,現(xiàn)在又開始琢磨輸出PWM調(diào)節(jié)占空比控制LED亮度,做了一個(gè)15點(diǎn)幾K的頻率的,還想試試100HZ的不知道怎么弄,是不是必須用T0做PCA源,怎么做到100HZ這么低的頻率呢,不用軟件PWM。請(qǐng)大俠支個(gè)招,謝謝!
0
回復(fù)
Rachelmi
LV.9
5
2015-10-15 10:01
@fzhlpp
我開始主要的問題是問怎么寫操作1621的程序達(dá)到控制我上面LCD顯示數(shù)字,這部分已經(jīng)搞定了,原來也很簡單,只是從來沒做過LCD程序開始有點(diǎn)迷茫,現(xiàn)在控制顯示可以自如了,現(xiàn)在又開始琢磨輸出PWM調(diào)節(jié)占空比控制LED亮度,做了一個(gè)15點(diǎn)幾K的頻率的,還想試試100HZ的不知道怎么弄,是不是必須用T0做PCA源,怎么做到100HZ這么低的頻率呢,不用軟件PWM。請(qǐng)大俠支個(gè)招,謝謝!
幫頂起~~~
0
回復(fù)
fzhlpp
LV.7
6
2015-10-15 19:26
@Rachelmi
幫頂起~~~

100Hz頻率已經(jīng)搞定,確實(shí)使用T0做時(shí)鐘源方式可以很靈活調(diào)節(jié)到各種頻率PWM,那么接下來試試控制遙控了,沒做過,什么解碼什么的,試試。。。

說起PWM調(diào)光,這次使用100Hz頻率驅(qū)動(dòng)LED用手機(jī)拍攝光抖動(dòng)的厲害,不知道大家有沒有遇到這問題,看來還是要15K的了。

0
回復(fù)
fzhlpp
LV.7
7
2015-10-24 21:13
@fzhlpp
100Hz頻率已經(jīng)搞定,確實(shí)使用T0做時(shí)鐘源方式可以很靈活調(diào)節(jié)到各種頻率PWM,那么接下來試試控制遙控了,沒做過,什么解碼什么的,試試。。。說起PWM調(diào)光,這次使用100Hz頻率驅(qū)動(dòng)LED用手機(jī)拍攝光抖動(dòng)的厲害,不知道大家有沒有遇到這問題,看來還是要15K的了。

走偏了,開始以為調(diào)光很簡單的,一直弄了近一個(gè)禮拜了還沒搞定,就是調(diào)光調(diào)色溫這么簡單的事情,幾個(gè)變量搞得頭昏腦脹。

網(wǎng)上還沒找到這樣的實(shí)例,一個(gè)8位寄存器要分成100級(jí)和140級(jí)然后分別和255級(jí)對(duì)應(yīng)調(diào)節(jié)。。。

郁悶。。。。。。。。。。。。。。。。。

/********************************色溫調(diào)節(jié)***********************************************/
 void  colour_press(void)
  {
      uint xi,BR;
	 static uchar Aold,Bold; //定義了兩個(gè)變量用來儲(chǔ)蓄上一次調(diào)用此方法是編碼開關(guān)兩引腳的電平 
     static uchar st;//定義了一個(gè)變量用來儲(chǔ)蓄以前是否出現(xiàn)了兩個(gè)引腳都為高電平的狀態(tài) 
	 BR=(h*100+j*10+k);	    
	if(Cadd&&Csub) 
	st = 1;// 
	if(st) //如果st為1執(zhí)行下面的步驟 
	   { 
		if(Cadd==0&&Csub==0)//如果當(dāng)前編碼開關(guān)的兩個(gè)引腳都為底電平執(zhí)行下面的步驟 
	   {
/******++++++++++++++++++++++++++++下面代碼是色溫增加++++++++++++++++++++++++++++++++++++++***********/
	if(Bold)//為高說明編碼開關(guān)在向加大色溫的方向轉(zhuǎn) 	 //colour++
 	   { 
		st = 0;
		if((a!=5)|(b!=6)|(c!=0))
	  	{
		c++;
		if(c==10)
		  {
		  c=0;b++;
		  }
		if(b==10)
		  {
		  b=0;a++;
		  }
		  xi=(a*100+b*10+c);
/*****+++++++++++++++++++++++++++++++-------------------------------------------*******/
	     if((xi>534)&(xi<561))	//////////////////////////25*1+115*2
		 	{		   
		 	if(BR<255)CCAP2H++;/////////////////25
		 	}
		 if((xi>419)&(xi<535))
		 	{
		 	if(BR<255)
		 	{
		 	if(BR==254)CCAP2H=255;
		 	else CCAP2H=CCAP2H+2;//////////////115
			}
		 	}
/***************************************************/
		  if((xi>364)&(xi<420))//////////////////////45*2+55*3
		 	{
	 		if(BR>0){if(CCAP1H<3)CCAP2H=0;else CCAP1H=CCAP1H-3;}//////////////55		
		 	}
		 if((xi>320)&(xi<365))
		 	{
			if(BR>0){if(CCAP1H==1)CCAP2H=0;else CCAP1H=CCAP1H-2;}//////////////45
		 	}	 
	  	}
		}
/******-------------------------------下面代碼是色溫減小------------------------------********/				 
	if(Aold)//為高說明編碼開關(guān)在向減小色溫的方向轉(zhuǎn) 		//colour--
		{
		st = 0; 
		if((a!=3)|(b!=2)|(c!=0))
    	{
		c--;if(c>9){c=9;b--;}if(b>9){b=9;if(a>0)a--;}
		xi=(a*100+b*10+c);
/*****++++++++++--------------++++++++++++------------++++++++++++++++-------++++++++-----------*******/
		 if((xi>534)&(xi<560))		   //25*1+115*2
		 	{		   
		 	if(CCAP2H>0)CCAP2H--;/////////////////////25
		 	}
		 if((xi>419)&(xi<535))
		 	{
		 	if(CCAP2H>0){if(CCAP2H==1)CCAP2H=0;
		 	else CCAP2H=CCAP2H-2;}//////////////115
		 	}
/***************************************************/
		 if((xi>364)&(xi<420))//45*2+55*3
		 	{ 
			if(BR<255)
			{
			if(BR>=253)CCAP1H=255;
		 	else CCAP1H=CCAP1H+3;
		 	}//////////////55
		 	}
		 if((xi>319)&(xi<365))
		 	{ 
		 	if(BR<255) {if(CCAP1H==254)CCAP1H=255;
		 	else CCAP1H=CCAP1H+2;}//////////////45
		 	}
		}
		}}}	 
	Aold = Cadd;// 儲(chǔ)存A口的當(dāng)前狀態(tài)
	Bold = Csub;//	儲(chǔ)存B口的當(dāng)前狀態(tài) 
//	CCAP1H=C_H; CCAP2H=C_L;
	//CCAP1H=(C_H|R_H); CCAP2H=(C_L|R_L);
 } 
/*************************************亮度調(diào)節(jié)**********************************************************/  
  void  brightness_press(void)
  {
	 static uchar Cold,Dold; //定義了兩個(gè)變量用來儲(chǔ)蓄上一次調(diào)用此方法是編碼開關(guān)兩引腳的電平 
     static uchar BRst;//定義了一個(gè)變量用來儲(chǔ)蓄以前是否出現(xiàn)了兩個(gè)引腳都為高電平的狀態(tài) 
	 if(BRadd&&BRsub) 
	 BRst = 1;// 
     if(BRst) //如果BRst為1執(zhí)行下面的步驟 
	   { 
		if(BRadd==0&&BRsub==0)//如果當(dāng)前編碼開關(guān)的兩個(gè)引腳都為底電平執(zhí)行下面的步驟 
	   {
/*******++++++++++++++++++++++++++++++下面代碼是亮度增加++++++++++++++++++++++++++++++++****/
	if(Dold)//為高說明編碼開關(guān)在向加大亮度的方向轉(zhuǎn) 	 //brightness++
 	  { 
		BRst = 0;
	  {
  	 if(flicker)
	  {
	 if(flicker==1){g++;if(g>9)g=0;}
	 else if(flicker==2){f++;if(f>9)f=0;}
	 else if(flicker==3){e++;if(e>9)e=0;}
	  }
	 else 
	  {
	 if((h!=2)|(j!=5)|(k!=5))
     {
	 k++;if(k==10){k=0;j++;}if(j==10){j=0;h++;}
	 if(CCAP1H>0)CCAP1H--; 
	 if(CCAP2H>0)CCAP2H--;
	 }}}}     	 
/******------------------------------下面是亮度減小----------------------------------------------******/	 	  			 
   if(Cold)//為高說明編碼開關(guān)在向減小亮度的方向轉(zhuǎn) 		//brightness--
	 { 
	  BRst = 0; 
	 {
      if(flicker)
     {
    if(flicker==1){g--;if(g>9)g=9;}
    else if(flicker==2){f--;if(f>9)f=9;}
    else if(flicker==3){e--;if(e>9)e=9;}
    }
    else
    {
    if((j!=0)|(h!=0)|(k!=0))
	{
	 k--;if(k>9){k=9;j--;}if(j>9){j=9;if(h>0)h--;}
	if(CCAP1H<255)CCAP1H++; 
	if(CCAP2H<255)CCAP2H++;
	}}}}}}   	 
	Cold = BRadd;// 儲(chǔ)存A口的當(dāng)前狀態(tài)
	Dold = BRsub;//	儲(chǔ)存B口的當(dāng)前狀態(tài)
	//CCAP1H=R_H; CCAP2H=R_L;//
 } 

0
回復(fù)
fzhlpp
LV.7
8
2015-10-25 14:05
@fzhlpp
走偏了,開始以為調(diào)光很簡單的,一直弄了近一個(gè)禮拜了還沒搞定,就是調(diào)光調(diào)色溫這么簡單的事情,幾個(gè)變量搞得頭昏腦脹。網(wǎng)上還沒找到這樣的實(shí)例,一個(gè)8位寄存器要分成100級(jí)和140級(jí)然后分別和255級(jí)對(duì)應(yīng)調(diào)節(jié)。。。郁悶。。。。。。。。。。。。。。。。。[圖片]/********************************色溫調(diào)節(jié)***********************************************/voidcolour_press(void){uintxi,BR;staticucharAold,Bold;//定義了兩個(gè)變量用來儲(chǔ)蓄上一次調(diào)用此方法是編碼開關(guān)兩引腳的電平staticucharst;//定義了一個(gè)變量用來儲(chǔ)蓄以前是否出現(xiàn)了兩個(gè)引腳都為高電平的狀態(tài)BR=(h*100+j*10+k);if(Cadd&&Csub)st=1;//if(st)//如果st為1執(zhí)行下面的步驟{if(Cadd==0&&Csub==0)//如果當(dāng)前編碼開關(guān)的兩個(gè)引腳都為底電平執(zhí)行下面的步驟{/******++++++++++++++++++++++++++++下面代碼是色溫增加++++++++++++++++++++++++++++++++++++++***********/if(Bold)//為高說明編碼開關(guān)在向加大色溫的方向轉(zhuǎn)//colour++{st=0;if((a!=5)|(b!=6)|(c!=0)){c++;if(c==10){c=0;b++;}if(b==10){b=0;a++;}xi=(a*100+b*10+c);/*****+++++++++++++++++++++++++++++++-------------------------------------------*******/if((xi>534)&(xi9){b=9;if(a>0)a--;}xi=(a*100+b*10+c);/*****++++++++++--------------++++++++++++------------++++++++++++++++-------++++++++-----------*******/if((xi>534)&(xi0)CCAP2H--;/////////////////////25}if((xi>419)&(xi0){if(CCAP2H==1)CCAP2H=0;elseCCAP2H=CCAP2H-2;}//////////////115}/***************************************************/if((xi>364)&(xi319)&(xi9)f=0;}elseif(flicker==3){e++;if(e>9)e=0;}}else{if((h!=2)|(j!=5)|(k!=5)){k++;if(k==10){k=0;j++;}if(j==10){j=0;h++;}if(CCAP1H>0)CCAP1H--;if(CCAP2H>0)CCAP2H--;}}}}/******------------------------------下面是亮度減小----------------------------------------------******/if(Cold)//為高說明編碼開關(guān)在向減小亮度的方向轉(zhuǎn)//brightness--{BRst=0;{if(flicker){if(flicker==1){g--;if(g>9)g=9;}elseif(flicker==2){f--;if(f>9)f=9;}elseif(flicker==3){e--;if(e>9)e=9;}}else{if((j!=0)|(h!=0)|(k!=0)){k--;if(k>9){k=9;j--;}if(j>9){j=9;if(h>0)h--;}if(CCAP1H

看代碼頭暈,我還是把思路用圖展示出來,大家?guī)臀曳治鲆幌掠惺裁磫栴}。

0
回復(fù)
Rachelmi
LV.9
9
2015-10-30 10:44
@fzhlpp
走偏了,開始以為調(diào)光很簡單的,一直弄了近一個(gè)禮拜了還沒搞定,就是調(diào)光調(diào)色溫這么簡單的事情,幾個(gè)變量搞得頭昏腦脹。網(wǎng)上還沒找到這樣的實(shí)例,一個(gè)8位寄存器要分成100級(jí)和140級(jí)然后分別和255級(jí)對(duì)應(yīng)調(diào)節(jié)。。。郁悶。。。。。。。。。。。。。。。。。[圖片]/********************************色溫調(diào)節(jié)***********************************************/voidcolour_press(void){uintxi,BR;staticucharAold,Bold;//定義了兩個(gè)變量用來儲(chǔ)蓄上一次調(diào)用此方法是編碼開關(guān)兩引腳的電平staticucharst;//定義了一個(gè)變量用來儲(chǔ)蓄以前是否出現(xiàn)了兩個(gè)引腳都為高電平的狀態(tài)BR=(h*100+j*10+k);if(Cadd&&Csub)st=1;//if(st)//如果st為1執(zhí)行下面的步驟{if(Cadd==0&&Csub==0)//如果當(dāng)前編碼開關(guān)的兩個(gè)引腳都為底電平執(zhí)行下面的步驟{/******++++++++++++++++++++++++++++下面代碼是色溫增加++++++++++++++++++++++++++++++++++++++***********/if(Bold)//為高說明編碼開關(guān)在向加大色溫的方向轉(zhuǎn)//colour++{st=0;if((a!=5)|(b!=6)|(c!=0)){c++;if(c==10){c=0;b++;}if(b==10){b=0;a++;}xi=(a*100+b*10+c);/*****+++++++++++++++++++++++++++++++-------------------------------------------*******/if((xi>534)&(xi9){b=9;if(a>0)a--;}xi=(a*100+b*10+c);/*****++++++++++--------------++++++++++++------------++++++++++++++++-------++++++++-----------*******/if((xi>534)&(xi0)CCAP2H--;/////////////////////25}if((xi>419)&(xi0){if(CCAP2H==1)CCAP2H=0;elseCCAP2H=CCAP2H-2;}//////////////115}/***************************************************/if((xi>364)&(xi319)&(xi9)f=0;}elseif(flicker==3){e++;if(e>9)e=0;}}else{if((h!=2)|(j!=5)|(k!=5)){k++;if(k==10){k=0;j++;}if(j==10){j=0;h++;}if(CCAP1H>0)CCAP1H--;if(CCAP2H>0)CCAP2H--;}}}}/******------------------------------下面是亮度減小----------------------------------------------******/if(Cold)//為高說明編碼開關(guān)在向減小亮度的方向轉(zhuǎn)//brightness--{BRst=0;{if(flicker){if(flicker==1){g--;if(g>9)g=9;}elseif(flicker==2){f--;if(f>9)f=9;}elseif(flicker==3){e--;if(e>9)e=9;}}else{if((j!=0)|(h!=0)|(k!=0)){k--;if(k>9){k=9;j--;}if(j>9){j=9;if(h>0)h--;}if(CCAP1H
實(shí)在暈
0
回復(fù)
fzhlpp
LV.7
10
2015-10-30 22:35
@Rachelmi
實(shí)在暈

軍長看圖吧,調(diào)色溫程序基本上差不多了,就是不知道離標(biāo)準(zhǔn)答案差多少,所以我在色溫調(diào)到4200K的時(shí)候把高色溫和低色溫的寄存器強(qiáng)制相等了。if(colour==4200)C_H=C_L;

原來沒有這句的時(shí)候當(dāng)調(diào)到4200K的時(shí)候兩路PWM寬度不一樣,一路多出幾個(gè)uS的寬度。那樣就色溫偏差了。不知道大家是怎么處理4200-5600這140級(jí)轉(zhuǎn)化8位寄存器數(shù)據(jù)的。我嘗試了好多種方法,最后確定了用強(qiáng)制法,但是離開4200的時(shí)候這個(gè)偏差就保證不了了。元芳你怎么看。。。

0
回復(fù)
fzhlpp
LV.7
11
2015-10-31 00:35
@fzhlpp
軍長看圖吧,調(diào)色溫程序基本上差不多了,就是不知道離標(biāo)準(zhǔn)答案差多少,所以我在色溫調(diào)到4200K的時(shí)候把高色溫和低色溫的寄存器強(qiáng)制相等了。if(colour==4200)C_H=C_L;原來沒有這句的時(shí)候當(dāng)調(diào)到4200K的時(shí)候兩路PWM寬度不一樣,一路多出幾個(gè)uS的寬度。那樣就色溫偏差了。不知道大家是怎么處理4200-5600這140級(jí)轉(zhuǎn)化8位寄存器數(shù)據(jù)的。我嘗試了好多種方法,最后確定了用強(qiáng)制法,但是離開4200的時(shí)候這個(gè)偏差就保證不了了。元芳你怎么看。。。[圖片]

出這個(gè)問題了,4K就超出文件大小被自動(dòng)截取掉了。。。

載的時(shí)候就出現(xiàn)這個(gè):

0
回復(fù)
發(fā)