[C13] Bài tập tổng hợp

Sang Trần

Gà con
Staff member
- Tuần trước chúng ta đã hệ thống lại các kiến thức về những phần mình đã học: TIMER, INTERRUPT, ADC, UART và phần mới là giao tiếp LCD.
- Trong thời gian tuần này các bạn cố gắng hoàn thành bài tập sau để mình nắm rõ được khả năng của các bạn và ra đề cuối khóa cho xứng tầm :1cool_byebye::
- Yêu cầu: Thiết kế đồng hồ điện tử với module DS1307 và module LCD 1202.

- Chú ý: Về module DS1307 có 2 hướng cho các bạn
+ Tự vẽ mạch như schematic ở bài tập trước và tiến hành ủi và làm (rẻ tiền nhưng tốn thời gian).
+ Mua module có sẵn của thiên minh các bạn truy cập vào http://tme.vn/Product.aspx?id=1392#page=pro_info để biết thêm chi tiết (đắt tiền nhưng chắc chắn và nhanh)

- Về LCD 1202 CLB chỉ còn 6 cái và bán hết trong buổi học trước nên bạn nào chưa có thì có phương án giải quyết sau: Sử dụng LCD 16x2 có tại hshop và thiên minh http://tme.vn/Product.aspx?id=2007#page=pro_info . Code giao tiếp mình đính kèm ở cuối bài này
Chân cẳng như sau:

Code:
// Your YM1602C 16x2 must be supplied with a voltage between 4.5V-5.5V
// However, signal pins can understand 3.3V logic level from MSP430 as '1'
// Check your hardware connecting and map it to these definitions below
// Map: LCD PIN <-> Output_Port _ out/dir  ->  Output_Pin
 
#define LCD_RS        P2_out -> _bit.b0
#define LCD_RS_DIR    P2_dir -> _bit.b0
#define LCD_EN        P2_out -> _bit.b1
#define LCD_EN_DIR    P2_dir -> _bit.b1
//  This driver just help you to "write" LCD, not to read LCD "status".
// So that, you must pull your pin LCD_RW to GND (0V).
#define LCD_DATA_4    P2_out -> _bit.b2
#define LCD_DATA_4_DIR P2_dir -> _bit.b2
#define LCD_DATA_5    P2_out -> _bit.b3
#define LCD_DATA_5_DIR P2_dir -> _bit.b3
#define LCD_DATA_6    P2_out -> _bit.b4
#define LCD_DATA_6_DIR P2_dir -> _bit.b4
#define LCD_DATA_7    P2_out -> _bit.b5
#define LCD_DATA_7_DIR P2_dir -> _bit.b5
#define LCD_DATA_7    P2_out -> _bit.b5
#define LCD_DATA_7_DIR P2_dir -> _bit.b5
// If you don't control back light, don't care 2 lines below:
#define LCD_BL        P2_out -> _bit.b6
#define LCD_BL_DIR    P2_dir -> _bit.b6
- Hiển thị đủ: Giờ:Phút:Giây Thứ, Ngày/Tháng/Năm

Code mẫu đọc i2c:
Code:
#include "I2C.h"
#include "Basic_config.h"
#include <msp430.h>
int sec, min, hour, day , date , month, year;
char  dayc,Sun,Mon,Tues,Wed,Thurs,Fri,Sat;
unsigned char datawr[]={0x00,0x20,0x10,0x01,0x15,0x07,0x13};
  // khai báo data write
  unsigned char datarev[8];
  //khai báo data read
