徐州工程学院毕业设计(论文)
write(w_byte); write(w_2_byte); prt_clear_rst(); prt_clear_clk(); }
void reset(void) {
ddr_set_rst(); prt_clear_clk(); prt_clear_rst(); prt_set_rst(); }
void write(unsigned char W_Byte) {
unsigned char i; DDRC=0xFF;
for(i=0;i<8;i++) {
Prt_clear_io(); if(W_Byte &0x01) {
prt_set_io(); }
Prt_set_clk();
delay_nus(1);//delay_nus(2); prt_clear_clk();
delay_nus(1);//delay_nus(2); W_Byte>>=1; } }
unslgned char read(void) {
unsigned char i;
unsigned char R_Byte; unsigned char R_Byte2; unsigned char TmpByte; ddr_set_io(); R_Byte=0x00; R_Byte2=0x00;
prt_clear_io(); ddr_clear_io();
for(i=0;i<4;i++)//get the first 4 bits {
TmpByte=0; if((pinp&(1< 28 徐州工程学院毕业设计(论文) TmpByte=1; TmpByte=0x80; } //TmpByte<<=7; R_Byte= (R-Byte>>1);//R_Byte>>=1; R_Byte |=TmpByte; prt_set_clk(); delay_nus(1);//delay_nus(2); prt_chear_clk(); delay_nus(1);//delay_nus(2); } for(i=0;i<4;i++) { TmpByte=0; if((pinp&(1< TmpByte=1; TmpByte=0x80; } //TmpByte<<=7; R_Byte2=(R_Byte2>>1);//R_Byte2>>=l; R_Byte2 |=TmpByte; Prt_set_clk(); delay_nus(1)://delay_nus(2); prt_clear_clk(); delay_nus(1);//delay_nus(2); } R_Byte>>=4; R_Byte2>>=4; R_Byte=(R_Byte2*10)+R_Byte; return R_Byte; } HD44780.C #include”includes.h” #define HD44780_C void lcd_pulse(void) { Icd—set—e() delay_nms(1); Icd_clear_e(); delay_nms(1); } void icd_wait(void) { asm(”nop”); } void icd_send(unsigned char data) 29 徐州工程学院毕业设计(论文) { Lcd_wait(); dataport=data; lcd_pulse(); } void clrscr(void) { lcd_clear_rs(); lcd_clear_rw(); icd_send(0x01); lcd_wait(); } void gotoz(unsigned char z) { lcd_clear_rs(); lcd_clear_rw(); lcd_send(z || 0x80); } void gotoxy(unsigned char x,unsigned char y) { gotoz((x)|((y)<(6)); } void put_char(char c) { lcd_clear_rw(); lcd_set_rs(); lcd_send(c); } void outtext(unsigned char*text) { unsigned char i; for(i=0; text[i]&&i<16;i++) put_char(text[i]); } void initgraph(void) { dirport_data:0xFF; dirport_con |=(LCD_E | LCD_RS | LCD_RW); lcd_clear_rs(); lcd_clear_rw(); lcd_send(0x3C); lcd_send(0x3C); lcd_send(0x3C); 30 徐州工程学院毕业设计(论文) lcd_send(0x06); lcd_send(0x0C); } #define LCD_C #include”includes.h” void LCD_INIT(void) { LCD_DIR_PORT=0xff; LCD_0Pl_PORT=0x30; lcd_clear_rw(); lcd_clear_rs(); lcd_set_e(); asm(”nop”); asm(”nop”); icd_clear_e(); delay_nus(40); icd_clear_rw(); icd_clear_rs(); lcd__set_e(); asm(”nop”); asm(”nop”); icd_clear_e(); delay_nus(40); icd_set_e(); asm(”nop”): asm(”nop”); lcd_clear_e(); delay_nus(40); LCD_OP_PORT=0x20; icd_set_e(); asm(”nop”); asm(”nop“); lcd_clear_e(); delay_nus(40); } void LCD_Busy(void) { unsigned char temp,high; unsigned char low; LCD_DIR_PORT=0x0f; do { teap=LCD_OP_PORT; temp=temp&BIT3; LCD_OP_PORT=temp; Lcd_set_rw(); //Set LCD to READ 31 徐州工程学院毕业设计(论文) lcd_clear_rs(); lcd_set_e(); delay_nus(3); high=LCD_IP_PORT; lcd_clear_e(); lcd_set_e(); asm(”nop”); asm(”nop”); low=LCD—IP—PORT;. lcd_clear_e(); }while(high&0x80); delay_nus(20); } void LCD_WriteControl(unsigned char CMD) { char temp; LCD_Busy(); LCD_DIR_PORT=0xff; temp=LCD_OP_PORT; temp=temp&BIT3: LCD_OP_PORT=(CMD &0xf0)| temp; lcd_clear_rw(); lcd_clear_rs(); lcd_set_e(); asm(”nop”); asm(”nop”); lcd_clear_e(); LCD_OP_PORT=(CMD<<4)|temp; lcd_clear_rw(); lcd_clear_rs(); lcd_set_e(); asm(”nop”); asm(”nop”); lcd_clear_e(); } void LCD_WriteData(unsiqned char Data) { char temp~ LCD_Busy(); LCD_DIR_PORT=0xFF; temp=LCD_OP_PORT; temp=temp&BIT3; LCD_OP_PORT=(Data&0xf0)| temp; lcd_clear_rw(); //Set LCD to write lcd_set_rs(); lcd_set_e(); 32