利用反转法进行矩阵式按键及键值转换详解.docx

利用反转法进行矩阵式按键及键值转换详解.docx

ID:59224198

大小:11.61 KB

页数:5页

时间:2020-09-09

利用反转法进行矩阵式按键及键值转换详解.docx_第1页
利用反转法进行矩阵式按键及键值转换详解.docx_第2页
利用反转法进行矩阵式按键及键值转换详解.docx_第3页
利用反转法进行矩阵式按键及键值转换详解.docx_第4页
利用反转法进行矩阵式按键及键值转换详解.docx_第5页
资源描述:

《利用反转法进行矩阵式按键及键值转换详解.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、利用反转法进行矩阵式按键扫描及键值转换详解/******************************************************************************///工程名:键盘实验*//工程描述:在实验板上连接小键盘接口的连线,采用反转法(查询方式)识别小键盘上按下的各键,//并将其对应的按键状态用八个发光二极管来显示,并在超级终端上显示。//注意:本程序实现的硬件平台为MC9S12XDP512应用开发平台。应用开发平台使用16MHZ的有源晶振*//说明:程序使用的片上系统时钟频

2、率,总线时钟由锁相环产生,总线时钟为片上系统时钟的//一半,其换算的公式为:fpllclk=2*fosclk*(SYNR+1)/(REFDV+1)//其中fosclk为振荡器频率,SYNR为时钟合成寄存器的值,REFDV为时钟分频寄存器的值/******************************************************************************/#include/*commondefinesandmacros*/#include

3、2.h>/*derivativeinformation*/#pragmaLINK_INFODERIVATIVE"mc9s12xdp512"voidSCI_Init(void);voiddely(void);unsignedcharKeyDecoe(unsignedchari);voidput_char(unsignedcharc);voidMCUInit(void){asmseiSYNR=0x02;//时钟合成寄存器REFDV=0x01;//时钟分频寄存器//锁相环产生的时钟频率f=2*foscclk*(SYNR+1)/

4、(REFDV+1)//对于S12XDP51216MHz外部晶体振荡器,总线时钟为24MHz//片内系统时钟为48MHz/*等待锁相环频率锁定*/while((CRGFLG&0x08)!=0x08);CLKSEL

5、=0x80;//时钟选择寄存器asmcli}voidmain(void){unsignedcharx,y,k;unsignedcharKB_Value;MCUInit();//初始化系统时钟SCI_Init();DDRB=0XFF;PORTB=0XFF;for(;;){DDRA=0xff;//将A口设置为输出状态

6、PORTA=0x0f;//PA7..PA4输出0,PA3...PA0输出1//这时按键的电平状态//

7、

8、

9、

10、//

11、1

12、2

13、3

14、4//0PA4-----

15、-----

16、-----

17、-----

18、----//

19、5

20、6

21、7

22、8//0PA5-----

23、-----

24、-----

25、-----

26、----//

27、9

28、10

29、11

30、12//0PA6-----

31、-----

32、-----

33、-----

34、----//

35、13

36、14

37、15

38、16//0PA7-----

39、-----

40、-----

41、-----

42、----//PA0PA1PA2PA3//1111DDRA=0

43、X0f;//PA7..PA4设置为输入,PA3...PA0设置为输出asmNOP//空指令延时用asmNOP//空指令延时用x=PORTA;//取按键值(行值)//例如://下图ABCD任意位置有按下下的按键,也就是PA4和PA0或PA1或PA2或PA3接一块了,//又因为PA7...PA4为输入,那么,这时PA0或PA1或PA2或PA3输出的1就被PA4读入,//也就是说单片机能够判断出:PA4这一条横线上有按键按下;//

44、

45、

46、

47、//

48、1

49、2

50、3

51、4//0PA4-----A-----B-----C-----D----/

52、/

53、5

54、6

55、7

56、8//0PA5-----

57、-----

58、-----

59、-----

60、----//

61、9

62、10

63、11

64、12//0PA6-----

65、-----

66、-----

67、-----

68、----//

69、13

70、14

71、15

72、16//0PA7-----

73、-----

74、-----

75、-----

76、----//PA0PA1PA2PA3//1111//这样检测到PA4有按键按下了,即PA4=1;PA5=0;PA6=0;PA7=0;x&=0Xf0;//判断取的按键是否取到值(即是否有键按下)//这时x=0x10;(即二进制的00010000)if(x)//

77、如果行上检测到有按键按下了,再进去检测按下的按键在哪一列上{dely();//经过一个小延时,再进行检测DDRA=0xff;//将A口设置为输出状态PORTA=0Xf0;//PA7..PA4输出1,PA3...PA0输出0//这时按键的电平状态//

78、

79、

80、

81、//

82、1

83、2

84、3

85、4//1PA4-----

86、-----

87、---

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。