亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? finalcd.h.bak

?? 薔介紹單片機的彩色液晶顯示器開發里程。手把手
?? BAK
?? 第 1 頁 / 共 2 頁
字號:
//液晶顯示基本函數
/***********************************************************************
公司名稱:  泰克通信
模 塊 名: 液晶顯示基本函數                 LCD 型號:NHC-01 
創 建 人:        輸入輸出模塊組            日期:2004-03-17
修 改 人:        輸入輸出模塊組            日期:2004-03-23 
功能描述: 1、液晶的基本讀寫操作
           2、畫點、線、矩形、圓        
其他說明: 本程序在atmag128和nhc-01上調試通過
版 本:    alpha 0.01
**********************************************************************/
#include "chardata.h"
#define ada (*(volatile unsigned char*) 0x1118)//外部存儲器地址映射,ada是讀寫地址
#define adb (*(volatile unsigned char*) 0x111a)//adb是橫坐標
#define adc (*(volatile unsigned char*) 0x1119)//adc是縱坐標


//延時函數
void delay_1ms(void);//延時一毫秒
void delay(unsigned int n);//延時n毫秒

//液晶讀寫操作函數
void write(unsigned char x ,unsigned char y, unsigned char buffer1, unsigned char buffer2, unsigned char buffer3);//液晶輸入程序
void read(unsigned char x,unsigned char y,char *b1,char *b2,char *b3);//讀取一個字節位的數據

//液晶基本的畫線、清屏等操作
void point(unsigned int x,unsigned char y,unsigned char color);// 在任意位置顯示一個點的顏色
void clrall(char color);//清屏操作
void juxing(char x1,char y1,char x2,char y2,char color);//填充矩形
void cycle(char x,char y,unsigned int rad,char color);//以(x,y)為圓心,rad為半徑,用color填充這個區域

//畫直線算法,包含了兩種特殊直線
void line(char x1,char y1,char x2,char y2,char color);//在(x1,y1)、(x2,y2)兩點間畫直線
void linex(char x1,char y1,char x2,char y2,char color);//在(x1,y1)、(x2,y2)兩點間畫直線(畫船專用直線,可以不覆蓋掉經維度線)
void xuline(char x1,char y1,char x2,char y2,char color);//在(x1,y1)、(x2,y2)兩點間畫虛線

//液晶上的漢字、字符顯示
void hz_write(char x,char y,const unsigned char *hz,char color);//將輸入的黑白格式轉換為給lcd可以識別的彩色字模,這里的X值為點的位橫作標其值為0~39
void hanzi(char x,char y,const unsigned char *hz,char color,char bs);//按照列位置顯示任意大小顏色的字符,這里的X值為點的位橫作標其值為0~39
void lettershow(char x,char y,char *hz,char color);//按照列位置顯示任意大小顏色的字符,這里的X值為點的位橫作標其值為0~39
void showchar(char x,char y,char a,char letter,char color);//在任意位置顯示a所表示的值,這里的X值為點的位橫作標其值為0~39
void showchars(char x,char y,char *a,char color);//在任意位置顯示字符串a所表示的值,這里的X值為點的位橫作標其值為0~39
void showsmallmun(char x,char y,char *a,char color);//顯示4*8的數字串,這里的X值為點的位橫作標其值為0~39
void showallhz(void);//顯示液晶上所有的漢字


/******液晶的基本輸入輸出,一次寫入或讀出橫向八個點*******/

void write (unsigned char x ,unsigned char y, unsigned char buffer1, unsigned char buffer2, unsigned char buffer3)
{ 
   
   DDRA=0xff;//a口為輸出,即向外部輸出數據
   adb=x;//向外部存儲器送橫作標地址0~39
   adc=y;//向外部存儲器送縱作標地址0~239
   ada=buffer1;//向該點陣寫入三個顏色值
   ada=buffer2;
   ada=buffer3;
}

void read(unsigned char x,unsigned char y,char *b1,char *b2,char *b3)
{
   DDRA=0x00;//a口為輸入,即讀取外部數據
   adb=x;
   adc=y;
   *b1=ada;//將該點陣的三個顏色值分別讀取出來
   *b2=ada;
   *b3=ada;
}

