| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- module(..., package.seeall)
- require "pins"
- pmd.ldoset(15, pmd.LDO_VMMC)
- local STB = pins.setup(pio.P0_24, 1, pio.PULLUP) -- TF_cmd
- local CLK = pins.setup(pio.P0_25, 1, pio.PULLUP) -- TF_D0
- local DIO = pins.setup(pio.P0_26, 1, pio.PULLUP) -- TF_D1
- typeTable = {
- 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c,
- 0x39, 0x5e, 0x79, 0x71
- };
- function SEND(data)
- for i = 0, 7, 1 do
- local mbit = bit.isset(data, i) and 1 or 0
- CLK(0)
- DIO(mbit)
- CLK(1)
- end
- end
- function Command(data)
- STB(0)
- SEND(data)
- STB(1)
- end
- function init()
- Command(0x8f)
- Command(0x40)
- STB(0)
- SEND(0xc0) ----清0
- for j = 1, 16, 1 do SEND(0x00) end
- STB(1)
- end
- function READKEY()
- local temp = {}
- STB(0)
- SEND(0x42)
- for i = 1, 4, 1 do
- Byte = ""
- for j = 1, 8, 1 do
- CLK(0)
- t = DIO()
- Byte = Byte .. t
- CLK(1)
- end
- temp[i] = tonumber(Byte, 2)
- end
- STB(1)
- return temp
- end
- ---------------------------------------------------测试DEMO--------------------------------------
- function NumLight(addr, tab)
- STB(0)
- SEND(addr)
- SEND(tab)
- STB(1)
- end
- function TM1638Disp()
- init()
- Command(0x44)
- for i = 0, 7, 1 do
- NumLight(0xc0 + (i * 2), typeTable[i + 2])
- sys.wait(200)
- end
- for i = 1, #typeTable, 1 do
- for j = 0, 7, 1 do NumLight(0xc0 + (j * 2), typeTable[i]) end
- sys.wait(200)
- end
- end
- function keyDemo()
- while true do
- for index, value in ipairs(READKEY()) do
- if bit.isset(value, 7) then
- NumLight(0xc0 + ((index - 1) * 2), typeTable[index + 1])
- NumLight(0xc0 + ((index - 1) * 2) + 1, 0xff)
- else
- NumLight(0xc0 + ((index - 1) * 2), 0x00)
- NumLight(0xc0 + ((index - 1) * 2) + 1, 0x00)
- end
- if bit.isset(value, 3) then
- NumLight(0xc8 + ((index - 1) * 2), typeTable[index + 1 + 4])
- NumLight(0xc8 + ((index - 1) * 2) + 1, 0xff)
- else
- NumLight(0xc8 + ((index - 1) * 2), 0x00)
- NumLight(0xc8 + ((index - 1) * 2) + 1, 0x00)
- end
- end
- sys.wait(50)
- end
- end
- sys.taskInit(function()
- TM1638Disp()
- keyDemo()
- end)
|