1 рджрд┐рди рдореЗрдВ рд╕рд░рд▓ рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк

рдирдорд╕реНрдХрд╛рд░!
рдЦреИрд░, рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк (рдФрд░ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреИрдорд░реЗ рдХреЗ рд▓рд┐рдП) рдкреИрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдХрдбрд╝реА рд▓рдбрд╝рд╛рдИ рдордд рдХрд░реЛред
рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐ рд╕реНрдХреНрд░реАрди 500 рд░реВрдмрд▓ рдФрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг 8-рдмрд┐рдЯ рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдереЗред

рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╡рд┐рд╡рд░рдгред


рдпрд╣ рд╕рдм рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖ рдХрд┐ рдореЗрд░реЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдореБрдЭреЗ рд╡рд┐рдирд╕реНрдЯрд╛рд░ рд╕реЗ рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХ рдПрд▓рд╕реАрдбреА рд╕реНрдХреНрд░реАрди WG12864B рдорд┐рд▓реАред 128x64 рдкрд┐рдХреНрд╕реЗрд▓, рдореЛрдиреЛрдХреНрд░реЛрдоред рдореИрдВрдиреЗ рдЙрдирдХреЗ рд╕рд╛рде рдХрднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдпрд╣ рд╕рдордЭрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ (рдореБрдЭреЗ рдбреЗрдЯрд╛рд╢реАрдЯреНрд╕ рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИ, рдЦрд╛рд╕рдХрд░ 1400 рдкреГрд╖реНрдареЛрдВ рдкрд░ рдХреЛрд░реНрдЯреЗрдХреНрд╕ рдПрдо 4 рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдкрд░)ред

рдкреНрд░рдмрдВрдзрди рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛ рдЧрдпрд╛, рдореБрдЭреЗ рдЪрд░рд┐рддреНрд░ рдПрд▓рд╕реАрдбреА рд╕реНрдХреНрд░реАрди рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдЖрд╕рд╛рди рд▓рдЧрд╛ред рдореБрдЦреНрдп рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрдард┐рдирд╛рдИ рдХреЗрд╡рд▓ рдЙрд╕ рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реБрдИ рдЬреЛ рд╕реНрдХреНрд░реАрди 2 рд╕реНрд╡рддрдВрддреНрд░ 64x64 рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдирд┐рдпрдВрддреНрд░рдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрд╛; рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд▓реЗрдЦ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВред

рдпрд╣рд╛рдБ рдмрддрдЦред рдореИрдВ рдПрдХ рддрд╕реНрд╡реАрд░ рд▓рд╛рдпрд╛, рдореБрдЭреЗ рдЦреБрд╢реА рд╣реБрдИ, рдореИрдВрдиреЗ рдЕрдкрдиреА рдорд╛рдБ рдХреЛ рджрд┐рдЦрд╛рдпрд╛ред рдЖрдЧреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдореИрдВ рд╕реНрдХреНрд░реАрди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реВрдВ, рдлрд┐рд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд┐рддреНрд░ рдмрдирд╛рдирд╛ рдЙрдмрд╛рдК рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдпрд╣ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╢рд╛рдпрдж рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдирд╣реАрдВ рд░рд╣реЗрдЧрд╛ред рдФрд░ рдлрд┐рд░ рдореБрдЭреЗ рддреБрд░рдВрдд рдЗрд╕ рд╕реНрдХреНрд░реАрди рдХрд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╛рдж рдЖрдпрд╛, "рдбрд┐рд╕реНрдкреНрд▓реЗ рд╕реНрдЯрд╛рд░реНрдЯ рд▓рд╛рдЗрдиред" рдпрд╣ рд╕реЗрд╡рд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдореГрддрд┐ рдХреЗ рд╡рд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдмрд┐рдВрджреБ (0,0) рдкрд░ рд╕реНрдореГрддрд┐ рдореЗрдВ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╢реБрд░реБрдЖрдд рд▓рд╛рдЗрди рдмрдирд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 5, рддреЛ рдмрд┐рдВрджреБ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ 5 рд▓рд╛рдЗрдиреЛрдВ рдкрд░ рд╕реНрдХреНрд░реАрди рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред рдпрд╣ рдореБрдЭреЗ рдЫрд╡рд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдмрдЬрд╛рдп рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗред

рдореИрдВрдиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВ рд╕рд┐рдЧреНрдирд▓ рдХреА рдЫрд╡рд┐ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реАрди рдХреЗ рдПрдХ рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджреВрдВрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдПрдЧрд╛: рд╡реЛрд▓реНрдЯреЗрдЬ рдФрд░ рд╡рд╣ рд╕рдмред
рддрд░реНрдХ рд╕рд░рд▓ рд╣реИред рд╣рдо рд▓рд╛рдЗрди рдХреЛ рдорд┐рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ (рдкреБрд░рд╛рдирд╛ рдмрд┐рдВрджреБ рдЬреЛ 64 рд╕реЗ рдЕрдзрд┐рдХ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╕рдордп рджрд╛рдИрдВ рдУрд░ рдмрд╛рд╣рд░ рдЖрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ), рд╡реЛрд▓реНрдЯреЗрдЬ рдХреЗ рдмрд░рд╛рдмрд░ рдПрдХ рдмрд┐рдВрджреБ рдХрд╛ рдирд┐рд░реНрдорд╛рдг, рдЫрд╡рд┐ 1 рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред рдкрд╣рд▓реЗ рддреЛ рдореИрдВрдиреЗ рдмреНрд░реЗрд╕реЗрдирд╣реИрдо рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реЗ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕реЗ 1 рдкрд┐рдХреНрд╕реЗрд▓ рд╕реЗ рдмрджрд▓ рджреЗрдВрдЧреЗ рдФрд░ рд▓рд╛рдЗрдиреЗрдВ рд▓рдВрдмрд╡рдд рд╣реЛрдВрдЧреАред

рдЖрдпрд╛рдо рдорд╛рди рд╕реВрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
amp = 63- (ADC рд╕реЗ 8-рдмрд┐рдЯ рдорд╛рди) 2 рдмрд┐рдЯреНрд╕ рдХреЛ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛;

рдореИрдВрдиреЗ рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рдореЗрдВ рдпрд╣ рд╕рдм рдХрд┐рдпрд╛, рдЗрд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛, рдФрд░ ... рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрдЦрд╛ред рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рдЫрд╡рд┐ рдХреЛ 100ms рдХреА рджреЗрд░реА рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред рдЬрдм рджреЗрд░реА рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЫрд╡рд┐ рдЕрдкреНрд░рднреЗрджреНрдп рд╣реЛ рдЬрд╛рддреА рд╣реИред рддрдм рдореИрдВ рджреБрдЦреА рдерд╛, рдХреНрдпреЛрдВрдХрд┐ 10 рд╣рд░реНрдЯреНрдЬ рд╕реЗ рдКрдкрд░ рдХреА рдЖрд╡реГрддреНрддрд┐ рд╡рд╛рд▓реЗ рд╕рдВрдХреЗрдд рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдкреНрд░рднреЗрджреНрдп рдмрди рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм рд╕реНрдХреНрд░реАрди рд╢рд┐рдлреНрдЯ рд╡рд┐рдзрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реИред рдпрджрд┐ рдЖрдк рд╕реНрдХреНрд░реАрди рдХреЛ рдорд┐рдЯрд╛рддреЗ рд╣реИрдВ рдФрд░ рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рдмрдЬрд╛рдп рдмреНрд▓реЙрдХ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд┐рдпрд╛ рдерд╛, рддреЛ рдЫрд╡рд┐ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рдХрд╛рдлреА рд╕реБрдзрд╛рд░ рд╣реЛрдЧрд╛ рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рддреЗрдЬ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд┐рдЪреНрдЫрд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рддреНрд░ рдХреЗ рджреМрд░рд╛рдиред рдФрд░ рдореИрдВрдиреЗ рд╕рдм рдХреБрдЫ рд╡реИрд╕реЗ рд╣реА рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред

рд╕реНрдХреНрд░реАрди рдХреЗ рдиреАрдЪреЗ, рдореИрдВрдиреЗ рдПрдХ рд╕рдордпрд░реЗрдЦрд╛ рдЦреАрдВрдЪреА, рдПрдХ рд▓рд╛рдЗрди рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдПред рд╡реЛрд▓реНрдЯреЗрдЬ рд╕реНрдХреЗрд▓ рдХреЛ рдирд┐рдЪрд▓реЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдЪрд▓рддреА рд╕реНрдХреНрд░реАрди рдкрд░ рдЧреИрд░-рдЪрд▓рддреА рд╕реНрдХреЗрд▓ рдмрдирд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдЦрд╛рд╕рдХрд░ рддрд╛рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХреЗред

