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

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

?? main.c

?? 自己做的單片機Proteus仿真實例
?? C
字號:
/*****http://hi.baidu.com/echoas**********
程序:MCS-51驅動AMPIRE128*64液晶
內容:LCD12864綜合顯示--漢字,圖片、幾何圖形 
編譯器:keil uVision3
開發板:Proteus仿真圖
作者:大海橡樹
整理日期:2011-01-28
修改:無 

備注:有什么錯誤的地方,歡迎網友們到空間留言

					O(∩_∩)O~

******http://hi.baidu.com/echoas*********/ 
#include<AT89X52.h>
#include<intrins.h>
#include<math.h>
#include"source.h"
#define uchar unsigned char
#define uint  unsigned int

#define LCD_databus P0 //LCD12864的8位數據口

sbit RS=P2^2; 	//RS為0---命令;1----數據 
sbit RW=P2^1; 	//RW為1---寫;0---讀 
sbit EN=P2^0; 	//使能端 
sbit CS1=P2^4; 	//片選1低電平有效,控制左半屏 
sbit CS2=P2^3; 	//片選1低電平有效,控制右半屏 

sbit KEY1=P3^0;
sbit KEY2=P3^1;
sbit KEY3=P3^2;	//三個按鍵控制口 


void delay(uint i)
{
	while(--i);
}
void Read_busy()//讀“忙”函數-----數據線的最高位DB71則busy		
{
	P0=0x00;
   	RS=0;  
   	RW=1; 
	EN=1;
	while(P0 & 0x80);
	EN=0;
}

void write_LCD_command(uchar value)	//寫命令函數 
{
   Read_busy();						//對LCD的每次讀寫都要讀忙 
   RS=0;	 						//選擇命令 
   RW=0; 							//讀操作 
   LCD_databus=value;
   EN=1;							//EN由1----0鎖存有效數據 
   _nop_();
   _nop_(); 
   EN=0;
}

void write_LCD_data(uchar value)//寫數據函數	
{
   Read_busy();
   RS=1; 						//選擇數據 
   RW=0;	
   LCD_databus=value;
   EN=1;						//EN由1----0鎖存有效數據 
   _nop_();		
   _nop_();
   EN=0;
}

uchar Read_LCD(void)			//讀數據函數 
{
	uchar value;
	Read_busy();
	LCD_databus=0xFF;			//先進行一次空讀操作 
	RS=1;
	RW=1;
	EN=1;
	_nop_();
	_nop_();
	EN=0;
	
	LCD_databus=0xFF;			//讀取真正的數據 
	RS=1;
	RW=1;
	EN=1;
	value=LCD_databus;
	_nop_();
	_nop_();
	EN=0;
	
	return value; 
}

void Set_page(uchar page)		//設置“頁”LCD12864共8頁,一頁是8行點陣點	
{
  page=0xb8|page; 				//頁的首地址為0xB8
  write_LCD_command(page);
}

void Set_line(uchar startline)  //設置顯示的起始行	   
{
  startline=0xC0|startline;     //起始行地址為0xC0 
  write_LCD_command(startline); //設置從哪行開始:共0--63;一般從0 行開始顯示
}

void Set_column(uchar column)	//設置顯示的列	
{
  column=column &0x3f; 			//列的最大值為64
  column= 0x40|column; 			//列的首地址為0x40 
  write_LCD_command(column);	//規定顯示的列的位置 
}

void SetOnOff(uchar onoff)		//顯示開關函數:0x3E是關顯示,0x3F是開顯示   
{
	onoff=0x3e|onoff; 			//onoff:1---開顯示;0---關顯示
	write_LCD_command(onoff);
}

void SelectScreen(uchar screen)	//選擇屏幕 
{ 						 
   switch(screen)
   { 
   	 case 0: CS1=0;CS2=0;break; //全屏     
     case 1: CS1=0;CS2=1;break;//左半屏        
     case 2: CS1=1;CS2=0;break;//右半屏       
     default:break; 
   }
}

void ClearScreen(uchar screen)	//清屏函數  
{ 	
     uchar i,j;
     SelectScreen(screen);		//0--全屏;1---左半屏;2---右半屏 
	 for(i=0;i<8;i++)	 		//控制頁數0-7,共8頁
	 {
        Set_page(i);
		Set_column(0);
      	for(j=0;j<64;j++)	   //控制列數0-63,共64列
	  	{
          write_LCD_data(0x00); //寫入0,地址指針自加1 
      	}
     }					 
}

