pic.jpg (184.03 KB, 下載次數: 59)
下載附件
2019-12-31 21:08 上傳
單片機源程序如下:
- #include<reg51.h>
- #define uint unsigned int
- #define uchar unsigned char
- uchar keycode,DDram_value=0xc0;
- sbit rs=P2^0;
- sbit rw=P2^1;
- sbit e =P2^2;
- sbit speaker=P2^3;
- uchar code table[]={0x30,0x31,0x32,0x33,0x34,
- 0x35,0x36,0x37,0x38,0x39,0x20};
- uchar code table_designer[]=" HIT ZYG Design";
- void lcd_delay();
- void delay(uint n);
- void lcd_init(void);
- void lcd_busy(void);
- void lcd_wr_con(uchar c);
- void lcd_wr_data(uchar d);
- uchar checkkey(void);
- uchar keyscan(void);
- void main()
- {
- uchar num;
- lcd_init();
- lcd_wr_con(0x80);
- for(num=0;num<=14;num++)
- {
- lcd_wr_data(table_designer[num]);
- }
- while(1)
- {
- keycode=keyscan();
- if((keycode>=0)&&(keycode<=9))
- {
- lcd_wr_con(0x06);
- lcd_wr_con(DDram_value);
- lcd_wr_data(table[keycode]);
- DDram_value++;
- }
- else if(keycode==0x0a)
- {
- lcd_wr_con(0x04);
- DDram_value--;
- if(DDram_value<=0xc0)
- {
- DDram_value=0xc0;
- }
- else if(DDram_value>=0xcf)
- {
- DDram_value=0xcf;
- }
- lcd_wr_con(DDram_value);
- lcd_wr_data(table[10]);
- }
- else if(keycode==0x0b)
- {
- uchar i,j;
- j=0xc0;
- for(i=0;i<=15;i++)
- {
- lcd_wr_con(j);
- lcd_wr_data(table[10]);
- j++;
- }
- DDram_value=0xc0;
- }
- }
- }
- //液晶工作時的延時函數
- void lcd_delay()
- {
- uchar y;
- for(y=0;y<0xff;y++)
- {
- ;
- }
- }
- //液晶初始化
- void lcd_init(void)
- {
- lcd_wr_con(0x01);
- lcd_wr_con(0x38);
- lcd_wr_con(0x0c);
- lcd_wr_con(0x06);
- }
- // 判斷液晶忙或閑的程序
- void lcd_busy(void)
- {
- P0=0xff;
- rs=0;
- rw=1;
- e=1;
- e=0;
- while(P0&0x80)
- {
- e=0;
- e=1;
- }
- lcd_delay();
- }
- //向液晶控制口輸入命令的調用函數
- void lcd_wr_con(uchar c)
- {
- lcd_busy();
- e=0;
- rs=0;
- rw=0;
- e=1;
- P0=c;
- e=0;
- lcd_delay();
- }
- //向液晶寫數據的調用函數
- void lcd_wr_data(uchar d)
- {
- lcd_busy();
- e=0;
- rs=1;
- rw=0;
- e=1;
- P0=d;
- e=0;
- lcd_delay();
- }
- void delay(uint n)
- {
- uchar i;
- uint j;
- for(i=50;i>0;i--)
- for(j=n;j>0;j--);
- }
- //檢測鍵有無按下函數
- uchar checkkey(void)
- {
- uchar temp;
- P1=0xf0;
- temp=P1;
- temp=temp&0xf0;
- if(temp==0xf0)
- {
- return(0);
- }
- else
- {
- return(1);
- }
- }
- //鍵盤掃描函數,返回所按下的鍵盤號
- uchar keyscan(void)
- {
- uchar hanghao,liehao,keyvalue,buff;
- if(checkkey()==0)
- {
- return(0xff);//無鍵按下,返回0xff
- }
- else
- {
- uchar sound;
- for(sound=50;sound>0;sound--)
- {
- speaker=0;
- delay(1);
- speaker=1;
- delay(1);
- }
- P1=0x0f;
- buff=P1;
- if(buff==0x0e)
- {
- hanghao=0;
- }
- else if(buff==0x0d)
- {
- hanghao=3;
- }
- else if(buff==0x0b)
- {
- hanghao=6;
- }
- else if(buff==0x07)
- {
- hanghao=9;
- }
- P1=0xf0;
- buff=P1;
- if(buff==0xe0)
- {
- liehao=2;
- }
- else if(buff==0xd0)
- {
- liehao=1;
- }
- else if(buff==0xb0)
- {
- liehao=0;
- }
- keyvalue=hanghao+liehao;
- while(P1!=0xf0);
- return(keyvalue);
- }
- }
復制代碼 全部資料51hei下載地址:
電話撥盤模擬.zip
(58.61 KB, 下載次數: 91)
2019-12-31 21:09 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|