рдпрд╣рд╛рдБ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрд┐рддреНрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
рдЫрд╡рд┐

рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 3 рд╡реЛрд▓реНрдЯ рд╣реИрдВред рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рдЗрди рдиреЗ DAC MK Cortex M4 рдкрд░ 3 рд╕реЗрдХрдВрдб рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ред рдпрд╣ рд╕реНрдХреНрд░реАрди рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЪрд░рдо рдкрд░ рдХреБрдЫ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдЧрд┐рдирд╛ред

рдХрдпрд╛рдорддред рдФрд░ рдЬрдЧрд╣ рдЕрднреА рднреА рдмрдиреА рд╣реБрдИ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдХреБрдЫ рдФрд░ рдбрд┐рдЬрд┐рдЯрд▓ рдЪреИрдирд▓ рдЬреЛрдбрд╝реЗ рд╣реИрдВред рд╡реЗ рдПрдирд╛рд▓реЙрдЧ рдПрдХ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЗрдВрдЯрд░рдкреНрдЯ рдФрд░ рдереЛрдбрд╝рд╛ рддреЗрдЬ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╕рд┐рджреНрдзрд╛рдВрдд: рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ, рдорд┐рдЯрд╛рдпрд╛, рдлрд┐рд░ рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ред рдпрд╣рд╛рдВ рдЖрдк 50 рд╣рд░реНрдЯреНрдЬ рд╕реЗ рдХрдо рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдбрд┐рдЬрд┐рдЯрд▓ рд╕рд┐рдЧреНрдирд▓ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдзреАрдореА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдмрд╣реБрдд рдзреАрдореА :)

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЙрд╕рдиреЗ рд╕рдм рдХреБрдЫ рдмрддрд╛рдпрд╛ред рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрдЭрд╛рд╡ рдФрд░ рд╕рдореАрдХреНрд╖рд╛ред рдмрд╕ рдПрдХ рдмреВрде рдирд╕реНрд▓ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдореБрдЭреЗ рдПрдХ рдЖрд╕реНрдЯрд╕реАрд▓рд╕реНрдХрдк рдЦрд░реАрджрдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╣реИ)
рд╕рднреА рдХреЛ рдЦреБрд╢реАред

UPDATE1: рдЖрд▓реЛрдЪрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж, рд╕рддреНрд░ рдХреЗ рдмрд╛рдж рдореИрдВ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдФрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓реЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

