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

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

?? c8051f020.c

?? 這是單片機c8051f020的液晶顯示程序調試已通過
?? C
字號:
//2007年3月21日
//前四行按要求顯示了,后面的還有問題!
//3月22日修改調試通過數組寫錯了!

#include <C8051F020.h>
#include <intrins.h>


#define BAUDRATE 4800                                //波特率bps
#define CLKOUT 22118400                              //外部晶振,修改也要修改OSCXCN
#define SMODVAL 0                                    //SMOD的值,修改請也修改PCONVAL
#define PCONVAL 0x00                                 //PCON的值,=0x00時SMOD0=0; =0x80時SMOD0=1
#define TXVAL (256-CLKOUT*(SMODVAL+1)/BAUDRATE/384)  //定時器初值
#define MAX_LEN 86

#define width      20     //顯示區寬度
#define addr_w     0x0000   //文本顯示區首地址
#define addr_t     0x01e0   //圖形顯示區首地址
#define data_ora   P2       //MCU P2<------> LCM
#define uchar      unsigned char
#define uint       unsigned int

sbit wr =P3^0;  //Data Write into T6963C,L有效
sbit rd =P3^1;  //Data Read from T6963C,L有效
sbit ce =P3^2;  //使能信號,L有效
sbit cd =P3^3;  //當wr=L,cd=H:寫命令,cd=L:寫數據;當rd=L,cd=H:讀狀態,cd=L:讀數據
sbit rst=P3^4;  //Lcm reset,低有效

sbit bf0 =P2^0;
sbit bf1 =P2^1;
sbit bf3 =P2^3;

void SYSCLK_Init(void);
void PORT_Init(void);
void wr_comm (uchar comm);	
void wr_data (uchar dat);
void chk_busy (uchar autowr);
void Delay(uint x);
void wr_od (uchar dat,uchar comm);
void wr_td (uchar datl,uchar dath,uchar comm);
void wr_xd (uint dat,uchar comm);
void wr_auto (uchar dat);
void init_lcd (void);
void clrram (void);
void disp_dat (uchar *dat);
void UART0_Init(void);                       //串口UART0初始化
void Display1(void);

bit  readFlag = 0;                           //讀標志
uchar readCounts = 0;                        //已經讀取的字符個數,與MAX_LEN比較
uchar idata trdata[MAX_LEN];                 //要接收/發送的字符串
uchar code num[]={0x20,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,
0x30,0x41,0x42,0x58,0x59,0x5a,0x2b,0x2d,0x2e,0x61,0x62,0x78,0x79,0x7a};  //“ 、數字1~0、A、B、X、Y、Z、+、-、.、a、b、x、y、z”
uchar code LCDtab[]={0x00,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,
0x10,0x21,0x22,0x38,0x39,0x3a,0x0b,0x0d,0x0e,0x41,0x42,0x58,0x59,0x5a};
uchar Display[MAX_LEN];


/*---------------延時子程序----------------*/
void Delay(uint x) 
{ 
  uint j; 
  uchar i; 
  for(j=0;j<x;j++) 
  { 
    for(i=0;i<120;i++); 
  } 
}
/*------------寫命令或數據到LCD--------------*/
void wr_od (uchar dat,uchar comm)       //寫一個數據和一個命令
{
  wr_data(dat);
  wr_comm(comm);
}
void wr_td (uchar datl,uchar dath,uchar comm)  //寫兩個數據和一個命令
{
  wr_data(datl);
  wr_data(dath);
  wr_comm(comm);
}
void wr_xd (uint dat,uchar comm)       //寫一個16進制數據和一個命令
{
  uchar datl,dath;
  datl=dat;
  dath=dat>>8;
  wr_data(datl);
  wr_data(dath);
  wr_comm(comm);
}
void wr_auto (uchar dat)               //自動寫數據
{
  chk_busy (1);
  cd=0;
  rd=1;
  data_ora=dat;
  wr=0;
  Delay(10);
  wr=1;
}

