Đồng hồ bấm giờ sử dụng timer hiển thị led 7 thanh có 3 nút nhấn tương ứng 3 chế độ stop, start, rs 4 led

17 5 0
Đồng hồ bấm giờ sử dụng timer hiển thị led 7 thanh có 3 nút nhấn tương ứng 3 chế độ stop, start, rs   4 led

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG KHOA ĐIỆN TỬ I BÀI TẬP LỚN MÔN HỌC HỆ THỐNG NHÚNG Giảng viên hướng dẫn Nguyễn Ngọc Minh Hà Nội – 2021 I Phần 1 Chọn 1 hệ thống nhúng trong thực tế Thuyết minh g[.]

HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG KHOA ĐIỆN TỬ I BÀI TẬP LỚN MÔN HỌC HỆ THỐNG NHÚNG Giảng viên hướng dẫn: Nguyễn Ngọc Minh Hà Nội – 2021 I Phần : Chọn hệ thống nhúng thực tế Thuyết minh giải thích tính thành phần hệ thống nhúng Hệ thống điều khiển cửa tự động Vi điều khiển AT89C51: Chức chân 8951: - 8951 có tất 40 chân có chức đường xuất nhập Trong có 24 chân có tác dụng kép (có nghĩa chân có chức năng), đường hoạt động đường xuất nhập đường điều khiển thành phần bus liệu bus địa a.Các Port: Port : - Port port có chức chân 32 – 39 8951 Trong thiết kế cỡ nhỏ không dùng nhớ mở rộng có chức đường IO Đối với thiết kế cỡ lớn có nhớ mở rộng, kết hợp bus địa bus liệu Port 1: - Port port IO chân 1-8 Các chân ký hiệu P1.0, P1.1, P1.2, … dùng cho giao tiếp với thiết bị ngồi cần Port khơng có chức khác, chúng dùng cho giao tiếp với thiết bị bên Port : - Port port có tác dụng kép chân 21 - 28 đƣợc dùng đường xuất nhập byte cao bus địa thiết bị dùng nhớ mở rộng Port 3: - Port port có tác dụng kép chân 10 - 17 Các chân port có nhiều chức năng, cơng dụng chuyển đổi có liên hệ với đặc tính đặc biệt 8951 Chân 18, 19 nối với thạch anh tạo thành mạch tạo dao động cho VĐK Tần số thạch anh thƣờng dùng ứng dụng là: 11.0592Mhz ( giao tiếp 20 với cổng com máy tính ) 12Mhz tần số tối đa 24Mhz.Tần số lớn VĐK xử lí nhanh IC tạo ổn áp 7805( IC ổn áp 5v): IC ổn áp 7805: Đầu vào >7V, đầu 5V 500mA Mạch ổn áp: cần cho VĐK nguồn cho VĐK khơng ổn định treo VĐK, khơng chay reset liên tục, chí chết chíp Bộ chuyển đổi tương tự sang số ADC: ADC0804 có chức sau: - CS (Chip select): Chân số 1, chân chọn chip, đầu vào tích cực mức thấp đƣợc sử dụng để kích hoạt Chip ADC0804 Để truy cập tới ADC0804 chân phải đƣợc đặt mức thấp - RD (Read): Chân số 2, chân nhận tín hiệu vào tích cực mức thấp Các chuyển đổi 0804 chuyển đổi đầu vào tƣơng tự thành số nhị phân giữ ghi Chân RD đƣợc sử dụng phép đưa liệu chyển đổi tới đầu ADC0804 Khi CS = có xung cao xuống thấp áp đến chân RD liệu dạng số bit đưa tới tới chân liệu (DB0 – DB7) - WR (Write): Chân số 3, chân vào tích cực mức thấp đƣợc dùng báo cho ADC biết để bắt đầu trình chuyển đổi Nếu CS = WR tạo xung cao xuống thấp ADC0804 bắt đầu trình chuyển đổi giá trị đầuvào tương tự Vin thành số nhị phân bit Khi việc chuyển đổi hồn tất chân INTR ADC hạ xuống thấp - CLK IN CLK R: CLK IN (chân số 4), chân vào nối tới đồng hồ đƣợc sử dụng để tạo thời gian Tuy nhiên ADC0804 c ũng có tạo xung đồng hồ riêng Để dùng đồng hồ riêng chân CLK IN CLK R (chân số 19) nối với tụ điện điện trở Khi tần số xác định biểu thức: F=Với R = 10 kΩ, C = 150 pF tần số f = 606 kHz thời gian chuyển đổi 110 µs - Ngắt INTR (Interupt): Chân số 5, chân tích cực mức thấp Bình thường chân trạng thái cao việc chuyển đổi tương tự số hồn tất chuyển xuống mức thấp để báo cho CPU biết liệu chuyển đổi sẵnsàng để lấy Sau INTR xuống thấp, cần đặt CS = gửi xung cao xuống thấp tới chân RD để đưa liệu - Vin (+) Vin (-): Chân số chân số 7, đầu vào tƣơng tự vi sai, Vin = Vin(+) – Vin(-) Thơng thường Vin(-) đƣợc nối tới đất Vin(+) đƣợc dùng làm đầu vào tương tự chuyển đổi dạng số - Vcc: Chân số 20, chân nguồn nuôi +5V Chân dùng làm điện áp tham chiếu đầu vào Vref/2 để hở - Vref/2: Chân số 9, chân điện áp đầu vào dùng làm điện áp tham chiếu Nếu chân hở điện áp đầu vào tương tự cho ADC0804 nằm dải đến +5V Tuy nhiên, có nhiều ứng dụng mà đầu vào tương tự áp đến Vin khác với dải đến +5V Chân Vref/2 dùng để thực điện áp đầu khác đến +5V D0 – D7, chân số 18 – 11, chân liệu số (D7 bit cao MSB D0 bit thấp LSB) Các chân đệm ba trạng thái liệu chuyển đổi truy cập chân CS = chân RD đưa xuống mức thấp Để tính điện áp đầu ta tính theo cơng thức sau: Dout = Vin / Kích thước bước - Một số đặc tính kĩ thuật ADC 0804 + Khơng yêu cầu giao diện logic để ghép nối với VXL + Thời gian chuyển đổi nhỏ 100µs + Có dao động nội - Nguyên lý hoạt động ADC 0804: ADC bắt đầu hoạt động chân CS WR đồng thời mức thấp ( tích cực) Chân INTR reset mức cao ( khơng tích cực ) Tín hiệu Analog chân VIN+ VIN- đưa vào lấy mẫu mã hóa xung clock nối 0804 Sau chân INTR chuyển xuống mức thấp (tích cực ) báo hiệu cho VDK trình chuyển đổi ADC hồn tất VDK đưa tín hiệu mức thấp vào chân RD 0804 để lấy liệu ( chân RD CS nơí đất ) Q trình chuyển đổi lại bắt đầu CS WR nhận tín hiệu mức thấp ( từ VĐK ) Cảm biến: Hồng ngoại có chất sóng điện từ nằm ngồi vùng ánh sáng nhìn thấy, có bước sóng lớn bước sóng tia đỏ (λ > 760 nm) Sóng hồng ngoại tạo dễ dàng cách tạo dao động cho diode phát hồng ngoại chuyên dụng Do hồng ngoại ứng dụng nhiều lĩnh vực Tia hồng ngoại với chất sóng điện từ nên phản xạ gặp bề mặt vật thể Mạch cầu H: Mạch cầu H mạch điện giúp đảo chiều dòng điện qua đối tượng Đối tượng động có DC mà cần điều khiển, mục đích điều khiển cho phép dịng điện qua đối tượng theo chiều A đến B B đến A, từ giúp đổi chiều quay động Động chiều: Tác dụng động là: thực lực kéo để đóng, mở cửa theo chương trình lập trình sẵn Máy biến áp: Do sử dụng nhiều mức điện áp để cung cấp cho thiết bị hoạt động nên ta cần có máy biến áp II Phần 2: Đồng hồ bấm sử dụng timer hiển thị led Có nút nhấn tương ứng chế độ: stop, start, rs - led Code: #include "stm32f10x.h" #include "stm32f10x_gpio.h" // Device header // Keil::Device:StdPeriph Drivers:GPIO #include "stm32f10x_rcc.h" // Keil::Device:StdPeriph Drivers:RCC #include "stm32f10x_tim.h" Drivers:TIM #include "stdio.h" // Keil::Device:StdPeriph unsigned int Cnt = 0; unsigned int Sec = 0; unsigned int Led7_Font[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};// Ma Anode chung int Flag = 0; int Stop_New = 1, Stop_Old = 1; int Start_New = 1, Start_Old = 1; int Rst_New = 1, Rst_Old = 1; void SEG_Config(void);// cau hinh chan du lieu: a,b,c,d, ,dp void SEG_control(void); // cau hinh chan dieu khien void SEG_Disp(void); void timer_Init(void); void Delay_ms(unsigned int _time); void Button_Config(void); void Button_Stop(void); void Button_Start(void); int main(){ SEG_Config(); SEG_control(); Button_Config(); timer_Init(); TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE); TIM_Cmd(TIM2,DISABLE); while(1){ SEG_Disp(); } } void Delay_ms(unsigned int _time){ volatile unsigned int i,j; for(i = 0; i < _time; i++){ for(j = 0; j < 601; j++){} } } // cau hinh chan ma hoa led void SEG_Config(void){ GPIO_InitTypeDef seg_init; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); seg_init.GPIO_Mode = GPIO_Mode_Out_PP; seg_init.GPIO_Speed = GPIO_Speed_50MHz; seg_init.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 |GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_Init(GPIOA,&seg_init); GPIOA->ODR = 0xff; } // cau hinh chan dieu khien void SEG_control(void){ GPIO_InitTypeDef seg_control; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); seg_control.GPIO_Mode = GPIO_Mode_Out_PP; seg_control.GPIO_Speed = GPIO_Speed_50MHz; seg_control.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_Init(GPIOB,&seg_control); } void Button_Config(void){ GPIO_InitTypeDef button; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); button.GPIO_Mode = GPIO_Mode_IPU; button.GPIO_Speed = GPIO_Speed_50MHz; button.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5; GPIO_Init(GPIOB,&button); GPIO_Write(GPIOB, 0xff); } void Button_Start(void){ Start_Old = Start_New; Start_New = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_3); if(Start_Old == && Start_New == 0){ TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); TIM_Cmd(TIM2,ENABLE); } } void Button_Stop(void){ Stop_Old = Stop_New; Stop_New = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_4); if(Stop_Old == && Stop_New == 0){ TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE); TIM_Cmd(TIM2,DISABLE); } } void Button_Rst(void){ Rst_Old = Rst_New; Rst_New = GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_5); if(Rst_Old == && Rst_New == 0){ Cnt = 0; Sec = 0; TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE); TIM_Cmd(TIM2,DISABLE); } } void SEG_Disp(void){ Button_Stop(); Button_Start(); Button_Rst(); if(Cnt==100){ Sec++; if(Sec==60){ Sec = 0; Cnt = 0; } Cnt = 0; } // hien thi hang don vi cua tich tac GPIO_ResetBits(GPIOB, GPIO_Pin_15); GPIO_Write(GPIOA,Led7_Font[Cnt%10]); Delay_ms(1); GPIO_SetBits(GPIOB, GPIO_Pin_15); // hien thi hang chuc vi cua tich tac GPIO_ResetBits(GPIOB, GPIO_Pin_14); GPIO_Write(GPIOA,Led7_Font[Cnt/10]); Delay_ms(1); GPIO_SetBits(GPIOB, GPIO_Pin_14); // hien thi hang don vi cua giay GPIO_ResetBits(GPIOB, GPIO_Pin_13); GPIO_Write(GPIOA,Led7_Font[Sec%10]); GPIO_WriteBit(GPIOA,GPIO_Pin_7,Bit_RESET); Delay_ms(1); GPIO_SetBits(GPIOB, GPIO_Pin_13); // hien thi hang chuc vi cua giay GPIO_ResetBits(GPIOB, GPIO_Pin_12); GPIO_Write(GPIOA,Led7_Font[Sec/10]); Delay_ms(1); GPIO_SetBits(GPIOB, GPIO_Pin_12); } /* function: 10ms */ void timer_Init(void){ TIM_TimeBaseInitTypeDef timer_init; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); timer_init.TIM_CounterMode = TIM_CounterMode_Up; timer_init.TIM_Period = 1000 - 1; timer_init.TIM_Prescaler = 80- 1; timer_init.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM2,&timer_init); TIM_ClearFlag(TIM2,TIM_FLAG_Update); NVIC_EnableIRQ(TIM2_IRQn); } void TIM2_IRQHandler(){ if(TIM_GetITStatus(TIM2, TIM_IT_Update)!=RESET){ Cnt++; } TIM_ClearITPendingBit(TIM2,TIM_IT_Update); } Mô phỏng: ... Do sử dụng nhiều mức điện áp để cung cấp cho thiết bị hoạt động nên ta cần có máy biến áp II Phần 2: Đồng hồ bấm sử dụng timer hiển thị led Có nút nhấn tương ứng chế độ: stop, start, rs - led. .. thống điều khiển cửa tự động Vi điều khiển AT89C51: Chức chân 8951: - 8951 có tất 40 chân có chức đường xuất nhập Trong có 24 chân có tác dụng kép (có nghĩa chân có chức năng), đường hoạt động đường... CLK R: CLK IN (chân số 4) , chân vào nối tới đồng hồ đƣợc sử dụng để tạo thời gian Tuy nhiên ADC08 04 c ũng có tạo xung đồng hồ riêng Để dùng đồng hồ riêng chân CLK IN CLK R (chân số 19) nối với

Ngày đăng: 24/02/2023, 13:22

Tài liệu cùng người dùng

Tài liệu liên quan