UPDATE2: рдпрд╣рд╛рдВ ATMega168 рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд▓рд┐рдП Atmel рд╕реНрдЯреВрдбрд┐рдпреЛ рдХрд╛ рдХреЛрдб рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЧреНрд░рд╛рдлрд┐рдХ рд╕реНрдХреНрд░реАрди, рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЯрд╛рдЗрдорд░ рдЗрдВрдЯрд░рдкреНрдЯ рдФрд░ рдбрд┐рдЬрд┐рдЯрд▓ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рдХреЛрдб рджреЗрдЦреЗрдВ
#include <avr/io.h> #define F_CPU 8000000 #include <util/delay.h> #include <avr/interrupt.h> #define ClearBit(reg, bit) reg &= (~(1<<(bit))) #define SetBit(reg, bit) reg |= (1<<(bit)) #define nCS1 0 #define nCS2 1 #define NRST 4 #define DI 5 #define E 4 #define RW 5 #define clrcs PORTD|=(1<<nCS1)|(1<<nCS2) #define setcs1 PORTD&=~(1<<nCS1) #define setcs2 PORTD&=~(1<<nCS2) #define sete PORTD|=(1<<E) #define clre PORTD&=~(1<<E) #define setdi PORTC|=(1<<DI) #define clrdi PORTC&=~(1<<DI) #define setrst PORTC&=~(1<<NRST) #define clrrst PORTC|=(1<<NRST) #define setrw PORTD|=(1<<RW) #define clrrw PORTD&=~(1<<RW) void sendbyte(char b) { PORTB=b; sete; _delay_us(1); clre; _delay_us(5); } void SetXY(int x,int y,int c) { char h=PIND; if (c&0x1) setcs1; if (c&0x2) setcs2; clrdi; sendbyte(0xB8+x); sendbyte(0X40+y); PORTD=h; } void initglcd() { _delay_ms(50); clrdi; clrcs; setrst; _delay_us(10); clrrst; setcs1; setcs2; sendbyte(0xC0); sendbyte(0x3F); SetXY(0,0,3); } void sendi(char b,char c) { if (c&0x1) setcs1; if (c&0x2) setcs2; setdi; sendbyte(b); clrdi; clrcs; } unsigned char readbyte(char c) { setdi; setrw; if (c&0x1) setcs1; if (c&0x2) setcs2; DDRB=0x00; _delay_us(1); sete; _delay_us(1); clre; _delay_us(5); sete; _delay_us(1); unsigned char x=PINB; clre; DDRB=0xff; clrcs; clrdi; clrrw; return x; } void clearglcd(char c) { for(int j=0; j<=7;j++){ SetXY(j,0,3); for(int i=0;i<=63;i++)sendi(0x00,c); } SetXY(0,0,3); } void fillglcd(char c) { for(int j=0; j<=7;j++){ SetXY(j,0,3); for(int i=0;i<=63;i++)sendi(0xff,c); } SetXY(0,0,3); } void putpixel(char x, char y) { cli(); if (x<64) { SetXY(y/8,x,1); unsigned char t=readbyte(1); SetXY(y/8,x,1); sendi(t|(1<<(y%8)),1); } else { SetXY(y/8,x-64,2); unsigned char t=readbyte(2); SetXY(y/8,x-64,2); sendi(t|(1<<(y%8)),2); } sei(); } void clearpixel(char x, char y) { cli(); if (x<64) { SetXY(y/8,x,1); unsigned char t=readbyte(1); SetXY(y/8,x,1); sendi(t&(~(1<<(y%8))),1); } else { SetXY(y/8,x-64,2); unsigned char t=readbyte(2); SetXY(y/8,x-64,2); sendi(t&~((1<<(y%8))),2); } sei(); } int ff=63; int hh=0; int asd=0; int asd1=0; int pred=0; int pred1=0; int oldd=63; int oldd1=63; ISR(TIMER0_OVF_vect) { hh++; if (hh==2) { hh=0; if (ff==0) { ff=63; oldd=63; oldd1=63; for(int k=0;k<=63;k++) clearpixel(100,k); for(int k=0;k<=63;k++) clearpixel(101,k); for(int k=0;k<=63;k++) clearpixel(102,k); for(int k=0;k<=63;k++) clearpixel(103,k); for(int k=0;k<=63;k++) clearpixel(104,k); for(int k=0;k<=63;k++) clearpixel(105,k); for(int k=0;k<=63;k++) clearpixel(115,k); for(int k=0;k<=63;k++) clearpixel(116,k); for(int k=0;k<=63;k++) clearpixel(117,k); for(int k=0;k<=63;k++) clearpixel(118,k); for(int k=0;k<=63;k++) clearpixel(119,k); for(int k=0;k<=63;k++) clearpixel(120,k); } else ff--; if (asd==1) { if (pred==0) { if (ff<oldd)for(int k=oldd;k>=ff;k--) putpixel(100,k); putpixel(101,ff); putpixel(102,ff); putpixel(103,ff); putpixel(104,ff); putpixel(105,ff); pred=asd; oldd=ff; } } else { if (pred==1) { if (ff<oldd) for(int k=oldd;k>=ff;k--) putpixel(105,k); putpixel(101,ff); putpixel(102,ff); putpixel(103,ff); putpixel(104,ff); putpixel(100,ff); pred=asd; oldd=ff; } } if (asd1==1) { if (pred1==0) { if (ff<oldd1)for(int k=oldd1;k>=ff;k--) putpixel(115,k); putpixel(116,ff); putpixel(117,ff); putpixel(118,ff); putpixel(119,ff); putpixel(120,ff); pred1=asd1; oldd1=ff; } } else { if (pred1==1) { if (ff<oldd1) for(int k=oldd1;k>=ff;k--) putpixel(120,k); putpixel(116,ff); putpixel(117,ff); putpixel(118,ff); putpixel(119,ff); putpixel(115,ff); pred1=asd1; oldd1=ff; } } } } ISR(INT0_vect) { if (PIND&0x04) { asd=1; } else { asd=0; } } ISR(INT1_vect) { if (PIND&0x08) { asd1=1; } else { asd1=0; } } int main(void) { DDRC=0x3C; DDRD=0x33; DDRB=0xff; PORTD=0x00; initglcd(); clearglcd(1); for (int j=0;j<=127;j++) for(int i=0;i<=63;i++) putpixel(j,i); for (int j=0;j<=127;j++) for(int i=0;i<=63;i++) clearpixel(j,i); ADCSRA|=(1<<ADEN)|(0<<ADIE)|(1<<ADSC)|(1<<ADATE)|(1<<ADPS0); ADMUX=0x60; for(int k=0;k<=63;k++) putpixel(66,k); //OX putpixel(65,56); putpixel(67,56); putpixel(65,46); putpixel(67,46); putpixel(65,36); putpixel(67,36); putpixel(65,26); putpixel(67,26); putpixel(65,16); putpixel(67,16); putpixel(65,6); putpixel(67,6); for(int k=6;k<=56;k++) putpixel(84,k); //OY putpixel(83,56); putpixel(85,56); putpixel(83,46); putpixel(85,46); putpixel(83,36); putpixel(85,36); putpixel(83,26); putpixel(85,26); putpixel(83,16); putpixel(85,16); putpixel(83,6); putpixel(85,6); putpixel(87,56); //0 putpixel(88,57); putpixel(88,55); putpixel(89,57); putpixel(89,55); putpixel(90,57); putpixel(90,55); putpixel(91,56); putpixel(87,46); //1 putpixel(88,46); putpixel(89,46); putpixel(90,46); putpixel(91,46); putpixel(88,47); putpixel(87,36); //2 putpixel(87,37); putpixel(87,35); putpixel(88,35); putpixel(89,35); putpixel(89,36); putpixel(89,37); putpixel(90,37); putpixel(91,37); putpixel(91,36); putpixel(91,35); putpixel(87,27); //3 putpixel(87,26); putpixel(87,25); putpixel(88,25); putpixel(89,25); putpixel(89,26); putpixel(89,27); putpixel(90,25); putpixel(91,25); putpixel(91,26); putpixel(91,27); putpixel(87,17); //4 putpixel(87,15); putpixel(88,17); putpixel(88,15); putpixel(89,17); putpixel(89,15); putpixel(89,16); putpixel(90,15); putpixel(91,15); putpixel(87,6); //5 putpixel(87,7); putpixel(87,5); putpixel(88,7); putpixel(89,5); putpixel(89,6); putpixel(89,7); putpixel(90,5); putpixel(91,7); putpixel(91,6); putpixel(91,5); putpixel(68,53); //1 putpixel(69,53); putpixel(70,53); putpixel(71,53); putpixel(72,53); putpixel(69,54); putpixel(68,48); //s putpixel(68,50); putpixel(68,49); putpixel(69,51); putpixel(70,50); putpixel(70,49); putpixel(71,48); putpixel(72,49); putpixel(72,50); putpixel(72,51); for(int k=0;k<=63;k++) putpixel(95,k); for(int k=0;k<=63;k++) putpixel(94,k); for(int k=0;k<=63;k++) putpixel(111,k); putpixel(110,35); putpixel(112,35); putpixel(110,63); putpixel(112,63); putpixel(110,7); putpixel(112,7); EICRA=0x05; EIMSK=0x03; TIMSK0=0x01; TCCR0B=0x04; sei(); unsigned char i=0; int x=0; int y=0; bool b=0; unsigned char old,news,news2; unsigned char adcc; old=63; while(1){ for(int k=0;k<=63;k++) clearpixel(k,y); for(int k=56;k>=6;k--) clearpixel(80,k); for(int k=56;k>=6;k--) clearpixel(81,k); adcc=ADCH; news=63-adcc*64/255; news2=adcc*50/255; for(int k=56;k>=56-news2;k--) putpixel(80,k); for(int k=56;k>=56-news2;k--) putpixel(81,k); if (news<=old) for(int h=old;h>=news;h--) putpixel(h,y); else for(int h=old;h<=news;h++) putpixel(h,y); old=news; y--; if (++x==4) {PORTC^=0x08; x=0;} if (x%2==1) PORTC^=0x04; if (y<0) y=63; setcs1; sendbyte(0xC0+i); if (i==0) i=63; else i--; _delay_ms(97); } } 

Source: https://habr.com/ru/post/In165611/


All Articles