|
- #include <reg52.h>
- #include<stdio.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar lcd_x,lcd_y,data_byte=0,count;
- uint TH_data,TL_data,RH_data,RL_data,CK_data;
- uint TH_temp,TL_temp,RH_temp,RL_temp,CK_temp;
- uchar num,ldata=0,lold=1;
- sbit RS = P2^0;//并行指令,數(shù)據(jù)選擇信號
- sbit RW = P2^1;//讀寫信號
- sbit EN = P2^2;//并行使能信號
- sbit PSB = P2^3;//并串口選擇信號
- sbit RST = P2^5;//復(fù)位信號
- sbit key1 = P2^6; //定義按鍵1
- sbit key2 = P2^7; //定義按鍵2
- void delay(uint a);//延時函數(shù)
- void delay0(unsigned int time);//延時函數(shù)
- void LCD_init();//LCD初始化程序
- void write_cmd(uchar cmd);//寫指令
- void write_data(uchar dat);//寫數(shù)據(jù)
- bit check_busy();//檢測LCD忙信號
- void delay1();//10us延時
- void lcd_dis_code(uint cmd_addr,uchar num,uchar dis[]);//顯示函數(shù)
- uchar code lcd0[]={" 科協(xié)菜單"};
- uchar code lcd1[]={"1:攝像頭"};
- uchar code lcd2[]={"2:傳感器"};
- uchar code lcd3[]={"3:液晶顯示"};
- uchar code lcd4[]={"4:單片機(jī)"};
- uchar code lcd5[]={"5:紅外傳感器"};
- uchar code lcd6[]={"6:MAX232"};
- uchar code lcd7[]={"7:晶振"};
- uchar code lcd8[]={"8:單片機(jī)"};
- uchar code lcd9[]={"9:紅外傳感器"};
- uchar code lcd10[]={"10:MAX232"};
- uchar code lcd11[]={"11:晶振"};
- void main()
- {
- LCD_init();
- while(1)
- { //循環(huán)掃描按鍵及顯示
- if(key1==0)
- { //按鍵1按下
- delay(5);
- if(key1==0)
- { //是否是剛按下,是執(zhí)行,否則不執(zhí)行
- ldata=ldata+1; //顯示數(shù)據(jù)加1
- //lold=0; //處理完,將按鍵視為按下
- }
- }
- else if(key2==0)
- { //按鍵2按下
- delay(5);
- if(key2==0){ //是否是剛按下,是執(zhí)行,否則不執(zhí)行
- ldata--; //顯示數(shù)據(jù)減1
- // lold=0; ////處理完,將按鍵視為按下
- }
- }
- switch(ldata)
- {
-
- case 0:{
- lcd_dis_code(0x80,10,lcd0);
- lcd_dis_code(0x90,8,lcd1);
- lcd_dis_code(0x88,8,lcd2);
- lcd_dis_code(0x98,12,lcd3);
- break;
- }
- case 1:{
- lcd_dis_code(0x80,8,lcd4);
- lcd_dis_code(0x90,12,lcd5);
- lcd_dis_code(0x88,8,lcd6);
- lcd_dis_code(0x98,5,lcd7);
- break;
- }
- case 2:{
- lcd_dis_code(0x80,8,lcd8);
- lcd_dis_code(0x90,12,lcd9);
- lcd_dis_code(0x88,9,lcd10);
- lcd_dis_code(0x98,12,lcd11);
- break;
- }
- }
-
-
- }
- }
- void delay1()//延時10us
- {
- unsigned char i;
- for(i=0; i<3; i++);
- }
- /**********************12864模塊程序**********************/
-
- void lcd_dis_code(uint cmd_addr,uchar num,uchar dis[])
- {
- uint i;
- write_cmd(cmd_addr);
- for(i=0; i<num; i++)
- write_data(dis[i]);
- }
- void LCD_init()
- {
- PSB = 1;
- RST = 0;
- delay(5);
- RST = 1;
- //write_cmd(0x34);//擴(kuò)充指令
- delay(5);
- write_cmd(0x30);//基本指令
- //delay(5);
- //write_cmd(0x0f);//顯示開關(guān)光標(biāo)
- delay(5);
- write_cmd(0x0c);
- delay(10);
- write_cmd(0x01);//清屏
- delay(5);
- write_cmd(0x06);
- delay(20);
- }
- bit check_busy()
- {
- bit temp;
- RS = 0;
- RW = 1;
- EN = 1;
- delay(5);
- temp = (bit)(P0&0x80); //按位與操作
- EN = 0;
- return (temp);
- }
- void write_cmd(uchar cmd)
- {
- while(check_busy());
- RS = 0;
- RW = 0;
- EN = 0;
- delay(5);
- P0 = cmd;
- delay(5);
- EN = 1;
- delay(5);
- EN = 0;
- }
- void write_data(uchar dat)
- {
- while(check_busy());
- RS = 1;
- RW = 0;
- EN = 0;
- P0 = dat;
- delay(5);
- EN = 1;
- delay(5);
- EN = 0;
- }
- void delay(uint a)
- {
- uchar i;
- while(a--)
- {
- for(i=0; i<113; i++);
- }
- }
- void delay0(unsigned int time)
- {
- while(time--);
- }
復(fù)制代碼
|
評分
-
查看全部評分
|