江苏理工学院毕业设计说明书(论文)
}/*End of while */
shift=BitPosition-8; /*Get shift value for crc value*/
//Shift crc value while(shift){
for(i=5; i<0xFF; i--){
if((crc[i-1]&0x80) && (i>0)){ } else{ }
crc[i]<<=1; crc[i]+=temp;
temp=0; temp=1;
}/*End of for*/ shift--;
}/*End of while*/
//Exclusive OR between pec and crc for(i=0; i<=5; i++){
pec[i] ^=crc[i];
}/*End of for*/
}while(BitPosition>8);/*End of do-while*/
return pec[0];
}/*End of PEC_calculation*/
第 27 页 共 61 页
江苏理工学院毕业设计说明书(论文)
4.2显示模块设计
4.2.1显示模块分析
本次设计采用的是LCD5110液晶显示屏进行数值的显示,单片机将接收到的数字信号进行内部处理之后送至LCD5110进行数值显示。LCD5110驱动指令如表4-1所示:
表4-1驱动指令
4.2.2软件程序:
图4-4软件程序流程图。
第 28 页 共 61 页
江苏理工学院毕业设计说明书(论文)
图4-4液晶显示流程图
程序:
#include \#include \#include \
/*--------------------------------------------------------------*/ //写入一个字节(数据或指令) //wbyte: 待写入的数据 //dat_cmd: 1-数据, 0-指令
void LCD_write_byte(unsigned char wbyte, unsigned char dat_cmd) {
unsigned char i;
第 29 页 共 61 页
江苏理工学院毕业设计说明书(论文)
}
/*--------------------------------------------------------------*/ //显示清屏(清DDRAM) void LCD_clr_scr(void) { }
第 30 页 共 61 页
unsigned int i;
LCD_write_cmd(X_Col_Addr); LCD_write_cmd(Y_Page_Addr);
for(i = 504; i; i--) LCD_write_dat(0x00); for(i = 8; i; i--) //8位数据, 先高后低 { }
LCD_CS = 1;
//禁止
if(wbyte & 0x80) {LCD_DIN = 1;} else
LCD_CLK = 0; wbyte <<= 1;
//移位(延时)
{LCD_DIN = 0;}
LCD_CS = 0;
//使能
LCD_DC = dat_cmd; //1-数据 //0-指令
LCD_CLK = 1; //上升沿写入
江苏理工学院毕业设计说明书(论文)
/*--------------------------------------------------------------*/ //显示清行 //num: 0 - 5
void LCD_clr_row(unsigned char num) { }
/*--------------------------------------------------------------*/ //液晶字节定位(1*1) //液晶规划: //x: 0 - 83 //y: 0 - 5
void LCD_pos_byte(unsigned char x, unsigned char y) { }
/*--------------------------------------------------------------*/ //液晶字符输出(6*8字体) //x: 0 - 13 //y: 0 - 5
void LCD_printc(unsigned char x, unsigned char y, unsigned char c_dat) {
第 31 页 共 61 页
x |= X_Col_Addr; y |= Y_Page_Addr;
LCD_write_cmd(x); //列地址 LCD_write_cmd(y); //页地址 unsigned char i;
LCD_pos_byte(0, num);
for(i = 84; i; i--) LCD_write_dat(0x00);