void wr_comm (uchar comm)       //寫命令
{
  chk_busy (0);
  cd=1;
  rd=1;
  data_ora=comm;
  wr=0;
  Delay(10);
  wr=1;
}
void wr_data (uchar dat)       //寫數據
{
  chk_busy (0);
  cd=0;
  rd=1;
  data_ora=dat;
  wr=0;
  Delay(10);
  wr=1;
}
void chk_busy (uchar autowr)    //測狀態
{
  data_ora=0xff;
  cd=1;
  wr=1;
  rd=0;
  if(autowr)
    {while(bf3==0);}
  else
    {while((bf0==0)||(bf1==0));}
  rd=1;
}
/*------------------初始化-----------------*/
void init_lcd (void)
{
  rst=0;
  ;
  rst=1;
  ce=0;
  wr=1;
  rd=1;
  wr_xd(addr_w,0x40);                   //文本顯示區首地址
  wr_xd(addr_t,0x42);                   //圖形顯示區首地址
  wr_td(width,0x00,0x41);               //文本顯示區寬度
  wr_td(width,0x00,0x43);               //圖形顯示區寬度
  wr_comm(0x81);                        //邏輯"異或"
  wr_td(0x02,0x00,0x22);                //CGRAM偏置地址設置
  wr_comm(0x9c);                        //啟用文本顯示,啟用圖形顯示
}
/*--------------清RAM------------------*/
void clrram (void)
{
  uchar i,j;
  wr_xd(addr_w,0x24);
  wr_comm(0xb0);                      //自動寫開始
  for(j=0;j<144;j++)
  {
    for(i=0;i<width;i++)
      wr_auto(0x00);
  }
  wr_comm(0xb2);                     //自動寫結束
}

/*--------------顯示字符------------------*/
void disp_dat (uchar *dat)
{
  uchar i;
  for(i=0;i<MAX_LEN;i++)
  {
     if(dat[i]==0x38)
	 {
	    wr_xd(0x0007,0x24);   //第一行
	 }
	 else if(dat[i]==0x39)
	 {
	    wr_xd(0x001b,0x24);   //2
	 }
	 else if(dat[i]==0x3a)
	 {
	    wr_xd(0x002f,0x24);    //3
	 }
	 else if(dat[i]==0x21)
	 {
	    wr_xd(0x0043,0x24);    //4
	 }
	 else if(dat[i]==0x22)
	 {
	    wr_xd(0x0057,0x24);    //5
	 }
	 else if(dat[i]==0x58)
	 {
	    wr_xd(0x006b,0x24);    //6
		dat[i]=0x38;
	 }
	 else if(dat[i]==0x59)
	 {
	    wr_xd(0x007f,0x24);     //7
		dat[i]=0x39;
	 }
	 else if(dat[i]==0x5a)
	 {
	    wr_xd(0x0093,0x24);     //8
		dat[i]=0x3a;
	 }
	 else if(dat[i]==0x41)
	 {
	    wr_xd(0x00a7,0x24);     //9
		dat[i]=0x21;
	 }
	 else if(dat[i]==0x42)
	 {
	    wr_xd(0x00bb,0x24);      //10
		dat[i]=0x22;
	 }                                                                                                                                                   
	 wr_od (dat[i],0xC0);
	 Delay(500);
  }
}
/*------------------主程序--------------------*/
void main ()
{
   uchar rxch;
   uchar i;
   uchar j;
   WDTCN = 0xde;
    WDTCN = 0xad;                   //關閉看門狗

  PORT_Init();
  init_lcd ();
   SYSCLK_Init();
   UART0_Init();                             //串口初始化
   EA=1;
  
  clrram();
  Display1();
  
  while (1)
  {
	 if(RI0)
	 {
		 RI0=0;
		 rxch=SBUF0;
		 if(readCounts<MAX_LEN-1)
		 {
			 trdata[readCounts]=rxch;
			 readCounts++;
          }
		  else
		  {
		      trdata[readCounts]=rxch;
              readCounts=0;
			  readFlag=1;		  
		  }
      }
	  if(readFlag)
	  {
		 readFlag=0;
		 for(j=0;j<MAX_LEN;j++)
		 {   
			 for(i=0;i<=24;i++)
		     { 
		         if(num[i]==trdata[j])
		         {  
			         Display[j]=LCDtab[i];
					 SBUF0 = Display[j];                             //送入緩沖區
                     while(TI0 == 0);                        //等待發送完畢
                     TI0 = 0;                            //軟件清零*/
			         break;
			      }
              }
          }
		  disp_dat(Display);
	   }
   }
}

