已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include c8051f000.h#include intrins.h/-#define uchar unsigned char#define uint unsigned int#define BAUDRATE #define SYSCLK void SYSCLK_Init (void);void delaynus(unsigned int q) ; void PORT_Init (void);void SPI0_Init (void);void LCD_Init(void);void SendSPIByte(unsigned char ch);void delaynms (unsigned int j);void writecom(unsigned char com);void writedata(unsigned char d);void writechar(unsigned char ua);void Write_COM(uchar ins);void lcden(datad);void LCD_set_xy( unsigned char x, unsigned char y );void LCD_write_string(unsigned char n);void lcd_key1(void);void lcd_key2(void);void lcd_key3(void);void lcd_key4(void);void UART0_Init (void);void presskey(void);/-/ Global CONSTANTS/-sbit S3=P10;sbit S4=P11;sbit S5=P12;sbit S6=P13;sbit lcdcs=P30;unsigned char comd,kk,sdf,ppca;unsigned char virt_port,v,b,m;unsigned char lcd_data_count;unsigned char *lcdpoint;unsigned char qqq; unsigned char data8;unsigned int i;/-/-void main(void)WDTCN = 0xde; / disable watchdog timerWDTCN = 0xad; SYSCLK_Init ();PORT_Init ();UART0_Init() ; / initialize crossbar and GPIOSPI0_Init (); LCD_Init() ; delaynms (20); delaynus (100); LCD_set_xy(0X00,0); delaynus (200); presskey(); delaynus (200); LCD_write_string(16); delaynus (200); while(1) if(S3=0) Write_COM(0X01); delaynms (200); LCD_set_xy(0X00,0); delaynus (200); lcd_key1(); delaynus (200); LCD_write_string(6); delaynus (200); else if(S4=0) Write_COM(0X01); delaynms (200); LCD_set_xy(0X00,0); delaynus (200); lcd_key2(); delaynus (200); LCD_write_string(6); delaynus (200); else if(S5=0) Write_COM(0X01); delaynms (200); LCD_set_xy(0X00,0); delaynus (200); lcd_key3(); delaynus (200); LCD_write_string(6); delaynus (200); else if(S6=0) Write_COM(0X01); delaynms (200); LCD_set_xy(0X00,0); delaynus (200); lcd_key4(); delaynus (200); LCD_write_string(6); delaynus (200); else /-/ Initialization Subroutines/-/-/ PORT_Init/-void PORT_Init (void) XBR0 = 0x27; / XBAR0: Initial Reset Value XBR1 = 0x00; / XBAR1: Initial Reset Value XBR2 = 0x5c; / XBAR2: Initial Reset Value PRT0CF = 0x14; / Output configuration for P0 PRT1CF = 0x10; / Output configuration for P3 PRT3CF = 0x01; / Output configuration for P3 /-/ SYSCLK_Init/-void SYSCLK_Init (void) OSCXCN = 0x67; / start external oscillator with for (i=0; i 256; i+) ; / XTLVLD blanking interval (1ms) while (!(OSCXCN 0x80) ; / Wait for crystal osc. to settle OSCICN = 0x88; / select external oscillator as SYSCLK /-/ SPI0_Init/-void SPI0_Init (void) SPI0CFG = 0x07; / data sampled on 1st SCK rising edge SPI0CFG|=0xC0; /CKPOL =1; SPI0CN = 0x03; / Master mode; SPI enabled; flags SPI0CKR = SYSCLK/2/2000000-1; / SPI clock = 8MHz (limited by / EEPROM spec.)/-/ UART0_Init/-void UART0_Init (void) SCON = 0x50; / SCON: mode 1, 8-bit UART, enable RX TMOD = 0x20; / TMOD: timer 1, mode 2, 8-bit reload TH1 = -(SYSCLK/BAUDRATE/16); / set Timer1 reload value for baudrate TR1 = 1; / start Timer1 CKCON |= 0x10; / Timer1 uses SYSCLK as time base PCON |= 0x80; / SMOD = 1 TI = 1; / Indicate TX ready/-/ LCD_Init/-void LCD_Init(void) /向LCD送命令/ unsigned int xdata x; delaynms(100); datad=0x00; SendSPIByte(datad); delaynms(10); Write_COM(0x30); delaynms(10); Write_COM(0x30); delaynms(10); Write_COM(0x30); delaynms(10) ; Write_COM(0x28); delaynms(100); virt_port=0; SendSPIByte(virt_port); lcden(virt_port); Write_COM(0x01); delaynms(100); Write_COM(0x06); delaynms(10) ; Write_COM(0x0C); delaynms(500) ; /-/ SendSPIByte/-void SendSPIByte(unsigned char ch) lcdcs=1; delaynus(100); SPIF = 0;SPI0DAT = ch;while (SPIF = 0); delaynus(100); lcdcs=0; delaynus(100); _nop_(); / 等待写结束 /-/ lcden/-void lcden(datad) datad|=0x08; SendSPIByte(datad); datad=0xf7; SendSPIByte(datad);/-/ delaynms/-void delaynms (unsigned int uu) unsigned int oo,ll; for (oo=0;oouu;oo+) for(ll=0;ll1140;ll+); /-/ writechar/-void writechar(unsigned char ua) uint j; uchar t,x; for(j=0;j500;j+); datad|=0x02; SendSPIByte(datad); datad|=ua0xf0; SendSPIByte(datad); datad|=0x08; SendSPIByte(datad); for(x=0;x3;x+); datad=0xf7; SendSPIByte(datad); for(x=0;x3;x+); datad=0x07; delaynus(100); SendSPIByte(virt_port); t|=ua0x0f; datad|=t4; SendSPIByte(datad); for(x=0;x3;x+); datad|=0x08; SendSPIByte(datad); for(x=0;x3;x+); datad=0xf7; SendSPIByte(datad); for(x=0;x3;x+); datad=0x00; t=0x00; SendSPIByte(datad);/-/ Write_COM/-void Write_COM(uchar ins) uchar t; uint j; for(j=0;j5000;j+); /用延时代替查询 virt_port|=ins0xf0; SendSPIByte(virt_port); /LCDE=1; virt_port|=0x08; SendSPIByte(virt_port); for(i=3;i0;i-); virt_port=0x08; SendSPIByte(virt_port); virt_port=0x07; SendSPIByte(virt_port); t=ins4; virt_port|=t0xf0; SendSPIByte(virt_port); virt_port|=0x08; SendSPIByte(virt_port); for(i=3;i0;i-); virt_port=0x08; SendSPIByte(virt_port); virt_port=0; SendSPIByte(virt_port);/-/ LCD_set_xy/-void LCD_set_xy( unsigned char x, unsigned char y ) unsigned char address; if (y = 0) address = 0x80 + x; else address = 0xc0 + x; Write_COM(address);/-/ LCD_write_string/-void LCD_write_string(unsigned char n) unsigned char data1; for(n;n0;n-) data1=*lcdpoint; writechar(data1); delaynms(100); lcdpoint+; delaynus(10); /-/ presskey/-void presskey(void) unsigned char xdata DDCdata16=0x50,0x4c,0x45,0x41,0x53,0x45,0x20,0x50,0x52,0x45,0x53,0x53,0x20,0x4b,0x45,0x59; lcdpoint=DDCdata;/-/ lcd_key1/-void lcd_key1(void) unsigned char xdata key1ok6=0x53,0x33,0x20,0x4f,0x4b,0x21; lcdpoint=key1ok;/-/ lcd_key2/-void lcd_key2(void) unsigned char xdata key2ok6=0x53,0x34,0x20,0x4f,0x4b,0x21; lcdpoint=key2ok;/-/ lcd_key3/-void lcd_key3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026 年过敏性休克急救护理处置培训课件
- 2026 年护理质控中高风险项目重点管控课件
- 2026 年老年科压疮高危患者综合防护护理
- ISO45001-2026(DIS)职业健康安全管理体系要求及使用指南之2:“4.2理解相关方的需求和期望”专业深度解读与应用(实施)指导材料(雷泽佳编制-2026A0)
- 114光伏并网功率因数达标月底仍被罚上万?病根全在并网点3 套整改方案按需选
- 棉纺领域安全考试试题和答案
- 描写景色、树木、花朵、小草的好词好句好段好诗
- 2026六年级数学毕业模拟检测试卷及答案
- 2026年保密观线上培训试题和答案
- 2026年地震行业地震灾害评估方案
- 2025-2026学年小学一年级(下)期末数学试卷
- 云计算平台建设验收规范
- 2026年共产党党章知识竞赛试题库(附答案)
- 施工现场临时排水施工方案
- GB/T 47592-2026塑料胺类环氧固化剂伯、仲、叔胺基氮含量的测定
- 2025-2026学年浙江省金华市八年级下册期末教学质量评价卷数学试题 含答案
- 2026年军队考核笔押题宝典考试题库及参考答案详解(综合卷)
- 2026安徽师范大学工作人员招聘29人笔试备考题库及答案解析
- 防范钓鱼网站链接诈骗:从识别到防御的全面指南
- 仓库员工考试试题及答案
- 《住院患者身体约束的护理》团体标准
评论
0/150
提交评论