標(biāo)題: 單片機(jī)和8255擴(kuò)展16矩形鍵盤仿真與源程序 [打印本頁]

作者: Pulstar    時(shí)間: 2018-1-2 16:36
標(biāo)題: 單片機(jī)和8255擴(kuò)展16矩形鍵盤仿真與源程序
這是自己最近研究的單片機(jī)和8255擴(kuò)展的連接方法
組成了一個(gè)16個(gè)按鍵的矩形鍵盤
用LCD來顯示按鍵的數(shù)字和一些小小的功能
新手初來乍到,不足之處還請各位多多指點(diǎn)。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include <REGX52.H>
  2. #include<intrins.h>
  3. #include<absacc.h>
  4. #define uchar unsigned char
  5. #define uint  unsigned int
  6. //ABC口,控制定義
  7. #define PA  XBYTE[0X7CFF]
  8. #define PB  XBYTE[0X7DFF]  
  9. #define PC  XBYTE[0X7EFF]  
  10. #define COM XBYTE[0X7FFF]
  11. //定義鍵盤
  12. uchar code JP[]={       
  13.                                         0xe7,0xeb,0xed,0xee,
  14.                                         0xd7,0xdb,0xdd,0xde,
  15.                                         0xb7,0xbb,0xbd,0xbe,
  16.                                         0x77,0x7b,0x7d,0x7e,
  17.                 };
  18. uchar code lcd[]={        '0','1','2','3',
  19.                                         '4','5','6','7',
  20.                                         '8','9', '+','-',
  21.                                         '*','/', '=',
  22.                                   
  23.                                 };
  24. //定義控制引腳
  25. sbit RS=P3^0;
  26. sbit RW=P3^1;
  27. sbit EN=P3^2;
  28. sbit WR1=P3^6;
  29. sbit RD1=P3^7;
  30. //延時(shí)
  31. void DelayMS(uint ms)
  32. {
  33.         uchar i;
  34.         while(ms--)
  35.         {
  36.                 for(i=0;i<120;i++);
  37.         }
  38. }
  39. //1602寫指令
  40. void Write_LCD_Command(uchar cmd)
  41. {
  42.          RS=0;RW=0;EN=0;
  43.          P1=cmd;
  44.          DelayMS(5);
  45.          EN=1;
  46.          DelayMS(5);
  47.          EN=0;
  48. }
  49. //1602寫數(shù)據(jù)
  50. void Write_LCD_data(uchar dat)
  51. {
  52.         RS=1;RW=0;EN=0;
  53.         P1=dat;
  54.         DelayMS(5);
  55.         EN=1;
  56.         DelayMS(5);
  57.         EN=0;
  58. }
  59. //1602讀數(shù)據(jù)
  60. void read(uchar rea)
  61. {
  62.         RS=1;RW=1;EN=1;
  63.         P1=rea;
  64.         DelayMS(5);
  65.         EN=0;
  66.         DelayMS(5);
  67.         EN=1;       
  68. }
  69. //1602初始化
  70. void Ini_LCD()
  71. {
  72.         Write_LCD_Command(0x0F);DelayMS(5);//設(shè)置功能
  73.         Write_LCD_Command(0x38);DelayMS(5);
  74.         Write_LCD_Command(0x06);DelayMS(5);//AC+1
  75.         Write_LCD_Command(0x01);DelayMS(5);//清屏
  76.         Write_LCD_Command(0x0c);DelayMS(5);//顯示功能               
  77. }
  78. //1602顯示位置
  79. void WAdd( uchar x,uchar y)
  80. {
  81.         Write_LCD_Command(0x80+x);
  82.         Write_LCD_data(y);       
  83. }
  84. //主函數(shù)
  85. void main()
  86. {

  87.         COM=0X90;
  88.         Ini_LCD();
  89.         while(1)
  90.         {       
  91.          uchar key,temp,num,a;
  92.                 PC=0X0F;
  93.                 if(PC!=0X0F)
  94.                 {
  95.                         DelayMS(10);
  96.                         if(PC!=0X0F)
  97.                         {
  98.                                 temp=PC;
  99.                                 PC=0xf0;
  100.                                 key=temp|PC;
  101.                                 if(key==0x7e)
  102.                                 {
  103.                                                 Write_LCD_Command(0x01);DelayMS(5);//清屏       
  104. ……………………

  105. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
8255 16按鍵.rar (61.55 KB, 下載次數(shù): 281)



作者: gemxie    時(shí)間: 2018-3-16 22:13
非常需要這個(gè)程序啊
作者: gemxie    時(shí)間: 2018-3-16 22:14
非常需要這個(gè)程序。。。!
作者: gemxie    時(shí)間: 2018-3-16 22:19
我也不會(huì)這個(gè)呢
作者: gemxie    時(shí)間: 2018-3-19 10:02
仿真可以,但是用到實(shí)際就不可以的
作者: gemxie    時(shí)間: 2018-3-19 10:03
我試過了,下載單片機(jī)試驗(yàn)箱就不可以
作者: gemxie    時(shí)間: 2018-11-15 14:50
謝謝分享了,樓主,學(xué)習(xí)下
作者: gemxie    時(shí)間: 2018-11-15 14:50
剛好不懂,可以下載學(xué)習(xí)學(xué)習(xí)先
作者: L_uan    時(shí)間: 2020-3-29 20:44
謝謝!剛好需要
作者: POI520    時(shí)間: 2020-5-4 17:41
謝謝分享

作者: 遠(yuǎn)小劉    時(shí)間: 2020-12-23 19:57
可以編譯和仿真,樓主應(yīng)該是準(zhǔn)備寫個(gè)計(jì)算器吧,后續(xù)還有待補(bǔ)全,等于后面的東東還沒有寫
作者: 桀啊桀    時(shí)間: 2021-5-24 12:22
請問樓主軟件是用的什么軟件寫的

作者: lvgqislucky    時(shí)間: 2022-12-17 20:44
怎么讓最后一個(gè)鍵顯示f




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1