//端口初始化
void PORT_Init(void)
{
   XBR0 = 0x04;                             //允許UART0,RX,TX連到2個端口引腳. XBR0=0000,0100
   XBR1 = 0x00;
   XBR2 = 0x40;                             //交叉開關使能
   P0MDOUT |= 0x03;                         //P0.0,P0.1為推挽方式輸出,即TX0,RX0所在的端口 0000,0011
   P2MDOUT |= 0xFF ;                         
   P3MDOUT |=0x1F;      
}

//系統時鐘初始化
#pragma OT(0,speed) 
void SYSCLK_Init(void)
{
   uchar i;
   OSCXCN = 0x67;                            //采用外部晶振22.1184MHz,不分頻. 選型OSCXCN=0110,0111
   for(i=0;i<255;i++);                       //等待>1ms
   while(!(OSCXCN&0x80));                    //查詢直到XTLVLD=1,晶振穩定
   OSCICN = 0x88;                            //切換到外部振蕩器,允許時鐘失效監測器. OSCICN=1000,1000
}

//串口初始化
void UART0_Init(void)
{
   SCON0 = 0x50;                            //UART0接收允許,選擇串口方式1,波特率可變 SCON0=0101,0000
   ES0 = 1;                                 //UART0中斷開啟
   PCON |= PCONVAL;                         //PCON=0x00,SMOD = 0 ; PCON=0x80,SMOD=1
   CKCON |= 0x00;                               //定時器1使用系統時鐘的12分頻作為時基
   ET1=1;                                    //定時器1中斷開啟
   TCON=0x40;                                //TR1=1,定時器1允許
   TMOD = 0x20;                             //選擇定時器1工作方式:方式2,自動重裝載8位計數器/定時器
   TH1 = (int)TXVAL;                        //T1初值,根據波特率,時鐘等計算. 0xF4, bps=4800bps
   TL1 = (int)TXVAL;
}

