F360最小系統(tǒng)測(cè)試程序_第1頁(yè)
F360最小系統(tǒng)測(cè)試程序_第2頁(yè)
F360最小系統(tǒng)測(cè)試程序_第3頁(yè)
F360最小系統(tǒng)測(cè)試程序_第4頁(yè)
F360最小系統(tǒng)測(cè)試程序_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、./* 功能:F360最小系統(tǒng)測(cè)試程序12864開機(jī)時(shí)顯示"鍵盤顯示測(cè)試程序"和正弦波形;每按一個(gè)按鍵,LCD上顯示相應(yīng)字符;P2.0P2.7顯示不同頻率的方波;IDA0產(chǎn)生鋸齒波。*/#include <C8051F360.H>#define uchar unsigned char#define uint unsigned int#define ulong unsigned long#define CS1 0x4000 /外部擴(kuò)展片選地址1#define CS2 0x8000 /外部擴(kuò)展片選地址2#define LEDENCS 0xC004 /LCD模塊背光控

2、制片選信號(hào)#define WCOMADDR 0xC008 /寫命令寄存器的地址#define WDATADDR 0xC009 /寫數(shù)據(jù)寄存器的地址#define RCOMADDR 0xC00A /讀命令寄存器的地址#define RDATADDR 0xC00B /讀數(shù)據(jù)寄存器的地址#define KEYCS 0xC00C /讀鍵盤的地址uchar count1;/軟件計(jì)數(shù)器uchar keycode;/存放鍵值uchar LEDCON=0x00;/LCD模塊背光控制字,最低位為0時(shí)關(guān)LED背光,最低位為1時(shí)開啟LED背光,uchar idata WaveData128; /波形數(shù)據(jù)緩沖區(qū) bi

3、t keysign=0; /鍵標(biāo)志,0:無(wú)鍵輸入,1:有鍵輸入sbit START=P30;sbit SW0=P31;sbit SW1=P33;uchar code hanzi10 = "鍵盤顯示測(cè)試程序"uchar code hanzik0 = "K0"uchar code hanzik1 = "K1"uchar code hanzik2 = "K2"uchar code hanzik3 = "K3"uchar code hanzik4 = "K4"uchar code h

4、anzik5 = "K5"uchar code hanzik6 = "K6"uchar code hanzik7 = "K7"uchar code hanzik8 = "K8"uchar code hanzik9 = "K9"uchar code hanzika = "KA"uchar code hanzikb = "KB"uchar code hanzikc = "KC"uchar code hanzikd = "KD&qu

5、ot;uchar code hanzike = "KE"uchar code hanzikf = "KF"uchar code sindata128= 0x80,0x86,0x8c,0x92,0x98,0x9f,0xa5,0xab,0xb0,0xb6,0xbc,0xc1,0xc7,0xcc,0xd1,0xd5, 0xda,0xde,0xe2,0xe6,0xea,0xed,0xf0,0xf3,0xf6,0xf8,0xfa,0xfc,0xfd,0xfe,0xff,0xff, 0xff,0xff,0xff,0xfe,0xfd,0xfc,0xfa,0xf8,0x

6、f6,0xf3,0xf0,0xed,0xea,0xe6,0xe2,0xde, 0xda,0xd5,0xd1,0xcc,0xc7,0xc1,0xbc,0xb6,0xb0,0xab,0xa5,0x9f,0x98,0x92,0x8c,0x86, 0x7f,0x79,0x73,0x6d,0x67,0x60,0x5a,0x54,0x4f,0x49,0x43,0x3e,0x38,0x33,0x2e,0x2a, 0x25,0x21,0x1d,0x19,0x15,0x12,0x0f,0x0c,0x09,0x07,0x05,0x03,0x02,0x01,0x00,0x00, 0x00,0x00,0x00,0x0

7、1,0x02,0x03,0x05,0x07,0x09,0x0c,0x0f,0x12,0x15,0x19,0x1d,0x21, 0x25,0x2a,0x2e,0x33,0x38,0x3e,0x43,0x49,0x4f,0x54,0x5a,0x60,0x67,0x6d,0x73,0x79, ;/-/ Function PROTOTYPES/-void OscInit(void);void PortIoInit(void);void XramInit(void);void SmbInit(void);/I2C總線初始化void UartInit(void);/異步串口通信接口初始化void DacI

8、nit(void);/D/A轉(zhuǎn)化器初始化void AdcInit(void);/A/D初始化void Int0Init(void);/外部中斷初始化void TimerInit(void);/定時(shí)器初始化void PcaInit(void);/PCA初始化void InterruptsInit(void);/中斷系統(tǒng)初始化void InitDevice(void);void CheckLcd();/檢查L(zhǎng)CD是否空閑子程序void WriteCom(uchar n);/Lcd寫指令子程序void WriteData(uchar m);/Lcd寫數(shù)據(jù)子程序void InsitiLcd();/Lc

