文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
***/
void write_cmd(BYTE cmd) {
BYTE dl; do {
dl=rd_com;
} while((dl&0x80)!=0); //判忙
wr_com= cmd; Delay(1); }
/**********************************************************************
Function name: write_data Descriptions: 写入数据
**********************************************************************/
void write_data(BYTE dat) {
BYTE dl; do {
dl=rd_com;
} while((dl&0x80)!=0); //判忙
wr_data= dat; Delay(1); }
/***********************************************************************
Function name: write_string Descriptions: 写入字符串
***********************************************************************/
void write_string(BYTE *s) {
while(*s != '\\0') //'\\0'为字符串结束标志
14文档收集于互联网,如有不妥请联系删除.
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
{
write_data(*s); s++; } }
/**********************************************************************
Function name: set_display_place Descriptions: 设置字符的显示位置
**********************************************************************/
void set_display_place(BYTE line,column) {
BYTE address; if(line == 1) {
address = 0x80 + column; }
else if(line == 2) {
address = 0xc0 + column; }
write_cmd(address); }
/******************************************************************* Function name: 将字符串写到指定的位置 Descriptions: 将字符串显示在lcd的特定位置
*******************************************************************/ void write_string_lcd(BYTE line,column,unsigned char *string) {
set_display_place(line,column); write_string(string); Delay(1); }
15文档收集于互联网,如有不妥请联系删除.
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
/****************************************************************** Function name: 将字符写到指定的位置 Descriptions: 将字符串显示在lcd的特定位置
*******************************************************************/ /*void write_data_lcd(BYTE line,column,dat) {
set_display_place(line,column); write_data(dat); Delay(1); } */
/*************************************************** ************液晶模块初始化****************************** ****************************************************/ void lcd_init(void) {
write_cmd(0x38);// write_cmd(0x38);// write_cmd(0x06);// write_cmd(0x0c);// write_cmd(0x01);// }
/*****************LED显示位置********************/ void main() {
//SP=0x60; lcd_init(); while(1) }
/*串行发送*/ #include
{write_string_lcd(1,1,\
write_string_lcd(2,1,\ }
16文档收集于互联网,如有不妥请联系删除.
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
#define uchar unsigned char #define uint unsigned int sbit LED1=P1^1; sbit LED2=P1^2; sbit K0=P1^0; sbit K4=P1^4;
uchar Operation_No=0; //操作代码 uchar //数码管代码 void delay(uint ms) {
uchar i; while(ms--); for(i=0;i<120;i++); }
//向串口发送字符
void Putc_to_SerialPort(uchar c) { SBUF=c;
while(TI==0); //收到时中断 TI=0; }
void uart_init() {
SCON=0x50; //串口模式1,允许接收 TMOD=0x20; //T1工作模式2 PCON=0x00; //波特率不倍增 TH1=0xfd; TL1=0xfd; TI=RI=0; TR1=1; }
//启动定时器
IE=0x90; //允许串口中断
//设置计数初值
//清除中断
code
DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};
17文档收集于互联网,如有不妥请联系删除.
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
main() {
uart_init(); K4=0; LED1=LED2=1; while(1) {
delay(100);
if(K0==0) {
while(K0==0)
Operation_No=(Operation_No+1)%4;
switch(Operation_No) //根据操作代码发送A/B/C或停止发送 {
case 0: Putc_to_SerialPort('X'); LED1=LED2=1; break;
case 1: Putc_to_SerialPort('A'); LED1=~LED1;LED2=1; break;
case 2: Putc_to_SerialPort('B'); LED2=~LED2;LED1=1; break;
case 3: Putc_to_SerialPort('C'); LED1=~LED1;LED2=LED1; break; }
void uart_interrupt() interrupt 4 {
if(RI) {
}
}
}
18文档收集于互联网,如有不妥请联系删除.