Vi xử lý vốn là một khái niệm đã quá quen thuộc với những người sử dụng máy tính hay những kĩ sư, lập trình viên. Tuy nhiên đây cũng là một khái niệm có một vài điểm cần lưu ý. Hôm nay BKAII sẽ cùng các bạn khái quát lại một số những kiến thức liên quan đến vi xử lý nhé!
Trang 4x1=0b10000000;
y1=0b00000001;
for(i=0;i<8;i++)
{
if(PINA.0==0) {
x=x1; for (j=8-i;j>0;j )
{
PORTC=x; x=x>>1; delay_ms(50); }
x1=(x1>>1)+0b10000000; }
if(PINA.1==0) {
y=y1;
for (j=8-i;j>0;j )
{
PORTC=y; y=y<<1; delay_ms(50); }
y1=(y1<<1)+0b00000001;
}
}
}
Trang 6#include <mega16.h>
#include <delay.h>
int x,y,i;
void main(void)
Trang 7}
Trang 8}
}
6 Thực hiện kết nối phần cứng và viết chương trình nhận dữ liệu từ hai nút nhấn, một nút nhấn làm số LED sáng chạy từ hai bên vào giữa, một nút làm số LED sáng chạy từ giữa ra hai bên tăng dần.
Trang 11#include <mega16.h>
#include <delay.h>
#define HANG1 PORTA.0
#define HANG2 PORTA.1
#define HANG3 PORTA.2
#define HANG4 PORTA.3
#define COT1 PINA.4
#define COT2 PINA.5
#define COT3 PINA.6
#define COT4 PINA.7
char
led7[10]={0b10111111,0b10000110,0b11011011,0b11001111,0b11100110,0b11101101,0b11111101,0b10000111,0b111111111,0b11101111};
Trang 13#define hang0 PORTA.0
#define hang1 PORTA.1
#define hang2 PORTA.2
#define hang3 PORTA.3
#define cot0 PINA.4
#define cot1 PINA.5
Trang 14#define cot2 PINA.6
#define cot3 PINA.7
return key;
}
Trang 16banphim();
hienthi(banphim());
}
}
Câu 10: Thực hiện HMI nhập dữ liệu 4 chữ số cho một biến x từ các phím “tăng”,
“giảm”, “trái”, “phải”, “enter”, hiển thị lên 4 LED 7 đoạn.
#include <mega16.h>
#include <delay.h>
#define UP PINA.0
#define DOWN PINA.1
#define LEFT PINA.2
#define RIGHT PINA.3
#define ENTER PINA.4
#define SETTING PINA.5
unsigned char led7[10]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE4,0xFE,0xF6};unsigned char quetled[4]={0b00001110,0b00001101,0b00001011,0b00000111};
unsigned char abcd[4];
int i,a,b,c,d;
Trang 18a=0; }
b=0; }
Trang 19{ c=0; } }
if(i==3) {
d++; if(d>9) { d=0; } }
while(!UP); }
if(!DOWN) {
if(i==0) {
a ; if(a<0) { a=9; } }
if(i==1) {
b ; if(b<0)
Trang 20{
b=9; }
}
if(i==2) {
c ;
if(c<0) {
c=9; }
}
if(i==3) {
d ;
if(d<0) {
d=9; }
}
}
while(!DOWN); }
void main(void){
{
DDRA=0x00;DDRC=0xFF;
Trang 21{
PORTC=led7[a]; }
if(i==1)
{
PORTC=led7[b]; }
if(i==2)
{
PORTC=led7[c]; }
if(i==3)
{
PORTC=led7[d]; }
}
if(!ENTER)
{
hienthi();
Trang 23{
putchar(1); }
break;
case(0b11111101): {
putchar(2); }
break;
case(0b11111011): {
putchar(3); }
break;
case(0b11110111): {
putchar(4); }
break;
case(0b11101111): {
putchar(5); }
break;
case(0b11011111): {
putchar(6);
Trang 25switch(getchar()) {
case(1):
{
PORTC=led7[1]; }
break;
case(2):
{
PORTC=led7[2]; }
break;
case(3):
{
PORTC=led7[3]; }
break;
case(4):
{
PORTC=led7[4]; }
break;
case(5):
{
PORTC=led7[5]; }
break;
case(6):
Trang 26Lệnh Truyền
Trang 27#include <mega16.h>
#include <stdio.h>void main(void){
case(0b11111110): {
putchar(1); }
break;
case(0b11111101): {
putchar(2); }
break;
case(0b11111011): {
putchar(3); }
break;
case(0b11110111):
Trang 28{
putchar(4); }
break;
case(0b11101111): {
putchar(5); }
break;
case(0b11011111): {
putchar(6); }
break;
case(0b10111111): {
putchar(7); }
break;
case(0b01111111): {
putchar(8); }
break;
}
}
}
Trang 30hienthi(2); }
break; case(3): {
hienthi(3); }
break; case(4): {
hienthi(4); }
break; case(5): {
hienthi(5); }
break; case(6): {
hienthi(6); }
break; case(7): {
hienthi(7); }
break;
Trang 31Câu 13: Thực hiện kết nối phần cứng viết chương trình nhận dữ liệu từ bàn phím
ma trận nối vào Atmega16-1 truyền qua USART hiện số từ 1 đến 8 lên led 7 đoạn nối vào Atmega16-2.
Trang 32PORTC=led[b]; PORTB=led[a]; }
#define hang0 PORTA.0
#define hang1 PORTA.1
#define hang2 PORTA.2
#define hang3 PORTA.3
#define cot0 PINA.4
#define cot1 PINA.5
#define cot2 PINA.6
#define cot3 PINA.7int key,x,y,z;
Trang 34Câu 14: Thực hiện kết nối phần cứng viết chương trình nhận dữ liệu từ bàn phím
ma trận nối vào Atmega16-1 truyền qua USART hiện số từ 1 đến 8 lên LCD nối vào Atmega16-2.
Lệnh truyền
#include <mega16.h>
#include <delay.h>
#define hang0 PORTA.0
#define hang1 PORTA.1
#define hang2 PORTA.2
#define hang3 PORTA.3
#define cot0 PINA.4
#define cot1 PINA.5
#define cot2 PINA.6
Trang 35#define cot3 PINA.7
}
return key;
}
Trang 39unsigned char tachso[3];
void hienthi(unsigned long x)
Trang 40PORTC=led7[tachso[0]]; delay_us(100);
PORTB=0xFF;
delay_us(100);
PORTB=quetled[4];
PORTC=led7[tachso[2]]; delay_us(100);