欢迎来到天天文库
浏览记录
ID:40545934
大小:112.50 KB
页数:5页
时间:2019-08-04
《AVR写的12864程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、2009-03-0822:01开始学AVR单片机。第一个用AVR写的程序,电路和前面的电路基本一样,这次就多加了个滑动变阻器。用的是单片机内置1M的晶振,在延时上用AVRStudio仿真过的,应该比较准的。#include#include#defineucharunsignedchar#defineuintunsignedint#definePSB_CLRPORTB&=~(1<2、=(1<3、neEN_SETPORTB4、=(1<5、=(1<6、=(1<7、=(1<8、=(1<9、y(intx) { unsignedinti,j; for(i=0;i10、**********写数据**********************///写数据子程序///************************************************/voidsend_data(unsignedchardata){lcd_delay(156); //延时2msRS_SET;RW_CLR;PORTD=data;EN_SET;EN_CLR;}/*******************************************************************///set_xy:设置LC11、D显示的起始位置 //输入参数:x、y:显示字符串的位置,X:0-7,Y:0-3/*******************************************************************/voidset_xy(unsignedcharxpos,unsignedcharypos){switch(ypos){ case1: send_com(0X8012、xpos);break; case2: send_com(0X9013、xpos);break; case3: send_com(0X8814、xpos);break;15、 case4: send_com(0X9816、xpos);break; default:break;}}/*******************************************************************/// 在指定位置显示字符串 /*******************************************************************/voidprint(unsignedcharx,unsignedchary,char*str){ unsignedchar17、lcd_temp; set_xy(x,y); lcd_temp=*str; while(lcd_temp!=0x00) { send_data(lcd_temp); lcd_temp=*(++str); }}//**********LCD初始化************************voidinit_LCD(void){ DDRD=0XFF; PORTD=0X00; DDRB=0XFF; PORTB=0X00; RST_CLR; PSB_SET; NOP(); NOP(); 18、RST_SET; lcd_delay(15); send_com(0x30)
2、=(1<3、neEN_SETPORTB4、=(1<5、=(1<6、=(1<7、=(1<8、=(1<9、y(intx) { unsignedinti,j; for(i=0;i10、**********写数据**********************///写数据子程序///************************************************/voidsend_data(unsignedchardata){lcd_delay(156); //延时2msRS_SET;RW_CLR;PORTD=data;EN_SET;EN_CLR;}/*******************************************************************///set_xy:设置LC11、D显示的起始位置 //输入参数:x、y:显示字符串的位置,X:0-7,Y:0-3/*******************************************************************/voidset_xy(unsignedcharxpos,unsignedcharypos){switch(ypos){ case1: send_com(0X8012、xpos);break; case2: send_com(0X9013、xpos);break; case3: send_com(0X8814、xpos);break;15、 case4: send_com(0X9816、xpos);break; default:break;}}/*******************************************************************/// 在指定位置显示字符串 /*******************************************************************/voidprint(unsignedcharx,unsignedchary,char*str){ unsignedchar17、lcd_temp; set_xy(x,y); lcd_temp=*str; while(lcd_temp!=0x00) { send_data(lcd_temp); lcd_temp=*(++str); }}//**********LCD初始化************************voidinit_LCD(void){ DDRD=0XFF; PORTD=0X00; DDRB=0XFF; PORTB=0X00; RST_CLR; PSB_SET; NOP(); NOP(); 18、RST_SET; lcd_delay(15); send_com(0x30)
3、neEN_SETPORTB
4、=(1<5、=(1<6、=(1<7、=(1<8、=(1<9、y(intx) { unsignedinti,j; for(i=0;i10、**********写数据**********************///写数据子程序///************************************************/voidsend_data(unsignedchardata){lcd_delay(156); //延时2msRS_SET;RW_CLR;PORTD=data;EN_SET;EN_CLR;}/*******************************************************************///set_xy:设置LC11、D显示的起始位置 //输入参数:x、y:显示字符串的位置,X:0-7,Y:0-3/*******************************************************************/voidset_xy(unsignedcharxpos,unsignedcharypos){switch(ypos){ case1: send_com(0X8012、xpos);break; case2: send_com(0X9013、xpos);break; case3: send_com(0X8814、xpos);break;15、 case4: send_com(0X9816、xpos);break; default:break;}}/*******************************************************************/// 在指定位置显示字符串 /*******************************************************************/voidprint(unsignedcharx,unsignedchary,char*str){ unsignedchar17、lcd_temp; set_xy(x,y); lcd_temp=*str; while(lcd_temp!=0x00) { send_data(lcd_temp); lcd_temp=*(++str); }}//**********LCD初始化************************voidinit_LCD(void){ DDRD=0XFF; PORTD=0X00; DDRB=0XFF; PORTB=0X00; RST_CLR; PSB_SET; NOP(); NOP(); 18、RST_SET; lcd_delay(15); send_com(0x30)
5、=(1<6、=(1<7、=(1<8、=(1<9、y(intx) { unsignedinti,j; for(i=0;i10、**********写数据**********************///写数据子程序///************************************************/voidsend_data(unsignedchardata){lcd_delay(156); //延时2msRS_SET;RW_CLR;PORTD=data;EN_SET;EN_CLR;}/*******************************************************************///set_xy:设置LC11、D显示的起始位置 //输入参数:x、y:显示字符串的位置,X:0-7,Y:0-3/*******************************************************************/voidset_xy(unsignedcharxpos,unsignedcharypos){switch(ypos){ case1: send_com(0X8012、xpos);break; case2: send_com(0X9013、xpos);break; case3: send_com(0X8814、xpos);break;15、 case4: send_com(0X9816、xpos);break; default:break;}}/*******************************************************************/// 在指定位置显示字符串 /*******************************************************************/voidprint(unsignedcharx,unsignedchary,char*str){ unsignedchar17、lcd_temp; set_xy(x,y); lcd_temp=*str; while(lcd_temp!=0x00) { send_data(lcd_temp); lcd_temp=*(++str); }}//**********LCD初始化************************voidinit_LCD(void){ DDRD=0XFF; PORTD=0X00; DDRB=0XFF; PORTB=0X00; RST_CLR; PSB_SET; NOP(); NOP(); 18、RST_SET; lcd_delay(15); send_com(0x30)
6、=(1<7、=(1<8、=(1<9、y(intx) { unsignedinti,j; for(i=0;i10、**********写数据**********************///写数据子程序///************************************************/voidsend_data(unsignedchardata){lcd_delay(156); //延时2msRS_SET;RW_CLR;PORTD=data;EN_SET;EN_CLR;}/*******************************************************************///set_xy:设置LC11、D显示的起始位置 //输入参数:x、y:显示字符串的位置,X:0-7,Y:0-3/*******************************************************************/voidset_xy(unsignedcharxpos,unsignedcharypos){switch(ypos){ case1: send_com(0X8012、xpos);break; case2: send_com(0X9013、xpos);break; case3: send_com(0X8814、xpos);break;15、 case4: send_com(0X9816、xpos);break; default:break;}}/*******************************************************************/// 在指定位置显示字符串 /*******************************************************************/voidprint(unsignedcharx,unsignedchary,char*str){ unsignedchar17、lcd_temp; set_xy(x,y); lcd_temp=*str; while(lcd_temp!=0x00) { send_data(lcd_temp); lcd_temp=*(++str); }}//**********LCD初始化************************voidinit_LCD(void){ DDRD=0XFF; PORTD=0X00; DDRB=0XFF; PORTB=0X00; RST_CLR; PSB_SET; NOP(); NOP(); 18、RST_SET; lcd_delay(15); send_com(0x30)
7、=(1<8、=(1<9、y(intx) { unsignedinti,j; for(i=0;i10、**********写数据**********************///写数据子程序///************************************************/voidsend_data(unsignedchardata){lcd_delay(156); //延时2msRS_SET;RW_CLR;PORTD=data;EN_SET;EN_CLR;}/*******************************************************************///set_xy:设置LC11、D显示的起始位置 //输入参数:x、y:显示字符串的位置,X:0-7,Y:0-3/*******************************************************************/voidset_xy(unsignedcharxpos,unsignedcharypos){switch(ypos){ case1: send_com(0X8012、xpos);break; case2: send_com(0X9013、xpos);break; case3: send_com(0X8814、xpos);break;15、 case4: send_com(0X9816、xpos);break; default:break;}}/*******************************************************************/// 在指定位置显示字符串 /*******************************************************************/voidprint(unsignedcharx,unsignedchary,char*str){ unsignedchar17、lcd_temp; set_xy(x,y); lcd_temp=*str; while(lcd_temp!=0x00) { send_data(lcd_temp); lcd_temp=*(++str); }}//**********LCD初始化************************voidinit_LCD(void){ DDRD=0XFF; PORTD=0X00; DDRB=0XFF; PORTB=0X00; RST_CLR; PSB_SET; NOP(); NOP(); 18、RST_SET; lcd_delay(15); send_com(0x30)
8、=(1<9、y(intx) { unsignedinti,j; for(i=0;i10、**********写数据**********************///写数据子程序///************************************************/voidsend_data(unsignedchardata){lcd_delay(156); //延时2msRS_SET;RW_CLR;PORTD=data;EN_SET;EN_CLR;}/*******************************************************************///set_xy:设置LC11、D显示的起始位置 //输入参数:x、y:显示字符串的位置,X:0-7,Y:0-3/*******************************************************************/voidset_xy(unsignedcharxpos,unsignedcharypos){switch(ypos){ case1: send_com(0X8012、xpos);break; case2: send_com(0X9013、xpos);break; case3: send_com(0X8814、xpos);break;15、 case4: send_com(0X9816、xpos);break; default:break;}}/*******************************************************************/// 在指定位置显示字符串 /*******************************************************************/voidprint(unsignedcharx,unsignedchary,char*str){ unsignedchar17、lcd_temp; set_xy(x,y); lcd_temp=*str; while(lcd_temp!=0x00) { send_data(lcd_temp); lcd_temp=*(++str); }}//**********LCD初始化************************voidinit_LCD(void){ DDRD=0XFF; PORTD=0X00; DDRB=0XFF; PORTB=0X00; RST_CLR; PSB_SET; NOP(); NOP(); 18、RST_SET; lcd_delay(15); send_com(0x30)
9、y(intx) { unsignedinti,j; for(i=0;i10、**********写数据**********************///写数据子程序///************************************************/voidsend_data(unsignedchardata){lcd_delay(156); //延时2msRS_SET;RW_CLR;PORTD=data;EN_SET;EN_CLR;}/*******************************************************************///set_xy:设置LC11、D显示的起始位置 //输入参数:x、y:显示字符串的位置,X:0-7,Y:0-3/*******************************************************************/voidset_xy(unsignedcharxpos,unsignedcharypos){switch(ypos){ case1: send_com(0X8012、xpos);break; case2: send_com(0X9013、xpos);break; case3: send_com(0X8814、xpos);break;15、 case4: send_com(0X9816、xpos);break; default:break;}}/*******************************************************************/// 在指定位置显示字符串 /*******************************************************************/voidprint(unsignedcharx,unsignedchary,char*str){ unsignedchar17、lcd_temp; set_xy(x,y); lcd_temp=*str; while(lcd_temp!=0x00) { send_data(lcd_temp); lcd_temp=*(++str); }}//**********LCD初始化************************voidinit_LCD(void){ DDRD=0XFF; PORTD=0X00; DDRB=0XFF; PORTB=0X00; RST_CLR; PSB_SET; NOP(); NOP(); 18、RST_SET; lcd_delay(15); send_com(0x30)
10、**********写数据**********************///写数据子程序///************************************************/voidsend_data(unsignedchardata){lcd_delay(156); //延时2msRS_SET;RW_CLR;PORTD=data;EN_SET;EN_CLR;}/*******************************************************************///set_xy:设置LC
11、D显示的起始位置 //输入参数:x、y:显示字符串的位置,X:0-7,Y:0-3/*******************************************************************/voidset_xy(unsignedcharxpos,unsignedcharypos){switch(ypos){ case1: send_com(0X80
12、xpos);break; case2: send_com(0X90
13、xpos);break; case3: send_com(0X88
14、xpos);break;
15、 case4: send_com(0X98
16、xpos);break; default:break;}}/*******************************************************************/// 在指定位置显示字符串 /*******************************************************************/voidprint(unsignedcharx,unsignedchary,char*str){ unsignedchar
17、lcd_temp; set_xy(x,y); lcd_temp=*str; while(lcd_temp!=0x00) { send_data(lcd_temp); lcd_temp=*(++str); }}//**********LCD初始化************************voidinit_LCD(void){ DDRD=0XFF; PORTD=0X00; DDRB=0XFF; PORTB=0X00; RST_CLR; PSB_SET; NOP(); NOP();
18、RST_SET; lcd_delay(15); send_com(0x30)
此文档下载收益归作者所有