/**************畫任意坐標上的一個點*******************/
void point(unsigned int x,unsigned char y,unsigned char color)
{       unsigned int temp;
        char buffer1,buffer2,buffer3;
        temp=x%8;//判斷該點是屬于該字節位的第幾個點
        x=x/8;
        read((char)x,y,&buffer1,&buffer2,&buffer3);

	if(temp==0)//該字節位的第一個點,將buffer1最高三位修改為color的值
	   {  
	      buffer1 &= 0x1f;
	      buffer1 |=(color<<5);
	   }
	else if (temp==1)//該字節位的第2個點,將buffer1的3、4、5三位修改為color的值
	   {
	      buffer1 &= 0xe3;
	      buffer1 |=(color<<2);
	   }
	else if (temp==2)//該字節位的第3個點,將buffer1最低2位和buffer2的最高位修改為color的值
	   {
	      buffer1 &= 0xfc;
	      buffer1 |=(color>>1);
	      buffer2 &= 0x7f;
	      buffer2 |=(color<<7);
	   }
	else if (temp==3)//該字節位的第4個點,將buffer2的5、6、7三位修改為color的值
	   {
	      buffer2 &= 0x8f;
	      buffer2 |=(color<<4);
	   }
	else if (temp==4)//該字節位的第5個點,將buffer2的2、3、4三位修改為color的值
	   {
	      buffer2 &= 0xf1;
	      buffer2 |=(color<<1);
	   }
	else if (temp==5)//該字節位的第6個點,將buffer2最低位和buffer3的最高兩位修改為color的值
	   {
	      buffer2 &= 0xfe;
	      buffer2 |=(color>>2);
	      buffer3 &= 0x3f;
	      buffer3 |=(color<<6);
	   }
	else if (temp==6)//該字節位的第7個點,將buffer3的4、5、6三位修改為color的值
	   {
	      buffer3 &= 0xc7;
	      buffer3 |=(color<<3);
	   }
	else if (temp==7)//該字節位的第8個點,將buffer3最低三位修改為color的值
	   {
	      buffer3 &= 0xf8;
	      buffer3 |= color;
	   }
        write ((char)x,y,buffer1,buffer2,buffer3);
}



/*********************用某種顏色清屏**************/


void clrall(char color)
{
      char buffer1=0,buffer2=0,buffer3=0;
      char i,j;
      buffer1 |=(color<<5);
      buffer1 |=(color<<2);
      buffer1 |=(color>>1);
      buffer2 |=(color<<7);
      buffer2 |=(color<<4);
      buffer2 |=(color<<1);
      buffer2 |=(color>>2);
      buffer3 |=(color<<6);
      buffer3 |=(color<<3);
      buffer3 |= color;//將三個buffer的值都修改為相應顏色的值
      for(i=0;i<40;i++)
      {
      	for(j=0;j<240;j++)
      	{
      		write(i,j,buffer1,buffer2,buffer3);
      	}
      }
}

/***********************用某種顏色畫矩形***************************/
void juxing(char x1,char y1,char x2,char y2,char color)
{ 
      char buffer1=0,buffer2=0,buffer3=0;
      char i,j;
      buffer1 |=(color<<5);
      buffer1 |=(color<<2);
      buffer1 |=(color>>1);
      buffer2 |=(color<<7);
      buffer2 |=(color<<4);
      buffer2 |=(color<<1);
      buffer2 |=(color>>2);
      buffer3 |=(color<<6);
      buffer3 |=(color<<3);
      buffer3 |= color;
      for(i=x1;i<=x2;i++)
      {
      	for(j=y1;j<=y2;j++)
      	{
      		write(i,j,buffer1,buffer2,buffer3);
      	}
      }
}