9、d初始化子程序void DispHan( uchar code *a,uchar m,uchar k);/顯示漢字子程序void WaveData_Init() ;/寫128字節(jié)波形數(shù)據(jù)子程序void ShowWave();/波形顯示子程序/* 主函數(shù)/*/void main() uchar xdata *addr;InitDevice();/F360初始化 InsitiLcd();/LCD模塊初始化 DispHan(hanzi10,0x80,0x10);/顯示“鍵盤顯示測(cè)試程序”WriteCom(0x34); /關(guān)繪圖顯示,設(shè)為擴(kuò)充指令WaveData_Init(); /將128字節(jié)的正弦波

10、數(shù)據(jù)讀入顯示RAM ShowWave(); /顯示波形WriteCom(0x36);/開繪圖顯示W(wǎng)riteCom(0x30);/設(shè)為基本指令集while (1) if (keysign = 1)keysign = 0;switch(keycode)case 0x00: /k0鍵 InsitiLcd();/LCD模塊初始化 DispHan(hanzik0,0x84,0x02);/顯示“K0”addr=LEDENCS;LEDCON=LEDCON;*addr=LEDCON;/開/關(guān)LCD模塊背光break; case 0x01: /k1鍵 InsitiLcd(); DispHan(hanzik1,0

11、x85,0x02);/顯示“K1”SW0=0;SW1=0;break; case 0x02: /k2鍵 InsitiLcd(); DispHan(hanzik2,0x86,0x02);/顯示“K2”SW0=1;SW1=0;break; case 0x03: /k3鍵 InsitiLcd(); DispHan(hanzik3,0x87,0x02);/顯示“K3”SW0=0;SW1=1;break; case 0x04: /k4鍵 InsitiLcd(); DispHan(hanzik4,0x94,0x02);/顯示“K4”SW0=1;SW1=1;break; case 0x05: /k5鍵 In

12、sitiLcd(); DispHan(hanzik5,0x95,0x02);/顯示“K5”break; case 0x06: /k6鍵 InsitiLcd(); DispHan(hanzik6,0x96,0x02);/顯示“K6”break; case 0x07: /k7鍵 InsitiLcd(); DispHan(hanzik7,0x97,0x02);/顯示“K7”break; case 0x08: /k8鍵 InsitiLcd(); DispHan(hanzik8,0x8C,0x02);/顯示“K8”break; case 0x09: /k9鍵 InsitiLcd(); DispHan(h

13、anzik9,0x8D,0x02);/顯示“K9”break; case 0x0A: /ka鍵 InsitiLcd(); DispHan(hanzika,0x8E,0x02);/顯示“KA”break; case 0x0B: /kb鍵 InsitiLcd(); DispHan(hanzikb,0x8F,0x02);/顯示“KB”break; case 0x0C: /kc鍵 InsitiLcd(); DispHan(hanzikc,0x9C,0x02);/顯示“KC”break; case 0x0D: /kd鍵 InsitiLcd(); DispHan(hanzikd,0x9D,0x02);/顯

14、示“KD”break;case 0x0E: /ke鍵 InsitiLcd(); DispHan(hanzike,0x9E,0x02);/顯示“KE”break; case 0x0F: /kf鍵 InsitiLcd(); DispHan(hanzikf,0x9F,0x02);/顯示“KF”break; /* 外部中斷0功能:讀入鍵值*/void ReadKey() interrupt 0 uchar xdata *addr;addr=KEYCS;keycode=*addr;keycode &= 0x0F; /屏蔽無(wú)效的高四位keysign =1; /置按鍵標(biāo)志位 /* 定時(shí)器0中斷功能:

15、定時(shí)10ms,P2口產(chǎn)生方波*/void Timer0() interrupt 1 TL0=0xf0;TH0=0xd8; /重置時(shí)間常數(shù)10msP2+; /* 定時(shí)器1中斷功能:定時(shí)10ms,IDA0產(chǎn)生鋸齒波*/void Timer1() interrupt 3 uchar count;TL1=0x0c;/定時(shí)0.5msTH1=0xfe;count+;IDA0H=count; /*內(nèi)部資源初始化子程序*函數(shù)功能:各種內(nèi)部資源初始化*/void OscInit(void)/內(nèi)部振蕩器初始化SFRPAGE=0x0f;/選擇特殊功能寄存器頁(yè)地址OSCICL=OSCICL+4;OSCICN=0xc2

16、;/允許內(nèi)部振蕩器,頻率除2作為SYSCLK=12MHzCLKSEL=0x00;/選擇內(nèi)部振蕩器SFRPAGE=0x00;void PortIoInit(void)/I/O口初始化 SFRPAGE=0x0f;P0MDIN=0xe7;/P0.3、P0.4模擬量輸入P0MDOUT=0x83;/P0.0、P0.1、P0.7推拉式輸出P0SKIP=0xf9;/P0.1、P0.2被交叉開關(guān)跳過(guò)P1MDIN=0xff;/P1設(shè)置為數(shù)字量輸入P1MDOUT=0xff;/P1設(shè)置為推拉式輸出P1SKIP=0xff;/P1被交叉開關(guān)跳過(guò)P2MDIN=0xff;/P2設(shè)置為數(shù)字量輸入P2MDOUT=0xff;/P

