AVR控制矩阵键盘,12864显示简单计算器(国外英文资料).doc
文本预览下载声明
AVR控制矩阵键盘,12864显示简单计算器(国外英文资料)
# include iom16v. H
# include macros. H
# define uint unsigned int
# define uchar unsigned char
# define RS_0 (PORTA = ~ BIT (7))
# define RS_1 (PORTA | = BIT (7))
# define WR_0 (PORTA = ~ BIT (6))
# define WR_1 (PORTA | = BIT (6))
# define EN_0 (PORTA = ~ BIT (5))
# define EN_1 (PORTA | = BIT (5))
Uchar temp, key, num, I, n, s, k = 0, d, w, h, jj, Chen, ch, m;
Uchar x81 d = 0;
Uchar jia [] = +;
Uchar jian [] = -;
Uchar cheng [] = *;
Uchar chu [] = /;
Void delay (uint z)
{
Uint I, j;
For (I = z;)
For (j = 114; j; ; j --);
}
Uchar anjian ()
{
Uchar I;
Uchar num1.
PORTB = 0 xef; / / low in, scan first
DDRB = 0 xf0;
/ / the key is 00000000000
If ((PINB 0x01) = = = 0) / / determines if the PA0 is 0, then s1 is pressed
{
Delay (1); / / delay cancellation
If (PINB 0x01) = = 0) / / there is a press button
{n + +;
Delay (1); / / delay cancellation
Key = 0;
Write_data (0 x30 + key);
While ((! PINA 0x01))
If (s = = 1)
{
H++; }
If (s! = 1)
{
W++; }
/ / return 0;
/ / wait for the button to loosen
}
}
/ / button 1
If ((PINB 0x02) = = 0) / / determines if the PA0 is 0, then s1 is pressed
{
Delay (1); / / delay cancellation
If ((PINB 0x02) = = 0) / / there is a button pressed
{n + +;
Delay (1); / / delay cancellation
Key = 1;
Write_data (0 x30 + key);
((! PINA 0x02)) / / wait for the button to loosen
/ / return 1;
If (s = = 1)
{
H++; }
If (s! = 1)
{
W++; }
}
}
/ / button 2
If ((PINB 0x04) = = 0) / / determines if the PA0 is 0, then s1 is pressed
{
Delay (1); / / delay cancellation
If (PINB 0x04) = = 0) / / there is a press button
{n + +;
Delay (1); / / delay cancellation
Key = 2;
Write_data (0 x30 + key);
While ((.pina 0X04)) / / wait for the button to loosen
/ / return 2;
If (s = = 1)
{
H++; }
If (s! = 1)
{w++; }
}
}
/ / button 3
If ((PINB 0x08) = = = 0) / / determines if the PA0 is 0, then s1 is pressed
{
Delay (1); / / delay cancellation
If ((PINB 0x08) = = 0) / / there is a press button
{n + +;
Delay (1); / / delay cancellation
Key
显示全部