/**************兩點間畫帶顏色直線*******************/
void line(char x1,char y1,char x2,char y2,char color)
{
	char x,y;
	unsigned int dx,dy;
	if(x1>x2)
	{
		x=x2;
		y=y2;
		x2=x1;
		y2=y1;
		x1=x;
		y1=y;
	}//保證(x,y)從最靠近屏幕左側開始開始。
    point(x1,y1,color);
	x=x1;
	y=y1;
	dx=x2-x1;
		if(dx==0)//直線與y軸平行
	{
		if(y1<y2)
		{
			for(;y<=y2;y++)//沿y1畫點到y2成直線
			   point(x,y,color);
		}
		else
		{
			for(;y>=y2;y--)//沿y2畫點到y1成直線
			   point(x,y,color);
	        }
	}
	else if(y1==y2)//直線與X軸平行
	{
		if(x>x1)
		{
			for(;x<=x2;x++)//沿x1畫點到x2成直線
			   point(x,y,color);
		}
		else
		{
			for(;x>=x2;x--)//沿x2畫點到x1成直線
			   point(x,y,color);
		}
	}
	else if(y1<y2)//直線與x軸夾角小于90°
	{
	    dy=y2-y1;

		while(x<=x2&&y<=y2)
		{
			point(x,y,color);
			if(dx*(y-y1)<dy*(x-x1))//保證所畫直線盡量和所求直線靠近
			    y++;
			else x++;
			
	        }
	}
	else if(y1>y2)//直線于y軸夾角大于90°
	{
	    dy=y1-y2;
		while(x<=x2&&y>=y2)
		{
			point(x,y,color);
			if(dx*(y1-y)<dy*(x-x1))//保證所畫直線盡量和所求直線靠近
			    y--;
			else x++;
			
	        }
	}
}
/******************兩點間畫虛線**********************/
void xuline(char x1,char y1,char x2,char y2,char color)
{
	char x,y;
	unsigned int dx,dy;
	if(x1>x2)
	{
		x=x2;
		y=y2;
		x2=x1;
		y2=y1;
		x1=x;
		y1=y;
	}//保證(x,y)從最靠近屏幕左側開始開始。
    point(x1,y1,color);
	x=x1;
	y=y1;
	dx=x2-x1;
		if(dx==0)//直線與y軸平行
	{
		if(y1<y2)
		{
			for(;y<=y2;y++)
			{
			   if(y%3!=0)//每畫兩點空出一點
			       point(x,y,color);
			}
		}
		else
		{
			for(;y>=y2;y--)
			{
			   if(y%3!=0)
			       point(x,y,color);
			}
	        }
	}
	else if(y1==y2)//直線與X軸平行
	{
		if(x>x1)
		{
			for(;x<=x2;x++)
			{
				if(x%3!=0)//每畫兩點空出一點
				point(x,y,color);
			}
		}
		else
		{
			for(;x>=x2;x--)
			{
				if(x%3!=0)
				point(x,y,color);
			}
		}
	}
	else if(y1<y2)//直線與x軸夾角小于90°
	{
	    dy=y2-y1;

		while(x<=x2&&y<=y2)
		{
			if(x%3!=0)
			point(x,y,color);
			if(dx*(y-y1)<dy*(x-x1))//保證所畫直線盡量和所求直線靠近
			    y++;
			else x++;
			
	        }
	}
	else if(y1>y2)//直線于y軸夾角大于90°
	{
	    dy=y1-y2;
		while(x<=x2&&y>=y2)
		{
			if(x%3!=0)
			point(x,y,color);
			if(dx*(y1-y)<dy*(x-x1))//保證所畫直線盡量和所求直線靠近
			    y--;
			else x++;
			
	        }
	}
}
/**************兩點間畫帶顏色直線,畫船專用,避免維度線被覆蓋*******************/
void linex(char x1,char y1,char x2,char y2,char color)
{
	char x,y;
	unsigned int dx,dy;
	if(x1>x2)
	{
		x=x2;
		y=y2;
		x2=x1;
		y2=y1;
		x1=x;
		y1=y;
	}//保證(x,y)從最靠近屏幕左側開始開始。
    if(y1>120)//畫的該點不在維度線上,則畫該點
	{
	 		if((y1-120)%40!=0&&x1%40!=0)
				point(x1,y1,color);
	}
	else
	{
	        if((120-y1)%40!=0&&x1%40!=0)
				point(x1,y1,color);
	}
	x=x1;
	y=y1;
	dx=x2-x1;
		if(dx==0)//直線與y軸平行
	{
		if(y1<y2)
		{
			for(;y<=y2;y++)
			{
			       if(y>120)
				   {
	 			   			if((y-120)%40!=0&&x%40!=0)
							point(x,y,color);
					}
					else
					{
	        		 		if((120-y)%40!=0&&x%40!=0)
							point(x,y,color);
					}
			}
		}
		else
		{
			for(;y>=y2;y--)
			{
			       if(y>120)
				   {
	 			   			if((y-120)%40!=0&&x%40!=0)
							point(x,y,color);
					}
					else
					{
	        		 		if((120-y)%40!=0&&x%40!=0)
							point(x,y,color);
					}
			}
	    }
	}
	else if(y1==y2)//直線與X軸平行
	{
		if(x1<x2)
		{
			for(;x<=x2;x++)
			{
			       if(y>120)
				   {
	 			   			if((y-120)%40!=0&&x%40!=0)
							point(x,y,color);
					}
					else
					{
	        		 		if((120-y)%40!=0&&x%40!=0)
							point(x,y,color);
					}
			}
		}
		else
		{
			for(;x>=x2;x--)
			{
			       if(y>120)
				   {
			       if(y>120)
				   {
	 			   			if((y-120)%40!=0&&x%40!=0)
							point(x,y,color);
					}
					else
					{
	        		 		if((120-y)%40!=0&&x%40!=0)
							point(x,y,color);
					}
					}
					else
					{
			       if(y>120)
				   {
	 			   			if((y-120)%40!=0&&x%40!=0)
							point(x,y,color);
					}
					else
					{
	        		 		if((120-y)%40!=0&&x%40!=0)
							point(x,y,color);
					}
					}
			}
		}
	}
	else if(y1<y2)//直線與x軸夾角小于90°
	{
	    dy=y2-y1;

		while(x<=x2&&y<=y2)
		{
			if(y>120)
			{
	 			   	if((y-120)%40!=0&&x%40!=0)
					point(x,y,color);
			}
			else
			{
	        		 if((120-y)%40!=0&&x%40!=0)
					point(x,y,color);
			}
			if(dx*(y-y1)<dy*(x-x1))//保證所畫直線盡量和所求直線靠近
			    y++;
			else x++;
			
	        }
	}
	else if(y1>y2)//直線于y軸夾角大于90°
	{
	    dy=y1-y2;
		while(x<=x2&&y>=y2)
		{
			if(y>120)
			{
	 			   	if((y-120)%40!=0&&x%40!=0)
					point(x,y,color);
			}
			else
			{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产一区二区在线观看| 国产精品久久看| 中文欧美字幕免费| 亚洲高清中文字幕| 成人免费毛片aaaaa**| 欧美一区二区视频在线观看2020| 中文字幕不卡的av| 久久99热这里只有精品| 色综合一个色综合亚洲| 精品国产髙清在线看国产毛片 | 久久夜色精品国产欧美乱极品| 亚洲婷婷综合色高清在线| 久久电影网电视剧免费观看| 欧美性受xxxx| 亚洲情趣在线观看| 国产传媒一区在线| 日韩精品一区二区三区三区免费| 亚洲一区二区三区四区在线观看 | 国产精品中文字幕日韩精品 | 国产精品福利电影一区二区三区四区| 蜜桃视频免费观看一区| 欧美视频在线一区二区三区| 亚洲情趣在线观看| 99国产精品国产精品久久| 久久久精品国产99久久精品芒果| 美腿丝袜在线亚洲一区 | 久久久亚洲高清| 免费xxxx性欧美18vr| 欧美日韩在线播| 亚洲欧美视频在线观看视频| 成人app下载| 国产精品日日摸夜夜摸av| 国产成人免费网站| 欧美国产一区视频在线观看| 粉嫩av一区二区三区| 中文字幕成人在线观看| 国产69精品久久久久777| 久久久亚洲国产美女国产盗摄| 国产一区二区三区久久悠悠色av| 精品福利二区三区| 国产福利一区二区三区| 国产精品美女久久久久aⅴ国产馆| 国产成人自拍网| 中文字幕亚洲电影| 色综合久久久久久久| 午夜伦欧美伦电影理论片| 欧美日韩成人综合天天影院| 天堂成人国产精品一区| 欧美一区二区精品在线| 国产成人久久精品77777最新版本| 国产视频在线观看一区二区三区| a在线播放不卡| 亚洲小少妇裸体bbw| 日韩一区二区视频在线观看| 国产毛片精品一区| 亚洲欧洲日产国码二区| 欧美美女黄视频| 激情图区综合网| 中文字幕一区不卡| 7777精品伊人久久久大香线蕉的| 国产一区三区三区| 亚洲乱码日产精品bd| 日韩写真欧美这视频| 国产91丝袜在线播放| 亚洲一区二区三区视频在线播放| 日韩一区二区电影在线| 99麻豆久久久国产精品免费| 亚洲国产成人av| 国产亚洲综合性久久久影院| 色就色 综合激情| 久久国产精品第一页| 亚洲精品一二三| 精品区一区二区| 一本一道综合狠狠老| 久久精品国产一区二区| 亚洲精品国产精华液| 久久先锋影音av| 欧美日本在线一区| 风流少妇一区二区| 免费成人美女在线观看.| 亚洲人成影院在线观看| 久久蜜桃香蕉精品一区二区三区| 欧美亚洲国产一区二区三区va | 国产日韩欧美高清在线| 欧美色倩网站大全免费| 国产成a人亚洲| 日本不卡中文字幕| 伊人一区二区三区| 日本一区免费视频| 欧美一区二区三区人| 99re成人在线| 国产成人亚洲综合a∨猫咪| 免费观看日韩电影| 亚洲综合免费观看高清在线观看| 久久精品一区四区| 精品成a人在线观看| 7799精品视频| 欧美老年两性高潮| 欧美性猛交xxxx乱大交退制版| 成人国产精品免费观看动漫| 国产资源在线一区| 久久综合综合久久综合| 日韩国产欧美一区二区三区| 亚洲国产精品麻豆| 一区二区三区免费在线观看| 中文字幕精品—区二区四季| 久久久久久久久97黄色工厂| 欧美一区二区视频在线观看2020| 欧美福利一区二区| 8x福利精品第一导航| 欧美日韩成人综合| 制服丝袜一区二区三区| 欧美久久久一区| 欧美二区三区的天堂| 欧美色图一区二区三区| 欧美综合天天夜夜久久| 在线观看一区二区视频| 色www精品视频在线观看| 91蝌蚪porny成人天涯| 91丨porny丨中文| 91视视频在线观看入口直接观看www| 成人av动漫网站| 日本电影欧美片| 在线观看亚洲专区| 欧美日韩激情一区二区| 欧美一区二区三区四区视频 | 精品无人区卡一卡二卡三乱码免费卡| 久久99国产精品尤物| 国产一区美女在线| 99久久久国产精品免费蜜臀| 色乱码一区二区三区88| 欧美日韩视频第一区| 69久久99精品久久久久婷婷| www国产亚洲精品久久麻豆| 中文字幕av免费专区久久| 中文字幕一区二区三区在线不卡| 亚洲自拍偷拍欧美| 麻豆免费看一区二区三区| 国产精品夜夜嗨| 色天天综合久久久久综合片| 欧美精品tushy高清| 国产欧美一区二区精品久导航 | 欧美国产亚洲另类动漫| 亚洲精品乱码久久久久久 | 亚洲一区二区视频在线观看| 美女网站色91| 成人激情免费电影网址| 欧美揉bbbbb揉bbbbb| 日韩美女视频在线| 亚洲欧洲成人自拍| 天天亚洲美女在线视频| 国产成人亚洲综合a∨婷婷 | 欧美成人高清电影在线| 国产精品久久久久国产精品日日| 亚洲一线二线三线久久久| 狠狠色丁香婷婷综合| 91精品办公室少妇高潮对白| 欧美成人精精品一区二区频| 亚洲欧美色综合| 极品少妇一区二区| 色综合天天综合色综合av| 精品日韩在线一区| 亚洲午夜久久久久中文字幕久| 国产一区二区三区四| 欧美日韩国产在线观看| 一区在线观看视频| 极品少妇xxxx精品少妇| 欧美系列在线观看| 国产精品午夜在线观看| 日本va欧美va欧美va精品| av激情综合网| 国产午夜精品久久| 久久精品99国产精品| 欧美日韩国产综合一区二区三区| 中文字幕一区二区三区四区不卡| 国产在线播放一区| 日韩一区二区中文字幕| 亚洲一区二区三区中文字幕在线| 国产a级毛片一区| 精品国产免费人成在线观看| 亚洲成a人片在线不卡一二三区| heyzo一本久久综合| 久久久噜噜噜久久中文字幕色伊伊| 亚洲自拍偷拍网站| 在线一区二区观看| 亚洲欧洲在线观看av| 成人av网站在线| 国产精品嫩草99a| 国产盗摄一区二区| 国产亚洲欧美一区在线观看| 韩日欧美一区二区三区| 日韩欧美久久一区| 美女视频黄a大片欧美| 在线播放91灌醉迷j高跟美女| 亚洲视频在线观看三级| 一本色道久久综合亚洲aⅴ蜜桃 | 国产日韩影视精品| 国产精品一区二区在线观看不卡| 精品少妇一区二区三区日产乱码| 免费成人av在线播放|