void main()
{
 
  Config_stop_WDT(); // stop WDT, see description in Basic_config.c
  Config_Clocks();
// Nếu sử dụng LCD 16x2 thì có thêm 2 dòng này
  P2SEL &=  ~BIT6 + ~BIT7; // 2.6,2.7 are GPIO
  P2SEL2 &=  ~BIT6 + ~BIT7;
 
  i2c_init(0x68);
  i2c_write(0x00,7, datawr); //write multi – byte
 
  while(1)
  {
  i2c_read(0x00,7,datarev);
  sec  =((datarev[0]&0xf0)>>4)*10 + (datarev[0]&0x0f);
  min  =((datarev[1]&0xf0)>>4)*10 + (datarev[1]&0x0f);
  hour =((datarev[2]&0xf0)>>4)*10 + (datarev[2]&0x0f);
  day  =((datarev[3]&0xf0)>>4)*10 + (datarev[3]&0x0f);
  date =((datarev[4]&0xf0)>>4)*10 + (datarev[4]&0x0f);
  month=((datarev[5]&0xf0)>>4)*10 + (datarev[5]&0x0f);
  year =((datarev[6]&0xf0)>>4)*10 + (datarev[6]&0x0f);
}
}
- Chức năng mở rộng: Chỉnh thời gian bằng nút nhấn hoặc mở rộng hơn chỉnh bằng Terminal .

- Cuối cùng chúc các bạn thành công CN tuần này chúng ta sẽ học bài VS C# đề nghị các bạn chuẩn bị trước bộ phần mềm Visual Studio 2012 Express hoặc mới hơn.
 

Le_Tien_Khai

Thành Viên PIF
Anh chị cho em xem lại chân cẳng thằng 1202 cái, chả hiểu tại sao mà không hiện lên cái lá được, cho em xem luôn mấy cái jump của con MSP430 luôn, em nối Data với 1.2, CS với 1.1, SCLK với 1.3, Reset với 1.0, Backlight với Vcc, nạp code thành công mà không hiểu sao nó không hiển thị gì :'(
 

Sang Trần

Gà con
Staff member
Code:
#ifdef PIN_CONFIG_MSP430                    // Pin configuration for msp430
 
#define LCD_PIN_TYPE_OUTPUT    P1DIR |= BIT0 + BIT1 + BIT2 + BIT3
 
#define LCD_CS_LOW            P1OUT &= ~BIT1
#define LCD_CS_HIGH            P1OUT |= BIT1
 
#define LCD_RESET_LOW        P1OUT &= ~BIT0
#define LCD_RESET_HIGH        P1OUT |= BIT0
 
#define LCD_SDA_HIGH        P1OUT |= BIT2
#define LCD_SDA_LOW            P1OUT &= ~BIT2
 
#define LCD_CLK_HIGH        P1OUT |= BIT3
#define LCD_CLK_LOW            P1OUT &= ~BIT3
#endif
Đấu chân theo code trên Backlight nối GND. Bạn có nối nguồn cho LCD chưa ?? VCC & GND
 

Le_Tien_Khai

Thành Viên PIF
Em và đồng bọn đã làm được rồi, có điều Backlight nối Vcc, nguồn thì tất nhiên phải nối, nhưng tụi em đã phải sửa code lại nó mới chạy được @@! XD
 

Sang Trần

Gà con
Staff member
Àh a xài module của hshop nên khác tụi e mức logic của mấy chân đó nếu sửa ok thì e post code đo lên cho các bạn chưa làm được tham khảo nhé!
 

tronghieu

Thành Viên PIF
Anh có thể nói kỹ hơn phần dây nhợ nối KIT với 2 cái module trên như thế nào không ạ?
 

tronghieu

Thành Viên PIF
Cho em hỏi chân Vo của Lcd 16x2 nối đi đâu ạ? Em xem trên mạng là nối với 1 biến trở 10k, vậy là mình phải làm 1 mạch riêng cho lcd hả anh?
 

Sang Trần

Gà con
Staff member
Chân đó chỉnh contrast của màn hình bạn có thể cắm breakboard hoặc hàn dây cũng được không cần phải làm mạch !!
 

Nguyễn Tài Đạt

Thành Viên PIF
Em và đồng bọn đã làm được rồi, có điều Backlight nối Vcc, nguồn thì tất nhiên phải nối, nhưng tụi em đã phải sửa code lại nó mới chạy được @@! XD
Anh có thể post code của msp430g2553 kết nối lcd1202 lên được ko ạ, em cũng đang làm cái này nhưng mà chưa chạy được
:((
 
Top