//
void Display1(void)
{
   wr_xd(0x0000,0x24);   //第一行首地址
   wr_od (0x34,0xC0);     //T
   Delay(500);
   wr_od (0x28,0xC0);    //H
   Delay(500);
   wr_od (0x25,0xC0);    //E
   Delay(500);
   wr_od (0x2f,0xC0);    //O
   Delay(500);
   wr_od (0x32,0xC0);    //R
   Delay(500);
   wr_od (0x39,0xC0);    //Y
   Delay(500);
   wr_od (0x1a,0xC0);    //:
   Delay(500);
   wr_od (0x38,0xC4);    //X
   Delay(500);
   wr_xd(0x0010,0x24);
   wr_od (0x4d,0xC0);    //m
   Delay(500);
   wr_od (0x4d,0xC4);    //m
   Delay(500);

   wr_xd(0x001b,0x24);   //第二行
   wr_od (0x39,0xC4);    //Y
   Delay(500);
   wr_xd(0x0024,0x24);
   wr_od (0x4d,0xC0);    //m
   Delay(500);
   wr_od (0x4d,0xC4);    //m
   Delay(500);

   wr_xd(0x002f,0x24);   //第三行
   wr_od (0x3a,0xC4);    //Z
   Delay(500);
   wr_xd(0x0038,0x24);
   wr_od (0x4d,0xC0);    //m
   Delay(500);
   wr_od (0x4d,0xC4);    //m
   Delay(500);

   wr_xd(0x0043,0x24);   //第四行
   wr_od (0x21,0xC4);    //A
   Delay(500);

   wr_xd(0x0057,0x24);   //第五行
   wr_od (0x22,0xC4);    //B
   Delay(500);

   wr_xd(0x0064,0x24);    //第6行首地址
   wr_od (0x21,0xC0);     //A
   Delay(500);
   wr_od (0x23,0xC0);    //C
   Delay(500);
   wr_od (0x34,0xC0);    //T
   Delay(500);
   wr_od (0x35,0xC0);    //U
   Delay(500);
   wr_od (0x21,0xC0);    //A
   Delay(500);
   wr_od (0x2c,0xC0);    //L
   Delay(500);
   wr_od (0x1a,0xC0);    //:
   Delay(500);
   wr_od (0x38,0xC4);    //X
   Delay(500);
   wr_xd(0x0074,0x24);
   wr_od (0x4d,0xC0);    //m
   Delay(500);
   wr_od (0x4d,0xC4);    //m
   Delay(500);

   wr_xd(0x007f,0x24);   //第七行
   wr_od (0x39,0xC4);    //Y
   Delay(500);
   wr_xd(0x0088,0x24);
   wr_od (0x4d,0xC0);    //m
   Delay(500);
   wr_od (0x4d,0xC4);    //m
   Delay(500);

   wr_xd(0x0093,0x24);   //第8行
   wr_od (0x3a,0xC4);    //Z
   Delay(500);
   wr_xd(0x009c,0x24);
   wr_od (0x4d,0xC0);    //m
   Delay(500);
   wr_od (0x4d,0xC4);    //m
   Delay(500);

   wr_xd(0x00a7,0x24);   //第9行
   wr_od (0x21,0xC4);    //A
   Delay(500);

   wr_xd(0x00bb,0x24);   //第10行
   wr_od (0x22,0xC4);    //B
   Delay(500);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日产国产欧美视频一区精品| 欧美日韩精品综合在线| 2022国产精品视频| 紧缚捆绑精品一区二区| 欧美日本一道本| 午夜电影一区二区| 日韩亚洲国产中文字幕欧美| 亚洲电影第三页| 日韩亚洲欧美成人一区| 精品在线一区二区| 国产日产精品一区| av一区二区久久| 一区二区三区日韩在线观看| 在线欧美日韩精品| 日韩成人av影视| 国产亚洲精品aa午夜观看| 不卡一区二区在线| 亚洲自拍偷拍九九九| 91精品国产91久久久久久最新毛片| 亚洲国产精品久久人人爱蜜臀| 日韩欧美亚洲另类制服综合在线| 九一久久久久久| 亚洲男同1069视频| 欧美一级专区免费大片| 成人免费毛片片v| 午夜精品视频在线观看| 久久久精品影视| 7777女厕盗摄久久久| 成人成人成人在线视频| 日本中文在线一区| 亚洲欧美日韩中文播放| 日韩欧美激情一区| 欧美日韩一卡二卡三卡| 高清不卡在线观看| 免费不卡在线视频| 亚洲永久精品大片| 亚洲色图欧美偷拍| 国产欧美日韩另类视频免费观看| 欧美人与性动xxxx| 一本到高清视频免费精品| 国产精品自拍一区| 韩国一区二区在线观看| 美日韩黄色大片| 日本欧洲一区二区| 青青草原综合久久大伊人精品| 亚洲三级理论片| 亚洲欧美日韩系列| 亚洲视频小说图片| 亚洲欧洲成人自拍| 中文字幕一区二区三区不卡在线| 久久久高清一区二区三区| 日韩免费一区二区| 91麻豆精品国产91久久久久 | 麻豆freexxxx性91精品| 肉色丝袜一区二区| 美女精品一区二区| 国产真实乱对白精彩久久| 久久精品国产成人一区二区三区| 裸体一区二区三区| 精品一区中文字幕| 国产成人精品影视| 一本大道久久精品懂色aⅴ| 色综合一个色综合亚洲| 欧美日韩一区在线| 精品国产91亚洲一区二区三区婷婷| 欧美草草影院在线视频| 国产精品久久久久7777按摩| 洋洋成人永久网站入口| 午夜激情久久久| 成人免费看黄yyy456| 欧美性猛交一区二区三区精品| 69久久夜色精品国产69蝌蚪网| www欧美成人18+| 亚洲男人天堂av| 国产成人免费视频精品含羞草妖精| 粉嫩aⅴ一区二区三区四区| 日本道色综合久久| 亚洲精品在线观| 亚洲国产一区二区a毛片| 国产精品伊人色| 欧美在线观看你懂的| 久久久久久黄色| 视频精品一区二区| 色成年激情久久综合| 久久久久久久久一| 蜜桃视频一区二区三区| 91久久奴性调教| 国产精品久久三| 国产一二精品视频| 精品99999| 免费成人你懂的| 91精品国产欧美日韩| 亚洲国产中文字幕在线视频综合| 成人av资源在线观看| 国产亚洲成aⅴ人片在线观看| 精品午夜久久福利影院| 91精品一区二区三区久久久久久| 亚洲成在线观看| 欧美人伦禁忌dvd放荡欲情| 日韩精品资源二区在线| 成人欧美一区二区三区1314| 亚洲小说春色综合另类电影| 久久丁香综合五月国产三级网站| 国产91精品露脸国语对白| 亚洲综合一区二区| 99r国产精品| 亚洲欧美国产三级| 成人国产精品免费网站| 亚洲视频一区在线| 91激情五月电影| 日韩高清中文字幕一区| 日韩一区二区视频在线观看| 免费观看在线色综合| 国产日韩欧美精品综合| 北岛玲一区二区三区四区| 欧美精品一区二| 国产最新精品免费| 国产精品欧美一区二区三区| 国产成人免费视频网站高清观看视频 | 欧美日韩亚洲丝袜制服| 日本中文字幕一区二区视频| 国产午夜精品一区二区三区视频 | 久久97超碰色| 亚洲欧美一区二区久久| 日韩午夜精品电影| 不卡视频在线看| 麻豆成人免费电影| 国产精品传媒在线| 欧美一区二区精品久久911| 成人高清视频在线| 久久国产精品色| 亚洲成人午夜影院| 亚洲黄色av一区| 国产婷婷色一区二区三区四区| 欧美日韩在线三级| 91色porny在线视频| 国产成人在线视频网站| 亚洲成人av电影| 亚洲美女少妇撒尿| 国产精品精品国产色婷婷| 久久免费偷拍视频| 欧美成人a在线| 欧美精品一区二区久久久| 欧美日韩国产小视频| 色88888久久久久久影院按摩| 暴力调教一区二区三区| 国产不卡视频在线观看| 国产成人av电影在线| 国内不卡的二区三区中文字幕 | 精品在线播放免费| 蜜臀av亚洲一区中文字幕| 五月婷婷综合网| 首页亚洲欧美制服丝腿| 人禽交欧美网站| 韩国三级电影一区二区| 国产伦精品一区二区三区免费| 韩国成人在线视频| 国模套图日韩精品一区二区| 久久精品噜噜噜成人88aⅴ| 韩国中文字幕2020精品| 成人av资源下载| 欧美久久一区二区| 亚洲精品一区在线观看| 国产日韩v精品一区二区| 最新热久久免费视频| 亚洲丰满少妇videoshd| 久久se这里有精品| 成人爱爱电影网址| 欧美丰满少妇xxxbbb| 国产肉丝袜一区二区| 亚洲欧美日韩一区| 国内成人自拍视频| 欧洲av一区二区嗯嗯嗯啊| 精品美女一区二区| 一二三四社区欧美黄| 精品一区二区三区在线观看| 99精品视频免费在线观看| 日韩欧美在线123| 亚洲永久精品大片| 高清av一区二区| 欧美一区二区视频在线观看2022| 国产精品理论在线观看| 免费xxxx性欧美18vr| 欧美色网一区二区| 亚洲色图欧美偷拍| 成人av午夜影院| 国产欧美精品一区| 国产一区福利在线| 久久综合久色欧美综合狠狠| 丝袜美腿成人在线| 欧美乱妇23p| 亚欧色一区w666天堂| 色噜噜狠狠成人网p站| 国产精品国产三级国产普通话三级 | 欧美日韩一区二区三区四区五区 | 亚洲风情在线资源站| av亚洲产国偷v产偷v自拍| 中文字幕 久热精品 视频在线| 毛片一区二区三区| 欧美成人vps|