void init_LCD() 					//LCD的初始化  
{ 
	SetOnOff(1); 				//開顯示
	SelectScreen(0);
	ClearScreen(0);				//清屏
	Set_line(0); 				//開始行:0
}
void Draw_dots(uchar x,uchar y,uchar color)
{
	uchar x_byte;
	uchar x_bit; 
	uchar Temp_data;		//暫時存放從LCD讀出的數據 
	x_byte=(y>>3);  		//計算出該點屬于哪個字節 
	x_bit=y-(x_byte<<3);	//屬于字節的哪一位 

	
	if(x>63)				//x>63則顯示在右半屏 
	{
		SelectScreen(2);
		x=x-64;
	}
	else					//顯示在左半屏 
	{
		SelectScreen(1); 
	}
	Set_page(x_byte);		//設置行地址 
	Set_column(x);			//設置列地址
 	Temp_data=Read_LCD();	//先讀出沒打點前LCD中的數據 
	switch(color)
	{
		case 0x01 : Temp_data &= ~(1<<x_bit);break;	//擦除
		case 0x02 : Temp_data ^= (1<<x_bit); break;	//反白 
		case 0x03 : Temp_data |= (1<<x_bit); break;	//畫點 
		default : break;
	} 
	
	Set_page(x_byte);
	Set_column(x);
	write_LCD_data(Temp_data);	//將處理后的數據送到LCD中顯示 
	
}
/**********************************
兩點間畫直線:
x1<x2<127,y1<y2<64
***********************************/                    
void Draw_line(unsigned char x1,y1,x2,y2)
{
	unsigned char i;	
	for(i=x1;i<x2+1;i++)	
		Draw_dots(i,(y2-y1)*(i-x1)/(x2-x1)+y1,2);
}
/**********************************
畫圓:
(x,y)為圓心,r為半徑
***********************************/ 
void Draw_circle(unsigned char x,y,r)
{
	unsigned char i;	
	for(i=x-r;i<x+r+1;i++)
	{
		Draw_dots(i,y-sqrt(r*r-(x-i)*(x-i)),2);		
		Draw_dots(i,y+sqrt(r*r-(x-i)*(x-i)),2);		
	}
}
/**********************************
兩矩形:
(x1,y1)為矩形左上角坐標點
(x2,y2)為矩形右上角坐標點
***********************************/ 
void Draw_retic(uchar x1,uchar y1,uchar x2,uchar y2)//畫正方形,x1,y1為左上角坐標,x2,y2為右下角坐標
{
	uchar i;
	for(i=0;i<=x2-x1;i++)
	{  
		Draw_dots(x1+i,y1,2);  
		Draw_dots(x1+i,y2,2);  
	}
	for(i=0;i<=y2-y1;i++)
	{  
		Draw_dots(x1,y1+i,2);  
		Draw_dots(x2,y1+i,2);  
	}
}


void Display_ASCII(uchar screen,uchar page,uchar column,uchar *p)
{
	uchar i;
	SelectScreen(screen);
	Set_page(page);
	Set_column(column);
	for(i=0;i<8;i++)			//顯示字符上半部分:8*8 
	{
		write_LCD_data(p[i]);
	}
	Set_page(page+1);			//顯示字符下半部分:8*8 
	Set_column(column);
	for(i=0;i<8;i++)
	{
		write_LCD_data(p[i+8]);
	} 
}  
void Display_HZ(uchar screen,uchar page,uchar column,uchar *p)
{
	uchar i;
	SelectScreen(screen);
	Set_page(page);					//寫上半頁:16*8 
	Set_column(column*16); 			//控制列
	for(i=0;i<16;i++)  				//控制16列的數據輸出
	{
		write_LCD_data(p[i]); 		//漢字的上半部分 
	}
	Set_page(page+1);				//寫下半頁:16*8 
	Set_column(column*16);			//控制列
    for(i=0;i<16;i++)				//控制16列的數據輸出
	{
		write_LCD_data(p[i+16]);	//漢字的下半部分 
	}
} 

void Display_picture(uchar a[][64])//顯示圖形—128*64大小 
{
	uchar i,j;
	
	for(j=0;j<8;j++)
	{	
		SelectScreen(1);
		Set_page(j);
		Set_column(0);
		for(i=0;i<64;i++)
		{
			write_LCD_data(a[2*j][i]);//每隔一行取一次數組中的數據
		}
		SelectScreen(2);
		Set_page(j);
		Set_column(0);
		for(i=0;i<64;i++)
		{
			write_LCD_data(a[2*j+1][i]);//每隔一行取一次數組中的數據
		}	
	}	
}