17、2設(shè)置為推拉式輸出P2SKIP=0xff;P3MDIN=0xff;/P3設(shè)置為數(shù)字量輸入P3MDOUT=0xff;/P3設(shè)置為推拉式輸出P3SKIP=0xff;P4MDOUT=0xff;/P4.5設(shè)為OC輸出,其余推拉式輸出XBR0=0x01;/使能UARTXBR1=0xC0;/禁止弱上拉,交叉開關(guān)允許SFRPAGE=0x00;return;void XramInit(void)/外部數(shù)據(jù)儲(chǔ)存器初始化SFRPAGE=0x0f;EMI0CF=0x07;/引腳復(fù)用方式SFRPAGE=0x00;return;void SmbInit(void)/I2C總線初始化SMB0CF=0xc1;/定時(shí)器T1溢

18、出作為時(shí)鐘return;void UartInit(void)/異步串口通信接口初始化SCON0=0x00;/10位UARTreturn;void DacInit(void)/D/A轉(zhuǎn)化器初始化IDA0CN=0xf2;/IDA0使能,寫IDA0H觸發(fā)DAC輸出更新,2mA滿度輸出return;void AdcInit(void)/A/D初始化REF0CN=0x08;/選擇VDD作為電壓基準(zhǔn)AMX0P=0x08;/正端接P0AMX0N=0x1f;/負(fù)端接地ADC0CF=0x2c;/左對(duì)齊,轉(zhuǎn)換時(shí)鐘2MHzADC0CN=0x80;return;void Int0Init(void)/外部中斷初始化

19、IT01CF=0x05;/選擇P0.5為INT0IT0=1;/INT0下降沿觸發(fā)return;void TimerInit(void)/定時(shí)器初始化TMOD=0x11;/T0、T1方式1CKCON=0x00;/系統(tǒng)時(shí)鐘12分頻TL0=0x78;/定時(shí)10msTH0=0xec;TL1=0x0c;/定時(shí)0.5msTH1=0xfe;TMR2CN=0x04;/16位自動(dòng)重裝TMR2RLL=0xf0;/定時(shí)10msTMR2RLH=0xd8;TMR3CN=0x0c;/雙8位自動(dòng)重裝載,系統(tǒng)時(shí)鐘1/12TMR3RLL=0xe0;/定時(shí)100usTMR3RLH=0xff;TR0=1;TR1=1;return;

20、void PcaInit(void)/PCA初始化PCA0CN=0x40;/允許PCA計(jì)數(shù)器/定時(shí)器PCA0MD=0x00;/禁止看門狗定時(shí)器return;void InterruptsInit(void)/中斷系統(tǒng)初始化IE0=0;/清INT0中斷標(biāo)志EX0=1;PX0=0;ET0=1;ET1=1;/ET2=1;/EIE1=0x08;/允許ADC中斷/ES0=1;EA=1;return;void InitDevice(void)OscInit();PortIoInit();XramInit();/SmbInit();/UartInit();DacInit();/AdcInit();Int0I

21、nit();TimerInit();PcaInit();InterruptsInit();return;/* Function: 檢查L(zhǎng)CD是否空閑子程序*/void CheckLcd() uchar temp = 0x00; uchar xdata *addr; while (1) addr=RCOMADDR;temp=*addr;temp &= 0x80; if(temp = 0x00)break; /* Function: Lcd寫指令子程序*/void WriteCom(uchar n) uchar xdata *addr;CheckLcd();addr=WCOMADDR;*a

22、ddr=n; /* Function: Lcd寫數(shù)據(jù)子程序*/void WriteData(uchar m) uchar xdata *addr;CheckLcd();addr=WDATADDR;*addr = m; /* Function: Lcd初始化子程序*/void InsitiLcd() WriteCom(0x30); /設(shè)為基本指令集WriteCom(0x01); /清屏 WriteCom(0x0c); /開整體顯示 /*漢字顯示子程序*函數(shù)功能:在指定位置顯示指定長(zhǎng)度的字符串入口參數(shù):*a是字符串 m表示顯示的起始地址,k表示字符串長(zhǎng)度*/void DispHan( uchar code *a,uchar m,uchar k) uchar dat, i, j, length; length = k/2; WriteCom(m); for (i=0;i < length;i+) j = 2*i;dat = aj;/提取國(guó)標(biāo)碼第一字節(jié)WriteData(dat);dat = aj+1;/提取國(guó)標(biāo)碼第二字節(jié)WriteData(dat); /*初

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論