void key_scan(void)
{
	uchar i;
	if(KEY1==0)						//按鍵1按下,顯示漢字 
	{
		delay(5000);
		if(KEY1==0)
		{
			while(!KEY1);
			ClearScreen(0);
			for(i=8;i>0;i--)	  	//滾屏
			{
				Display_HZ(1,0+i,2,huan);
				Display_HZ(1,0+i,3,ying);
				Display_HZ(2,0+i,0,fang);
				Display_HZ(2,0+i,1,wen);
				Display_HZ(1,2+i,0,da);
				Display_HZ(1,2+i,1,hai);
				Display_HZ(1,2+i,2,xiang);
				Display_HZ(1,2+i,3,shu);
				Display_HZ(2,2+i,0,bai);
				Display_HZ(2,2+i,1,du);
				Display_HZ(2,2+i,2,kong);
				Display_HZ(2,2+i,3,jian);
				delay(30000);
				ClearScreen(0);
			}
			Display_HZ(1,0+i,2,huan);
			Display_HZ(1,0+i,3,ying);
			Display_HZ(2,0+i,0,fang);
			Display_HZ(2,0+i,1,wen);
			Display_HZ(1,2+i,0,da);
			Display_HZ(1,2+i,1,hai);
			Display_HZ(1,2+i,2,xiang);
			Display_HZ(1,2+i,3,shu);
			Display_HZ(2,2+i,0,bai);
			Display_HZ(2,2+i,1,du);
			Display_HZ(2,2+i,2,kong);
			Display_HZ(2,2+i,3,jian);			
		}
	}

	if(KEY2==0)				//按鍵2按下,顯示圖片---大海橡樹 
	{
		delay(5000);
		if(KEY2==0)
		{
			while(!KEY2);
			ClearScreen(0);
			Display_picture(BMP);
		}
	}

	if(KEY3==0)				//按鍵3按下,顯示幾何圖形 
	{
		delay(5000);
		if(KEY3==0)
		{
			while(!KEY3);
			ClearScreen(0);
			Display_HZ(1,0,2,zhi);
			Display_HZ(1,0,3,xian);
		
			Display_HZ(2,2,1,ju);
			Display_HZ(2,2,2,xing);
		
			Display_HZ(1,4,1,yuan);
		
			Draw_line(0,0,127,63);
			Draw_retic(70,0,120,33);
			Draw_circle(30,40,20);
		}
	}
}
void main()
{  
   	init_LCD();					//初始12864  
   	ClearScreen(0);				//清屏
   	Set_line(0);				//顯示開始行  
	Display_HZ(1,2,1,qing);
	Display_HZ(1,2,2,an);
	Display_HZ(1,2,3,button);
	Display_HZ(2,2,0,xuan);
	Display_HZ(2,2,1,ze);
	Display_HZ(2,2,2,andsoon);	//上電顯示:“請按鍵選擇…” 
	while(1)
	{
		
		key_scan();
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区三区视频| 亚洲婷婷综合色高清在线| 久久久久久久久久久久久女国产乱| 欧美久久免费观看| 国产三级一区二区| 爽好多水快深点欧美视频| 成人精品视频.| 精品国产污网站| 日韩精品一级中文字幕精品视频免费观看 | 国产一区二区美女诱惑| 欧美伊人久久久久久午夜久久久久| 久久蜜桃一区二区| 老司机精品视频线观看86| 欧美午夜精品一区二区蜜桃| 欧美经典一区二区| 狠狠色丁香婷综合久久| 欧美日韩精品福利| 亚洲在线观看免费| 色天天综合久久久久综合片| 国产精品美女久久久久久| 国产成人综合网站| 久久午夜色播影院免费高清| 美女脱光内衣内裤视频久久网站 | 麻豆成人av在线| 色香蕉成人二区免费| 亚洲国产成人私人影院tom| 国产在线播精品第三| 日韩精品一区二区三区在线| 五月婷婷久久丁香| 91精品国产欧美一区二区| 三级在线观看一区二区| 69久久夜色精品国产69蝌蚪网| 亚洲一区在线观看免费 | 欧美日韩二区三区| 亚洲成人免费观看| 欧美军同video69gay| 热久久久久久久| 日韩欧美在线网站| 国产精品一区二区你懂的| 国产欧美视频一区二区三区| 国产**成人网毛片九色 | 成人高清伦理免费影院在线观看| 久久久久久久久久看片| 丁香啪啪综合成人亚洲小说| 一区二区中文字幕在线| 色婷婷精品大视频在线蜜桃视频 | 在线精品视频小说1| 亚洲尤物视频在线| 在线不卡中文字幕| 麻豆一区二区三| 中文字幕av一区 二区| 色呦呦一区二区三区| 日韩国产一二三区| 久久午夜羞羞影院免费观看| 99久久精品国产一区二区三区 | 国产偷国产偷精品高清尤物| 成人涩涩免费视频| 亚洲自拍偷拍九九九| 欧美videos大乳护士334| 婷婷亚洲久悠悠色悠在线播放| 日韩一卡二卡三卡四卡| 国产91精品一区二区麻豆网站| 亚洲男人天堂av| 日韩精品一区二区在线观看| 国产不卡在线播放| 天天综合天天做天天综合| 国产午夜精品久久久久久久| 91国在线观看| 国产一区二区视频在线| 一个色妞综合视频在线观看| 欧美成人三级电影在线| 色综合 综合色| 国内外精品视频| 亚洲午夜一区二区| 国产精品女人毛片| 欧美日韩国产首页在线观看| 国产91在线|亚洲| 肉色丝袜一区二区| 亚洲视频图片小说| 久久免费看少妇高潮| 欧美日韩不卡一区二区| 国产91清纯白嫩初高中在线观看| 日韩一区精品字幕| 一区二区三区小说| 欧美国产精品v| 精品理论电影在线| 欧美精品v日韩精品v韩国精品v| 成人自拍视频在线观看| 久久精品久久99精品久久| 亚洲在线视频免费观看| 国产精品成人一区二区艾草| 精品成人在线观看| 日韩欧美资源站| 欧美精品粉嫩高潮一区二区| 色哟哟国产精品免费观看| 国产98色在线|日韩| 久久99国产精品尤物| 日韩高清电影一区| 丝袜美腿亚洲综合| 亚洲精品国产高清久久伦理二区| 欧美—级在线免费片| 久久精品一区蜜桃臀影院| 欧美白人最猛性xxxxx69交| 欧美日韩精品一区二区| 欧美网站大全在线观看| 欧美午夜精品久久久久久孕妇| av不卡免费电影| 成人精品国产福利| 成人久久18免费网站麻豆| 国产河南妇女毛片精品久久久| 裸体健美xxxx欧美裸体表演| 另类综合日韩欧美亚洲| 首页综合国产亚洲丝袜| 亚洲成va人在线观看| 日韩中文字幕亚洲一区二区va在线| 一区二区三区高清在线| 亚洲一区二区美女| 午夜免费欧美电影| 日韩国产欧美在线播放| 久草在线在线精品观看| 狠狠色狠狠色合久久伊人| 国产九色精品成人porny | 色婷婷综合视频在线观看| 99re这里只有精品首页| 色哟哟国产精品免费观看| 欧美日韩一本到| 日韩三级视频中文字幕| 久久亚洲精华国产精华液| 国产欧美精品国产国产专区| 中文字幕在线不卡| 亚洲一区欧美一区| 蜜桃av一区二区在线观看| 国产精品综合一区二区三区| 国产不卡视频在线播放| 欧美成人艳星乳罩| 久久久久久久久久久久久久久99| 欧美国产精品一区二区| 樱花影视一区二区| 日韩经典中文字幕一区| 黑人巨大精品欧美一区| 99在线精品观看| 6080亚洲精品一区二区| www国产精品av| 亚洲欧美另类久久久精品 | 欧美亚洲日本一区| 2020国产精品| 亚洲综合免费观看高清完整版在线| 日本午夜一区二区| 成人永久aaa| 欧美二区三区的天堂| 久久精品一区二区三区不卡牛牛| 一区免费观看视频| 美女网站在线免费欧美精品| 99久久婷婷国产综合精品电影| 91精品国产一区二区三区| 国产性做久久久久久| 五月激情六月综合| 国产精品中文字幕日韩精品| 91国产丝袜在线播放| 久久九九99视频| 日韩成人av影视| 99re这里都是精品| 久久免费视频色| 午夜私人影院久久久久| 成人av在线一区二区| 日韩欧美电影一区| 亚洲自拍偷拍麻豆| 99在线精品观看| 精品国产不卡一区二区三区| 亚洲无人区一区| caoporn国产精品| 久久综合国产精品| 日韩激情在线观看| 欧美亚一区二区| 亚洲日韩欧美一区二区在线| 国产一区二区三区四区在线观看| 欧美精品 国产精品| ●精品国产综合乱码久久久久| 久久精品国产成人一区二区三区| 91成人免费在线| 18欧美乱大交hd1984| 国产精品99久久久久久似苏梦涵 | 亚洲国产精品黑人久久久| 久久99精品国产91久久来源| 欧美日韩国产大片| 亚洲一区免费视频| 在线免费观看日本欧美| 亚洲色图欧美在线| av成人免费在线| 18欧美乱大交hd1984| 不卡欧美aaaaa| 国产精品女人毛片| av网站免费线看精品| 中文字幕免费不卡| www.66久久| 国产精品不卡视频| 色综合久久天天综合网| 亚洲精品美腿丝袜| 精品视频一区三区九区| 亚洲一二三区不卡|